Asm Source¶
Non riesco a compilare ed eseguire codice assembly che non sia generato a partire dalla compilazione di codice C.
Vorrei riuscire a compilare ed eseguire un programma direttamente in assembly per impratichirmi con l”istruction set.
Inoltre vorrei poter lanciarlo con un debugger per poter osservare il valore dello stack e dei registri senza dover usare printf o altre funzioni in librerie esterne e che complicherebbero soltanto il sorgente.
Nella cartella sono presenti due codici che dovrebbero essere equivalenti ifstatement.asm e ifstatement_alt.asm.
L’unica differenza e” che uno usa la notazione simbolica dei registri con la x quindi per esempio x1, x3 ecc. ecc… io avevo capito che questa stesse alla notazione semantica
(che assegna un significato ai registri e un utilizzo che sia compatibile con l”ABI risc-v``+``linux-kernel) con registi come t0 o sp come le pseudo istruzioni stanno alle istruzioni, quindi che quando viene chiamato l”assembler questi vengono tradotti con la x.
Dato pero” che nessuno dei due compila ho lasciato tutti e due.
Per verificare il problema compilare con make.
Soluzione
Il codice contiene istruzioni che non sono presenti nelle slides ma fanno parte dell”ISA RISC-V.
Le istruzioni presentate a lezione sono una panoramica non completa, per un elenco completo bisogna fare riferimento alla documentazione ufficiale presente sull”github di RISC-V oppure sul loro sito ufficiale in formato pdf.