免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4945 | 回复: 1
打印 上一主题 下一主题

如何知道嵌入式汇编寄存器哪个被使用了 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2009-08-03 15:06 |显示全部楼层
原帖由 zylthinking 于 2009-7-31 15:43 发表
经常看到嵌入式汇编直接使用寄存器, 并不保存原内容, 那万一原来内容是有用的怎么办?
这里面有什么约定吗?

比如 int a(){
    int b;
    asm{
        move %%eax, %%ebx;
    }
}

诸如此类, ...


这是clobber list的用场。

to proj: 寄存器别名完全是另外一回事, CPU自己做,编辑器完全不知道的事情。

论坛徽章:
0
2 [报告]
发表于 2009-08-03 22:02 |显示全部楼层
原帖由 Cyberman.Wu 于 2009-8-3 20:54 发表
根据ABI的约定,有些寄存器是要调用者保存的,而有些有特定的含义,所以在足够简单时偶尔会直接使用;但这样比较危险的。

个人感觉GCC的嵌入式汇编其实很难用的,原来我在项目中用一个东西折腾了很长时间。后 ...


diab在inline asm上,要么全抄gcc,要么是语法模仿。 我曾经写过一个相当复杂的gcc inline asm程序,diab编译、运行都没问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP