简单的内联汇编程序无法编译

时间:2011-04-30 01:53:06

标签: c compiler-errors inline-assembly

这让我感到疯狂......我确信这里有一些非常小的我在做错了,但是在尝试30分钟和谷歌搜索后我无法弄清楚它是什么。我正在尝试使用一些内联汇编编译一个非常简单的C程序,然后对其进行反汇编,以获取指令的机器代码。这是一个学校编程项目。这是我最近的尝试:

int main() 
{
asm(
    "movl   $0x5bc1229f,0x0804c1e8"
    "movl   $0x08048f9c,%edx"
    "push   %edx"
    "ret"
      );
}

当我编译它时,我得到错误:

/var/folders/kI/kIAe03vJFdClYy0r0mmBp++++TI/-Tmp-//cc2xKnoz.s:9:junk `movl $0x08048f9c' after expression

/var/folders/kI/kIAe03vJFdClYy0r0mmBp++++TI/-Tmp-//cc2xKnoz.s:9:bad register name `%edxpush%edxret'

感谢您的帮助:)

1 个答案:

答案 0 :(得分:2)

尝试

int main()
{
asm(
    "movl   $0x5bc1229f,0x0804c1e8\n\t"
    "movl   $0x08048f9c,%edx\n\t"
    "push   %edx\n\t"
    "ret\n\t"
      );
}
相关问题