【发布时间】:2013-11-28 03:48:16
【问题描述】:
我用 GCC 试过这个:
#include <iostream>
using namespace std;
int main()
{
asm("mov $0x7, %al");
}
这就是输出:
退出:退出失败 7
所以我尝试了这个:
#include <iostream>
using namespace std;
int main()
{
asm("mov $0xcf, %eax";);
}
并得到这个错误:
错误:在 ';' 之前应为 `)'令牌。
我试过this guy's advice,但它不起作用。 This tutorial says otherwise.
我完全按照教程做的,如下图:
#include <iostream>
int main()
{
asm("movl $10, %eax");
}
并得到这个错误:
退出:ExitFailure 10
“ExitFailure”究竟是什么意思,为什么它们对应于操作数中的值?基本上,这里发生了什么?是我错了还是编译错了?
PS:这是一个错误日志;我的程序没有编译成功。
【问题讨论】:
-
当它说退出时,表示程序已编译并执行。
-
ExitFailure 听起来有问题。
-
它说退出失败,因为它返回了一些东西!=0
-
但是链接器并没有释放二进制文件,所以编译确实存在问题。
-
您的第一个 sn-p 在设置 main() 函数返回值时意外有效。由您用于运行程序的任何工具适当报告。设置 main() 返回值的更好方法是使用 return 语句。在任何关于 C 语言的介绍性书籍中都有很好的介绍。
标签: c++ assembly inline-assembly