Конференция "Основная" » Как выравнить код и данные на границу 16 байт?
 
  • Тыщ (08.04.08 21:54) [0]
    В распоряжении есть D7-D2007.
    На {$ALIGN 16} ругается, для выравнивания кода вообще нет директив.
    Есть ли какие-либо ухищрения, позволяющие это сделать,
    или можно только подбирать каждый раз неиспользуемые код и данные для выравнивания?
  • tesseract © (08.04.08 21:59) [1]

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


    странно на {$GiveMeBeer} тоже ругаеться. Тебе что именно выровнять ? Это требует понимания. если packed, то {$A8}  нужно - для 64 бит.
  • Тыщ (08.04.08 22:03) [2]
    tesseract ©   (08.04.08 21:59) [1]

    Причем тут {$GiveMeBeer} и packed? Мне нужно именно 128-битное выравнивание для SSE кода и данных под него.
  • Сергей М, (08.04.08 22:11) [3]

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


    Делфи - среда быстрой разработки бизнес-приложений.
    Нахрена бизнес-приложениям твое "выравнивание" ?
    Подумай)
    Только не надо трындеть про "красоту")
  • Тыщ (08.04.08 22:14) [4]
    Сергей М,   (08.04.08 22:11) [3]

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

    Тьфу, терпеть не могу такое высказывание.
    Мне надо выравнивание, и все тут. Я не "бизнес-приложение" пишу.
  • tesseract © (08.04.08 22:15) [5]

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


    128 битное выравнивание это к врачу. 64-битное это приемлимо, если понимаешь зачем процессору это нужно. Оно реально нужно только для 64 битных регистров. А про packed - к классикам.
  • Сергей М, (08.04.08 22:16) [6]

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


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

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


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


    Экое у тебя нетерпение)
    А ведь никуда не деться - придется терпеть)
  • tesseract © (08.04.08 22:17) [7]

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


    значит полохой из тебя хакер.
  • Тыщ (08.04.08 22:19) [8]
    tesseract ©   (08.04.08 22:15) [5]

    Ты не знал, что SSE работает с 128-битными переменными и таким же выравниванием?
    Даже без SSE, если начало функции кратно параграфу, такая функция выполняется быстрей, начиная с Pentum II. Тоже не знал?
  • Сергей М, (08.04.08 22:21) [9]

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


    Фцытатник!
  • Тыщ (08.04.08 23:52) [10]
    Интересно, нормальные ответы будут?
  • Игорь Шевченко © (09.04.08 00:03) [11]
    какого ты ждешь нормального ответа ? Что код и без того выровнен на некую границу, определенную в заголовке PE-файла ? Что данные, расположенные в области, выделенной по VirtualAlloc гарантировано выровнены на 64 кило ?
  • Германн © (09.04.08 00:24) [12]

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

    Нормальные ответы уже были. Например в tesseract ©   (08.04.08 22:15) [5].
    Вот нормального вопроса пока не было. Разве
    > Мне надо выравнивание, и все тут.
    может считаться нормальным вопросом?
  • Тыщ (09.04.08 00:27) [13]
    Игорь Шевченко ©   (09.04.08 0:03) [11]

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

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

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

    См. [2].
  • Германн © (09.04.08 00:52) [14]

    > Тыщ   (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.
  • Тыщ (09.04.08 01:06) [15]
    Германн ©   (09.04.08 0:52) [14]

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

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

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

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

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

    Естественно, нужно. Если бы не нужно было, не спрашивал бы.
  • Германн © (09.04.08 01:37) [16]

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

    Хм. Плохо читал.
  • Тыщ (09.04.08 01:43) [17]
    Германн ©   (09.04.08 1:37) [16]

    > Плохо читал.

    Ну да, конечно, любой незарегистрированный пользователь по умолчанию ни черта не знает и плохо читал.
  • Германн © (09.04.08 01:56) [18]

    > Тыщ   (09.04.08 01:43) [17]
    >
    > Германн ©   (09.04.08 1:37) [16]
    >
    > > Плохо читал.
    >
    > Ну да, конечно, любой незарегистрированный пользователь
    > по умолчанию ни черта не знает и плохо читал.

    И всё равно - плохо читал. Примите и прочь.
  • Тыщ (09.04.08 02:03) [19]
    Германн ©   (09.04.08 1:56) [18]

    Странный ты. Заладил "плохо читал", "плохо читал". Твое утверждение голословно.
 
Конференция "Основная" » Как выравнить код и данные на границу 16 байт?
Есть новые Нет новых   [134487   +52][b:0][p:0.001]