Pro překlad z C do assembleru zkuste soubor init_array.c:
int pole[10];
int main() {
int N = 10,i;
for(i=0; i<N; i++) {
pole[i]=N-i;
}
return 0;
}
spolu se souborem start.S, který spustí funkci main z start.S:
.globl _start
.text
.option norelax
_start:
la x2, _end+0x4000
la x3, __global_pointer$
jal main
ebreak
Překlad do assembleru pro RISC-V a zobrazení přeložených instrukcí provedeme následujícími příkazy.
riscv64-unknown-elf-gcc -march=rv32i -mabi=ilp32 -g -c init_array.c -o init_array.o riscv64-unknown-elf-gcc -march=rv32i -mabi=ilp32 -g -c start.S -o start.o riscv64-unknown-elf-gcc -Wl,-Ttext,0x200 -Wl,-Tdata,0x400 -march=rv32i -mabi=ilp32 -nostdlib init_array.o start.o -o init_array riscv64-unknown-elf-objdump --source init_array
Na Windows je možné nainstalovat buď kompletní MSys s make nebo používat jen holý kompilátor riscv64-unknown-elf-gcc a dávkový soubor.
PATH=%PATH%;c:\path\to\gcc-riscv64-unknown-elf_mingw32\bin riscv64-unknown-elf-gcc -Wl,-Ttext,0x200 -Wl,-Tdata,0x400 -march=rv32i -mabi=ilp32 -nostdlib -g init_array.c -o init_array