如何直接調用「printf」而不包括stdio.h?一個簡單的C程序沒有#include <stdio.h>
我發現了一個有趣的教程在這裏:
http://www.halcode.com/archives/2008/05/11/hello-world-c-and-gnu-as/
所以,這裏是我的嘗試:
int main(){
char ss[] = "hello";
asm (
"pushl %ebp ;"
"movl %esp, %ebp ;"
"subl $4, %esp ;"
"movl $ss, (%esp) ;"
"call _printf ;"
"movl $0, %eax ;"
"leave ;"
"ret ;"
);
return 0;
}
我使用MinGW的4.4,這裏是我如何編譯:
gcc -c hello.c -o hello.o
ld hello.o -o hello.exe C:/ mingw/lib/crt2。 o C:/mingw/lib/gcc/mingw32/4.4.0/crtbegin.o C:/mingw/lib/gcc/mingw32/4.4.0/crtend.o -LC:/ mingw/lib/gcc/mingw32 /4.4.0 -LC:/ MinGW的/ lib目錄-lmingw32 -lgcc -lmsvcrt -lkernel32
不幸的是,它失敗:
hello.o:hello.c的:(文字+ 0×26) :未定義的參考'ss'
如何解決這個問題?
爲什麼你需要? – 2009-09-27 09:44:38
@艾哈邁德 - 正在學習禁止?知識的獲取是不是皺起了眉頭? – 2009-09-27 09:45:43
好吧,只是純粹的好奇心 我幾乎知道它並不重要 – anta40 2009-09-27 09:46:23