J'aurais tendance à répondre "super bien"...
En fait le compilateur, sachant qu'il manipule des int (2 octets), crée des ordres en assembleur de manipulation octet par octet.
Et en plus ces 2 octets peuvent être codés dans le sens de lecture (donc je simplifie "123456" sera "0012" puis "3456") ou dans le sens inverse (donc 123456 sera codé "3456" puis "0012" ce qu'on nomme "little-endian" ou "big-endian") le truc doit se démerder pour gérer le sens avec chaque octet.
Ben là...
Ce que je pense, c'est que chaque zone étant "nommée" (par le nom des variables), chaque zone lui sera associé un registre. Donc pour c=a+b il devrait y avoir un truc genre "move a to r1" puis "move b to r2" puis "r3=r1+r2" puis "move r3 to c". Et tout ça en gérant en plus les octets.
Si vraiment ça t'intéresse, il te faut t'orienter maintenant vers l'assembleur car c'est l'étape suivante de compilation d'un code C...
Partager