首页 > 其他 > 详细

汇编总结

时间:2014-04-14 00:01:23      阅读:1474      评论:0      收藏:0      [点我收藏+]

一、通用寄存器

 

寄存器作用 64-bit register Lower 32 bits Lower 16 bits Lower 8 bits

累加器

rax

eax

ax

al

基址寄存器

rbx

ebx

bx

bl

计数器

rcx

ecx

cx

cl

 

rdx

edx

dx

dl

存放源指针

rsi

esi

si

sil

存放目的指针

rdi

edi

di

dil

存放栈底指针

rbp

ebp

bp

bpl

存放栈顶指针

rsp

esp

sp

spl

 

r8

r8d

r8w

r8b

 

r9

r9d

r9w

r9b

 

r10

r10d

r10w

r10b

 

r11

r11d

r11w

r11b

 

r12

r12d

r12w

r12b

 

r13

r13d

r13w

r13b

 

r14

r14d

r14w

r14b

 

r15

r15d

r15w

r15b

二、操作码后缀

  • b = byte (8 bit)
  • s = short (16 bit integer) or single (32-bit floating point)
  • w = word (16 bit)
  • l = long (32 bit integer or 64-bit floating point)
  • q = quad (64 bit)
  • t = ten bytes (80-bit floating point)

例如:movq、movl、movw、movb等

注意,使用的后缀一定要和寄存器相对应,例如 movl $0, %eax; movq $0, %rax; movb $0, %al

三、操作码

1. mov+suffix source, dest

通用的数据传送指令:

  1. 立即数传送到寄存器和内存
    • movl $0, %eax 
    • movl $0, height    # 将立即数 0 存放到 height 指向的内存地址
  2. 寄存器之间传送数据
    • movl %eax, %ebx
  3. 在内存和寄存器之间传送数据
    • movl value, %eax  # 将value指向的内存地址的数据值传送个eax
    • movl %ecx, value  # 将ecx中的数据传送给value指向的内存地址
    • 使用变址的内存位置,内存的位置由下列因素决定:基址,添加到基址上的偏移地址,数据元素的长度,确定选择哪个数据元素的变址。表达式的格式是:base_address(offset_address, index, size)。获取的数据值位于 base_address + offset_address + index * size。如果其中的任何值为0,就可以忽略它们(但是仍然需要逗号作为占位符)。offset_address和index必须是寄存器,size则可以是数字。 例如:movl values(, %edi, 4), %eax
    • movl $values, %edi  # 将values指向的内存地址存放到edi。寄存器间接寻址模式
    • movl %ebx, (%edi)  # 将ebx中的数据传送给edi中存放的内存地址。寄存器间接寻址模式
    • movl %edx, 4(%edi)  # 作用同上, 将ebx中的数据传送给edi中存放的内存地址之后4个字节的内存地址;注意,GNU不允许将值与寄存器相加,必须把值放在括号之外。寄存器间接寻址模式
    • movl %edx, -4(%edi)  # 作用同上,方向相反。  

2. nop

空指令

3. cmov+flags source, dest

条件传送指令。mov指令有时会发生在特定的条件下,为了避免使用jmp指令,因此cmov被引入。

例如cmova代表“大于”,那么cmova %eax, %ebx 表示当eax存放的值大于ebx存放的值时,才会将exa中的值传送到ebx中。

汇编总结,布布扣,bubuko.com

汇编总结

原文:http://www.cnblogs.com/zhangjing327/p/3662766.html

(0)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!