📄 s390.inc
字号:
### entry point code .macro gdbasm_startup # Align the stack pointer to an 8-byte boundary. lhi %r0,-8 nr %r15,%r0 # Reserve space for the standard stack frame: # back chain, and space for the callee to save its registers. ahi %r15,-104 # Zero this frame's back chain pointer. xc 0(4,%r15),0(%r15) .endm### Call a function. .macro gdbasm_call subr # Put the address of the constant in %r1, load the constant # (SUBR's address), and jump to it. bras %r1, .Lafterconst\@ .long \subr.Lafterconst\@: l %r1,0(%r1) basr %r14,%r1 .endm### Exit with a zero status. .macro gdbasm_exit0 lhi %r2, 0 svc 1 .endm### Standard subroutine prologue. .macro gdbasm_enter # Save all the callee-saves registers. What the heck. stm %r6,%r15,24(%r15) # Allocate the stack frame, and write the back chain pointer. # Keep the original SP in %r11. lr %r1,%r15 ahi %r15,-96 st %r1,0(%r15) .endm### Standard subroutine epilogue. .macro gdbasm_leave # Restore all our registers. This also pops the frame, and # restores our return address. lm %r6,%r15,120(%r15) # Jump to the return address. br %r14 .endm### Several nops. .macro gdbasm_several_nops lr %r0, %r0 lr %r0, %r0 lr %r0, %r0 lr %r0, %r0 .endm### Declare an `int' variable. .purgem gdbasm_datavar .macro gdbasm_datavar name value .data\name: .long \value .endm
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -