mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-20 12:09:06 +02:00
+ implemented get_caller_addr and get_caller_frame for the Z80
git-svn-id: trunk@45146 -
This commit is contained in:
parent
6810677493
commit
f202249711
@ -108,13 +108,44 @@ function get_frame:pointer;assembler;nostackframe;
|
|||||||
|
|
||||||
{$define FPC_SYSTEM_HAS_GET_CALLER_ADDR}
|
{$define FPC_SYSTEM_HAS_GET_CALLER_ADDR}
|
||||||
function get_caller_addr(framebp:pointer;addr:pointer=nil):pointer;assembler;
|
function get_caller_addr(framebp:pointer;addr:pointer=nil):pointer;assembler;
|
||||||
|
label
|
||||||
|
framebp_null;
|
||||||
asm
|
asm
|
||||||
|
ld l, (framebp)
|
||||||
|
ld h, (framebp+1)
|
||||||
|
|
||||||
|
ld a, l
|
||||||
|
or a, h
|
||||||
|
jp Z, framebp_null
|
||||||
|
|
||||||
|
inc hl
|
||||||
|
inc hl
|
||||||
|
|
||||||
|
ld e, (hl)
|
||||||
|
inc hl
|
||||||
|
ld d, (hl)
|
||||||
|
ex de, hl
|
||||||
|
framebp_null:
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{$define FPC_SYSTEM_HAS_GET_CALLER_FRAME}
|
{$define FPC_SYSTEM_HAS_GET_CALLER_FRAME}
|
||||||
function get_caller_frame(framebp:pointer;addr:pointer=nil):pointer;assembler;
|
function get_caller_frame(framebp:pointer;addr:pointer=nil):pointer;assembler;
|
||||||
|
label
|
||||||
|
framebp_null;
|
||||||
asm
|
asm
|
||||||
|
ld l, (framebp)
|
||||||
|
ld h, (framebp+1)
|
||||||
|
|
||||||
|
ld a, l
|
||||||
|
or a, h
|
||||||
|
jp Z, framebp_null
|
||||||
|
|
||||||
|
ld e, (hl)
|
||||||
|
inc hl
|
||||||
|
ld d, (hl)
|
||||||
|
ex de, hl
|
||||||
|
framebp_null:
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user