内联汇编的解释。

xuanmao 2011-02-19 03:13:38
asm volatile ("mov sp, %0\n\t"::"r"(val));

请高手解释下这句的意思。 包含几部分,每部分的意思是什么
...全文
185 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
embeddedstudy 2011-02-19
  • 打赏
  • 举报
回复
内嵌汇编语法如下:

__asm__(
汇编语句模板:
输出部分:
输入部分:
破坏描述部分)
各部分使用“:”格
开,汇编语句模板必不可少,其他三部分可选,如果使用了后面的部分,而前面部分为空,
也需要用“:”格开,相应部分内容为空。
汇编语句模板由汇编语句序列组成,语句之间使用“;”、“\n”或“\n\t”分开。
指令中的操作数可以使用占位符引用C语言变量,操作数占位符最多10个,名称如下:%0,%1…,%9。
对于这句
asm volatile ("mov sp, %0\n\t"::"r"(val));
asm表示内嵌汇编
volatile表示告知编译器这段汇编语句不用优化
"mov sp, %0\n\t"表示汇编语句,%0表示引用c语言变量,在这里就是val变量
输出部分为空
"r"(val)表示输入部分,r表示使用任何可用的通用寄存器(变量和立即数都可以)
没有破坏描述部分,最后一个:不用写
这个部分是告诉编译器你修改过的寄存器,编译器会自动把保存这些寄存器值的指令加在内嵌汇编之前,再把恢复寄存器值的指令加在内嵌汇编之后
具体你可以搜索“内嵌汇编”

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧