回复:到底子程序使用AC的前后是否要保存和恢复原有的AC值?

已锁定

xinchen

  • 帖子

    230
  • 精华

    1
  • 被关注

    5

论坛等级:侠圣

注册时间:2015-11-05

白金 白金 如何晋级?

发布于 2023-01-17 09:05:05

15楼


重新理一下:

  1. 第一种,如果要用到AC,子程序内部开始时保存AC,结束恢复AC,用哪个AC,就操作哪个,上层调用方不用管

  2. 第二种,上层保存AC,然后调用子程序,上层恢复AC;


是我理解有问题吗,两位推荐的方法是第一种吗,子程序内部处理AC;


第一种好(实现方式参见1L,理由参见2L

如果使用第二种,那当上层不知道子程序用了哪些AC时(尤其是子程序加密的时候),只能所有AC都保存,此时子程序调用多次,那上层调用方都要处理一遍,这只是AC,如果再算上其他公共资源,那没法玩了;


当然这些问题,在windows等系统里也会有,比如 cdecl stdcall 的堆栈平衡,或是 pushad/popad 保存恢复寄存器/标记位 是调用方/被调用方 处理;一般是规则统一,不统一的话最好是修改子程序,修改不了只能是调用方迁就了;









评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8941条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。