LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1259|回复: 7

请问AT&T汇编语法 %%代表什么意思?

[复制链接]
发表于 2007-11-6 19:22:26 | 显示全部楼层 |阅读模式
比如:"movl %%esp,%0\n\t"
%%是什么意思呢?
为什么语句后面都加上\n\t   或者   \n呢?
谢谢...
发表于 2007-11-6 20:00:03 | 显示全部楼层
\n\t 代表回车和换行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-6 20:08:22 | 显示全部楼层
那么%%
两个百分号连起来用代表什么意思呢?谢谢
回复 支持 反对

使用道具 举报

发表于 2007-11-6 20:20:28 | 显示全部楼层
因为一个%的语法已经被%n用掉了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-6 20:28:39 | 显示全部楼层
我当初也这么理解,但是cpu没有那么多的寄存器阿,
如果我的eax超出寄存器的数量的就出错了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-6 22:44:01 | 显示全部楼层
但是%不是一个语法元素,
比如在asm中
mov ax,5
在gas中就变成了
movl $5,%eax
所以%是在AT&T语法中一个引用寄存器必然要使用的符号
回复 支持 反对

使用道具 举报

发表于 2007-11-6 23:01:58 | 显示全部楼层
要在 "asm" 内使用寄存器 %eax,%eax 的前面应该再加一个%,换句话说就是 %%eax,因为 "asm" 使用 %0、 %1 等来标识变量。 任何带有一个 % 的数都看作是输入/输出操作数,而不认为是寄存器
PS: 原来是自己的处女贴啊,看来潜水太久了啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-9 21:49:41 | 显示全部楼层
试试,谢谢你的回答。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表