ねえ、誰かがCのファーストクラスのラベルを手伝ってくれるかどうか疑問に思っています.
私は現在、メモリ (AVR デバイスの FLASH メモリ) から Java バイトコードを読み取ろうとしています。各命令をラベルとして扱い、goto ステートメントを使用して適切なラベルにジャンプして命令をディスパッチしたいと考えています。
しかし問題は、メモリから命令を読み取るために使用する関数が符号なしバイトを返すことです。
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.
ありがとう