汇编语言一些常用变量
来源:互联网 发布:小土豆编程能过360吗 编辑:程序博客网 时间:2024/06/07 02:51
汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp 等
近期在学习计算机体系结构安全方向,不得不使用汇编代码, 对于经常使用的一些常见汇编代码给予一定的解释。(稍后,再继续添加)
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。
比方说:add eax,-2 ; //可以认为是给变量eax加上-2这样的一个值。
这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。
EAX 是”累加器”(accumulator), 它是很多加法乘法指令的缺省寄存器。
EBX 是”基地址”(base)寄存器, 在内存寻址时存放基地址。
ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。
EDX 则总是被用来放整数除法产生的余数。
ESI/EDI分别叫做”源/目标索引寄存器”(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.
EBP是”基址指针”(BASE POINTER), 它最经常被用作高级语言函数调用的”框架指针”(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:
push ebp ;保存当前ebp
mov ebp,esp ;EBP设为当前堆栈指针
sub esp, xxx ;预留xxx字节给函数临时变量.
…
这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret 即可.
ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。
386一部分寄存器示例如下:
- 汇编语言一些常用变量
- makefile中的一些常用变量
- SqlServer 常用的一些变量
- 常用的一些shell变量
- Win32汇编语言-局部变量
- 汇编语言中的变量
- SAP SMARTFORMS 常用的一些系统变量
- SAP SMARTFORMS 常用的一些系统变量
- 转:Houdini的一些常用变量
- 一些汇编语言相关知识
- 汇编语言常用指令
- 汇编语言---常用伪指令
- 汇编语言常用语句
- 汇编语言常用伪指令
- 汇编语言常用指令
- 汇编语言常用指令集
- 汇编语言常用指令总结
- 汇编语言常用指令
- TensorFlow的reshape操作 tf.reshape
- android 7.0以上裁剪和选择sd卡外面的图片适配(日记)
- 某一位取反
- 软负载与nginx那些强大的不可不说的功能
- Matlab.R2014a编译生产的exe文件一直提示:错误使用videoinput
- 汇编语言一些常用变量
- 关于AudioManager在项目中遇到的一些问题的记录
- TensorFlow--tf.nn.max_pool实现池化操作
- Java多线程的实现
- Mybatis 多对多关联表关联 如何插入关联表数据
- Hibernate JPA中@Transient、@JsonIgnoreProperties、@JsonIgnore、@JsonFormat、@JsonSerialize等注解解释
- logistic回归原理解析及Python应用实例
- 性能调优 jstack
- 【测试招聘】资深面试官的测试工程师面试心得