1

gccを使用してフラットバイナリファイルを作成しようとしていますobjcopy。私のCコードは次のようになります:

char* str = "Hello world!";
printString(str,12);

バイナリを作成するとき

C:\MinGW\bin\gcc -c cfile.c -o cfile.o
C:\MinGW\bin\gcc -nodefaultlibs -nostdlib -o comfile.o afile.o cfile.o
C:\MinGW\bin\objcopy -O binary comfile.o kernel.bin

コード セクション ( .text) は正しくリンクされていますが、データ セクション ( .rdata) はコード セクションの後ろに配置されているだけで、コード セクションとリンクされていません。データ セクションの何かにアクセスすると、正しい場所からではなく 0x0x401000 から何かが読み込まれ、クラッシュします。

これを解決する方法はありますか?

PS: 動作する C コードは次のとおりです。

char* str = "Hello world!"-0x401000;
printString(str,12);
4

0 に答える 0