当前位置: 首页 > news >正文

如何在社交网站上做视频推广方案网站建设与维护培训

如何在社交网站上做视频推广方案,网站建设与维护培训,建筑施工合同完整版,家装设计师培训要多久前言 在编程中#xff0c;理解函数调用约定和栈的机制对于编写高效代码、调试程序以及进行逆向工程至关重要。本文将深入探讨 C 和 C 的调用约定#xff0c;以及栈与平栈的相关知识。 C 调用约定 在 C 语言中#xff0c;默认的调用约定是 cdecl。cdecl 调用约定的特点如下理解函数调用约定和栈的机制对于编写高效代码、调试程序以及进行逆向工程至关重要。本文将深入探讨 C 和 C 的调用约定以及栈与平栈的相关知识。 C 调用约定 在 C 语言中默认的调用约定是 cdecl。cdecl 调用约定的特点如下 参数传递参数从右向左依次压入栈中。栈清理调用者负责清理栈即调用者在函数返回后负责平栈。返回值返回值通常存放在 EAX 寄存器中。 示例 int add(int a, int b) {return a b; }int main() {int result add(3, 4); // 调用add函数return 0; }在汇编层面调用 add(3, 4) 的代码可能如下 push 4 ; 第二个参数压栈 push 3 ; 第一个参数压栈 call add ; 调用add函数 add esp, 8 ; 调用者平栈清理8字节的栈空间C 调用约定 C 调用约定与 C 调用约定有所不同主要体现在以下几点 名称修饰Name Mangling C 编译器会对函数名进行修饰Name Mangling以支持函数重载、命名空间等特性。例如函数 int add(int a, int b) 可能会被修饰为 _Z3addii。C 语言没有名称修饰函数名在编译后保持不变。 thiscall 调用约定 在 C 中非静态成员函数的调用约定通常是 thiscall。thiscall 调用约定的特点 this 指针this 指针通常通过 ECX 寄存器传递。参数传递其他参数从右向左压入栈中。栈清理被调用函数负责清理栈。 示例 class MyClass { public:int add(int a, int b) {return a b;} };int main() {MyClass obj;int result obj.add(3, 4); // 调用成员函数addreturn 0; }在汇编层面调用 obj.add(3, 4) 的代码可能如下 lea ecx, [obj] ; 将this指针即obj的地址放入ECX寄存器 push 4 ; 第二个参数压栈 push 3 ; 第一个参数压栈 call ?addMyClassQAEHHHZ ; 调用成员函数add栈与平栈 栈的基本概念 栈Stack栈是一种后进先出LIFO的数据结构用于存储函数调用时的局部变量、参数、返回地址等信息。栈帧Stack Frame每个函数调用都会在栈上创建一个栈帧用于存储该函数的局部变量、参数等信息。栈指针ESPESP 寄存器指向当前栈顶的位置。 平栈Stack Cleanup 平栈是指在函数调用结束后清理栈上的参数使栈恢复到函数调用前的状态。不同的调用约定决定了由谁负责平栈 cdecl 调用约定 调用者负责平栈调用者在函数返回后使用 add esp, n 指令清理栈。示例push 4 push 3 call add add esp, 8 ; 调用者平栈清理8字节的栈空间stdcall 调用约定 被调用函数负责平栈被调用函数在返回前使用 ret n 指令自动清理栈。示例push 4 push 3 call add ; 被调用函数内部 ret 8 ; 被调用函数平栈清理8字节的栈空间fastcall 调用约定 被调用函数负责平栈被调用函数在返回前使用 ret n 指令自动清理栈。示例mov ecx, 3 ; 第一个参数通过ECX寄存器传递 mov edx, 4 ; 第二个参数通过EDX寄存器传递 call add ; 被调用函数内部 ret 0 ; 没有参数通过栈传递无需清理栈thiscall 调用约定 被调用函数负责平栈被调用函数在返回前使用 ret n 指令自动清理栈。示例lea ecx, [obj] ; this指针通过ECX寄存器传递 push 4 ; 第二个参数压栈 push 3 ; 第一个参数压栈 call ?addMyClassQAEHHHZ ; 被调用函数内部 ret 8 ; 被调用函数平栈清理8字节的栈空间总结 C 调用约定默认使用 cdecl调用者负责平栈。C 调用约定默认使用 thiscall被调用函数负责平栈。栈与平栈栈用于存储函数调用的局部变量和参数平栈是清理栈的过程不同的调用约定决定了由谁负责平栈。 理解这些调用约定和栈的机制对于编写高效的代码、调试程序以及进行逆向工程都非常重要。希望本文能帮助你更好地掌握这些知识提升编程技能 如果你觉得这篇文章对你有帮助请点赞、收藏并分享给你的朋友们
http://www.pierceye.com/news/190735/

相关文章:

  • 电子商务网站设计说明书开发一个网站
  • 网站制作长沙怎么做淘客手机网站
  • 五路居网站建设wordpress php允许上传文件大小
  • 旅游网站的设计代码下列哪些不属于企业网站建设基本原则
  • 房屋租赁网站开发意义做男鞋的网站
  • 网站负责人可以备案北京建设部网站 信息中心
  • 网站建设分录怎么开四川省城乡住房建设部网站首页
  • 刘家窑网站建设公司如何在网络上推广产品
  • 全球建站东莞市的网站公司哪家好
  • 地方网站发展怎么做链接推广产品
  • 上海制造网站公司网站优化做网站优化
  • vs2012做网站wordpress 页眉
  • 北网站建设重庆建设工程查询网站
  • 给我做网站的人老是给我留点尾巴太原本地网站搭建公司
  • 静态页面网站站标代码写进到静态页面了 怎么不显示呢?自助建站网
  • 免费在线代理网站微信会员卡管理系统
  • 和动物做的网站吗做网站销售怎么样
  • 宝塔面板做织梦网站深圳龙华大浪做网站公司
  • 阿里云建网站费用上海网站建设觉策动力
  • 电子商务网站的建设与维护方法h5第三方收款平台
  • 网站建设所需人力设计广告网站
  • php网站发送邮件动态倒计时网站模板
  • 温州建设网站制作wordpress调用文章简介
  • 大庆市建设局网站刘东科技公司做网站
  • 山东助企网站建设宁波百度关键词推广
  • 宜昌市夷陵区建设局网站培训推广 seo
  • 怎样做安居客网站用幽默的语言来形容网站开发
  • 宜昌网站建设选择宜昌慧享互动手机怎么防止网站跳转
  • 本地的上海网站建设公司汽车租赁网站设计
  • 在哪下载免费的英文版网站模板建站 网站程序有哪些