• [^] # Re: je suis pas convaincue

    Posté par . En réponse à la dépêche Sortie de Vala 0.7.6. Évalué à 4.

    Si tu regardes dans de l'assembleur généré par gcc par exemple, il y a des tas de directives qui sont là pour que le compilateur assembleur prenne un certain nombre de décisions. Décisions que le compilateur C n'a pas à prendre.

    Il y a même du code pur et dur qui est traduit en fonction du contexte.
    Exemple tout bête: jmp mon_etiquette peut être traduit en saut relatif "short" (0xeb) ou "near" (0xe9). Autrefois il y avait même le jump far (0xea). Même chose pour call. Tu peux préciser jump short ou jump near si tu le souhaites, dans ce cas tu as une traduction de 1 vers 1, mais tu perds la souplesse offerte par le compilateur.
    Et justement, un compilateur C écrit des jmp, donc il délègue au compilateur assembleur le choix de la bonne instruction finale. Ce n'est pas le boulot d'un compilateur de haut niveau de savoir si la cible d'un saut est proche ou non.