Модераторы: powerfox, ZeeLax

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компилирование 64битного модуля на 32битной машине 
V
    Опции темы
nickless
Дата 9.10.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Цитата(powerfox @  7.10.2009,  20:30 Найти цитируемый пост)
А как 64-битный код может быть короче (за исключением перехода на аппаратную 64-битную арифметику вместо программной)?

64 битная арифметика может сильно уменьшить размер кода, если часто используется, ну и кроме того компилятору не нужно заботиться о совместимости с i386, он может спокойно использовать всё что угодно вплоть до sse2.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
powerfox
Дата 9.10.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 26
Всего: 97



Цитата(nickless @  9.10.2009,  16:17 Найти цитируемый пост)
ну и кроме того компилятору не нужно заботиться о совместимости с i386, он может спокойно использовать всё что угодно вплоть до sse2.

Ну, не знаю. SSE2 (в отличие от SSSE3/SSE4) есть и на 32-х битных машинах, а такие программы, как mplayer, которые юзают мультимедиа, обычно проверяют во время конфигурации наличие SSEx. Мне кажется, что если не арифметика, то причина в чём-то другом.


--------------------
user posted image
PM WWW   Вверх
Void
Дата 9.10.2009, 15:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 7
Всего: 173



Может быть меньше кода на register spilling, прологи/эпилоги функций. В общем, случай редкий, но отнюдь не невозможный.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
nerezus
Дата 9.10.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Я могу оба файла выложить то ) Правда я в Турции, тут с инетом траблы, так что IDA я сам скачать не смогу.

Добавлено через 1 минуту и 41 секунду
http://www.sendspace.com/file/9li7zx


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
powerfox
Дата 11.10.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 26
Всего: 97



Цитата(Void @  9.10.2009,  16:52 Найти цитируемый пост)
Может быть меньше кода на register spilling, прологи/эпилоги функций.

Хорошее объяснение.


--------------------
user posted image
PM WWW   Вверх
nickless
Дата 11.10.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Т.к. это либа, то еще и более эффективный PIC влияет.
Для сравнения:
Код

 х86                                                            | х86-64
 00000850 <zif_extract_ico>:                                    | 0000000000000710 <zif_extract_ico>:
 0x00: push  %ebp                             57                | 0x00: push   %rbx                             53
       mov   %esp,%ebp                        89 e5             |       mov    %rsi,%rbx                        48 89 f3
       push  %ebx                             53                |       lea    0x8b(%rip),%rsi                  48 8d 35 8b 00 00 00
       call  827 <__i686.get_pc_thunk.bx>     e8 ce ff ff ff    |
       add   $0x179b,%ebx                     81 c3 9b 17 00 00 |       xor    %eax,%eax                        31 c0
       sub   $0x34,%esp                       83 ec 34          |       sub    $0x20,%rsp                       48 83 ec 20
       lea   -0x14(%ebp),%eax                 8d 45 ec          |       lea    0x1c(%rsp),%rcx                  48 8d 4c 24 1c
       mov   %eax,0x14(%esp)                  89 44 24 14       |
       lea   -0xc(%ebp),%eax                  8d 45 f4          |       lea    0x10(%rsp),%rdx                  48 8d 54 24 10
       mov   %eax,0x10(%esp)                  89 44 24 10       |
       lea   -0x10(%ebp),%eax                 8d 45 f0          |       lea    0x18(%rsp),%r9                   4c 8d 4c 24 18
       mov   %eax,0xc(%esp)                   89 44 24 0c       |
       lea   -0x8(%ebp),%eax                  8d 45 f8          |       lea    0x8(%rsp),%r8                    4c 8d 44 24 08
       mov   %eax,0x8(%esp)                   89 44 24 08       |
       lea   -0x12d0(%ebx),%eax               8d 83 30 ed ff ff |
       mov   %eax,0x4(%esp)                   89 44 24 04       |
       mov   0x8(%ebp),%eax                   8b 45 08          |
       mov   %eax,(%esp)                      89 04 24          |
       call  734 <zend_parse_parameters@plt>  e8 a1 fe ff ff    |       callq  608 <zend_parse_parameters@plt>  e8 ce fe ff ff
       test  %eax,%eax                        85 c0             |       test   %eax,%eax                        85 c0
       jne   8b0 <zif_extract_ico+0x60>       75 19             |       jne    751 <zif_extract_ico+0x41>       75 13
       mov   -0xc(%ebp),%eax                  8b 45 f4          |       mov    0x8(%rsp),%rsi                   48 8b 74 24 08
       mov   %eax,0x4(%esp)                   89 44 24 04       |
       mov   -0x8(%ebp),%eax                  8b 45 f8          |       mov    0x10(%rsp),%rdi                  48 8b 7c 24 10
       mov   %eax,(%esp)                      89 04 24          |
       call  664 <_extract_ico@plt>           e8 bb fd ff ff    |       callq  5e8 <_extract_ico@plt>           e8 9b fe ff ff
       mov   0xc(%ebp),%eax                   8b 45 0c          |
       movb  $0x0,0xc(%eax)                   c6 40 0c 00       |       movb   $0x0,0x14(%rbx)                  c6 43 14 00
       add   $0x34,%esp                       83 c4 34          |       add    $0x20,%rsp                       48 83 c4 20
       pop   %ebx                             5b                |       pop    %rbx                             5b
       pop   %ebp                             5d                |
 0x65: ret                                    c3                | 0x46: retq                                    c3
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                | 0x4f: nop                                     90



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.