在Linux环境中,如果我按如下方式编写一些NASM代码:
mov eax, 1 ; system call 1 - sys_exit
mov ebx, 0
int 0x80
...... ebx的价值是什么?
答案 0 :(得分:6)
这是流程的退出代码 - 您的代码段或多或少exit(0)
请参阅this link了解(有点过时)清单。
答案 1 :(得分:3)
%ebx是退出系统调用的状态代码
这意味着存储在%ebx 中的任何内容都将返回到操作系统。因此,在终端上执行应用程序后,发出以下命令:
echo $?
将打印您应用的返回代码。
Programming from the Ground Up的第20,21,22页非常清楚地解释了这一点。
答案 2 :(得分:1)
一般情况下,Linux x86系统调用接口使用eax存储系统调用号,然后使用以下寄存器将函数参数从右到右
这里有一个非常好的系统调用表,概述了大多数Linux系统调用:
答案 3 :(得分:0)
mov eax, 1 ;
是sys_exit代码
mov ebx, 0 ;
ebx的值可以是0或1,0表示正常退出,1表示错误。