CTF逆向工程学习入门(二):汇编语言基本知识

本文详细介绍了x86与x64架构下的寄存器、内存及寻址方式,包括不同架构下的寄存器差异、CPU寻址方式、汇编语言基本格式、反汇编算法、调用约定等内容,并对局部变量的存储方式进行了阐述。

1. 寄存器、内存和寻址

1.寄存器和内存

寄存器(Register)是 CPU的组成部分,是有限存储容量的告诉存储部件,用来暂存指令、数据和地址。一般的IA-32即x86架构的处理器中包含以下几个寄存器:

  • 通用寄存器:EAX、EBX、ECX、EDX、ESI、EDI。

  • 栈顶指针寄存器:ESP、栈底指针寄存器:EBP。

  • 指令计数器:EIP(保存下一条即将执行的指令的地址)。

  • 段寄存器:CS、DS、SS、ES、FS、GS。

     对于x86-64架构,在以上寄存器基础上,将前缀的E改成R,以标记64位,同时增加了R8~R15这八个通用寄存器。
    

除此之外,CPU中还存在一个标志寄存器,其中的每位表示对于标志位的值,常用标志位如下:

  • AF:辅助进位标志,当运算结果在第3位时置1;
  • PF:奇偶校验标志,当运算结果的最低有效字节有偶数个时置1;
  • SF:符号标志,有符号整型的符号位为1时置1,代表是负数;
  • ZF:零标志,当运算结果为全0时置1;
  • OF:溢出标志,当运算结果在被操作数是有符号数且溢出时置1;
  • CF:进位标志,运算结果向最高位以上进位时置1,用来判断无符号数的溢出。
2.CPU的寻址方式
寻址方式 示例 操作对象
立即寻址 1000h 1000h这个数字
直接寻址 [1000h]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值