随笔分类 - 汇编语言
摘要:函数调用 一. 调用规范 ARM函数调用约定采用的是:ATPCS ATPCS的英文全称是ARM-THUMB procedure call standard(ARM-Thumb过程调用标准) 总结:参数1~参数4 分别保存到 R0~R3 寄存器中,剩下的参数从右往左一次入栈,被调用者实现栈平衡,返回值
阅读全文
摘要:常见的字符串操作指令在x86汇编中有很多,以下是其中一些常见的指令: MOVSB/MOVSW/MOVSD:将一个字节/字/双字从源地址复制到目的地址,并递增源和目的指针。 REP MOVS: 重复执行MOVSB/MOVSW/MOVSD指令,用于复制整个字符串。 STOSB/STOSW/STOSD:将
阅读全文
摘要:# 一. 什么是栈帧 在汇编语言当中每调用一个函数后为其构建一个对应的栈帧,用于存储改函数当中的局部变量以及参数,栈帧是一个栈的结构,ebp指针指向该栈帧的底部即栈底,esp指针指向该栈帧顶部即栈顶,在上而下地址数值不断增加。由于栈空间是有限的,倘若不断增加栈中元素,会导致栈溢出等错误,所以需要在每
阅读全文
摘要:## 一. call指令 1. 将call指令下一跳指令压入栈中 2. jmp跳转到call指令的地址 一个特殊的运用是call $+5 首先要清楚$是intel汇编格式中的一个预定义符号,表示当前指令所在的地址偏移,那么$+5就表示是当前地址加5,加上call指令的长度一般为5,即$+5就是下一条
阅读全文
摘要:##lea指令(Load Effective Address)在x86汇编语言中的作用是将一个有效地址(即一个内存地址或寄存器地址的偏移量)加载到目标寄存器中,而不是加载一个实际的内存值。 lea指令的使用场景通常有以下几种: 1. 计算数组元素的地址: 假设有一个数组arr,每个元素大小为4个字节
阅读全文
浙公网安备 33010602011771号