linux汇编语言pdf布鲁姆,Linux汇编语言AT&T 开发指南.pdf

Linux汇编语言AT

AT&A 汇编

1.Register Reference

引用寄存器要在寄存器号前加百分号%,如“movl %eax, %ebx”。

80386 有如下寄存器:

[1] 8 个 32-bit 寄存器 %eax,%ebx,%ecx,%edx,%edi,%esi,%ebp,%esp;

( 8 个 16-bit 寄存器,它们事实上是上面 8 个 32-bit 寄存器的低 16 位:%ax,%bx,

%cx,%dx,%di,%si,%bp,%sp;

8 个 8-bit 寄存器:%ah,%al,%bh,%bl,%ch,%cl,%dh,%dl。它们事实上

是寄存器%ax,%bx,%cx,%dx 的高8 位和低 8 位;)

[2] 6 个段寄存器:%cs(code),%ds(data),%ss(stack), %es,%fs,%gs;

[3] 3 个控制寄存器:%cr0,%cr2,%cr3;

[4] 6 个 debug 寄存器:%db0,%db1,%db2,%db3,%db6,%db7;

[5] 2 个测试寄存器:%tr6,%tr7;

[6] 8 个浮点寄存器栈:%st(0),%st(1),%st(2),%st(3),%st(4),%st(5),%st(6),%st(7)。

2. Operator Sequence

操作数排列是从源(左)到目的(右),如“movl %eax(源), %ebx( 目的)”

3. Immediately Operator

使用立即数,要在数前面加符号$, 如“movl $0x04, %ebx”

或者:

para = 0x04

movl $para, %ebx

指令执行的结果是将立即数 0x04 装入寄存器 ebx。

4. Symbol Constant

符号常数直接引用 如

value: .long 0x12a3f2de

movl value , %ebx

指令执行的结果是将常数 0x12a3f2de 装入寄存器 ebx。

引用符号地址在符号前加符号$, 如“movl $value, % ebx”则是将符号 value 的地址装入寄存器ebx。

5. Length of Operator

操作数的长度用加在指令后的符号表示 b(byte, 8-bit), w(word, 16-bits), l(long,32-bits) ,如“movb %al, %bl” ,“movw

%ax, %bx”,“movl %eax, %ebx ”。

如 果没有指定操作数长度的话,编译器将按照目标操作数的长度来设置。比如指令“mov %ax, %bx”,由于目标操作数 bx 的长度为

word ,那么编译器将把此指令等同于“ movw %ax,%bx” 。同样道理,指令“mov $4, %ebx” 等同于指令“ movl $4,

%ebx”,“push %al”等同于“pushb %al”。对于没有指定操作数长度,但编译器又无法猜测的指令,编译器将会报错,比如指令

“ 。

push $4”

6. Sign and Zero Extension

绝大多数面向 80386 AT&T 汇编指令与 Intel 格式的汇编指令都是相同的,但符号扩展指令和零扩展指令有不同格式。符号扩展指令

和零扩展指令需要指定源操作数长度和目的操作数长度,即使在某些指令中这些操作数是隐含的。

在 语法中,符号扩展和零扩展指令的格式为,基本部分 和 (对应 语法 和 ),后面跟

AT&T "movs" "movz" Intel movsx movzx

上源操作数长度和目的操作数长度。 意味着 ( ) ( ) ; 意味着 ( )

movsbl movs from byte to long movbw movs from byte

Linux公社(LinuxIDC.com)

是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值