汇编
文章平均质量分 73
happy987818
这个作者很懒,什么都没留下…
展开
-
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 是"累加器"(ac转载 2016-05-26 17:49:03 · 1336 阅读 · 0 评论 -
esp和ebp寄存器
一、概括说明esp是栈指针,是CPU机制决定的,push、pop指令会自动调整esp的值又因为函数的参数和局部变量,其实是与进入函数那时的esp相关的,但由于esp在函数运行中会不停的变,因此保存当前esp到一个ebp中保持不变,后续用ebp来访问参数和局部变量就很清楚。而且还方便于调试器分析函数调用过程中的堆栈情况。这个ebp也不是必须的,实际esp虽然不停在变,但具转载 2016-05-26 18:05:15 · 2301 阅读 · 1 评论 -
AT&T与Intel汇编语法的比较
GCC采用的是AT&T的汇编格式, 也叫GAS格式(Gnu ASembler GNU汇编器), 而微软采用Intel的汇编格式. 语法上主要有以下几个不同. 1、寄存器命名原则在 AT&T汇编格式中,寄存器名要加上 '%'作为前缀;而在 Intel汇编格式中,寄存器名不需要加前缀。AT&TIntel说明%eax转载 2016-06-01 17:48:29 · 4226 阅读 · 0 评论 -
汇编语言中循环语句的实现
一、概述C语言中有许多不同的结构,比如if-else、do-while、while、for、swich等等,这些结构的汇编实现都是一层一层在前者的基础上进行构建的。比如if-else是基于jmp命令实现的,do-while是基于if-else的汇编结构的,而while又是基于do-while的。所以说jmp在汇编中有着特别重要的作用,它是实现多种C语言结构的基础。二、jmp命令三、原创 2016-06-21 15:48:59 · 46352 阅读 · 0 评论