Это может быть слишком низкий уровень для вас, но некоторые старые 64-битные процессоры AMD не имеют CMPXCHG16B
( Источник ), если вы полагались на это как на инструкцию по аппаратной неблокировке.
Также, похоже, изменения в модели памяти для C ++ , которые могут иметь значение, поэтому вам, возможно, придется следить, если вы делаете код очень низкого уровня.
Модель памяти, «указанная» CLR, является предметом постоянных дискуссий в Microsoft (открыто обсуждается, по крайней мере, еще в 2003 ). В качестве дополнительного примечания в этой статье Крис Брумме заявляет, что модель x64 такая же, как и x86, что, как я полагаю, является точным утверждением для целей размещенного кода CLR.
Если ваши целевые пользователи явно не включают Itanium, я бы подумал, что для корректности будет достаточно просто включить запасную, более медленную, но простую и безопасную реализацию для этой архитектуры. Тогда нет необходимости указывать, что ваше программное обеспечение не работает на этой платформе, просто оно работает в более медленном резервном режиме. Если впоследствии люди захотят серьезно использовать платформу, вы можете кодировать эту более слабую модель значительно .
Обратите внимание, что x64 JIT отличается от x86 JIT (значительно так, начиная с 3.5 SP1), поэтому любое тестирование режима выпуска на одном не является представительным для другого, и наоборот. Испытайте при необходимости.