關於位元組碼的乙個騷操作

2021-09-10 23:40:06 字數 788 閱讀 1884

用乙個位元組來表示的操作碼,供虛擬機器vm執行,不同的操作碼後面可以跟不同數量的運算元,這就導致了不同的操作碼可能對執行時棧的影響不同,因此我們需要根據位元組碼提供對執行時棧的影響

opcode.inc

//位元組碼的一些示例

opcode_slots(load_constant, 1)

opcode_slots(push_null, 1)

opcode_slots(push_false, 1)

opcode_slots(push_true, 1)

opcode_slots(pop, -1)

get.c

//先將操作碼變成索引的形式

#define opcode_slots(opcode, effect) opcode_##opcode,

typedef enum opcode;

#undef opcode_slots

//然後再用opcode索引取slots

#define opcode_slots(opcode, effect) effect,

static const int opcodeslotsused = ;

#undef opcode_slots

#include int main()

最後執行的結果為:

opcode_load_constant effect the slots of stack of 1

opcode_pop effect the slots of stack of -1

關於yield的騷操作

yield的可以定義迭代物件的返回值,可以看做類似於註解一類的標識 當滿足出發條件時,即呼叫 next 方法時,自動呼叫yield修飾的值,並進行返回 def mrange start 0,end,step 1 while start end yield start start 1 利用yield進...

乙個碼農關於足球的記憶

我是冷妖妖,畢業於皇家ddr學院,機緣巧合的在大二喜歡上足球,基本功粗糙,但好在有之前愛打籃球鍛鍊的身體,讓我很快學會了這項運動。我舔著臉去報名了足球校隊,海選的時候第一項要顛球過半場,我轉身就走了,我就只能顛三四個,自愧不如吧。學校的天氣經常是陰雨連綿,沒有課的時候只要雨一停就在球場上練著,慢慢的...

解決Git Clone速度慢的乙個騷方法

網上很多方法介紹都是掛vpn,設定 修改hosts。對於公開倉庫的話其實有個挺簡單的方法,就是使用工具人碼雲。先在git中clone專案至github倉庫中 然後使用國內的git 碼雲 在申請賬號後,選擇匯入已有倉庫,輸入你github中的倉庫位址 gitee匯入成功後,在本地bash中clone碼...