Bonjour j'ai un petit probleme pour un ptit hello world ;)
(En fait j'ai deux problemes)
1> fichier qui compile pas comme il faut:
__________________________
int main()
{
asm("
test1:
xorl %eax,%eax
xorl %ebx,%ebx
xorl %ecx,%ecx
xorl %edx,%edx
movb $0x4,%al
movb $0x1,%bl
jmp chaine
test2:
popl %ecx
movb $0xe,%dl
int $0x80
chaine:
call test2
.string \"Hello world !\n\"
");
}
___________________________
donc voila les erreurs:
bash-2.05b$ gcc hello1.c -o hello1 -Wall
hello1.c:3:13: warning: multi-line string literals are deprecated
hello1.c: In function `main':
hello1.c:21: warning: control reaches end of non-void function
/var/tmp//ccUEB6r3.s: Assembler messages:
/var/tmp//ccUEB6r3.s:30: Warning: unterminated string; newline inserted
bash-2.05b$
Jusque la rien de très grave j'ai les meme warnings sous linux mais apres
quand je veux l'executer sa me donne:
bash-2.05b$ ./hello1
Bad system call (core dumped)
bash-2.05b$
Alors que sous linux sa fonctionne bien :(
Ya aussi un deuxieme probleme :(
2> probleme de desassemblage
Alors je creer mon hello world en asm en suivant toutes les etapes sur le
guide de l'asm freebsd et sa marche nickel mais par curiosité j'ai voulu le
desassembler et sa m'a donnée quelquechose comme sa:
bash-2.05b$ objdump --disassemble ./hello
./hello: file format elf32-i386-freebsd
objdump: ./hello: no symbols
bash-2.05b$
Voila pour les problemes sinon freebsd c'est tres bien :p
Jespere que vous serez plus inspiré que moi :(
--
Les seuls limites que nous avons sont celles que nous nous imposons !!!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
pornin
According to DeLeTe :
Jusque la rien de très grave j'ai les meme warnings sous linux mais apres quand je veux l'executer sa me donne: bash-2.05b$ ./hello1 Bad system call (core dumped)
Ben oui, les appels système ne sont pas les mêmes sous FreeBSD que sous Linux. Il ne faut pas mettre les mêmes valeurs dans les mêmes registres. Voilà ce qui arrive quand on veut faire le malin avec de l'assembleur !
Sans compter qu'un programme comme ça ne marchera jamais sur, par exemple, un Alpha, matériel pourtant géré aussi bien par FreeBSD que Linux.
--Thomas Pornin
According to DeLeTe <delete@nerim.fr>:
Jusque la rien de très grave j'ai les meme warnings sous linux mais apres
quand je veux l'executer sa me donne:
bash-2.05b$ ./hello1
Bad system call (core dumped)
Ben oui, les appels système ne sont pas les mêmes sous FreeBSD que sous
Linux. Il ne faut pas mettre les mêmes valeurs dans les mêmes registres.
Voilà ce qui arrive quand on veut faire le malin avec de l'assembleur !
Sans compter qu'un programme comme ça ne marchera jamais sur, par
exemple, un Alpha, matériel pourtant géré aussi bien par FreeBSD que
Linux.
Jusque la rien de très grave j'ai les meme warnings sous linux mais apres quand je veux l'executer sa me donne: bash-2.05b$ ./hello1 Bad system call (core dumped)
Ben oui, les appels système ne sont pas les mêmes sous FreeBSD que sous Linux. Il ne faut pas mettre les mêmes valeurs dans les mêmes registres. Voilà ce qui arrive quand on veut faire le malin avec de l'assembleur !
Sans compter qu'un programme comme ça ne marchera jamais sur, par exemple, un Alpha, matériel pourtant géré aussi bien par FreeBSD que Linux.
--Thomas Pornin
Ducrot Bruno
On Sun, 23 Nov 2003 18:06:00 +0100, DeLeTe wrote:
Bonjour j'ai un petit probleme pour un ptit hello world ;) (En fait j'ai deux problemes) 1> fichier qui compile pas comme il faut: __________________________ int main() { asm(" test1: xorl %eax,%eax xorl %ebx,%ebx xorl %ecx,%ecx xorl %edx,%edx movb $0x4,%al movb $0x1,%bl jmp chaine test2: popl %ecx movb $0xe,%dl int $0x80
chaine: call test2 .string "Hello world !n" "); }
C'est bizarre, ca compile pas chez moi:
:~/c$ gcc hello.c hello.c:3:13: missing terminating " character hello.c: In function `main': hello.c:4: error: parse error before "test1" hello.c:19: error: stray '' in program hello.c:19:26: missing terminating " character hello.c:20:9: missing terminating " character
Pourtant je suis sous linux:
:~/c$ uname -a Linux poupon 2.4.22-ben2 #1 Fri Oct 17 23:56:53 CEST 2003 ppc GNU/Linux
-- Ducrot Bruno.
-- Which is worse: ignorance or apathy? -- Don't know. Don't care.
On Sun, 23 Nov 2003 18:06:00 +0100, DeLeTe <delete@nerim.fr> wrote:
Bonjour j'ai un petit probleme pour un ptit hello world ;)
(En fait j'ai deux problemes)
1> fichier qui compile pas comme il faut:
__________________________
int main()
{
asm("
test1:
xorl %eax,%eax
xorl %ebx,%ebx
xorl %ecx,%ecx
xorl %edx,%edx
movb $0x4,%al
movb $0x1,%bl
jmp chaine
test2:
popl %ecx
movb $0xe,%dl
int $0x80
chaine:
call test2
.string "Hello world !n"
");
}
C'est bizarre, ca compile pas chez moi:
ducrot@poupon:~/c$ gcc hello.c
hello.c:3:13: missing terminating " character
hello.c: In function `main':
hello.c:4: error: parse error before "test1"
hello.c:19: error: stray '' in program
hello.c:19:26: missing terminating " character
hello.c:20:9: missing terminating " character
Pourtant je suis sous linux:
ducrot@poupon:~/c$ uname -a
Linux poupon 2.4.22-ben2 #1 Fri Oct 17 23:56:53 CEST 2003 ppc GNU/Linux
--
Ducrot Bruno.
-- Which is worse: ignorance or apathy?
-- Don't know. Don't care.
Bonjour j'ai un petit probleme pour un ptit hello world ;) (En fait j'ai deux problemes) 1> fichier qui compile pas comme il faut: __________________________ int main() { asm(" test1: xorl %eax,%eax xorl %ebx,%ebx xorl %ecx,%ecx xorl %edx,%edx movb $0x4,%al movb $0x1,%bl jmp chaine test2: popl %ecx movb $0xe,%dl int $0x80
chaine: call test2 .string "Hello world !n" "); }
C'est bizarre, ca compile pas chez moi:
:~/c$ gcc hello.c hello.c:3:13: missing terminating " character hello.c: In function `main': hello.c:4: error: parse error before "test1" hello.c:19: error: stray '' in program hello.c:19:26: missing terminating " character hello.c:20:9: missing terminating " character
Pourtant je suis sous linux:
:~/c$ uname -a Linux poupon 2.4.22-ben2 #1 Fri Oct 17 23:56:53 CEST 2003 ppc GNU/Linux
-- Ducrot Bruno.
-- Which is worse: ignorance or apathy? -- Don't know. Don't care.
:~/c$ gcc hello.c hello.c:3:13: missing terminating " character hello.c: In function `main': hello.c:4: error: parse error before "test1" hello.c:19: error: stray '' in program hello.c:19:26: missing terminating " character hello.c:20:9: missing terminating " character
gcc 3.x, comme le format des messages d'erreur l'indique. Nouveau preprocesseur, plus strict cote norme ISO: pas de constantes chaines multiligne.
ducrot@poupon:~/c$ gcc hello.c
hello.c:3:13: missing terminating " character
hello.c: In function `main':
hello.c:4: error: parse error before "test1"
hello.c:19: error: stray '' in program
hello.c:19:26: missing terminating " character
hello.c:20:9: missing terminating " character
gcc 3.x, comme le format des messages d'erreur l'indique.
Nouveau preprocesseur, plus strict cote norme ISO: pas de constantes
chaines multiligne.
:~/c$ gcc hello.c hello.c:3:13: missing terminating " character hello.c: In function `main': hello.c:4: error: parse error before "test1" hello.c:19: error: stray '' in program hello.c:19:26: missing terminating " character hello.c:20:9: missing terminating " character
gcc 3.x, comme le format des messages d'erreur l'indique. Nouveau preprocesseur, plus strict cote norme ISO: pas de constantes chaines multiligne.