Chinaunix首页 | 论坛 | 博客
  • 博客访问: 401922
  • 博文数量: 103
  • 博客积分: 3073
  • 博客等级: 中校
  • 技术积分: 1078
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-23 15:04
文章分类

全部博文(103)

文章存档

2012年(13)

2011年(76)

2010年(14)

分类: 嵌入式

2011-03-30 19:29:10


The registers RAX, RCX, RDX, R8, R9, R10, R11 are considered volatile and must be considered destroyed on function calls (unless otherwise safety-provable by analysis such as whole program optimization).

The registers RBX, RBP, RDI, RSI, R12, R13, R14, and R15 are considered nonvolatile and must be saved and restored by a function that uses them.


也就是说,你在写汇编子程序,不能修改RBX, RBP, RDI, RSI, R12, R13, R14, and R15 的值,否则就会出错。如果需要使用这些寄存器,需要首先把他们push 栈中,函数返回时,pop。

在用gcc 编译时可以修改r12

在icc编译不可以修改r12

r12 unused for C


阅读(1737) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~