|
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 22
|
|
Интересный подход к вызову функций22.01.2018, 20:03. Показов 1034. Ответов 19
Как видно на листинге выше(это игра DAVE MIRRA FREESTYLE BMX, которую я все пытаюсь перелопатить и внести изменения, касательно графики), используется некая таблица перехода, непонятно, зачем функцию вызывать через джампы, это таблица на 700 с копейками функций. Может кто поделиться своими мыслями, чем хороша такая практика компилятора?
0
|
|
| 22.01.2018, 20:03 | |
|
Ответы с готовыми решениями:
19
Локализация формы по вызову По вызову socket_close падает сервер Как подойти к вызову одной программы в другой? |
|
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
|
|
| 24.01.2018, 09:47 | |
|
Так часто преобразуется конструкция switch из с/c++
0
|
|
|
Эксперт Hardware
|
|||||||
| 24.01.2018, 16:14 | |||||||
|
тогда как иначе вызывать эти функции, через cmp-->je что-ли???а тут (в зависимости от входных данных) сразу идёт переход, и не надо никаких сравнений. гипотетически, на асме это выглядит так (условие принимает EAX):
0
|
|||||||
|
Asm/C++/Delphi/Py/PHP/VBA
|
||
| 24.01.2018, 16:27 | ||
call esi... иначе зачем там столько jmp?И зачем реализовывать это всё через jmp, когда можно просто таблицу адресов сделать? Чтобы relocations не настраивать для каждой функции?
0
|
||
|
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
|
||
| 25.01.2018, 07:46 | ||
|
используется обычно в дебаг билдах - сборка быстрее + доступна фича "изменить и продолжить".
0
|
||
|
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 22
|
|
| 25.01.2018, 15:08 [ТС] | |
|
В том то и дело, что вызовы не косвенные, call идет по константному адресу обычно, эта таблица начинается с самого начала секции кода за исключением первых пяти байт, в которых стоит int3. Типа один раз составили таблицу и при перекомпиляции только меняем адрес в жампе? Обычно так вызываются импортируемые функции, насколько я заметил. А эти лампы внутрь той же секции
0
|
|
|
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 22
|
|||
| 26.01.2018, 18:56 [ТС] | |||
|
Добавлено через 42 минуты
0
|
|||
|
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
|
|
| 26.01.2018, 19:00 | |
|
Князь, я не знаю всех подробностей как это работает, инфы не очень много.
знаю только что написал выше - ускорение сборки + возможность вносить изменения в код во без необходимости пересборки+перезапуска.
0
|
|
|
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 22
|
||
| 26.01.2018, 19:18 [ТС] | ||
|
0
|
||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
| 29.01.2018, 11:38 | |
|
Ребята, это все проделки компилятора.
Смотрите сами. Один FASM переходит по адресу в памяти, остальные(Masm, Tasm, Delphi, C - не проверял) через джамп.
0
|
|
|
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
|
|
| 30.01.2018, 09:26 | |
|
Constantin Cat, где же на скринах джампы ?
0
|
|
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|||
| 30.01.2018, 14:25 | |||
|
Добавлено через 7 минут
0
|
|||
|
Заблокирован
|
|||||||||||
| 30.01.2018, 14:59 | |||||||||||
|
Constantin Cat,
для masm CALL <JMP ...>появится, если
0
|
|||||||||||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
| 30.01.2018, 18:16 | |
|
Uncle Remus, И часто Вы без invoke вручную стек формируете?
0
|
|
|
Заблокирован
|
|
| 31.01.2018, 00:36 | |
|
Constantin Cat,
я стараюсь обходиться без invoke, но речь ведь шла не об этом. В #16 была иллюстрация того, как заставить link.exe формировать CALL <JMP _imp__ExitProcess@4>/JMP _imp__ExitProcess@4 или непосредственно CALL DWORD PTR _imp__ExitProcess@4
0
|
|
|
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 22
|
||
| 31.01.2018, 18:43 [ТС] | ||
|
Добавлено через 55 секунд А где можно узнать об _imp__.*?
0
|
||
|
Заблокирован
|
||
| 01.02.2018, 02:39 | ||
|
откройте при помощи hiew32.exe файл "masm32\lib\user32.lib" и попробуйте найти в этом файле функцию MessageBox
0
|
||
| 01.02.2018, 02:39 | |
|
Помогаю со студенческими работами здесь
20
Область данных, переданная системному вызову, слишком мала Нужны два примера по вызову параметров по значению и по ссылке Область данных переданная по системному вызову слишком мала Недопустимая операция: приводит к повторному вызову функции SetCurrentCellAddressCore Как "мастера по вызову" устанавливают антивирус ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|