i386 против AMD64 Отличия ABI - PullRequest
5 голосов
/ 05 апреля 2011

Где найти все различия в типах данных между двоичным интерфейсом приложений (ABI) i386 и AMD64?

Я знаю, что тип long - 32-битный в i386 ABI и 64-битный в AMD64. Это правильно?

Ответы [ 2 ]

8 голосов
/ 05 апреля 2011

Я предлагаю вам скачать Руководства по оптимизации доктора Агнера Фога . У него есть руководство специально для ABI и их различий.

Для различий в наборе инструкций между 32-битным и 64-битным режимами, инструкции Intel и AMD должны охватывать это во вводном томе или томах после томов инструкций ( 2a и 2b для ссылки на набор команд Intel , или 2 и 3 для AMD .)

См. Также другие ссылки в вики-теге .

4 голосов
/ 05 апреля 2011

Если вам нужно все деталей ABI: соглашения о вызовах подпрограмм, регистры получают то, что передано в них, какие регистры должны быть восстановлены при возврате, обработка исключений - что совершенно другое, есть документ, который вы можете загрузить с Microsoft для Windows ABI.

С другой стороны, если вас интересуют только типы данных, то написание программы, которая выполняет:

, занимает всего пару минут.
fprintf (stdout, "size of int is %d\n", sizeof(int));
fprintf (stdout, "size of long int is %d\n", sizeof(long int));
// etc.

РЕДАКТИРОВАТЬ 4/7/11, чтобы ответить:

Эта ссылка http://msdn.microsoft.com/en-us/library/7kcdt6fy.aspx работает в данный момент. Нет обещаний, что MSFT не сдвинет его завтра! Или Google "приложение двоичного интерфейса сайта: microsoft.com"

Все операционные системы x86-64, кроме Windows, используют систему x86-64 System v psABI. См. Где документирован ABI X86-64?

ABI определяются операционными системами и компиляторами, а не аппаратными архитекторами. Например, разработчики компилятора должны решить, является ли int для C / C ++ 32-битным, а long int - 64 (x86-64 System V) - или оба 32-битными (x64 Windows), или даже int это 64, а long int тоже 64 (как это делают некоторые компиляторы Фортрана) - или даже int это 64 и long int это 128 или любая другая комбинация, которую вы можете себе представить. Intel и AMD могут давать рекомендации, но авторы компиляторов и поставщики ОС находятся под контролем.

...