AT&T ASM 学习2

数据段:带有初始值的数据
bss段:初始值为0(NULL)的数据
文本段:代码
--------------------------------------------------
_start
.globl
--------------------------------------------------
CPUID指令:
根据EAX输出CPU信息到EBX,ECX,EDX
--------------------------------------------------
STDOUT的文件描述符为1
--------------------------------------------------
int $0x80
eax=4   write函数
eax=1   exit函数

--------------------------------------------------

as,gcc都可以编译汇编源文件

as以_start为入口

gcc以main为入口

--------------------------------------------------

在GDB中对汇编设断点 :

break * label+offset

由于GDB的bug在_start标签后加一条nop指令,然后break * _start+1

--------------------------------------------------

info registers                 -->i r

--------------------------------------------------

print $eax 默认为十进制         -->p $eax

print/d $eax 十进制               -->p/d $eax

print/t $eax 二进制                -->p/t $eax

print/x $eax 十六进制             -->p/x $eax

--------------------------------------------------

x/nyz:显示内存特定位置的值

n:字段数                                              #默认1

y:格式 c 字符/d 十进制/x 十六进制           #默认16

z:字段长度 b 8位/h 16位/w 32位            #默认32

x/42cb &output

x/d  &value

--------------------------------------------------

.ascii 末尾不加空字符(0,NULL)

.asciz 末尾加空字符(0,NULL)

--------------------------------------------------

汇编调用c库

ld -o AAA -lc BBB.o    #-lc : /lib/libx.so --> /lib/libc.so  #这个是导入库

ld -dynamic-linker /lib/ld-linux.so.2 -o AAA -lc BBB.o

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值