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

傻瓜式网站专门查大学的网站

傻瓜式网站,专门查大学的网站,wordpress计算器主题,wordpress做多语言版x86-64 System V ABI保证在调用之前进行16字节的堆栈对齐,因此,允许libc系统将其用于16字节的对齐加载/存储.如果您破坏了ABI,那么当事情崩溃时,这就是您的问题.在进入某个函数时,在调用推送了一个返回地址之后,RSP -8会对齐16个字节,再按一次将使您可以调用另一个函数.当然,通…x86-64 System V ABI保证在调用之前进行16字节的堆栈对齐,因此,允许libc系统将其用于16字节的对齐加载/存储.如果您破坏了ABI,那么当事情崩溃时,这就是您的问题.在进入某个函数时,在调用推送了一个返回地址之后,RSP -8会对齐16个字节,再按一次将使您可以调用另一个函数.当然,通过使用奇数次压入或使用sub rsp,16 * n 8来保留堆栈空间,GCC当然通常没有问题.只要您仅读取变量而不分配变量,就可以将带有asm(“ rsp”)的register-asm局部变量与asm(“ rsp”)配合使用.您说您正在使用GCC7.3. I put your code on the Godbolt compiler explorer并使用-O3,-O2,-O1和-O0进行编译.它在所有优化级别上都遵循ABI,使之成为以sub rsp,8开头的主函数,并且直到函数结束时才修改函数内部的RSP(调用除外).我检查过的clang和gcc的所有其他版本和优化级别也是如此.这是gcc7.3 -O3的代码源请注意,除了在函数体内读取RSP以外,它对RSP均无任何作用,因此,如果使用有效的RSP(16字节对齐-8)调用main,则main的所有功能还将使用16字节对齐的RSP进行调用. (并且它永远不会发现sp 8为真,因此它永远不会首先调用system.)# gcc7.3 -O3main:sub rsp, 8xor eax, eaxmov edi, OFFSET FLAT:.LC0mov rsi, rsp # read RSP.call printftest spl, 8 # low 8 bits of RSPje .L2mov edi, OFFSET FLAT:.LC1call putsmov edi, OFFSET FLAT:.LC2call system.L2:xor eax, eaxadd rsp, 8ret如果您以某种非标准方式呼叫main,则违反了ABI.而且您不在问题中解释它,所以这不是MCVE.正如我在Does the C standard allow for an uninitialized bool to crash a program?中所述,允许编译器发出利用目标平台ABI所做的任何保证的代码.这包括使用movaps进行16字节的加载/存储,以利用传入的对齐保证来在堆栈上复制内容.gcc不能像clang那样完全优化if(),这是错过的优化.但是clang确实将其视为未初始化的变量.我认为,它没有在asm语句中使用它,因此本地寄存器asm(“ rsp”)对clang无效. Clang在第一个printf调用之前不修改RSI,所以clang的main实际上打印argv,根本不读取RSP.允许Clang执行此操作register-asm本地vars唯一受支持的用法是使“ r”(var)Extended-asm约束选择所需的寄存器. (https://gcc.gnu.org/onlinedocs/gcc/Local-Register-Variables.html).该手册并不意味着仅仅在其他时间使用这样的变量可能会有问题,因此我认为,根据书面规则,该代码通常应该是安全的,并且可以在实践中使用.手册确实说过使用调用优先寄存器(如x86上的“ rcx”)会导致变量被函数调用所破坏,所以也许使用rsp的变量会受到编译器生成的push / pop的影响吗这是一个有趣的测试用例在Godbolt链接上查看.// gcc wont compile this: error: unable to find a register to spill// clang simply copies the value back out of RDX before idivint sink;int divide(int a, int b) {register long long int dx asm (rdx) b;asm( : r(dx)); // actually make the compiler put the value in RDXsink a/b; // IDIV uses EDX as an inputreturn dx;}没有asm(“”“ r”(dx));, gcc会很好地进行编译,根本不会将b放入RDX中.
http://www.sadfv.cn/news/418266/

相关文章:

  • 网站注册账号网站百度手机端排名怎么查询
  • 网站做以后怎么修改网站内容免费网站域名注册申请
  • 佛山南海建设局网站汉中做网站的公司电话
  • 重庆大山建设有限公司网站深圳网页设计推广渠道
  • wordpress 写文章泉州优化seo网站关键词优化
  • 厦门 微网站建设公司甘肃再就业建设集团网站
  • 野外美食网站设计欣赏小程序开发公司推荐
  • 知名高端网站建设报价广西南宁公司网站制作
  • 做网站只开发手机端可不可以昆明官网seo公司
  • 足球竞猜网站开发网站推广报价
  • 北京昌平网站设计华为al00手机价格是多少钱
  • p2p网站怎么做电脑网游
  • 网站建设公司服务学院网站建设项目的成本计划书
  • 网站开发的软硬环境怎么描述wordpress官网密码错误
  • 郑州装修公司口碑哪家好网站推广优化c重庆
  • 网站开发要学哪些知识微信公众号如何快速涨粉
  • 站长工具查询域名网站 做百度推广有没有效果
  • 至高建设集团 网站合肥建设工程信息网官网
  • 成成品网站源码有限公司网站建立的步骤是( )。
  • 阜新全网营销网站建设便宜质量好的国产手表
  • 福州网站建设的公司搭建网站需要什么技术
  • 顺企网浙江网站建设网站卡片设计
  • wordpress网站加密码阿里云做电影网站
  • 关于网站建设的几点体会临安做网站的公司有哪些
  • asp网站后台制作东莞seo推广
  • 英文网站建设电话咨询广州市建设网站
  • 新吴区网站建设开发公司房价制定
  • 企业网站 建设过程wordpress中国
  • 用php写的网站计算机考试网页制作怎么做
  • 深圳网站建设公司多少钱如今做那些网站能致富