J'utilise des fichiers binaires plats en tant que programmes externes pour mon système d'exploitation. Quand je les compiles, comme ceci:Inclure le contenu de char array dans un fichier binaire plat
gcc -Wall ctest.c -o ctest.bin -nostdlib -Wl,-Ttext=0x8000,-nostdlib -masm=intel
objcopy -O binary -j .text ctest.bin ctest
Mais, ce faisant, le contenu du tableau de caractères ne sont pas mis dans le fichier. Ceci est mon code:
static volatile char string[4] = "Hi!\0";
static volatile char string2[15] = "Hello, World!\n\0";
int _start()
{
asm("mov eax, [string]");
asm("mov ebx, 0x00");
asm("int 0x01");
asm("mov eax, [string2]");
asm("mov ebx, 0x00");
asm("int 0x01");
return 0;
}
et quand je lance objdump (je l'ai couru sur l'elfe, mais je l'ai vérifié avait le même code que cela):
00008000 <_start>:
8000: 55 push ebp
8001: 89 e5 mov ebp,esp
8003: a1 70 90 00 00 mov eax,ds:0x9070
8008: bb 00 00 00 00 mov ebx,0x0
800d: cd 01 int 0x1
800f: a1 74 90 00 00 mov eax,ds:0x9074
8014: bb 00 00 00 00 mov ebx,0x0
8019: cd 01 int 0x1
801b: b8 00 00 00 00 mov eax,0x0
8020: 5d pop ebp
8021: c3 ret
Comme vous pouvez le voir, la le texte est introuvable. J'espérais qu'il ferait quelque chose comme ceci: string db "Hi!", 0
que je ferais avec nasm.
Que dois-je faire pour inclure les caractères dans le fichier bin de sortie sans le coder dans l'assemblage?
Merci d'avance.
Ajouté un peu plus Tags utiles –
@GrijeshChauhan Merci, mais serait-ce vraiment qualifié comme intégré? Comme cela fonctionne sur un PC régulier. – farlepet
Oui, mais j'ai ajouté que l'on peut remarquer que les gens travaillent pour embarqué. Je pense qu'ils peuvent aussi vous aider sur cette question :) –