Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
590 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  GCC -S

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

GCC -S

n°1704994
GreGoireP
Posté le 19-03-2008 à 22:11:30  profilanswer
 

Bonjour !
Lorsque je demande à GCC de générer du code en assembleur je remarque que l'en tête du main contient toujours:
 

Code :
  1. andl    $-16, %esp


 
Je ne comprends pas à quoi ça sert, $-16 correspond à 0xfffffff0 je pense, en gros apres être passé par un ANDL $-16
notre cher ESP verra ses 4 derniers bits mis à zéro ... ça sert à quoi ?
 
 
Greg

mood
Publicité
Posté le 19-03-2008 à 22:11:30  profilanswer
 

n°1705005
dap++
Script kiddie
Posté le 19-03-2008 à 22:49:34  profilanswer
 

C'est pour aligner la pile, c'est seulement nécessaire avec certaines instructions SSE je crois. GCC garde toujours la pile alignée par 16, je ne sais pas si ça fait partie de la convention sous Linux ou si c'est un caprice.


---------------
dap.developpez.com
n°1705013
GreGoireP
Posté le 19-03-2008 à 23:23:53  profilanswer
 

OK, sinon je me posais une question qui n'a rien à voir:
Quand il y a des équivalences, par exemple:
 

Code :
  1. movl $0, %eax


 
Ca a bien le même effet que:
 

Code :
  1. xorl %eax, %eax


 
Non ?
En fait ce que je veux dire c'est qu'en ASM quand deux lignes sont équivalentes est-ce que la durée d'execution peut quand même être différente ?
 
 
Greg


Message édité par GreGoireP le 19-03-2008 à 23:24:22
n°1707140
db__
spécialiste de l'à peu près
Posté le 25-03-2008 à 08:41:17  profilanswer
 

si le résultat est le même, la manière pour y arriver est différente. Déjà la conversion en hexa produira un code plus compact pour xor
avec les processeurs modernes, il est difficile de prévoir le temps d'exécution d'une instruction.


---------------
je suis né fatigué et fait pour me reposer
n°1707144
Joel F
Real men use unique_ptr
Posté le 25-03-2008 à 08:53:14  profilanswer
 

il surtout ne PAS raisonner instruction par instruction car la latecne de chaque instruction joue. Alors même si le code a l'air moins bon, il va etre meilleur du fait de sa plus grande facilité à passer au travers du/des pipeline

n°1707244
db__
spécialiste de l'à peu près
Posté le 25-03-2008 à 12:29:43  profilanswer
 

a-t-on intérêt à faire compacte pour faire tenir beaucoup de code dans le cache ou pas ?
j'ai souvent entendu parler du dépliage du code pour en accélérer l'exécution. Si ce dépliage fait déborder le cache n'y -a-t-il pas un risque de ralentissement plus grand qu'une boucle qui ne provoque pas de débordement du cache ?


---------------
je suis né fatigué et fait pour me reposer
n°1759073
aaaka
Posté le 13-07-2008 à 20:13:22  profilanswer
 

dap++ a écrit :

C'est pour aligner la pile, c'est seulement nécessaire avec certaines instructions SSE je crois. GCC garde toujours la pile alignée par 16, je ne sais pas si ça fait partie de la convention sous Linux ou si c'est un caprice.


merci pour l'info !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  GCC -S

 

Sujets relatifs
Problèmes portage GCC vers Visual Studio[C++] comportement GCC
Comment Optimiser l'execution du code avec GCC ??OPTION du GCC en precompilation
Compilation ASM avec GCC sous MACGcc, La compilation des .o est ok, mais un .o n'est pas reconnu
Include multiples qui font planter la compilation (Gcc Linux)Pb compat Gcc / VS
YASM et GCC sous Linux Debian AMD64 - pour infoProblème de compilation avec GCC
Plus de sujets relatifs à : GCC -S


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR