Bonjour,
Etant débutant en assembleur (mais pas en langage C) je cherche pour des histoires de controle de flot d'execution un peu d'assembleur.
Voila un des mes programmes de test qui ne fonctionne pas totalement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
 
void works(){
	printf("Mon adresse: 0x%08x\n",works);
	printf("That works !\n");
	__asm__("jmp ici");
}
 
 
int main(int argc, char** argv){
	int a=0;
	__asm__("xor %bx,%bx");
	__asm__("jz	works");
	__asm__("ici:");
 
	printf("Si je suis le premier c'est perdu...\n");
 
	printf("Ok\n");
	printf("%i\n",a);
	return EXIT_SUCCESS;
}
Cependant voici mon probleme. Lorsque je lance mon binaire, j'obtient la sortie suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
Mon adresse: 0x080483f4
That works !
Si je suis le premier c'est perdu...
Ok
-1215659260
Erreur de segmentation
Merci de votre aide.