Как использовать код вызова для создания прямого вызова без разыменования указателя?Инструкция по прямому вызову ASM
Поскольку инструкция вызова может означать любое из числа кодов op, таких как xE8, xFF и x9A, как сообщить Visual Studio, какую я хочу сгенерировать, когда я использую инструкцию вызова?
0
A
ответ
0
Ассемблер выяснит, какой код операции генерируется на основе того выражения, которое вы используете.
Если вы напишете call foo
, это будет относительный звонок E8
. Если вы напишете call [foo]
, call [eax]
или call eax
, это будет непрямой вызов FF
(расширение кода операции 2). Если вы напишете call foo:bar
(или если ассемблер знает, что вы вызываете дальнейшую процедуру), это будет прямой прямой вызов 9A
. Если вы напишете call far [foo]
, это будет косвенный дальний вызов, который также является FF
(но расширение кода операции 3).
PS: не уверен в синтаксисе удаленного вызова для VS, подробности см. В документации. Тем не менее, вы обычно не используете большие звонки.
Смежные вопросы
- 1. Система rvm не работает по прямому вызову
- 2. Метод расширения не эквивалентен прямому вызову
- 3. Транспонирование по прямому графику
- 4. ASM под ARM - Инструкция mov
- 5. Запуск i_386 asm на x86_64: инструкция перезагрузки
- 6. asm инструкция альтернатива в c-программе
- 7. Что означает инструкция asm 'ta' & '0xfffffffc'?
- 8. инструкция ASM, кажется, не в стандартном синтаксисе
- 9. Инструкция ASM Call вызывает переполнение стека?
- 10. инструкция PCLMULQDQ в C inline asm
- 11. Накладные расходы по вызову/по вызову Стратегия интерпретатора Lisp
- 12. Вопрос по вызову по ссылке?
- 13. Trigger Slack Bot по прямому сообщению
- 14. Перетащите UIView по прямому пути и углам
- 15. Alfresco Поиск по прямому URL Параметр
- 16. JSF Контроль доступа по прямому объекту
- 17. Доступ к изображениям Rails по прямому пути
- 18. Meteor.method зависает по вызову
- 19. Рекомендации по вызову intuit.ipp.anywhere.setup()?
- 20. Избегайте по вызову функции
- 21. NSInvalidArgumentException по вызову GPPURLHandler
- 22. советы по вызову метода
- 23. та же инструкция по сборке, но другая машинная инструкция
- 24. Инструкция по сборке mov register, [зарегистрироваться] [зарегистрироваться]
- 25. Занимать во время операции вычитания (инструкция sbc asm) на 6502?
- 26. что это инструкция ARM asm ("b. \ N"); имею в виду?
- 27. можно сделать если (! Boolvar) {... in 1 asm инструкция?
- 28. MSVC2013 запутывается по вызову ctor
- 29. метод прерывается по вызову мыла
- 30. .on метод по вызову ajax
Код операции 'call' на основе E8 будет применяться только к объектам с локальными смещениями. Скорее всего, у меня нет MSVC для тестирования на данный момент), а затем, что ваша вызываемая функция должна иметь локальную связь, например, объявляемую как «статическую», как минимум. –
Спасибо, Крис. Я отредактировал вопрос, чтобы быть более ясным. – RASx64
Выбор команды перехода/ветви/вызова обычно выполняется в компоновщике. Включение оптимизации времени соединения может позволить компоновщику использовать прямой вызов. – EOF