Вот кто мне может объяснить.
Имеем такие объявления:
и в коде ядра всякую целочисленную арифметику (в основном арифметические & | и сравнения) между этими константами (казалось бы не влезающими в int16) и 16bit int.Код:#define S_IFMT 0170000 /* file type mask */ #define S_IFLNK 0110000 /* symbolic link */ #define S_IFREG 0100000 /* or just 000000, regular */ #define S_IFBLK 0060000 /* block special */ #define S_IFDIR 0040000 /* directory */ #define S_IFCHR 0020000 /* character special */ #define S_IFPIPE 0010000 /* pipe */
За каким-то хреном в итоге в ASM:
S_IFREG=0100000 транслируется в 0x8000,
S_IFPIPE=0010000 транслируется в 0x1000
S_IFCHR=0020000 транслируется в 0x2000
и т.п.
Теряюсь в догадках. Какого хека?




Ответить с цитированием