Cette séance est adaptée du chapitre /Go Assembly/ du livre /go-internals/ écrit par Clement Rey et disponible en ligne ici : [[https://cmc.gitbooks.io/go-internals]] sous licence [[BY-NC-SA 4.0]https://creativecommons.org/licenses/by-nc-sa/4.0/].
Cette séance est adaptée du chapitre _Go Assembly_ du livre _go-internals_ écrit par Clement Rey et disponible en ligne ici : [https://cmc.gitbooks.io/go-internals] sous licence [BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/).
# Assembleur
# Assembleur
...
@@ -29,7 +29,7 @@ Les opérandes peuvent être :
...
@@ -29,7 +29,7 @@ Les opérandes peuvent être :
# L'assembleur du langage Go
# L'assembleur du langage Go
Le langage Go propose un /pseudo-assembleur/ qui est une forme d'assembleur portable qui abstrait certains mécanismes comme les copies de données ou l'appel de sous-programme, et propose également des registres virtuels.
Le langage Go propose un pseudo-assembleur qui est une forme d'assembleur portable qui abstrait certains mécanismes comme les copies de données ou l'appel de sous-programme, et propose également des registres virtuels.
Ce pseudo-assembleur est la cible du compilateur Go.
Ce pseudo-assembleur est la cible du compilateur Go.
Ensuite, une passe de génération de code permet de traduire le pseudo-assembleur vers le langage machine de la cible.
Ensuite, une passe de génération de code permet de traduire le pseudo-assembleur vers le langage machine de la cible.
...
@@ -45,7 +45,7 @@ Enfin, le registre virtuel `SB` indique l'adresse de début de l'espace d'adress
...
@@ -45,7 +45,7 @@ Enfin, le registre virtuel `SB` indique l'adresse de début de l'espace d'adress
# ABI
# ABI
L'ABI (/Application Binary Interface/) d'un langage de programmation décrit l'implémentation des concepts du langage pour une architecture donnée.
L'ABI (_Application Binary Interface_) d'un langage de programmation décrit l'implémentation des concepts du langage pour une architecture donnée.
Ce document précise ainsi, entre autres :
Ce document précise ainsi, entre autres :
- la représentation binaire des différents type de donnée : taille, alignement, codage ;
- la représentation binaire des différents type de donnée : taille, alignement, codage ;