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

发布于 2022-09-30 03:58:41 字数 402 浏览 15 评论 0

下面这个定义
#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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南烟 2022-10-07 03:58:41

原帖由 xiongce 于 2007-9-1 08:50 发表
下面这个定义
#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 ...

现在的编译器自动识别。不能加,加了反而错。

不加一样能正确执行。

夢归不見 2022-10-07 03:58:41

哦 原来是这样

谢谢楼上解答 再问下有没有这方面的文档想看下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文