![]() |
|
![]() ![]() ![]() |
|
586 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
дизассемблированный код:
Можно эти джампы как нибудь убрать? Может есть какая-нибудь опция компилятора. Компилятор - masm32 ml.exe 6.14.8444 |
||||
|
|||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
имхо, нельзя если провести параллель с ELF-форматом, то там доступ к внешним символам (определенным в shared library) осуществляется с помощью Global Offset Table и Procedure Linking Table. На этапе статической компоновки не известны реальные адреса символов (функций, данных), поэтому нужен механизм, с помощью которого на этапе динамической компоновки каждому символу можно сопоставить его адрес (благо, после загрузки shared library (DLL в частности) все адреса станут известны). С помощью косвенных jump-ов это и осуществляется: адрес перехода располагается в таблице, а динимический компоновщий может его изменить -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
586 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
Я знаю, что есть COFF и OMF форматы. Что это за формат? я не понимаю, вот например, c++ компилятор генерирует такой код:
cl /O2 /G5 test.c kernel32.lib user32.lib /link /entry:main /align:0x1000 /filealign:0x200 /subsystem:windows Точно такое же приложение, только без джампов. Почему так макроассемблер не может??? |
||||
|
|||||
W4FhLF |
|
||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
Может, для этого нужны специальные inc файлы, вместо стандартных прототипов надо прописать подобные этому:
Это формат исполняемых файлов в *nix системах. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||
|
|||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
Замечательно! А как эти функции вызывать с помощью макросов (напр. invoke). Есть какие нибудь альтернативные макросы? Что такое pr0? |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
зачем? правь inc и вызывай как обычно. значит, что кол-во параметров = 0 ![]() -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
||||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
Всем спасибо. Разобрался.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |