Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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.
-
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)
-
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 ?
-
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.