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

Alléger le noyau !
Pardon Laurent, j’avais effectivement mal lu. Merci à toi pour cet espace d’échange bienveillant et (...)

Alléger le noyau !
Bonjour Stéphane, merci de ta contribution ! Non, les auteurs de l’article ne proposent pas (...)

Alléger le noyau !
Bonjour à tous, Tout d’abord, je salue Nat, avec qui j’ai eu longtemps le plaisir d’échanger dès (...)

Alléger le noyau !
Merci ! Pistes pertinentes : – le BMC, en général, est encore dynamique. Exemple : (...)

Alléger le noyau !
Excellent article écrit par une personne qui peut parler des OS en sachant de quoi il retourne. (...)