汇编语言中的过程与算术运算
在汇编语言编程中,过程调用、参数传递以及算术运算都是非常重要的部分。下面将详细介绍这些内容。
1. 快速排序过程特点
快速排序过程将所有局部变量都存储在寄存器中,它是一个叶子函数,即不会调用其他函数。因此,它不需要将栈按16字节边界对齐。并且,作为仅会被其他汇编语言程序调用的纯汇编过程,该快速排序过程会保留所有被修改的寄存器的值,即便这些是易失性寄存器,这虽然效率稍低,但却是良好的编程习惯。
2. 过程指针
x86 - 64的 call 指令有三种基本形式:
- PC相对调用 :通过过程名直接调用,如 call proc_name 。
- 寄存器间接调用 :通过64位通用寄存器进行间接调用,如 call reg64 。当执行此指令时,x86 - 64会先将返回地址压入栈中,然后从寄存器指定的地址开始获取下一个操作码字节(指令)。
- 四字指针变量间接调用 :从内存中的四字变量获取过程的第一个指令的地址进行调用,如 call qwordVar 。任何合法的内存寻址模式在此都合法,例如 call procPtrTable[rbx*8] 。
可以使用 offset 运算符或 lea 指令计算过程的地址,以下三种代码序列最终都会调用 proc_name <
超级会员免费看
订阅专栏 解锁全文
1049

被折叠的 条评论
为什么被折叠?



