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

高新企业建设网站公司无需下载直接登录qq手机版

高新企业建设网站公司,无需下载直接登录qq手机版,畜牧企业网站模板,网谱网络科技有一个建议说时函数传递参数最好不超过四个#xff0c;原因有一个是参数太多难以维护#xff0c;另一个重要的原因就是函数传递小于四个参数时候效率会更高#xff0c;其实这个说法也不全对#xff0c;在不同的结构下不太一样#xff0c;也不一定是4 其实那么下面将探究函…有一个建议说时函数传递参数最好不超过四个原因有一个是参数太多难以维护另一个重要的原因就是函数传递小于四个参数时候效率会更高其实这个说法也不全对在不同的结构下不太一样也不一定是4 其实那么下面将探究函数参数传递相关的问题 X86架构 这里拿比较常用的cdecl举例先来一个简单的函数去传递六个参数去看传递的过程 #include stdio.h #include stdlib.hint foo (int arg1, int arg2, int arg3, int arg4, int arg5, int arg6) { int array[] {arg1, arg2, arg3, arg4, arg5, arg6};return 0; } int main () {foo(1, 2, 3, 4, 5, 6);return 0; } foo(1001, 1002, 1003, 1004, 1005, 1006)的反汇编 ESP为栈顶每条都将一个立即数常量值存储到相对于堆栈指针esp偏移一定字节数的位置也就是将这四个参数进行了压栈处理 int array[] { arg1,arg2,arg3,arg4,arg5,arg6 }的反汇编 会发现每回都从栈[rsp0xXX]里面取到一个参数并放到array里面 X86的参数传递调用约定 在32位的调用约定有cdecl(C标准)stdcall(WinAPI默认)fastcall三种 cdeclstdcall下规定参数传递顺序为从右到左依次压栈 fast下规定参数1、参数2、参数3、参数4分别保存在 RCX、RDX、R8D、R9D 剩下的参数从右往左一次入栈 X64架构  传递6个参数 #include stdio.h #include stdlib.hint foo (int arg1, int arg2, int arg3, int arg4, int arg5, int arg6) { int array[] {arg1, arg2, arg3, arg4, arg5, arg6};return 0; } int main () {foo(1, 2, 3, 4, 5, 6);return 0; } foo(1001, 1002, 1003, 1004, 1005, 1006)的反汇编 可以发现1234四个变量分别存入到了EAXEDX, R8D, R9D中了 但是多出去的56两个变量传递也压到了栈里面 后面的过程1234四个值会直接从EAXEDX, R8D, R9D四个寄存器中拿到 而56就需要[rsp0x28]和[rsp0x20]中拿到了 X64的调用约定 参数1、参数2、参数3、参数4分别保存在 RCX、RDX、R8D、R9D 剩下的参数从右往左一次入栈 ARM架构 ARM的CPU结构和X86不一样所以寄存器的命名不一样 和X64方式差不多前四个参数放到了r1,r2,r3,r4四个寄存器中剩下的也进行了压栈 Arm的调用约定 ARM和ARM64使用的是ATPCS(ARM-Thumb Procedure Call Standard/ARM-Thumb过程调用标准)的函数调用约定 参数1~参数4 分别保存到 R0~R3 寄存器中 剩下的参数从右往左一次入栈被调用者实现栈平衡返回值存放在 R0 中 区别和结论 当直接访问寄存器的时候不进行内存访问CPU访问寄存器的速度大概在1-2个时钟周期 当你从[rsp0xXX]获取数据时实际上是在进行一次内存访问内存访问的时钟周期大概在几十到上百之间但是现代CPU的chche的结构会缩短这个时间但是远远和直接访问寄存器的访问速度差的很远 可见在特定的结构中参数数量会对程序访问参数的速度有着一定的影响
http://www.w-s-a.com/news/337341/

相关文章:

  • 网站做了301重定向域名会自动跳转吗唐山地方志网站建设
  • 学校网站建设说明书海南省建设执业资格注册管理中心网站
  • 东莞哪家网站建设好网站风格设定
  • 自驾游网站模板搭建wordpress步骤
  • wordpress视频网站上传视频提升学历是什么意思
  • 江西省城乡建设厅建设网站浙江建设
  • 网站联系我们页面临平做网站
  • 如何用网站做cpa交互比较好的网站
  • 一家只做特卖的网站wordpress修改模板教程
  • 与恶魔做交易的网站成都到西安高铁票价
  • 太原网站制作哪家便宜长春昆仑建设股份有限公司网站
  • 优质做网站价格设计手机商城网站建设
  • 高校网站建设制度无锡网站建设排名
  • 做网站的软件wd的叫啥无锡公司网站建设服务
  • 网站建设一般需要多久网站服务器基本要素有哪些
  • 大连开发区网站开发公司免费网站建设哪个好?
  • 关于建设门户网站的通知海曙区建设局网站
  • 韩国建设部网站温州企业网站制作
  • 苏州网站建设优化贵州网站建设lonwone
  • 网站建设与推广方案模板网站建设教程搭建浊贝湖南岚鸿给力
  • 网站建设内部下单流程图昆明网站制作公司
  • 手机网站焦点图在线外链推广
  • 做静态页面的网站中国建设银行河南省分行网站
  • 镇平县两学一做专题网站佛山家居网站全网营销
  • 做网站的需求wordpress图片怎么居中
  • 网站开发的技术流程图抖音seo排名优化软件
  • dedecms做电商网站得物app官方下载安装
  • python做网站教程微网站 举例
  • 百度喜欢什么样的网站如何引用网站上的资料做文献
  • 如何给网站添加网站地图军刀seo