.text
_entry:
movl $4 , %eax
movl $1 , %ebx
movl $message , %ecx
movl $12 , %edx
int $0x80
movl $1 , %eax
int $0x80
message:
.ascii "Hello World\n"
上面的代码中使用了两种系统调用,
(1) 4号系统调用为写文件操作,eax为功能号,ebx为文件号,上述代码中的1 对应的是 标准输出stdout。
ecx为参数,缓冲区指针。 edx为写数据的长度。
(2) 1号系统调用,表示退出程序。
代码编译方法:
as -o asm.o asm.s
ld -o asm asm.o
运行 ./asm
结果 Hello World
2 感悟
常用的libc下的系统调用都是已经封装过的,而上述使用到的系统调用则是直接使用内核的方法。
该代码不使用任何库,也可以独立成一个程序。