Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: mhi 25. 02. 2023, 23:14:41

Název: RISC-V assembler
Přispěvatel: mhi 25. 02. 2023, 23:14:41
Hezky vecer,

mel bych  par otazek na mistni znalce RISC-V.

1) proc jsou v nekterych instrukcich tak krypticky prehazovane bity ruznych imm/rel konstant? Napriklad JAL [RV32I] instrukce. Tam je bitove souvisly usek imm skladan jako imm[20] imm[10:1] imm[11] imm[19:12]; Kde se pripadne muzu docist na tema podobnych otazek navrhu R-V ISA, mam jich vic?

2) Jak v gnu as zapisu horni bity nejake adresy pro ucely auipc/lui (nejde mi primo o call). ELF relokace R_RISCV_HI20

3) to same pro dolni - ELF relokace R_RISCV_LO12_I apod.

4) Netyka se asi uplne Risc-V Tusite jak linker (gnu LD) resi RELAX relokaci, jak probehne to vyhozeni instrukce bez toho, aby musel prochazet cely kod a prehazovat vsechny relativni skoky/volani?

Dekuji.
Název: Re:RISC-V assembler
Přispěvatel: CFM 26. 02. 2023, 08:44:57
ad1: https://stackoverflow.com/questions/58414772/why-are-risc-v-s-b-and-u-j-instruction-types-encoded-in-this-way (https://stackoverflow.com/questions/58414772/why-are-risc-v-s-b-and-u-j-instruction-types-encoded-in-this-way)
Název: Re:RISC-V assembler
Přispěvatel: mhi 26. 02. 2023, 14:16:17
Dekuji za odkaz. Puvodne jsem v tom hledal, ze bud budou nejake bity napric formaty instkci spolecne, nebo podobny figl, a on tam je. Asi mne zmatla pro mne graficky celkem silene vyvedena dokumentace, nebo lui format, kde je zase posun.

Mel bych doplnujici otazky,

5) jak donutim gnu as, aby mi v pripade procesoru s "C"ompressed sadou vygeneroval 32bit instrukci, ktera ma ekvivalent v "I"nteger sade?

6) dale povedlo se vam pouzit Ubunti riscv64-gcc-(linux|unknown)-elf ke generovani kodu pro embedded rv32imc ? Jakou verzi a jake mate -march a -mabi ?
Název: Re:RISC-V assembler
Přispěvatel: mhi 28. 02. 2023, 18:28:55
Eh ... tolik reci o RISC-V a jen jedna odpoved (za ni presto dekuji).

aktualne nevim uz asi jen 5), zbytek jsem si prubezne zjistil, tak kdyby to resil nekdo dalsi, kdo opravdu realne R-V pouziva a ne jen o nem mluvi :) ...

Prekladacem si nejsem jist zda vygeneruje vzdy spravny kod, ale zda se funguje " riscv64-linux-gnu-gcc -c -march=rv32imc -mabi=ilp32 test.c  -fno-plt -fno-pie -fno-pic", chci-li kod pro 32bit mikrokontroller  (rv23imc apod.)

No a nakonec %hi(X) a %lo(X) resi ty offsety pro lui/auipc a jejich protejsky lw/jalr v GNU as.