我无法编译这个取自教程的程序。它应该打印“Hello World”。
void main()
{
__asm__("jmp forward\n\t"
"backward:\n\t"
"popl %esi\n\t"
"movl $4, %eax\n\t"
"movl $2, %ebx\n\t"
"movl %esi, %ecx\n\t"
"movl $12, %edx\n\t"
"int $0x80\n\t"
"int3\n\t"
"forward:\n\t"
"call backward\n\t"
".string \"Hello World\\n\""
);
}
gcc 4.7
在Linux下给我以下错误:
gcc hello.c -o hello
hello.c: Assembler messages:
hello.c:5: Error: invalid instruction suffix for `pop'
还有一种方法可以避免为每一行指定双引号吗?
另外,我想知道如何修改程序以使用libc
callprintf
而不是kernel
服务。