x86_64汇编学习记述一

x86_64汇编学习记述一

数据部分 数据部分用于声明常量。 该数据在运行时不会改变。 代码部分 文本部分用于代码。 该部分必须以声明 global _start 开始,它告诉内核程序执行的开始位置。 注释 hello,world 前面两行定义了数据,并在其中放置了具有hello, world值的msg常量...

汇编记述二

汇编记述二

关于比较与跳转 cmp eax,ebx会比较两个寄存器,然后根据两个比较结果来来设置处理器标志位(例如“大于”标志) 执行到jg .L2时,这条指令会检查处理器中“大于”的标志位 如果“大于”标志位被设置了,则跳转到标签.L2所在到位置继续执行后续指令 如果“大于”标志位没有被设...

汇编记述三

汇编记述三

关于栈空间大小 反汇编代码中的栈大小 栈帧的大小通常是由编译器在编译阶段计算出来的。 编译器在编译源代码时会分析函数的局部变量、函数参数、寄存器的使用情况等信息,然后根据这些信息计算出每个函数所需的栈帧大小。 自己写汇编 需要自己计算栈帧的大小,并为局部变量、参数、寄存器保存等分...

标志寄存器

标志寄存器

标志寄存器 CPU内部的寄存器中,有一种特殊的寄存器具有以下3种作用 用来存储相关指令的某些执行结果 用来为CPU执行相关指令提供行为依据 用来控制CPU的相关工作方式 这种特殊的寄存器在8086CPU种,被称为标志寄存器 8086CPU的标志寄存器有16位,其中存储的信息通常被...

x86_64汇编学习记述二

x86_64汇编学习记述二 2

大小端 可以将内存想象为一个大数组。它包含字节。 每个地址存储内存“数组”的一个元素。每个元素都是一个字节。 例如我们有 4 个字节:AA 56 AB FF 小端字节序 低地址存低位字节 大段字节序 高地址存低位字节 汇编程序组成 data 用于声明初始化数据或常量 bss 用于...

相关指令

相关指令

汇编 指令相关部分。 转移指令 可以修改IP,或同时修改CS和IP的指令统称为转移指令 换而言之,转移指令就是可以控制CPU执行内存中某处代码的指令 8086CPU转移指令 只修改IP,如:jmp ax 同时修改CS和IP,为段间转移,如:jmp 1000:0 根据对IP的修改范...

X86_64汇编学习记述三

X86_64汇编学习记述三

字符串 反转字符串 4个常量 解析 从_start开始 把INPUT地址放入rsi寄存器 通过异或将rcx清零 用cld清除方向标志位,让后续字符串操作从低地址向高地址进行。 保存返回地址,当exitFromRoutine结束后,正确返回 calculateStrLen 先判断r...

定位内存与数据处理

定位内存与数据处理

汇编 关于定位内存地址的方法以及数据处理的相关问题。 and 逻辑与,按位进行与运算 or 逻辑或,按位进行或运算 ASCII码 编码方案,就是一套规则,约定了用什么样的信息来表示现实对象 字符形式数据 汇编程序中,用'...'的方式指明数据是字符的形式 编译...

X86_64汇编学习记述四

X86_64汇编学习记述四

GNU 汇编器语法 示例 定义数据 nasm数据操作 GNU汇编器操作 使用直接操作数,要用$ 获取部分内存时,例如 64 寄存器的第一个字节 不在操作数中定义大小,而是在指令中定义 GNU汇编器操作后缀 b:1个字节操作数 w:2个字节操作数 l:4个字节操作数 q:8个字节操...

关于程序

关于程序

汇编 关于程序的介绍部分。 程序 过程 编写汇编程序 用汇编语言编译程序对源程序进行编译 产生目标文件 再用链接程序对目标文件进行链接 产生可执行文件 执行可执行文件 可执行文件 程序 源程序中的汇编指令翻译过来的机器码 源程序中定义的数据 相关的描述信息 源程序 伪指令 汇编语...

扫一扫二维码分享