| |
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

Pourquoi les informaticiens sont-ils haïs ?
Bonjour, je partage également ce point de vue. Mais il y a aussi des changements sociétaux (...)

Pourquoi les informaticiens sont-ils haïs ?
Bonjour, votre article est excellent, je fais personnellement de l’informatique depuis mon plus (...)

Mon premier programme en assembleur RISC-V
Robert, je savais que je pouvais m’attendre de ta part à une lecture attentive et à des (...)

Mon premier programme en assembleur RISC-V
Avec beaucoup de retard, puisqu’on t’a proposé des améliorations, j’y vais aussi de la mienne. Elle (...)

Quelques jalons pour un historique de l’informatique dans le système éducatif français sur sept décennies
Merci pour cet article, Laurent Bloch. Très précieux.