我正在使用Delphi pascal進行簡單的PIC18 MCPU助記符模擬。是的,我打算使用Delphi IDE。 我能夠模擬任何asm指令,但它停在標籤處。 在某些情況下,我需要知道Delphi標籤的地址。 有沒有可能將標籤投入指針變量?Delphi標籤的地址
正如我的例子? MCPU彙編代碼的
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;
//仿真
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;
我不確定我是否真的明白這一點。爲什麼你需要從同一例程中獲取標籤的地址? –
看起來標籤的地址是它後面的指令的地址。我不認爲編譯器會引用它,它會在生成代碼的同時放置JMP,這就是全部。 –
@David Heffernan:模仿goto asm intructions。 –