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

已锁定

xinchen

  • 帖子

    230
  • 精华

    1
  • 被关注

    5

论坛等级:侠圣

注册时间:2015-11-05

白金 白金 如何晋级?

发布于 2023-01-17 11:58:46

17楼

展开查看
以下是引用芳季在2023-01-17 09:21:25的发言 >16楼

我是楼主。我建议第二种。

一楼建议你的第一种。

我的意见是自己保存自己用过的东西很奇怪吗?不管上层还是下层。谁用谁保管。

以下是引用xinchen在2023-01-17 09:05:05的发言 >15楼:重新理一下:第一种...

引用15楼详细内容:


重新理一下:

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

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


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


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

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


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









考虑的角度不一样;

站在调用方角度,我为了保障整个程序能正常运行,尤其是在调用看不到源码的子程序时,我会不厌其烦的 保存AC、调用子程序、恢复AC,而我不知道子程序用的是哪个AC,我只能所有AC都进行保存恢复(幸亏AC只有4个,如果更多,那我什么都没干,就要花很多的 L 用于保存不知道子程序有没有用到的AC),此时我更希望子程序能够自理,别给我找事; 


站在子程序角度,我希望自己的程序能更健壮,兼容性更强,自家事自家知,我用了啥AC,我自己处理,不给外部带来不必要的麻烦,让外部放心调用;

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8933条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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