0
嘿,我想知道如果任何人都可以幫助我在C中的頭等標籤。我想將每個指令作爲標籤來看待(每個指令作爲一個標籤)我想要從內存(AVR設備的FLASH存儲器)讀取java字節碼,並通過使用goto語句並跳轉到適當的標籤來分派指令。C中的第一類標籤?
但問題是我用來從內存中讀取指令的函數返回一個無符號字節。
u08_t nvmfile_read08(void *addr) {
u08_t val;
addr = NVMFILE_ADDR(addr); // remove marker (if present)
memcpy_P((u08_t*)&val, (PGM_P)addr, sizeof(val));
return val;
}
instr = nvmfile_read08(pc);
所以我的問題是INSTR如何轉換成類似:
void *ptr;
ptr = &&instr;
goto *ptr;
然後這個代碼將非常跳轉到該標籤:(假設ILOAD是最後一個指令讀取)
iload:
// Execute the iload jvm instruction.
謝謝
假設您願意使用GCC擴展,您可以將標籤int置於256值的數組中並執行計算出的goto。請參閱http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html –