📄 stub.s
字号:
#include "uml-config.h" .globl syscall_stub.section .__syscall_stub, "x"syscall_stub: syscall /* We don't have 64-bit constants, so this constructs the address * we need. */ movq $(UML_CONFIG_STUB_DATA >> 32), %rbx salq $32, %rbx movq $(UML_CONFIG_STUB_DATA & 0xffffffff), %rcx or %rcx, %rbx movq %rax, (%rbx) int3 .globl batch_syscall_stubbatch_syscall_stub: mov $(UML_CONFIG_STUB_DATA >> 32), %rbx sal $32, %rbx mov $(UML_CONFIG_STUB_DATA & 0xffffffff), %rax or %rax, %rbx /* load pointer to first operation */ mov %rbx, %rsp add $0x10, %rspagain: /* load length of additional data */ mov 0x0(%rsp), %rax /* if(length == 0) : end of list */ /* write possible 0 to header */ mov %rax, 8(%rbx) cmp $0, %rax jz done /* save current pointer */ mov %rsp, 8(%rbx) /* skip additional data */ add %rax, %rsp /* load syscall-# */ pop %rax /* load syscall params */ pop %rdi pop %rsi pop %rdx pop %r10 pop %r8 pop %r9 /* execute syscall */ syscall /* check return value */ pop %rcx cmp %rcx, %rax je againdone: /* save return value */ mov %rax, (%rbx) /* stop */ int3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -