Diskuze - danyk.cz

Vlákno z kategorie: Hlavní diskuze
Celkem 6 odpovědí.


7.07.2017 (14:30:02) K # IP X
rayer (web) :
Nezkoumali ste nekdo zevrubneji moznosti nastaveni/vyberu ABI na arm-gcc prekladaci? Trochu me prekvapilo, ze standardni toolchain arm-gcc-none-eabi na embeded MCUcka pouzova vsude 64-bitove ABI (ramec zasobniku, zarovnavani struktur), coz na nakych Cortex-M0 s par kB pameti docela plytva. Myslel sem si, ze se to pouziva jen na velkych aplokacnich ARMech do mobilu/Rpi a pod. Jde to nak prepnout? Co ale libc knihovny?
7.07.2017 (21:07:23)  # IP X
RayeR (web) :
A co jako?
To je "GNU compiler extension", ktere Keil prevzal z GCC. Timto atributem lze explicitne urcit zarovnani jednotlivych promennych, ale otazka byla na neco kapanek jineho (ABI, zarovnavani zasobnikoveho ramce). I kdyz me taky zajima, jak to resi placene prekladace Keil a IAR...
9.07.2017 (17:46:01)  # IP X
VroutekB:
"Keil převzal z GCC" je velmi vtipná fráze... GCC je to, co neustále kopíruje ostatní tooly, tím nejhorším možným způsobem. **34
10.07.2017 (14:33:31)  # IP X
RayeR (web) :
Ano, zapis ve stylu __attribute__((neco)) je GNU rozsireni standardu C (proto tam pisou "GNU compiler extension"), Keil ma mozna este nake sve vlastni rozsireni delajici totez, ale nevim proc by melo byt vice standardnejsi nez rozsireni IARu nebo cehokoliv jineho. Proste to neni v ANSI C, je to specificke rozsireni a povazuju je za celkem rovnocenna. Vyhoda GNU C rozsireni je v tom, ze se to pise stejne pro 1000 ruznych targeru, zatim co kdyz nekdo pouziva proprietarni prekladace, tak musi casteji tyhle veci ve zdrojaku pri portovani prepisovat (pokud si to neosetri nakyma makrama).

Akorat ze o tomhle ten dotaz nebyl. Co sem se zatim dopidil, tak to ABI lze nakonfigurovat pri prekladu GCCcka, ale nejde prepinat za behu. Tak by me zajimalo jen pro zajimavost, jak to ma placena konkurence...
A co treba Renesas, jesi ten uz taky pouziva 64b ABI...
11.07.2017 (17:57:34)  # IP X
metan obalka :
V dokumentaci pisou -mpreferred-stack-boundary=2 prepne zarovnavani stacku na 32 bitu a -fpack-struct by se snad dalo nastavit zarovnani pro struktury.
13.07.2017 (04:15:34)  # IP X
RayeR (web) :
>metan
koukal sem na ten -mpreferred-stack-boundary opsn, ale to je neco trochu jinyho. To vynucuje, ze pri volani funkce bude vzdy adresa SP zarovnana na danou mocninu dvou, ale uz nic nerika o tom, jak sou na zasobniku dale poskladany lokalni promenny a parametry (jak sou zarovnavany). Tohle je pry dulezite kvuli kodu s SSE instrukcemi, ktery pri mensim zarovnani zasobniku pada. Navic je to jen specificka volba pro x86, ARM-GCC nic takovyho nezna.
Přezdívka:
Heslo:
Text: