Az ég szerelmére, a fenti hozzászólásomban nem írtam egy árva szót se az assemblyről!
Én arra gondoltam, a C nyelvet már eredetileg is úgy kellett volna megalkotni hogy a típusok bitmérete (hossza) fix, örök időkre rögzített legyen! És kész. Azaz mittudomén az int mindig 32 bites, a short int mindig 16 bites, etc.
Azt meg hogy hol ennyi meg hol annyi, eleve be se kellett volna venni a szabványba mert bizonytalanságot visz az egész mindenségbe. Akinek nagyon fontos hogy a program lefordulhasson különböző bithosszakkal rendelkező architektúrákon, az ne használjon int-et meg ilyesmit, hanem használja így:
ehelyett:
int valami;
használja ezt:
#define myint int
// ...............
myint valami;
És ennyi az egész...
Igen, ez több energia a részéről, de inkább ő szopjon mint MINDENKI MÁS, hogy jaj most tutira annyi bitet jelent-e ez a deklaráció amennyit eredetileg gondoltam...
Amúgy én is ezt az utat követtem csak fordítva. A programnyelvem forráskódjában nem szerepel unsigned long long (kivéve a printf utasításokat amikor a kiírás érdekében a magam típusát explicit módon erre castoltam) hanem helyette szerepel hogy
usag myvar;
(például)
és egy headerfájlban van rögzítve hogy az az usag típus egy 64 bites unsigned típus.
Holott X86_64 architektúrán dolgozom kizárólag. JELENLEG. Megtehettem volna hogy arra hagyatkozom hogy itt úgyis 64 bites az unsigned long long. De minek kockáztassak és ki tudja mit hoz a jövő...
És minden más típussal így jártam el még a char-ral is.
De nagyon utálom ezt. Illene hogy az ilyesmi a C nyelv szabványában legyen rögzítve. Örök időkre.