[Assembly] 程序的机器级表示(一)

本文介绍64位汇编语言的基础知识,包括常见数据类型及其对应的C声明与Intel数据类型,汇编代码后缀及大小。同时,详细列举了寄存器的主要用途,并解释了操作数指示符的含义,例如立即数、寄存器和内存引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据格式

C声明Intel数据类型汇编代码后缀大小(字节)
char字节b1
shortw2
int双字l4
long四字q8
char *四字q8
float单精度s4
double双精度l8

寄存器

主要用途64位寄存器名32位寄存器名16位寄存器名8位寄存器名
存储返回值%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

操作数指示符

  • 立即数:$ + C语言表示法的整数
    如: $ 0x2A $3000
  • 寄存器: % + 寄存器名
    如: %eax %rbp
  • 内存引用: Imm(Rb, Ri, s)
    其中Imm代表立即数,Rb是一个存储在寄存器中的偏移量,Ri也是存储在寄存器中的偏移量,S是Ri的偏移倍数(s必须是1、2、4、8),计算方法是:Imm + (Rb) + (Ri) * s。
    如:260(%rcx, %rdx) (%rbx)

    对于寄存器,%rax代表%rax寄存器存储的值,而(%rax)代表%rax寄存器指向的内存单元的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值