函数参数传递一般通过栈,在此情形下,又有两种表现形式:

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 函数参数处理相关推荐

  1. ioctl 函数 参数 详解

    2019独角兽企业重金招聘Python工程师标准>>> ioctl 函数 参数 详解 2009-04-24 11:55 ioctl函数 本函数影响由fd参数引用的一个打开的文件. # ...

  2. Java获取函数参数名称

    原理 编译之后的class文件默认是不带有参数名称信息的,使用 IDE 时,反编译jar包得到的源代码函数参数名称是 arg0,arg1......这种形式,这是因为编译 jar 包的时候没有把符号表 ...

  3. Go 学习笔记(65)— Go 中函数参数是传值还是传引用

    Go 语言中,函数参数传递采用是值传递的方式.所谓"值传递",就是将实际参数在内存中的表示逐位拷贝到形式参数中.对于像整型.数组.结构体这类类型,它们的内存表示就是它们自身的数据内 ...

  4. C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)

    每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 1. 函数声明 函数声明告诉编译器函数的名称.返回类型和参数.函数声明包括以下几个部分: ret ...

  5. python基础(三元运算+深浅拷贝+函数参数)

    三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 1 书写格式: 2 result = 值1 if 条件 else 值2 3 即如果条件成立,则将值1赋给result ...

  6. C指针6:指针变量作为函数参数

    在C语言中,函数的参数不仅可以是整数.小数.字符等具体的数据,还可以是指向它们的指针.用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着 ...

  7. 双重指针作为函数参数的妙用

    双重指针作为函数参数,可以在函数函数内部修改外部指针的值.主要用法包括: 1. 在函数内部分配内存,作为函数参数返回: 2. 在函数内部设置指针为空: #include <stdio.h> ...

  8. C++ std::function<void(int)> 和 std::function<void()> 作为函数参数的注意事项

    前言 std::function 作为标准库提供的函数指针,使用起来还是比较方便的,不过在使用过程中有一些需要注意的细节,这里做一个简单的记录. 基本使用 头文件: #include <func ...

  9. C++ 函数参数 值传递与引用传递

    以前我们在C语言中函数参数传递过程中,如果我们想要让当A函数作用域中的变量经过B函数处理之后的数值仍然在A函数中生效,这个时候函数参数的传递时需要引用方式去传递,方式如下: #include < ...

最新文章

  1. 目前付款申请单内网打开慢的问题
  2. Delphi与ASP结合发邮件
  3. 003_Servlet生命周期
  4. 拼接字符串的两种方式
  5. c语言常量结构体的成员,c语言之结构体
  6. Spring3国际化和本地化
  7. 可缺省的CSS布局——张鑫旭
  8. vue实现两重列表集合,点击显示,点击隐藏的折叠效果,(默认显示集合最新一条数据,点击展开,显示集合所有数据)...
  9. torchtext处理文本数据——使用自己的word2vec模型作为词向量建立词表(学习二)
  10. Vnc-server——linux远程桌面配置
  11. java面试题框架篇
  12. 如何在网上买到下铺票2020_网上订票怎么选下铺
  13. KVM虚拟化技术浅析
  14. [ javascript ] 司徒正美的fadeOut-fadeIn效果!
  15. winform datagridview 没有出现垂直滚动条 上下_木门安装中出现问题如何解决?
  16. 循环控制语句--for循环
  17. AVI视频封装格式(阅读笔记)
  18. 虚拟化之Proxmox VE集群管理工具pvecm介绍和使用
  19. 常用计算机视觉库,各种常用计算机视觉库
  20. Dart plugin not installed; this adds Dart specific functionality. Flutter plugin not installed;

热门文章

  1. 四川工程职业技术学院计算机专业,四川工程职业技术学院学生在四川省大学生计算机作品大赛获佳绩...
  2. java 百度地图_Java web实现百度地图导航
  3. Bit、Byte、KB、MB(M)、GB(G)关系
  4. [4G/5G/6G专题基础-160]: BLER与MCS的关系、MCS表格的选择
  5. Android 短信验证码自动填写
  6. linux stat获取文件大小,Linux查看文件大小的几种方法示例 stat du ls awk (转)
  7. oracle模糊批量查询,Oracle 模糊查询方法
  8. android系统底层的updater 命令,Android ROM 刷机脚本 updater-script 的基本流程和初级语句...
  9. win10系统u盘安装单个文件超过4g解决办法
  10. 上海市建平中学2021年高考成绩查询,2021年上海市高中排名一览表