Opakování: Překlad C pro QtRvSim

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

courses/b35apo/tutorials/03/qtrvsim-c.txt · Last modified: 2024/02/02 18:41 (external edit)