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

已锁定

芳季

西门子1847工业学习平台

  • 帖子

    15511
  • 精华

    101
  • 被关注

    961

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2023-01-17 09:21:25

16楼

展开查看
以下是引用xinchen在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

共有8945条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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