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