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);