après avoir passer un temps considerable a pratiquer du C je me suis maintenant plonger dans l'assembleur !
j'ai lu pas mal de tuto concernant les bases (sys de numeration, cpu, registes...) apres cela quand le moment de la pratique est arriver j'ai remarquer que tout les tuto que je suivais c'etait sur linux (meme ceux en anglais) !
par exemple ce code:
section .data
section .text
global _start
_start:
mov eax, 1
mov ebx, 1
int 80h
l'equivalent en C:
int main()
{
return 0;
}
normalement quand je lance le programme et qu'apres j'afficher la valeur de return avec echo %errorlevel% ca donne 0
mais avec l'assambleur ca donne une autre valeur a chaque fois (presque) et pas 0
j'ai meme essayer avec avec une structure de code 64bit:
section .text
global _start
_start:
mov rax, 60 ; syscall number for exit
mov rdi, 0 ; exit status
syscall
et aucun resultat
mais j'ai installer ubuntu grace au WSL(windows subsystem for linux) quand j'affiche la valeur de retour avec echo $?
ca ne marche qu'avec la structure de code 64bit et ca n'execute pas le 32bit avec l'erreur "-bash: ./main: cannot execute binary file: Exec format error"
du coup je cherche de l'aide pour windows ou bien avec la WSL m'aider a comprendre pourquoi ca n'execute pas des executable 32bit alors que mon processeur est 64bit, merci.
Le Tout est souvent plus grand que la somme de ses parties.