Jer*_*emy 8 x86 assembly system-calls linux-kernel
我在Linux上学习asm(noobuntu 10.04)我得到了以下代码:http://asm.sourceforge.net/intro/hello.html
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
Run Code Online (Sandbox Code Playgroud)
这是一个简单的问候世界.Linux +上的运行直接调用内核(显然).有谁能解释一下这里到底发生了什么?我认为它读取eax&ebx处理器寄存器和ecx,edx数据中的整数,并在调用内核时定义系统调用.如果是这样,当调用int 0x80时,不同的整数组合是否定义了不同的系统调用?
我对man页面不太满意,但已经阅读了我能找到的每一个相关的页面,是否有任何man page告诉我哪些组合定义了什么系统调用?
任何帮助表示赞赏.逐行解释将是惊人的... - 谢谢提前杰里米