xiongce 发表于 2007-09-01 08:50

关于LINUX C中嵌入汇编 破坏部分问题

下面这个定义
#define copy_page(from,to) \
__asm__("cld ; rep ; movsl"::"S" (from),"D" (to),"c" (1024))
:"cx","di","si")
编译时就显示
can't find a register in class 'AREG' while reloading 'asm'
去掉后面的破坏部分就能编译通过,但这样显然不行 虽然这里不会出问题

偶想知道 破坏部分要怎么用,以及这里为什么加了就报错!!!

我用的是GCC 3.2.2 内核是2.4.20-8

folklore 发表于 2007-09-01 09:22

原帖由 xiongce 于 2007-9-1 08:50 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
下面这个定义
#define copy_page(from,to) \
__asm__("cld ; rep ; movsl"::"S" (from),"D" (to),"c" (1024))
:"cx","di","si")
编译时就显示
can't find a register in class 'AREG' while reloading 'as ...
现在的编译器自动识别。不能加,加了反而错。

不加一样能正确执行。

xiongce 发表于 2007-09-01 16:35

哦 原来是这样

谢谢楼上解答 再问下有没有这方面的文档想看下
页: [1]
查看完整版本: 关于LINUX C中嵌入汇编 破坏部分问题