Linux下汇编学习-1
教材:programming from the ground up
第一个程序
.section .data
.section .text
.globl _start
_start:
movl $1, %eax
movl $0, %ebx
int $0x80
我们给这个名字取名为exit.s,这个程序什么也没有做,只是调用了linux的一个exit系统调用,程序返回值为0,这个值我们可以通过命令echo$?去查看。.section命令用于定义一个段,我们这里定义了两个段,一个.data段,一个.text段。_start它是一个符号,它是汇编程序的入口点,相当于c程序的main函数,.globl的意思是指明_start是一个全局符号,这个符号要被链接器用到。然后给eax寄存器传递了一个值1,AT&T语法中规定寄存器前面要加%符号,立即数前面要加上$符号,传递的1表示使用的exit系统调用,然后给ebx寄存器传送了一个值0,ebx寄存器值用于返回给操作系统。int指令是典型的中断指令,0x80是它的中断号。
然后我们编译这个程序。使用as命令
as exit.s -o exit.o
然后链接这个程序,使用ld命令
ld exit.o -o exit
然后运行这个程序
./exit
查看程序返回状态是不是我们分析的0
echo $?
打印出来确实是0,看来我们前面分析的是正确的
摘自 mcgrady_tracy的专栏
补充:综合编程 , 其他综合 ,