Самый правильный способ обращения к 32-битной и 64-битной версиям программ - PullRequest
0 голосов
/ 18 ноября 2018

Этот вопрос касается терминологии для 32-битной и 64-битной x86.

Если у меня есть 2 каталога с исходным кодом одной и той же программы - одна для 32-битной Windows и другая для 64-битнойWindows, какие будут более правильные имена для этих папок:

  • x86-64 и x64 ?
  • или IA-32 и x64 ?

Я уже читал некоторые веб-ресурсы, но не могу понять.Только для записи:

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018
  • x86-32 версии предназначены для 32-разрядных процессоров, совместимых с Intel.
  • x86-64 версии предназначены для 64-разрядных процессоров, совместимых с Intel.
  • Версии IA-64предназначены для , в частности 64-разрядных микропроцессоров Intel Itanium.

Иногда их называют:

  • x86-32, иногда именуемый IA-32, i386 илиi686, x86 (см. примечание 1), x32 (см. примечание 2).
  • x86-64 иногда обозначается как AMD64, Intel 64, x64.

Примечание 1: Строго говоря,это неверно, поскольку

x86 охватывает все процессоры, обратно совместимые с 8086, и все расширения архитектуры, включая x86-32 и x86-64.

Хотяэто сокращение часто используется в мире Windows.

Примечание 2. Не следует использовать во избежание путаницы с x32 ABI.

Источники:

0 голосов
/ 18 ноября 2018

x86 может быть общим термином, который охватывает все процессоры, обратно совместимые с 8086, и все расширения архитектуры, включая x86-64.

Обратите внимание, что IA-64 - это , а не x86 вообще, это Itanium (64-битная архитектура VLIW с явной спекуляцией / параллелизмом) . Он также был разработан Intel, но совершенно не связан с x86 с точки зрения совместимости или дизайна. (Ранние процессоры IA-64 также были интегрированы с ядром x86 для совместимости. Intel выпускала IA-64, а AMD - AMD64 / x86-64)

Intel иногда говорит о том, что их процессоры имеют ядра IA + интегрированный графический процессор и другую логику вне каждого ядра IA. (IA = Intel Architecture = x86).


32-битный x86, в частности (исключая 16-битный или 64-битный) можно назвать

  • IA-32 (иногда используется Intel)
  • i386 или i686 (распространено в Linux)
  • (только для Windows): x86 . Да, действительно: в мире Windows «x86» означает 32-разрядный. Вот почему у вас есть каталог Program Files (x86) с таким именем. Этот выбор может привести к путанице в терминологии для всех, потому что x86 по-прежнему является лучшим способом обозначения архитектуры в целом, в отличие от ARM или MIPS.
  • редко: x86-32. Официально он не используется ни одним из известных мне поставщиков оборудования или программного обеспечения, но это однозначный полезный термин.

Никогда не называй это х32. x32 - это вариант ILP32 для x86-64 System V ABI: 32-разрядные указатели в 64-разрядном режиме. https://en.wikipedia.org/wiki/X32_ABI


64-битная x86 проще ссылаться конкретно (исключая 32 и 16-битную):

  • x86-64 или x86_64 (черта против подчеркивания не имеет никакого значения. В тексте большинство людей используют черту, но только _ может быть частью имен функций / переменных в большинстве языков.)
  • AMD64 или amd64
  • (только для Windows) x64
  • (В основном только в документации по архитектуре процессора Intel, они не популярны, и я не видел их в именах каталогов программного обеспечения или параметрах конфигурации) IA-32e или Intel64. «Е» означает «расширения», по-видимому. https://en.wikipedia.org/wiki/X86-64#Intel_64 имеет раздел истории, в котором упоминается наименование.

Не IA-64, это отдельная архитектура.

Конечно, если вы хотите быть педантичным, для поддержки устаревшего режима требуются процессоры x86-64, поэтому вы можете запустить чистую 32-битную ОС на процессоре x86-64, и она будет все еще a 64-битный процессор.

С 64-битным ядром, работающим в 32-битном пользовательском пространстве, ЦП находится в режиме «совместимости», который является лотом , как 32-битный защищенный режим, за исключением того, что формат таблицы страниц имеет 52 физические адреса. (Больше, чем 36-битная физическая ширина адреса из таблиц страниц PAE, на которой основан формат таблицы страниц x86-64.) Пространство пользователя будет трудно определить разницу между работой под 32-битным ядром и 64-битное ядро, за исключением специфических для ОС вещей, таких как запрос ядра с помощью системного вызова.


Имена каталогов программного обеспечения

Многие проекты идут с i386 против x86-64 или amd64. Это была бы моя рекомендация как наименее двусмысленная. (Или, может быть, i686, если вас не интересует совместимость с процессорами старше PPro.)

Некоторые, например GMP (библиотека GNU MultiPrecision), которая имеет рукописный asm для многих архитектур, используют «x86» и «x86_64». https://gmplib.org/repo/gmp/file/tip/mpn.

(GMP имеет несколько настроенных вручную версий одной и той же функции для разных процессоров x86. В «x86» есть подкаталоги с различными версиями функций, настроенных на Pentum, Core 2, Haswell и / или использующих преимущества инструкций. устанавливать расширения, такие как BMI2. Это необычно, большинство проектов не получают такой конкретности. В некоторых может быть что-то, что может использовать AVX или AVX512, или SSE4.1, например, но это часто только в исходных файлах.)

...