当前位置:编程学习 > 网站相关 >>

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的专栏

补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,