随笔分类 -  汇编语言

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