Собственно вопрос простой: hll компиляторы делают вызов api так: Код (Text): call jmp_api ... jmp_api: jmp [api] а не так: Код (Text): call [api] какой в этом смысл (кроме нескольких сэкономленных байт в случае многократного вызова этой функции)?
qwe8013 Вообще-то байт может быть далеко не несколько. Особенно если в образ будут добавлены релоки: делать фиксап для каждой функции или для каждого вызова каждой функции. P.S. И в случае релоков это ещё скажется на скорости загрузки образа.
Во-первых, это ес-но уже не раз обсуждалось, см. к примеру Лишние переходы - зачем они?. Во-вторых, все же главная причина использования переходов это не экономия байтиков и не сокращение числа релоков для ускорения ребейза в рантайме, а упрощение\ускорение линковки модулей при сборке приложения, особенно в режиме incremental, о чем собс-но уже сказал ntcdm
дада, уберите Incremental Link в настройках проекта и увидите что компилятор будет реализовывать вызовы как call [api]