• # Presque en synchro

    Posté par (site web personnel) . En réponse au journal RiscOS et les systèmes inventifs des années 80. Évalué à 10. Dernière modification le 11 octobre 2020 à 13:43.

    À deux semaines près ; je vais bientôt être l'heureux possesseur d'un Acorn Archimedes A3010.
    C'est une machine qui m'a toujours fasciné, par son exotisme mais aussi sa parenté architecturale avec nos smartphones modernes.

    On peut installer un Linux 2.0.31 dessus ; dans ce cas, l'ABI est la même que sur un Linux 2.x ARM "classique". Les binaires sont donc transférables. Par exemple, ce code une fois "assemblé" marchera à la fois sur Archimedes et une autre carte ARM :

     message:
     .ascii "Salut !\n"
     .global main
     main:
     mov r0,#1 /* put 1 in R0 : stdout */
     ldr r1,=message /* put buffer address in R1 : string */
     mov r2,#8 /* put 8 in R2 : string length */
     /* OABI : write() syscall */
     swi #9437188
    

    Sur un Linux plus récent, non seulement l'alignement change (on passe de l'architecture "arm" à "armel" par défaut sur Debian), ce qui fait que le binaire ne se transfère plus; mais en plus on passe de l'OABI historique à l'EABI, ce qui implique de changer le syscall à la fin:

     /* EABI : write() syscall 4 */
     mov r7,#4 */
     swi #0
    

    (ce qui, par ailleurs, marchera aussi sur Android).

    RiscOS, lui, intègre carrément un éditeur pour exécuter de l'assembleur directement. Le format est bien sûr différent, et depuis le vieil Archimedes jusqu'à la récente Raspberry Pi, reste constant grâce à des genres de macros :

     SWI "OS_Write0" ; display registry 0 content on console
    

    C'est vraiment un excellent OS pour s'initier au bas niveau sur ARM ; un truc d'étudiant. Niveau écosystème soft, on est bien sûr bien loin derrière Tutux...