当前位置: 技术问答>linux和unix
gcc里面的嵌入汇编语句
来源: 互联网 发布时间:2015-11-17
本文导语: 大家好 我问问在gcc里面的嵌入汇编语句中 例如:movl %%eax,%%ebx test %%ebx,%%ebx 其中为什么要两个%%,小弟不懂 好有就是test %%ebx,%%ebx这句话 我觉得没有什么意义啊,这样测试了ebx的值还是不变啊??? ...
大家好
我问问在gcc里面的嵌入汇编语句中
例如:movl %%eax,%%ebx
test %%ebx,%%ebx
其中为什么要两个%%,小弟不懂
好有就是test %%ebx,%%ebx这句话 我觉得没有什么意义啊,这样测试了ebx的值还是不变啊???
我问问在gcc里面的嵌入汇编语句中
例如:movl %%eax,%%ebx
test %%ebx,%%ebx
其中为什么要两个%%,小弟不懂
好有就是test %%ebx,%%ebx这句话 我觉得没有什么意义啊,这样测试了ebx的值还是不变啊???
|
在内嵌的汇编指令中可能会直接引用某些硬件寄存器,我们已经知道AT&T格式的汇编语言中,寄存器名以“%”作为前缀,为了在生成的汇编程序中保留这个“%”号,在asm语句中对硬件寄存器的引用必须用“%%”作为寄存器名称的前缀,之所以这样做,因为在内嵌汇编时%是一种标识,而真正的汇编语法中%却是要使用物理寄存器的一种符号,这就有点类似于C语言的转义字符一样
TEST用法:
TEST AX, 1 ;测试AX的第0位. TEST CL, 10101B ;测试CL的第0、2、4位
如果TEST %%ebx,%%ebx,条件表达示就为真,关键是后面的代码,你需要把后面的代码贴出来,别人才知道它的作用之所在
TEST用法:
TEST AX, 1 ;测试AX的第0位. TEST CL, 10101B ;测试CL的第0、2、4位
如果TEST %%ebx,%%ebx,条件表达示就为真,关键是后面的代码,你需要把后面的代码贴出来,别人才知道它的作用之所在