LINUX.ORG.RU

[депрессия]а каким будет размер dword в 128бит?

 


0

0

недавно узнал что операции 1 и 3 будут занимать разное время:

0: char* data=(char*)malloc(20);
1: ((unsigned int*)data)[0]=1;
2: data++;
3: ((unsigned int*)data)[0]=1;

по причине того что после data++ указатель перестанет быть выравнен по dword и процессору будет плохо. и вообще, что часть процессоров (не i386 которые) не смогут исполнить эту операцию.

вобщем много думал, опустились руки и начал депрессовать (поскольку в качестве хобби пытаюсь писать на С/С++ достаточно большой блок кода и там идёт активная работа с байтами и хранением их на диске и война за каждый байт и за скорость).

задумался также о сабже и о том что если я даже выравнюю по 32бита всё то всё равно это с большой вероятностью хрен куда перенесёшь.

вобщем даже не знаю что делать.

вдоль и забухать - не предлагать. )

★★★
Ответ на: комментарий от wfrr

>Это по принципу, шойто написал, и вроде как работает, да?

По принципу, что это крутилось и крутится на тысячах (а, может и десятках тысяч) систем с многими сотнями потоков и тысячами пользователей.

KRoN73 ★★★★★
()
Ответ на: комментарий от wfrr

Разные класслоадеры - это нечестно, это удар ниже пояса:)

По теме - у автора ИМХО небольшие проблемы с фундаментальными знаниями. Есть разные определения того, что считать двордом - точнее, того, что считать словом. То ли размер РОН. То ли размер шины (он же по идее размер самого «быстрого» выравнивания"). То ли то, что конкретный язык (например С) считает интом.

И еще - строить прогнозы на несуществующее железо - дело неблагодарное.

Интересно, знает ли топикстартер, что на некоторых платформах его код вообще либо скомпилится в очень нехилую конструкцию, либо выдаст sigbus?

svu ★★★★★
()
Ответ на: комментарий от KRoN73

Не очень хороший метод _доказывать_ корректность:) Хотя я понимаю, сам такой же.

svu ★★★★★
()
Ответ на: комментарий от svu

Разные класслоадеры - это нечестно, это удар ниже пояса:)

Гдето натыкался, на плач какогото известного программиста, по поводу того как он бился неделю с ошибкой вида

ClassCastException: «Can not cast org.site.ClassName to org.site.ClassName»

Так что надо носить ракушку 8)

wfrr ★★☆
()
Ответ на: комментарий от KRoN73

Таки, несмотря на Ваш «опыт» стоит изучить сей вопрос 8)

А то лор тоже хороший пример подобной системы с кучей фантомных глюков, начиная с того что он иногда забывает выдать mime-тип и заканчивая невесть откуда взявшимися исключениями. А все потому что кто-то когда писал тоже так думал как Вы.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

>А то лор тоже хороший пример подобной системы с кучей фантомных глюков

Ну, тут по этому вопросу глюков не было. Ни фантомных, ни иных. За, наверное, многие тысячи машинолет работы. Уж даже и не знаю, из-за чего так :)

KRoN73 ★★★★★
()

>операции 1 и 3 будут

Не «будут», а «уже давно». Даже в этой отсталой стране.

DonkeyHot ★★★★★
()

гы.

Технические характеристики (http://ru.wikipedia.org/wiki/PlayStation_2 ) первая строчка.

Процессор: 128-разрядный микропроцессор «Emotion Engine» на тактовой частоте 294 МГц, 10,5 млн транзисторов
Память: 32 МБ ОЗУ с пропускной способностью 3,2 МБ/с
Основной процессор: 64-разрядное ядро ЦП MIPS R5900
Сопроцессор для обработки чисел с плавающей запятой
Векторные модули: VU0 и VU1, 128-разрядные на частоте 150 Гц. VU0 обычно используется для трансформации полигонов, физики и других вещей, имеющих отношение к геймплею. VU1 обычно используется для трансформации полигонов, освещения и других вычислений, связанных с визуализацией.
Производительность по операциям над числами с плавающей точкой: 6,2 гигафлопс
Производительность по геометрическим 3D-преобразованиям: 36 млн полигонов в секунду на один VU
Декодер сжатых изображений: MPEG-2
Кэш-память: для инструкций — 16 КБ, для данных — 8 КБ + 16 КБ

anonymous
()

(http://www.mainframes.in/sw/os/midrange/os_400/os_400.html )

...

The AS/400's instruction set defines all pointers as 128-bit. This is one of the surviving features of the System/38, which used the 128-bit address space to enable all devices, including disk and tape storage, to be directly addressable.

...

In 2000 IBM renamed the AS/400 to iSeries, as part of its e-Server branding initiative. The product line was further extended in 2004 with the introduction of the i5 servers, the first to use the IBM POWER5 processor. The architecture of the system allows for future implementation of 128-bit processors when they become available. Existing programs will use the new hardware without modification.

...

anonymous
()
Ответ на: комментарий от tailgunner

А чо там в S390?

Вагон форматов кодирования инструкций, 12-битый оффсет (4кб!) для формирования адреса. За это надо натурально убивать! У s390x (z/Architecture) чуть получше, но из-за бинарной совместимости с s390, тоже всё плоховасто. Вся эта бодяга тянется с S360, и древний кобольный код, IIRC, запускается на современном z-series без модификаций.

mv ★★★★★
()
Ответ на: комментарий от wfrr

>new Integer(10) != Integer.valueOf(10)

но


Integer.valueOf(10) == Integer.valueOf(10)


а где написано, что это неверно? А со своими ожиданиями... ну ты сам занешь;)

yyk ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

И упакованная ддесятичная арифметика %)

и че в ней плохого?

Плохого - ничего. Милый архаизм.

tailgunner ★★★★★
()
Ответ на: комментарий от yyk

>>Integer.valueOf(10) == Integer.valueOf(10)

а где написано, что это неверно? А со своими ожиданиями... ну ты сам занешь;)

Бугага. Надеюсь, ты не проектируешь никакие интерфейсы.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Бугага. Надеюсь, ты не проектируешь никакие интерфейсы.

А кроме перехода на личности что-нибудь есть?

И на то, что

Integer.valueOf(10) == Integer.valueOf(10)


оказалось истинным (именно в таком варианте), я бы не «закладывался» (шаг влево, шаг вправо - расстрел на месте).

И вообще, что за идиотизм сравнивать объекты с '==', если вы не контролируете их генерацию?

yyk ★★★★★
()

>перестанет быть выравнен по dword и процессору будет плохо

а компилятор не выровняет? имхо, gcc должен

devl547 ★★★★★
()

Ты не напишешь СУБД. Потому как некомпетентен.

Тебе уже сказали много раз - нельзя работать напрямую с пакованными структурами. Для записи в файл и для пересылки данные надо сериализовать. При чтении - десериализовать. Это быстро и легко. Никакие операции над пакованными данными недопустимы, это глупо и нелепо. Единственный случай, когда это надо - в драйверах.

anonymous
()
Ответ на: комментарий от wfrr

Ну скащите пожалуйста, откуда возьмётся мудрость у неадекватной провинциальной нищей студентоты?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.