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 –