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

网站开发评分标准vs做网站如何放背景图

网站开发评分标准,vs做网站如何放背景图,可以做彩票网站的工作室,seo推广怎么入门文章目录 函数调用流程栈相关寄存器及的作用简介寄存器功能指令功能 栈函数的括号{}正括号反括号 参数传递传值#xff0c;变量不可改传指针#xff0c;变量可改C 传引用 函数调用实例 函数调用流程 目标#xff1a;函数调用前后栈保持不变 保存main函数的寄存器上下文移… 文章目录 函数调用流程栈相关寄存器及的作用简介寄存器功能指令功能 栈函数的括号{}正括号反括号 参数传递传值变量不可改传指针变量可改C 传引用 函数调用实例 函数调用流程 目标函数调用前后栈保持不变 保存main函数的寄存器上下文移动栈指针到新栈调用新函数新函数会开辟内存然后操作恢复栈指针 栈相关寄存器及的作用简介 寄存器功能 ESP/RSP堆栈指针寄存器指向栈顶。栈顶指针 EBP/RBP栈底指针指向栈的底部通常用ebp偏移量的形式来定位函数存放在栈中的局部变量 rax通常用于存储函数调用返回值 rdi第一个入参 rsi第二个入参 rdx第三个入参 rcx第四个入参 r8第五个入参 r9第六个入参 寄存器ebp作为当前函数的“栈帧”基地址配合一定的偏移就可以读、写函数体的临时变量。如果一个变量是通过ebp寄存器间接访问的那么它往往是临时变量也叫“栈”变量。 指令功能 push rbp 保存上下文保存rbp值 1.rbp里面的值放到当前rsp指向的位置保存当前栈底指针的值 2. 然后rsp–栈顶指针向上移动 pop eax 恢复栈帧 1. 栈顶指针向下移动这里的值保存的是原函数的栈底位置 2. ebp指向esp里面值的位置移动栈底指针到原函数位置 call 1. 会把call指令的下一条指令压入栈把下一条指令的地址也就是函数func的返回地址(0x401105e)压入堆栈 2.CPU跳转到函数func的首地址。 栈 栈是存储临时数据的区域在普通内存中它的特点是通过push指令和pop指令进行数据的存储和读出。往栈中存储数据称为“入栈”从栈中读出数据称为“出栈”。32位x86系列的CPU中进行1次push或pop即可处理32位4字节的数据。push指令和pop指令中只有一个操作数。该操作数表示的是“push的是什么及pop的是什么”而不需要指定“对哪一个地址编号的内存进行push或pop”。 这是因为对栈进行读写的内存地址是由esp寄存器栈指针进行管理的。push指令和pop指令运行后esp寄存器的值会自动进行更新push指令是-4, pop命令是4因而程序员就没有必要指定内存地址了。 栈是由大地址向小地址递减而堆和普通内存是小地址到大地址递增 操作系统会为每个任务进程或线程分配一段内存当作任务“堆栈”CPU则提供两个寄存器esp、ebp用来标识当前函数对“堆栈”的使用情况。随着函数的逐层调用函数的“栈帧”会逐次堆叠互不重合随着函数的逐层返回函数的“栈帧”会被就地放弃但不会清理内存 函数的括号{} 其实函数的调用主要部分就是正反括号的内容。 正负括号都对应两条指令。 正括号 先看正括号三条指令作用是保存原栈并分配新的栈空间 push rbp : push指令把寄存器ebp的值压入“栈顶”然后将“栈顶”红色水位线CPU寄存器esp上移扩大栈空间。至此main函数的“栈帧”保护工作完成然后通过mov指令更新一下“栈帧”基准线让ebp指向esp这里就是新的func的栈了 反括号 然后看反括号两条指令反括号作用是恢复栈 pop, 把事先压入“栈顶”的ebp值返还给CPU寄存器ebp。这样蓝色基准线就恢复到了最开始的位置。然后esp红色水位线也随之下降。esp和ebp的值就都恢复了。ret指令把“栈顶”处的返回值传给CPU寄存器rip这样CPU就可以跳转到主调函数main被打断的地方0x401105e继续执行了。 参数传递 先看下传递参数的汇编 传值调用和传指针其实都是将值传递到函数中只不过这个值含义不同指针是一个地址的值。还可以看出用作传参的寄存器是哪几个。 传值变量不可改 我们接着看函数中对参数赋值的汇编 1. 这里会将参数寄存器中的值放入栈中。然后释放参数寄存器。 2. 然后将内存地址数据赋值。 3. 这也就说明原来参数的值被复制了一份到内存中修改当前形参的值实际是修改栈中内存的值原变量不会被修改 传指针变量可改 首先还是将参数的值放入内存中释放寄存器然后将参数x的内存地址传给寄存器寄存器当前存储的是该地址然后向该寄存器中存储的地址中写入0. 这也就直接修改了内存中原变量的值这里的寄存器rax起到了一个中间过渡作用。 Q为什么传递参数是通过CPU寄存器而不是直接压入堆栈呢 A传递参数也可以不通过CPU寄存器而通过压入堆栈的方式一些老版本的编译器也是如此操作的。但通过寄存器传递可以避免一些内存操作一定程度上有利于提高函数的执行效率。 C 传引用 C 传引用和传指针的汇编相同所以传引用只是一个语法糖 函数调用实例
http://www.pierceye.com/news/278764/

相关文章:

  • 德州做网站优化专门做酒的网站
  • 旅游网站建设案例分析北京seo案例
  • 网站建设公司 优势单页网站对攻击的好处
  • 网站域名更换济南代做标书网站标志
  • 网站开发实用技术答案外国出名的设计网站
  • 最珠海app下载官方win10系统优化软件哪个好
  • 宜春公司网站建设百度地图广告投放
  • wordpress 2.8快速网站优化哪家好
  • 在百度上做购物网站云虚拟主机怎么做2个网站
  • 律师网站模版网页文章导入wordpress
  • 常州市城乡建设局网站做网站和优化共多少钱?
  • 做o2o平台网站需要多少钱买卖域名的网站好
  • 网站设计 手写室内设计奖项有哪些
  • 做电影网站需要那种服务器本地电脑搭建服务器
  • 分析某个网站建设百度知道一下首页
  • 贵池区城乡与住房建设网站建站快车是什么
  • 建站程序aspiis 默认网站 删除
  • 手机开网店的免费平台河南seo推广多少钱
  • 网站app推广怎么做wordpress 手机号注册
  • 网站开发到上线需要多久骆驼有没有做网站的公司
  • 中小企业网站建设示范平台wordpress停用react
  • 网站怎样防止攻击seo顾问培训
  • 网站建设后需要维护吗微信安全中心官网
  • dw可以做h5网站设计素材网站0
  • 建设银行郑州中心支行网站青海商会网站建设公司
  • 国外小型网站中国视觉设计网
  • 沈阳专业网站制作团队泰安网络软件公司
  • 网站建设招聘兼职0基础建站教程
  • 如何从零开始做网站文学网站建设平台
  • 企业网站的网址通常包含dchaser wordpress