Linux NASM:调用sys_exit时ebx的值是多少?

时间:2011-03-13 20:38:59

标签: assembly nasm

在Linux环境中,如果我按如下方式编写一些NASM代码:

mov eax, 1 ; system call 1 - sys_exit
mov ebx, 0
int 0x80

...... ebx的价值是什么?

4 个答案:

答案 0 :(得分:6)

这是流程的退出代码 - 您的代码段或多或少exit(0)

请参阅this link了解(有点过时)清单。

答案 1 :(得分:3)

  

%ebx是退出系统调用的状态代码

这意味着存储在%ebx 中的任何内容都将返回到操作系统。因此,在终端上执行应用程序后,发出以下命令:

echo $?

将打印您应用的返回代码。

Programming from the Ground Up的第20,21,22页非常清楚地解释了这一点。

答案 2 :(得分:1)

一般情况下,Linux x86系统调用接口使用eax存储系统调用号,然后使用以下寄存器将函数参数从右到右

  1. EBX
  2. ECX
  3. EDX
  4. ESI
  5. EDI
  6. 这里有一个非常好的系统调用表,概述了大多数Linux系统调用:

    http://bluemaster.iu.hio.no/edu/dark/lin-asm/syscalls.html

答案 3 :(得分:0)

mov eax, 1 ;是sys_exit代码

mov ebx, 0 ; ebx的值可以是0或1,0表示正常退出,1表示错误。