Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как выравнить код и данные на границу 16 байт?


Страницы:   1 2

Тыщ ©   (2008-04-08 21:54:00) 

В распоряжении есть D7-D2007.
На {$ALIGN 16} ругается, для выравнивания кода вообще нет директив.
Есть ли какие-либо ухищрения, позволяющие это сделать,
или можно только подбирать каждый раз неиспользуемые код и данные для выравнивания?


Германн   (2008-04-09 01:37:00) [21]


> Тыщ   (09.04.08 01:06) [15]
>
> Германн ©   (09.04.08 0:52) [14]
>
> > А при чём тут директива компилятора ALIGN?
>
> Еще в сабже было написано: "Как выравнить код и данные на
> границу 16 байт?"
> Соответственно первой попыткой было установить ALIGN в 16.
>
>
> > Ты справку по этой директиве читал?
>
> Я что, как-то "новичковато" выгляжу что-ли? Конечно читал.
>
>
>

Хм. Плохо читал.


Тыщ   (2008-04-09 01:06:00) [22]

Германн ©   (09.04.08 0:52) [14]

> А при чём тут директива компилятора ALIGN?

Еще в сабже было написано: "Как выравнить код и данныена границу 16 байт?"
Соответственно первой попыткой было установить ALIGN в 16.

> Ты справку по этой директиве читал?

Я что, как-то "новичковато" выгляжу что-ли? Конечно читал.

> Смотрел. Опять "Мне нужно"!

Естественно, нужно. Если бы не нужно было, не спрашивал бы.


Германн   (2008-04-09 00:52:00) [23]


> Тыщ   (09.04.08 00:27) [13]
>
> Игорь Шевченко ©   (09.04.08 0:03) [11]
>
> Вообще-то я имел ввиду выравнивание самого кода, а не секций
> в exe-шнике.
> Delphi всегда выравнивает код на 4 байта.
>
> Это что ж, мне копировать код нужных функций и статических
> данных в буфер, выделенный VirtualAlloc? Криво как-то.
>

А при чём тут директива компилятора ALIGN? Ты справку по этой директиве читал?

> Германн ©   (09.04.08 0:24) [12]
>
> См. [2].
>

Смотрел. Опять "Мне нужно"!
Опять вместо may/can использовано must.


Тыщ   (2008-04-09 00:27:00) [24]

Игорь Шевченко ©   (09.04.08 0:03) [11]

Вообще-то я имел ввиду выравнивание самого кода, а не секций в exe-шнике.
Delphi всегда выравнивает код на 4 байта.

Это что ж, мне копировать код нужных функций и статических данных в буфер, выделенный VirtualAlloc? Криво как-то.

Германн ©   (09.04.08 0:24) [12]

См. [2].


Германн   (2008-04-09 00:24:00) [25]


> Тыщ   (08.04.08 23:52) [10]
>
> Интересно, нормальные ответы будут?
>

Нормальные ответы уже были. Например в tesseract ©   (08.04.08 22:15) [5].
Вот нормального вопроса пока не было. Разве
> Мне надо выравнивание, и все тут.
может считаться нормальным вопросом?


Игорь Шевченко   (2008-04-09 00:03:00) [26]

какого ты ждешь нормального ответа ? Что код и без того выровнен на некую границу, определенную в заголовке PE-файла ? Что данные, расположенные в области, выделенной по VirtualAlloc гарантировано выровнены на 64 кило ?


Тыщ   (2008-04-08 23:52:00) [27]

Интересно, нормальные ответы будут?


Сергей М,   (2008-04-08 22:21:00) [28]


> если начало функции кратно параграфу, такая функция выполняется
> быстрей, начиная с Pentum II


Фцытатник!


Тыщ   (2008-04-08 22:19:00) [29]

tesseract ©   (08.04.08 22:15) [5]

Ты не знал, что SSE работает с 128-битными переменными и таким же выравниванием?
Даже без SSE, если начало функции кратно параграфу, такая функция выполняется быстрей, начиная с Pentum II. Тоже не знал?


tesseract   (2008-04-08 22:17:00) [30]


> Тьфу, терпеть не могу такое высказывание.


значит полохой из тебя хакер.


Сергей М,   (2008-04-08 22:16:00) [31]


> Я не "бизнес-приложение" пишу.


А как же "красота" ?)
А как же "исключения" ?)

Что, они теперь уже лесом идут ?)


> терпеть не могу такое высказывание


Экое у тебя нетерпение)
А ведь никуда не деться - придется терпеть)


tesseract   (2008-04-08 22:15:00) [32]


> Причем тут {$GiveMeBeer} и packed? Мне нужно именно 128-
> битное выравнивание для SSE кода и данных под него.


128 битное выравнивание это к врачу. 64-битное это приемлимо, если понимаешь зачем процессору это нужно. Оно реально нужно только для 64 битных регистров. А про packed - к классикам.


Тыщ   (2008-04-08 22:14:00) [33]

Сергей М,   (08.04.08 22:11) [3]

> Делфи - среда быстрой разработки бизнес-приложений.

Тьфу, терпеть не могу такое высказывание.
Мне надо выравнивание, и все тут. Я не "бизнес-приложение" пишу.


Сергей М,   (2008-04-08 22:11:00) [34]


> Мне нужно именно 128-битное выравнивание для SSE кода


Делфи - среда быстрой разработки бизнес-приложений.
Нахрена бизнес-приложениям твое "выравнивание" ?
Подумай)
Только не надо трындеть про "красоту")


Тыщ   (2008-04-08 22:03:00) [35]

tesseract ©   (08.04.08 21:59) [1]

Причем тут {$GiveMeBeer} и packed? Мне нужно именно 128-битное выравнивание для SSE кода и данных под него.


tesseract   (2008-04-08 21:59:00) [36]


> На {$ALIGN 16} ругается, для выравнивания кода вообще нет
> директив.


странно на {$GiveMeBeer} тоже ругаеться. Тебе что именно выровнять ? Это требует понимания. если packed, то {$A8}  нужно - для 64 бит.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо