Почему MSVC не поддерживает встроенную сборку для AMD64 и Itanium?
Вчера я узнал, что встроенная сборка (с ключевым словом __asm) не поддерживается в Microsoft Visual С++ при компиляции для целей AMD64 и Itanium.
Это правильно? И если да, то кто-нибудь знает, почему они не будут поддерживать встроенную сборку для этих целей? Похоже, что довольно большая функция просто отбрасывать...
Ответы
Ответ 1
Правильно, он по-прежнему не поддерживается в VS 2010 Beta 1. Я предполагаю, что встроенная сборка слишком сложна для реализации: способ, которым Microsoft ее реализовал, интегрируется с окружающим кодом C, чтобы данные могли входить и выходить из кода C, и соответствующий код клея автоматически вводится. Для этого компилятор C действительно должен понимать код ассемблера; они просто не реализовали это для AMD64 и Itanium.
Ответ 2
Кажется, что довольно большая функция просто отбрасывать...
Очень легко вызвать функцию, написанную с помощью ассемблера, до тех пор, пока вы следуете соглашениям C. Этот учебник объясняет, как.