汇编语言32位模式下传递64位参数
32 位模式中,通过堆栈向子程序传递 64 位参数时,先将参数的高位双字入栈,再将其低位双字入栈。这样就使得整数在堆栈中是按照小端顺序(低字节在低地址)存放的,因而子程序容易检索到这些数值,如同下面的 WriteHex64 过程操作一样。该过程用十六进制显示 64 位整数:
WriteHex64 PROC push ebp mov ebp, esp mov eax, [ebp+12] ;高位双字 call WriteHex mov eax, [ebp+8] ;低位双字 call WriteHex pop ebp ret 8 WriteHex64 ENDPWriteHex64 的调用示例如下,它先把 longVal 的高半部分入栈,再把 longVal 的低半部分入栈:
.data longVal QWORD 1234567800ABCDEFh .code push DWORD PTR longVal + 4 ;高位双字 push DWORD PTR longVal ;低位双字 call WriteHex64下图显示的是在 EBP 入栈,并把 ESP 复制给 EBP 之后,WriteHex64 的堆栈帧示意图。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频