ASM 函数参数处理
函数参数传递一般通过栈,在此情形下,又有两种表现形式:
1、形式1定义
fn proc
; asm code list
fn endp
2、形式2定义
fn proc arg1:DWORD,arg2:DWORD
;asm code list
fn endp
形式2与形式1在本质上是相同的,形式2可以转换为形式1。
区别在于,形式2情形下
1)编译器会自动绑定到参量arg1,arg2,这样更方便处理多参数函数。
2)编译器能自动生成调整esp指针的ret指令,相当于stdcall调用。
相当于如下代码:
fn proc
push ebp
mov ebp,esp;arg1 = DOWRD PTR [ebp+8]
;arg2 = DWORD PTR [ebp+12];mov eax,arg1
;add eax,arg2;asm code listleave
ret 8
fn endp
综上述,可以看出形式2在一般情况下,编码更为方便,参数说明更为清晰,可以通过invoke调用(形式1是不可以通过invoke调用的)。
ASM 函数参数处理相关推荐
- ioctl 函数 参数 详解
2019独角兽企业重金招聘Python工程师标准>>> ioctl 函数 参数 详解 2009-04-24 11:55 ioctl函数 本函数影响由fd参数引用的一个打开的文件. # ...
- Java获取函数参数名称
原理 编译之后的class文件默认是不带有参数名称信息的,使用 IDE 时,反编译jar包得到的源代码函数参数名称是 arg0,arg1......这种形式,这是因为编译 jar 包的时候没有把符号表 ...
- Go 学习笔记(65)— Go 中函数参数是传值还是传引用
Go 语言中,函数参数传递采用是值传递的方式.所谓"值传递",就是将实际参数在内存中的表示逐位拷贝到形式参数中.对于像整型.数组.结构体这类类型,它们的内存表示就是它们自身的数据内 ...
- C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)
每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 1. 函数声明 函数声明告诉编译器函数的名称.返回类型和参数.函数声明包括以下几个部分: ret ...
- python基础(三元运算+深浅拷贝+函数参数)
三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 1 书写格式: 2 result = 值1 if 条件 else 值2 3 即如果条件成立,则将值1赋给result ...
- C指针6:指针变量作为函数参数
在C语言中,函数的参数不仅可以是整数.小数.字符等具体的数据,还可以是指向它们的指针.用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着 ...
- 双重指针作为函数参数的妙用
双重指针作为函数参数,可以在函数函数内部修改外部指针的值.主要用法包括: 1. 在函数内部分配内存,作为函数参数返回: 2. 在函数内部设置指针为空: #include <stdio.h> ...
- C++ std::function<void(int)> 和 std::function<void()> 作为函数参数的注意事项
前言 std::function 作为标准库提供的函数指针,使用起来还是比较方便的,不过在使用过程中有一些需要注意的细节,这里做一个简单的记录. 基本使用 头文件: #include <func ...
- C++ 函数参数 值传递与引用传递
以前我们在C语言中函数参数传递过程中,如果我们想要让当A函数作用域中的变量经过B函数处理之后的数值仍然在A函数中生效,这个时候函数参数的传递时需要引用方式去传递,方式如下: #include < ...
最新文章
- 目前付款申请单内网打开慢的问题
- Delphi与ASP结合发邮件
- 003_Servlet生命周期
- 拼接字符串的两种方式
- c语言常量结构体的成员,c语言之结构体
- Spring3国际化和本地化
- 可缺省的CSS布局——张鑫旭
- vue实现两重列表集合,点击显示,点击隐藏的折叠效果,(默认显示集合最新一条数据,点击展开,显示集合所有数据)...
- torchtext处理文本数据——使用自己的word2vec模型作为词向量建立词表(学习二)
- Vnc-server——linux远程桌面配置
- java面试题框架篇
- 如何在网上买到下铺票2020_网上订票怎么选下铺
- KVM虚拟化技术浅析
- [ javascript ] 司徒正美的fadeOut-fadeIn效果!
- winform datagridview 没有出现垂直滚动条 上下_木门安装中出现问题如何解决?
- 循环控制语句--for循环
- AVI视频封装格式(阅读笔记)
- 虚拟化之Proxmox VE集群管理工具pvecm介绍和使用
- 常用计算机视觉库,各种常用计算机视觉库
- Dart plugin not installed; this adds Dart specific functionality. Flutter plugin not installed;
热门文章
- 四川工程职业技术学院计算机专业,四川工程职业技术学院学生在四川省大学生计算机作品大赛获佳绩...
- java 百度地图_Java web实现百度地图导航
- Bit、Byte、KB、MB(M)、GB(G)关系
- [4G/5G/6G专题基础-160]: BLER与MCS的关系、MCS表格的选择
- Android 短信验证码自动填写
- linux stat获取文件大小,Linux查看文件大小的几种方法示例 stat du ls awk (转)
- oracle模糊批量查询,Oracle 模糊查询方法
- android系统底层的updater 命令,Android ROM 刷机脚本 updater-script 的基本流程和初级语句...
- win10系统u盘安装单个文件超过4g解决办法
- 上海市建平中学2021年高考成绩查询,2021年上海市高中排名一览表