gpt4 book ai didi

c - 在 GNU C 内联汇编中编写 Linux int 80h 系统调用包装器

转载 作者:IT王子 更新时间:2023-10-29 00:11:52 25 4
gpt4 key购买 nike

<分区>

我正在尝试使用内联汇编...我读了这个页面http://www.codeproject.com/KB/cpp/edujini_inline_asm.aspx但我无法理解传递给我的函数的参数。

我正在写一个 C 写的例子..这是我的函数头:

write2(char *str, int len){
}

这是我的汇编代码:

global write2
write2:
push ebp
mov ebp, esp
mov eax, 4 ;sys_write
mov ebx, 1 ;stdout
mov ecx, [ebp+8] ;string pointer
mov edx, [ebp+12] ;string size
int 0x80 ;syscall
leave
ret

将代码传递给 C 函数我必须做什么...我正在做这样的事情:

write2(char *str, int len){
asm ( "movl 4, %%eax;"
"movl 1, %%ebx;"
"mov %1, %%ecx;"
//"mov %2, %%edx;"
"int 0x80;"
:
: "a" (str), "b" (len)
);
}

那是因为我没有输出变量,那么我该如何处理呢?此外,使用此代码:

global main
main:
mov ebx, 5866 ;PID
mov ecx, 9 ;SIGKILL
mov eax, 37 ;sys_kill
int 0x80 ;interruption
ret

我怎样才能将该代码内联到我的代码中……这样我就可以向用户请求 pid……就像这样……这是我的预编码

void killp(int pid){
asm ( "mov %1, %%ebx;"
"mov 9, %%ecx;"
"mov 37, %%eax;"
:
: "a" (pid) /* optional */
);
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com