我知道还有其他一些类似的问题,无论是否是 StackOverflow。我为此研究了很多,但仍然没有找到单一的解决方案。我正在做一个操作系统作为一个副项目。我一直在做汇编,但现在我想加入 C 代码。为了测试,我制作了这个汇编代码文件(称为 test.asm):
[BITS 32]
GLOBAL _a
SECTION .text
_a:
jmp $
Run Code Online (Sandbox Code Playgroud)
然后我制作了这个 C 文件(称为 main.c):
extern void a(void);
int main(void)
{
a();
}
Run Code Online (Sandbox Code Playgroud)
为了链接,我使用了这个文件(称为 make.bat):
"C:\minGW\bin\gcc.exe" -ffreestanding -c -o c.o main.c
nasm -f coff -o asm.o test.asm
"C:\minGW\bin\ld.exe" -Ttext 0x100000 --oformat binary -o out.bin c.o asm.o
pause
Run Code Online (Sandbox Code Playgroud)
我一直在研究多年,但我仍在努力寻找答案。我希望这不会被标记为重复。我承认存在类似的问题,但都有不同的答案,没有一个对我有用。
问题:我做错了什么?