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

Analyse de l’algorithme de Fibonacci
> Curieux, ce principe d’avoir un vecteur contenant à l’indice 1, un autre vecteur : Comme (…)

Quand la machine apprend
Merci Pierre-Éric de vos lectures. Certes, Yann Le Cun a réussi, mais pas en France. Ni lui, (…)

Analyse de l’algorithme de Fibonacci
Cet article me fait penser à la manière dont j’ai été bluffé par ChatGPT qui me proposait (…)

Quand la machine apprend
Passionnant livre, parmi l’abondante et inégale floraison actuelle de bouquins sur l’IA. Au (…)

Controverses autour du Système d’information (SI)
Les traités d’informatisation des années 1960 (CEGOS- G. Bauvin, etc.) expliquaient déjà que les (…)