![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как выравнить код и данные на границу 16 байт?
Тыщ © (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 бит.