LINUX.ORG.RU

История изменений

Исправление slovazap, (текущая версия) :

О нём вообще ничего знать не надо, это рудимент из времён царя Гороха.

Поддерживаю. Есть конкретика, как-то размер регистра, размер указателя, размер инта, всё это разные и не особо связанные вещи.

Т.е. если я пишу int a = 123; - эти данные помещаются в регистр, размером 64 бита и не больше. Так?

Эти данные могут помещаться:

  • в память, размером sizeof(int), и да - на 64битной платформе он может быть меньше 64 бит - скорее всего будет 32 бита
  • в регистры, и тут у компилятора широкий простор - в общем случае он может положить данные в регистр соответствующего размера, в регистр большего размера, в несколько регистров (например 128битное число в пару 64битных регистров), или несколько значений в один регистр (SIMD)
  • могут вообще никуда не помещаться - выражение может посчитаться на этапе компиляции и никакие из исходных значений вообще не попадут в скомпилированный код

Исходная версия slovazap, :

О нём вообще ничего знать не надо, это рудимент из времён царя Гороха.

Поддерживаю. Есть конкретика, как-то размер регистра, размер указателя, размер инта, всё это разные и не особо связанные вещи.

Т.е. если я пишу int a = 123; - эти данные помещаются в регистр, размером 64 бита и не больше. Так?

Эти данные могут помещаться:

  • в память, размером sizeof(int)
  • в регистры, и тут у компилятора широкий простор - в общем случае он может положить данные в регистр соответствующего размера, в регистр большего размера, в несколько регистров (например 128битное число в пару 64битных регистров), или несколько значений в один регистр (SIMD)
  • могут вообще никуда не помещаться - выражение может посчитаться на этапе компиляции и никакие из исходных значений вообще не попадут в скомпилированный код