Visual C ++ 2005, 2008 или 2010 не поддерживают встраивание сборки при компиляции для 64-битных платформ. В x64 ASM слишком много сложностей и сложностей, которые могут испортить код C (++) вокруг блока __asm
, поэтому они просто не допускают этого. Короче говоря, нет способа "портировать" его.
Я предлагаю использовать 64-битные встроенные функции с #define
и #ifdef
при попытке кросс-архитектурной компиляции такого низкоуровневого кода. Проверить: http://msdn.microsoft.com/en-us/library/h2k70f3s.aspx
Редактировать : Однако, если вы действительно знаете, что делаете, вы можете сохранить надлежащие байтовые коды ASM в некотором виде буферного массива и выполнить этот «сырой» - через указатель void*
и VirtualProtect()
или что-то подобное. Конечно, вам нужно понимать соглашения о вызове / возврате x64, так как вы по сути будете вызывать функцию. Обратите внимание, что это 99,9% случаев плохая идея.