这让我感到疯狂......我确信这里有一些非常小的我在做错了,但是在尝试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'
感谢您的帮助:)
答案 0 :(得分:2)
尝试
int main()
{
asm(
"movl $0x5bc1229f,0x0804c1e8\n\t"
"movl $0x08048f9c,%edx\n\t"
"push %edx\n\t"
"ret\n\t"
);
}