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

Une illustration de la concurrence monopolistique
Attention : les GPU sont très forts en produits scalaires, (en multiplication de matrices par (...)

Python
"on dit plutôt maintenant développeurs" ... Il y a (au moins) deux expressions qui (...)

À la Commission de développement de l’informatique du Ministère des Finances
Article tout aussi instructif que plaisant à lire. On pensera aussi à "Comédies Françaises", (...)

À 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 (...)