différence 64 et 32 bits [ASM] - ASM - Programmation
Marsh Posté le 13-01-2010 à 16:04:33
nop, tried, my bad. et je ne suis pas sur que l'alignement change grand chose dans ce cas précis. une autre idée?
Marsh Posté le 13-01-2010 à 16:16:25
Edit : Je me suis complétement trompé. Je retire ce que j'ai dit, et je renvoie juste vers une page qui explique un peu la programmation assembleur pour 64 bit : http://www.x86-64.org/documentation/assembly.html
Edit Edit : (Je suis tombé sur la même page que fontam dans Google).
Marsh Posté le 13-01-2010 à 16:19:34
nop, les instructions de pile ne supporte apparemment que le suffixe q en 64 bits: http://www.x86-64.org/documentation/assembly.html
Citation :
|
Marsh Posté le 19-01-2010 à 10:33:37
Visiblement, l'ABI 32 bits prend les parametres sur la pile, l'ABI 64 bits prend ses premiers parametres dans des registres.
Marsh Posté le 09-02-2010 à 14:50:29
addq $8,%rsp pas addq $4,%rsp , ..
pour les passage de params en register ca se fait au 32 comme 64
suivant un call-type , ou par optimization libre.
Marsh Posté le 11-04-2010 à 00:27:00
Oui c'est sûrement le addq $4,%rsp qui corrompt la pile, mais même si le dernier morceau de code marche il n'est pas correct. En x64 l'alignement de la pile est de 16 octets, pas 8, et certaines librairies mettent le feu à ta maison et tuent tous les gens qui tu aimes si tu leur passes une pile non alignée.
Marsh Posté le 13-01-2010 à 10:46:30
Bonjour les gens,
En essayant de vieux TD d'asm, je tombe sur ce code:
jusqu' ici tout va bien, mais depuis mes années iut, nos braves machines ont 'achement évoluées et sont notamment passées en 64 bits
j'ai donc voulu adapter le code au 64 bits. après moulte recherche je pond ça:
et là paf pastèque ça plante, seg fault, alim qui crame, chinois du fbi qui débarque.
Je me démonte pas, je paye un café au chinois, change d'alim, décompile un prog c, et arrive à ça:
et là ça marche.
Vous allez me dire: "bin du coup pourquoi tu viens nous faire ch***".
Bin le problème c'est que je vois pas pourquoi le pushq $message ne marche plus. des idées?