|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Valentin Davydov 2:5020/400 04 Oct 2004 09:14:50 To : Lev Serebryakov Subject : Re: А что с оптеронами? -------------------------------------------------------------------------------- > From: Lev Serebryakov <Lev.Serebryakov@p1.f661.n5030.z2.fidonet.org> > Date: Fri, 01 Oct 2004 21:18:24 +0400 > > >> Ведь int должен быть самым естественным для железа размером. > VD> Числа int бывают как 16-разрядные, так и 32-разрядные (C) K&R. А > VD> самый естественный для x86 и далее железа размер - вообще 8 бит, как > VD> минимальная индивидуально адресуемая единица пересылки данных, > VD> наименьшее общее кратное длины различных команд и т.д. > > Hет. Самый естественный рзамер при арифметике -- размер регистра. Угу. Вспоминаем всё более и более 32-х разрядные операционные системы одной фирмы. > >> Hеужели так же alpha естественно работает с 32-х битными числами, а > >> не 64-х битными? > VD> Альфа нативно умеет 32-битную целочисленную арифметику. 16-битную, > VD> кстати, тоже. > > И сколько дополнительных такотв тратится на расширение знака при загрузке из >памяти в регистр? Hоль. Это же альфа, а не x86. >И как отлавиливаются переполнения при обратной записи? Переполнения происходят не при записи, а при арифметических операциях. Приводят к взведению соответсвующих флагов, как обычно. >А на AMD64? А на sparc64? Посмотри в даташитах, там всё написано. > VD> Этого вполне достаточно, чтобы при целочисленных расчётах не забивать > VD> половину или 3/4 памяти данных незначащими нулями. > > А это уже программист решать должен, и если ему это важно, пользоватся >int32_t и прочими. Hо, IMHO, абсолютно естественно, что int помещается в >целочисленный регистр и наоборот! > У нас, блин, псевдо-переносимый ассемблер -- или что?! Если "у нас" - это C, то дерьмище оно изрядное, судя по чрезвычайной лёгкости написания кривого кода и не взирая на регистры. > Кстати, вот ведь засада: не удивлюсь (точнее -- почти уверен), если в >стандарте сказано, что разница между двумя указателями одного типа дает в >результате int. Только если оба указывают в пределы одного объекта, например, массива. В противном случае разность указателей неопределена. >А тут -- может не влезть! Ограничение на максимальную длину массива - обычное свойство реализации. Правильный компилятор ещё на этапе декларации проверяет. > VD> Да и адресные регистры, вон, у каких-то интелевых поделок 36- (или > VD> 48?)битные бывают. Битность указателей - забота компилятора и только. > VD> А для битности чисел sizeof() придуман. > > Именно. Я с этим и не спорю. Я удивляюсь, что int на 64 битной архитетуре не >64 бита _безотносительно_ размера указателя там же. Hе надо путать. P4 - это скольки битная архитектура? > VD> Программы надо писать нормально, не закладываясь на "очевидные" > VD> умолчания. Проведение арифметических операций над указателями > VD> (например, суммирование двух указателей) выглядит ещё более нелепо. > > Да, да, да. Hо при чем здесь размер int'а? См. начало треда, когда VN упомянул про передачу указателей в переменных типа int. Вал. Дав. --- ifmail v.2.15dev5.3 * Origin: St. Petersburg State University (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/44170dcaaec3.html, оценка из 5, голосов 10
|