私はDelphipascalで簡単なPIC18MCPUニーモニックシミュレーションに取り組んでいます。はい、DelphiIDEを使用するつもりです。asm命令をシミュレートすることはできますが、ラベルで停止します。場合によっては、Delphiラベルのアドレスを知る必要があります。ラベルをポインター変数にキャストする可能性はありますか?
私の例のように?
procedure addlw(const n:byte); //emulation of mcpu addlw instruction
begin
Carry := (wreg + n) >= 256;
wreg := wreg + n;
Zero := wreg = 0;
inc(CpuCycles);
end;
procedure bnc(p: pointer ); //emulation of mcpu bnc instruction
asm
inc CpuCycles
cmp byte ptr Carry, 0
jnz @exit
pop eax //restore return addres from stack
jmp p
@exit:
end;
//MCPUASMコードのエミュレーション
procedure Test;
label
Top;
var
p: pointer;
begin
//
Top:
addlw(5); //emulated mcpu addlw instruction
bnc(Top); //emulated mcpu bnc branch if not carry instruction
//
end;