pøístup na byty v int C
Miroslav Mraz
mraz na seznam.cz
Středa Říjen 30 14:16:08 CET 2013
V C-čku to tak dělám, jen jsem si chtěl usnadnit práci, tak jsem použil
kousek kódu v assembleru asi takto:
.global cosi, delka
cosi:
.incbin "soubor.bin"
delka:
.word .-cosi
protože tohle by v C nebylo tak jednoduché udělat a pak se hrozně divil,
že ta delka deklarovaná v C jako uint32_t je v PC nějaká divná, i když
na ARMu je to v pohodě. Jak říkám, je to vlastnost, v dokumentaci
popsaná ale fakt nechápu proč to tak je. Takhle konstrukce .word nemá
žádný odpovídající vestavěný typ v C , .halfword bude odpovídat short,
.byte - char, a možná .long - long i na 64.bit. Zřejmě to má nějaké
historické souvislosti, které neznám. Jak napsal wek, int typ je opravdu
poněkud vágní. I tak bych ale očekával, že pokud je na dané platformě
int 16.bit, pak bude .word také 16.bit, pokud to bude int 32.bit, bude
to tak i pro .word. Asi bylo lépe použít .long, ale už jsem to odladil,
cílem je ARM, takže se v tom dále nevrtám. Jen jsem na to chtěl
upozornit, protože je to nelogické.
Mrazík
On 10/30/2013 10:11 AM, Jaroslav Buchta wrote:
> V asm typ .word asi vychazi z definice instrukcniho souboru, kde se
> operuje s typy word, halfword a byte. A u x86 asi z do DOSu...
> Kazdopadne v C je IMHO rozumne pouzivat typy jako uint16_t atp., tam
> je delka jasne dana. (a pokud nejsou zavedeny, tak si je dodefinovat)
>
Další informace o konferenci Hw-list