装配中EAX,1和EBX,1之间的区别?

时间:2016-01-20 17:42:09

标签: linux assembly x86 system-calls calling-convention

section     .text
global      _start                              ;must be declared for linker (ld)

_start:                                         ;tell linker entry point

    mov     edx,len                             ;message length
    mov     ecx,msg                             ;message to write
    mov     ebx,1                               ;file descriptor (stdout)
    mov     eax,4                               ;system call number (sys_write)
    int     0x80                                ;call kernel

    mov     eax,1                               ;system call number (sys_exit)
    int     0x80                                ;call kernel

section     .data

msg     db  'Hello, world!',0xa                 ;our dear string
len     equ $ - msg                             ;length of our dear string

内核源代码参考:

当系统读取EAX,1而不是EBX,1时,系统如何知道它必须退出?因为1表示Sys_Exit。

1 个答案:

答案 0 :(得分:1)

这个comportement在我们称之为ABI(应用程序二进制接口)的内容中定义。这应该有所帮助:What is Application Binary Interface (ABI)?