Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

Forum de l’article

Mon premier programme en assembleur RISC-V

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rappel de la discussion
Mon premier programme en assembleur RISC-V
Michel Billaud - le 9 mars 2021

Bonjour,

Merci pour ce post, qui m’a donné envie de me remettre à la prog. ass. (au lieu de préparer mes cours :-) tous les prétextes sont bons).

En attendant de recevoir le bouquin commandé, j’en reviens à ma vieille stratégie pour apprendre un jeu d’instructions : demander au compilateur ce qu’il fait avec du code C très simple.
Exemple, le source first.c

int somme(int a, int b) {
	return a + b;
}

compilé par

riscv64-linux-gnu-gcc -march=rv32i -mabi=ilp32    -c -S -Os -o first.s first.c

me renseigne sur les conventions d’appel. Extrait :

somme:
	add	a0,a0,a1
	ret

Les optimisations y rajoutent du piment : après il faut comprendre pourquoi la copie de chaine

void my_copy(char *dst, char *src) {
	while( (*dst++ = *src++))
		continue;
}

se retrouve sous cette forme

my_copy:
.L6:
	addi	a1,a1,1
	lbu	a5,-1(a1)
	addi	a0,a0,1
	sb	a5,-1(a0)
	bnez	a5,.L6
	ret

Il n’est pas trop dur de voir ce que fait chaque instruction, reste à coder et essayer des alternatives qui ne feraient pas intervenir les pointeurs sur les précédents. Pour voir si on fait mieux que le compilateur (rarement !).

Derniers commentaires

À la Commission de développement de l’informatique du Ministère des Finances
Dans le style qui t’est caractéristique, j’avoue que j’ai bien aimé ! J’ai même eu l’occasion (…)

Informatique confidentielle
La clé pour comprendre est peut-être qu’il s’agit ici de "machine virtuelle" et non de (…)

Informatique confidentielle
Merci pour vos précisions à tous les deux, mais je continue à penser que la locution "machine (…)

Les programmes du manuel ISN traduits en Scheme
Oui, votre critique est fondée. Ces programmes sont tous un peu bâtards (au sens propre), parce (…)

Les programmes du manuel ISN traduits en Scheme
Le programme de résolution du second degré me fait réagir et c’est sûrement dû à une exposition (…)