首页 > 编程语言 >win32下vs2013汇编传参和局部变量栈的分配

win32下vs2013汇编传参和局部变量栈的分配

时间:2024-05-14 22:57:11浏览次数:15  
标签:传参 变量 double 间隔 局部变量 vs2013 win32 个栈 ebp

1、传参无论是用寄存器还是栈,最终都要压入栈中。
2、第一个参数的位置是ebp+8,少于4byte的数据类型按照4Byte压栈,第n个参数的地址是[ebp+4+4n],ebp+4是返回地址。
8byte的数据类型,会先开辟8字节的栈空间esp-8,再把数据放入栈中。下一个参数的地址相应的要加8。
3、局部变量用函数自己的开辟栈帧。局部变量之间间隔2个栈帧。n个局部变量,除了double栈帧开辟的大小为0C0h+n*0Ch,double额外增加4byte。也是为了保持变量间间隔2个栈帧。
若第一个变量是char,那么第一个局部变量的位置是ebp-5,第二个变量ebp-11h,占用一个栈帧,间隔2个栈帧,第三个变量仍然间隔2个栈帧。
若第一个变量是short或int,第一个变量的位置是ebp-8,后面间隔0Ch,double变量本身占2个栈帧,但同下一个变量仍然间隔2个栈帧。
若第一个变量是double,位置是ebp-0C0h。后面间隔也是2个栈帧。

标签:传参,变量,double,间隔,局部变量,vs2013,win32,个栈,ebp
From: https://www.cnblogs.com/erhy/p/18192461

相关文章

  • Vue 事件处理 传参 以及事件的修饰符 的学习
    事件处理在vue中使用v-on来进行监听事件,可以简写成@两种展示方式内联事件处理器(较为简单理解就行)方法事件处理器两者的区别就是内联事件处理器是直接写在v-on里面的,<button@click="count++">自增</button>方法事件处理器是写在js里面的<button@click="addCount">点......
  • win32下汇编代码结构学习
    通常win32下三种不同的调用模式,不同版本的编译器,对汇编出来的代码都会代理一些差别。__cdecl是默认的方式,采用外平栈。__stdcall,采用内平栈。__fastcall,因为采用2个寄存器传参,所以多于2个参数后也会用外平栈的方式。传入的第一个参数位置在ebp+8,后面依次加4个字节,即第n个参数的......
  • .vue在调用method为delete时,出现了无法传参的情况
    1.vue在调用method为delete时,出现了无法传参的情况:调用deleteapi发现想传入的json格式的参数并没有传入成功,如下:  这其实是vue的delete方法和其他postputget方法不一样导致的,需要修改delete传参格式就行了: Vue中axiosdelete请求参数踩坑:vue中axios的delete和post......
  • Flutter中向Widget子组件传参数(多个参数)
    以下是传递参数的示例import'package:flutter/material.dart';classInspectListextendsStatefulWidget{constInspectList({super.key});@overrideState<StatefulWidget>createState()=>_InspectListState();}class_InspectListStateexte......
  • C#获取计算机唯一标识组装GUID ,延伸ManagementClass、WIN32_类库名
    usingSystem.Management;usingSystem.Security.Cryptography;usingSystem.Text;namespaceSWin{publicclassComGUID{privatestaticstringcomputerGUID=string.Empty;publicstaticstringValue(){if(str......
  • WEBAPI传参及默认首页设置
    开发工具:VS2017创建WEBAPI,1.选择ASP.NETCoreWeb应用程序2.选择如下,HTTPS配置勾选去掉,暂不配置3.“属性”中调试默认界面及launchsettings.json 4.调试以后默认页面 5. ......
  • dotnet C# 使用 Win32 函数获取用户下载文件夹的路径的方法
    大家都知道,在dotnet里面的可以使用Environment.GetFolderPath方法配合Environment.SpecialFolder枚举列出当前运行环境下的一些特殊文件夹。然而SpecialFolder枚举不包含对Download下载文件夹的枚举值,如咱需要获取用户当前的下载文件夹,需要使用Win32方法来辅助获取在......
  • 20.vue-组件传参(父传子,子传父)
    父传子:父组件向子组件传入一个参数,可以通过 props配置项,让组件接收外部传过来的数据1)传递数据这里需要注意,通过age="18"的方式,传递进去的数据是字符类型的,通过动态绑定:age="26"的方式,传递进去的数据是整型类型<!--这里需要注意,:age="26"代表v-bind动态绑定,传入的a......
  • 对象传参、返回与接收的优化
    C++的编译器会给一个空的类提供六个函数默认构造函数析构函数拷贝构造拷贝赋值移动构造移动赋值在提供构造函数时,编译器将不再提供默认构造这些函数在对象传参、返回对象、接收对象时会自动调用,所以有必要进行相应的优化,减少这种隐式调用以下面这段代码为例:#include......
  • 某函数传参
    在N-API中直接从一个函数向另一个函数传递参数稍微有点复杂,因为你需要正确地处理napi_value数组和环境(napi_env)。如果你想在一个N-API函数(CallAddFunction)中构造参数并直接调用另一个N-API函数(GetAddCheckArg),并且管理这些参数的传递,你将需要手动构建一个新的na......