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

娱乐公司网站建设价格企业网站的模块功能

娱乐公司网站建设价格,企业网站的模块功能,公司网站代做,网站服务器租用 配置esp#xff1a;扩展栈指针寄存器#xff0c;是指针寄存器的一种#xff0c;用于存放函数栈顶指针#xff08;栈顶指针#xff09; ebp#xff1a;扩展基址指针寄存器#xff0c;也被称为帧指针寄存器#xff0c;用于存放函数栈底指针#xff08;栈底指针#xff09;。…esp扩展栈指针寄存器是指针寄存器的一种用于存放函数栈顶指针栈顶指针 ebp扩展基址指针寄存器也被称为帧指针寄存器用于存放函数栈底指针栈底指针。 esp和ebp有什么关系呢 ebp只是存取某时刻的esp这个时刻就是进入一个函数内后cpu会将esp的值赋给ebp此时就可以通过ebp对栈进行操作比如获取函数参数局部变量等实际上使用esp也可以只是esp可能会变化去数据的时候很不方便 下面我们通过一个例子来说明 #include stdio.hint function_add(int a,int b); int main() {int a1,b1,sum0;sumfunction_add(a,b);printf(sum%d,sum);return 0; } int function_add(int a,int b) {return ab;}这段程序的功能是定义一个函数实现两个参数相加然后打印出来下面来分析 int a1,b1,sum0;sumfunction_add(a,b);这两句反汇编如下 7 int a1,b1,sum0; 00401038 C7 45 FC 01 00 00 00 mov dword ptr [ebp-4],1 ;偏移地址为[ebp-4]存放1 0040103F C7 45 F8 01 00 00 00 mov dword ptr [ebp-8],1 ;偏移地址为[ebp-8]存放1 00401046 C7 45 F4 00 00 00 00 mov dword ptr [ebp-0Ch],0 ;偏移地址为[ebp-0ch]存放0 8: sumfunction_add(a,b); 0040104D 8B 45 F8 mov eax,dword ptr [ebp-8] ;eax的值设置为1 00401050 50 push eax ;压入栈 00401051 8B 4D FC mov ecx,dword ptr [ebp-4] ;ecx的值设置为1 00401054 51 push ecx ;入栈 00401055 E8 AB FF FF FF call ILT0(function_add) (00401005) 0040105A 83 C4 08 add esp,8 0040105D 89 45 F4 mov dword ptr [ebp-0Ch],eax当执行到这段代码会调到function_add函数执行 call ILT0(function_add) (00401005)这段一共push两次假设在没有这两次push前设espMpush两次后espM-8 执行call语句 espM-12 function_add反汇编的代码为 12: int function_add(int a,int b) 13: { 004010A0 55 push ebp 004010A1 8B EC mov ebp,esp 004010A3 83 EC 40 sub esp,40h 004010A6 53 push ebx 004010A7 56 push esi 004010A8 57 push edi 004010A9 8D 7D C0 lea edi,[ebp-40h] 004010AC B9 10 00 00 00 mov ecx,10h 004010B1 B8 CC CC CC CC mov eax,0CCCCCCCCh 004010B6 F3 AB rep stos dword ptr [edi] 14: return ab; 004010B8 8B 45 08 mov eax,dword ptr [ebp8] 004010BB 03 45 0C add eax,dword ptr [ebp0Ch] 15: 16: } 004010BE 5F pop edi 004010BF 5E pop esi 004010C0 5B pop ebx 004010C1 8B E5 mov esp,ebp 004010C3 5D pop ebp 004010C4 C3 ret 我们可以看到在函数前面首先将ebp压入栈然后将esp的值赋值给ebp此时 espM-16ebp的值和esp相同 push ebp mov ebp,esp此时栈里情况为 在函数里都是通过ebp对栈的数据进行操作的比如获取参数的值 004010B8 8B 45 08 mov eax,dword ptr [ebp8] 004010BB 03 45 0C add eax,dword ptr [ebp0Ch]因为在函数里esp的值可能是变化的ebp的值不变通过ebp来操作数据很方便 在最后 004010C1 8B E5 mov esp,ebp 004010C3 5D pop ebp将espebp的值变成调用function_add之前的值这样看起来只是实现函数的功能其他并没有啥变化再使用ret语句返回去然后继续往下执行语句 0040105A 83 C4 08 add esp,8总结 esp始终指向栈顶ebp只要在调用函数时取值为栈顶这样可方便对数据的操作函数调用时EBP的值入栈然后ESP的值传给EBP。函数调用结束后EBP将值传回ESPESP又指向了原来的栈顶地址。这样看起来只是实现函数的功能其他看起来没有变化
http://wiki.neutronadmin.com/news/390777/

相关文章:

  • 外贸网站建设需建立公司网站多少钱
  • 网站开发时间表网站建设过程小结
  • 怎么做磁力网站支付网站开发
  • 做视频包的网站有哪些无锡做网站排名
  • 电商网站界面设计流程wordpress 缩进 插件
  • 程序员做项目的网站网站怎么seo关键词排名优化推广
  • 宿松县住房和城乡建设局网站建设银行上虞支行网站
  • wordpress下载网站如何制作史莱姆 简单
  • 上海网站设计案例网站改版建议策划书
  • 架设网站的目的三维家在线设计官网
  • 网站网站代理怎么做如何做天猫网站
  • 外部门户网站首页宝塔一键迁移WordPress
  • 做网站的公司主要是干啥个人博客网站备案
  • C4D有哪些做模型的网站网站建设服务器的搭建方式
  • dedecms网站迁移网站封面怎么做
  • 山西省城乡住房和建设厅网站led外贸网站
  • 一个服务器可以放几个网站网站开发源代码什么意思
  • 云南做网站多少钱永久免费国外ip代理
  • 公司做影视网站侵权合肥网站建设方案托管
  • 喀什地区建设局网站兴国做网站
  • 网站开发公司是干嘛的做网站调用无广告视频
  • 要怎么推广网站网站建设风格定位
  • 织梦搭建商城网站海会主机做的网站都能干什么的
  • 国际物流公司网站建e网室内设计效果图复式
  • 模仿网站侵权吗定制高端网站建设服务商
  • 建设通银行官方网站培训心得简短50字
  • 网站更换域名 seo可以做视频创收的网站
  • 建网站成本江苏省 建设 注册中心网站
  • 域名网站网址图片页面设计
  • 国内比较知名的大型门户网站wordpress mysql5.7