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

网站公司 转型中国企业100强排名

网站公司 转型,中国企业100强排名,优化分析,design工业设计免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:34.x64汇编写法(一) 上一个内容写了,汇编调…

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

上一个内容:34.x64汇编写法(一)

上一个内容写了,汇编调用c标准库里的getchar函数,这次写的是c调用汇编

首先说明一下 extern 这个单词,只要有 extern 这个单词就说明当前函数或变量是一个全局的,比如 extern int f; 这个代码,现在在文件1中写 extern int f; 然后文件2中也写 extern int f; ,文件1中把f的值设置成了10,然后在文件2中什么都不写,只写extern int f;这一句,此时f的值会是10,因为是全局的,文件1中的修改影响到了它,函数也一样(可能普通手段没办法修改函数,因为会语法不通过)

c代码

#include <iostream>// 带着 extern 这个单词就说明从全局中找,带着extern它的如果函数名重复了会出现问题
// 在全局中找一个 addShu ,这个addShu函数实用汇编实现的
extern "C" int addShu(int s1, int s2);
int main() {int num = addShu(11, 23);printf("num = %d", num);
}

汇编代码,addShu函数的实现

.codeaddShu procsub rsp, 100h ; 开辟栈xor rax, raxmov rax, rcx ; 获取第一个参数给raxadd rax, rdx ; 第一个参数与第二个参数进行相加add rsp, 100h ; 恢复栈ret ; 返回addShu endpend

效果图:

然后有一个问题,把num改成从全局的,并把它的值设置成999

汇编代码的修改,正常运行的话,它会返回999

实际上它返回的是 -1892892644

这里直接说答案-1892892644是num的内存地址,怎么发现通过断点,如下图设置断点(鼠标左键单击红色圆的位置就可以设置断点和取消断点)

运行后断点住

然后打开监视窗口

然后可以看到它们俩的值是正常的

然后点击下图红框位置,运行一行代码

然后看到rax的值并不是999

然后写一个 &num 表示取num的内存地址

然后鼠标右击选择以十六进制显示

然后就能发现rax的值是num的内存地址了

这个问题就是这里的mov变成了lea,所以要注意在使用全局变量赋值的时候,多写一句 mov rax,[rax]这样的代码,如下图红框

效果图:

汇编代码

extern num:far
.codeaddShu procsub rsp, 100h ; 开辟栈xor rax, raxmov rax, rcx ; 获取第一个参数给raxadd rax, rdx ; 第一个参数与第二个参数进行相加mov rax, num ; 获取全局变量nummov rax,[rax] ; 获取num的值add rsp, 100h ; 恢复栈ret ; 返回addShu endpend

c/c++代码

#include <iostream>// 带着 extern 这个单词就说明从全局中找,带着extern它的如果函数名重复了会出现问题
// 在全局中找一个 addShu ,这个addShu函数实用汇编实现的
extern "C" int addShu(int s1, int s2);
extern "C" int num = 999;
int main() {num = addShu(11, 23);printf("num = %d", num);
}


img


文章转载自:

http://ZF2pAFt1.brscd.cn
http://HFP7eWAh.brscd.cn
http://VSaczO05.brscd.cn
http://shu3rC6D.brscd.cn
http://Zu4f2WJ2.brscd.cn
http://2rsk0CFS.brscd.cn
http://BsBFDA7V.brscd.cn
http://o4u0kJvX.brscd.cn
http://6krUgk02.brscd.cn
http://V0ygch52.brscd.cn
http://ZkaUgrAD.brscd.cn
http://OBKI05kZ.brscd.cn
http://AcixRClo.brscd.cn
http://pfNyQN2e.brscd.cn
http://0wOeNLoL.brscd.cn
http://4NNoLNCw.brscd.cn
http://0xtpcZ6d.brscd.cn
http://DrwG4Qdn.brscd.cn
http://MjOoQSff.brscd.cn
http://CvMpHNxj.brscd.cn
http://M3hVhXvv.brscd.cn
http://lGHnLIY8.brscd.cn
http://oU74vfPo.brscd.cn
http://SfYYobQE.brscd.cn
http://RUhJW3pG.brscd.cn
http://iV10Gm0M.brscd.cn
http://BwiED7nY.brscd.cn
http://AYUquilo.brscd.cn
http://zNs2AfHl.brscd.cn
http://ecLhC6od.brscd.cn
http://www.dtcms.com/wzjs/639819.html

相关文章:

  • 突唯阿网站seo网站开发应该先写前端还是后端
  • 企业营销网站模板网站域名更改
  • 凡科做网站有什么用如何在百度里做推广网站
  • 做网站图片素材在线编辑单位网站查询工资链接怎么做
  • 金融软件网站建设公司排名制作网站能赚钱吗
  • 网站建设组织架构中国工信部备案查询系统
  • 精通网站建设 pdf微盘爱用建站正规吗
  • 做网站 郑州公司网站做用户记录表
  • 想建一个网站专业网站建设公司电话
  • 怎样做网站设计西安防疫今天最新消息
  • 做h5那个网站模板好宜昌 房地产网站建设
  • 帝国网站如何做中英文切换代驾系统定制开发
  • 做海报创意网站甘肃省交通建设集团有限公司网站
  • 个人主页静态网站网站做301
  • 网站推广链接厦门网站建设策划
  • wordpress电话咨询插件网站页面排名优化
  • 建局域网网站云南昆明网站建设公司
  • 装修公司网站该怎么做WordPress 图标字体
  • 做网站要不要花钱做店长如何在自己网站做直播
  • 网站默认数据库地址住房和城乡建设部执业资格注册中心网站
  • 西局网站建设软文是什么
  • 如何做自己的公司网站高级网页设计师证书
  • 政工网站建设方案软件平台是什么意思
  • 京东企业的电子网站建设网站运维
  • 宣传部网站建设策划书模板下载失败
  • 海南免费做网站云梦模板网站优缺点
  • 服饰东莞网站建设深圳网站设计成功刻
  • 织梦网站建设实验报告网红自助下单网站
  • 高端网站建设赣州白银建设工程网站
  • 什么叫网站维护建设网站第一步