Реализация Int64 на 32-битном процессоре - PullRequest
4 голосов
/ 20 ноября 2010

У меня вопрос из любопытства.

Как Int64 реализовано для 32-битных процессоров? Я вижу три варианта

  1. 32-битные процессоры имеют какое-то расширение, допускающее 64-битную арифметику
  2. Int64 это полностью реализовано в CLR, который реализует 64-битную арифметику с использованием 32-битных операций
  3. Некоторые 32-битные процессоры могут выполнять 64-битную арифметику и использование CLRэто логика.На других процессорах CLR использует собственную реализацию 64-битной логики.

Первый сценарий не выглядит правдоподобным, поскольку подразумевает, что 64-разрядные процессоры теперь должны быть способны выполнять 128-разрядную арифметику.Вторая ставит вопрос о том, как это можно сделать эффективно .Третий, похоже, объединяет худшие черты обоих подходов.

1 Ответ

6 голосов
/ 20 ноября 2010
  • Процессоры Intel x86, такие как старые Pentiums (как пример 32-разрядного процессора), способны выполнять 64-разрядную арифметику и даже 128-разрядную арифметику в течение длительного времени (например, XMMM0-XMM7 )).
  • 64-битная арифметика с использованием только 32-битных реестров - это хорошо задокументировано
  • Реализация CLR для конкретной платформы свободна для реализации одного из вышеперечисленных или для реализации чего-либо еще для удовлетворениятребование.
...