返回信息流asm volatile("xchgl %0,%1" : "=q" (ret), "=m" (*(volatile int *)lockptr)
: "0" (ret) : "memory");
我知道括号内是要跑的汇编命令, volatile是禁止编译器进行自动优化。 但是里边xchgl是干什么的 %0 %1又是干什么 还有冒号。。。 天呢。。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #26018同步于 2009/7/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
同志们,这句话我实在是看不懂啊 谁帮帮我
flyout
2009/7/9镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
搜GCC内嵌汇编
【 在 flyout (逗吗) 的大作中提到: 】
: asm volatile("xchgl %0,%1" : "=q" (ret), "=m" (*(volatile int *)lockptr)
: : "0" (ret) : "memory");
: 我知道括号内是要跑的汇编命令, volatile是禁止编译器进行自动优化。 但是里边xchgl是干什么的 %0 %1又是干什么 还有冒号。。。 天呢。。。
: ...................
【 在 flyout 的大作中提到: 】
: asm volatile("xchgl %0,%1" : "=q" (ret), "=m" (*(volatile int *)lockptr)
: : "0" (ret) : "memory");
: 我知道括号内是要跑的汇编命令, volatile是禁止编译器进行自动优化。 但是里边xchgl是干什么的 %0 %1又是干什么 还有冒号。。。 天呢。。。
xchgl 指令是交换指令。
难道是交换两个参数ret和*lockptr的值?
关于嵌入式汇编
图书馆有本书叫什么:linux内核完全注解
里面有讲
%0和%1是参数还是寄存器来着
PS:也可以去嵌入式版块讨论看看
http://forum.byr.edu.cn/wForum/board.php?name=Embedded_System