Во время обучения сборке x86-64 я столкнулся с моей первой несовместимостью между реализациями Intel 64 и AMD64 "x86-64": Почему сборка syscall скомпилирована в 32-разрядном выходе NASM и popa не компилируется в 64 бит? syscall
действителен в режиме совместимости одного, но не другого.
Есть ли лучший способ узнать эти несовместимости, помимо тщательного изучения обоих руководств и их сравнения, которые подвержены ошибкам и дублирует мои усилия по чтению вручную при нацеливании на переносимость?
Например, было бы намного проще, если бы был:
- стандартное подмножество, которое как Intel, так и AMD требуют следовать
- комментарии к руководству Intel о совместимости с AMD, поскольку AMD изобрела x86-64. Но, конечно, это будет сложно для Intel, и руководства Intel не содержат слова AMD.
- какое-либо общее официальное или неофициальное руководство, обеспечивающее совместимость определенных частей. Например, что-то вроде: режим совместимости может быть несовместимым, но не 64-разрядным.
- некоторый ухоженный список несовместимостей Intel, AMD или какой-либо третьей стороны.