Почему MSVC не поддерживает встроенную сборку для AMD64 и Itanium?

Вчера я узнал, что встроенная сборка (с ключевым словом __asm) не поддерживается в Microsoft Visual С++ при компиляции для целей AMD64 и Itanium.

Это правильно? И если да, то кто-нибудь знает, почему они не будут поддерживать встроенную сборку для этих целей? Похоже, что довольно большая функция просто отбрасывать...

Ответ 1

Правильно, он по-прежнему не поддерживается в VS 2010 Beta 1. Я предполагаю, что встроенная сборка слишком сложна для реализации: способ, которым Microsoft ее реализовал, интегрируется с окружающим кодом C, чтобы данные могли входить и выходить из кода C, и соответствующий код клея автоматически вводится. Для этого компилятор C действительно должен понимать код ассемблера; они просто не реализовали это для AMD64 и Itanium.

Ответ 2

Кажется, что довольно большая функция просто отбрасывать...

Очень легко вызвать функцию, написанную с помощью ассемблера, до тех пор, пока вы следуете соглашениям C. Этот учебник объясняет, как.