почему в майнкрафте 64 стак

Почему в майнкрафте стак это 64

В форумах люди часто упоминают, что 64-битные версии программ поглощают больший объем памяти и стека. При этом обычно ссылаются на то, что размеры данных стали в 2 раза больше. Однако это необоснованное утверждение, так как размер большинства типов (char, short, int, float) в языке Си/Си++ остался прежним на 64-битных системах. Конечно, например, увеличился размер указателей, но ведь не все данные в программе состоят из указателей. Причины роста потребляемой памяти и стека более сложны. Я решил подробнее исследовать данный вопрос.

В данной заметке я поговорю о стеке, а в будущем планирую обсудить выделение памяти и размер двоичного кода. И еще хочу сразу заметить, что статья посвящена языку Си/Си++ и среде разработки Visual Studio.

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

Соглашение по вызовам на платформе x86-64 похоже на соглашение fastcall, существующее в x86. В x64-соглашении первые четыре целочисленных аргумента (слева направо) передаются в 64-битных регистрах, выбранных специально для этой цели:

RCX: 1-й целочисленный аргумент
RDX: 2-й целочисленный аргумент
R8: 3-й целочисленный аргумент
R9: 4-й целочисленный аргумент

Из этой информации я ранее сделал вывод, что 64-битная программа во многих случаях может экономить стековую память по сравнению с 32-битной. Ведь если параметры передаются через регистры, код функции короткий и нет необходимости сохранять аргументы в памяти (стеке), то размер используемой стековой памяти должен сократиться. Но это не так.

Хотя аргументы могут быть переданы в регистрах, компилятор все равно резервирует для них место в стеке, уменьшая значение регистра RSP (указателя стека). Как минимум, каждая функция должна резервировать в стеке 32 байта (четыре 64-битных значения, соответствующие регистрам RCX, RDX, R8, R9). Это пространство в стеке позволяет легко сохранить содержимое переданных в функцию регистров в стеке. От вызываемой функции не требуется сбрасывать в стек входные параметры, переданные через регистры, но резервирование места в стеке при необходимости позволяет это сделать. Если передается более четырех целочисленных параметров, в стеке нужно зарезервировать соответствующее дополнительное пространство.

Рассмотрим пример. Некая функция передает два целочисленных параметра дочерней функции. Компилятор положит значения аргументов в регистры RCX и RDX и при этом вычтет 32 байта из регистра RSP. Вызываемая функция может обратиться к параметрам через регистры RCX и RDX. Если же коду этой функции данные регистры понадобятся для какой-то иной цели, он сможет скопировать их содержимое в зарезервированное пространство стека размером 32 байта.

Обратим внимание еще на один момент. Указатель стека RSP должен перед очередным вызовом функции быть выровнен по границе 16 байт. Таким образом, суммарный размер используемого стека при вызове в 64-битном коде функции без параметров составляет: 8 (адрес возврата) + 8 (выравнивание) + 32 (резерв для аргументов) = 48 байт!

Рассмотрим, к чему это может приводить на практике. Здесь и далее для экспериментов я буду использовать Visual Studio 2010. Составим рекурсивную функцию вида:

Release 32-bit: последнее выведенное число (глубина стека) — 51331
Компилятор использует при вызове данной функции 20 байт.

Release 64-bit: последнее выведенное число — 21288
Компилятор использует при вызове данной функции 48 байт.

Таким образом, 64-битный вариант функции StackUse оказывается прожорливее 32-битного в более чем в 2 раза.

Замечу, что изменение правил выравнивания данных также может оказывать влияние на размер поглощаемого стека. Предположим, что функция принимает в качестве аргумента структуру:

Размер структуры ‘S’ из-за изменений правил выравнивания и изменения размера члена ‘b’ вырастет с 12 до 24 байт при перекомпиляции в 64-битном режиме. Структура передается в функцию по значению. А, следовательно, структура в стеке также займет в два раза больше памяти.

Читайте также:  Как можно подключить мобильный интернет мтс

Неужели все так плохо? Нет. Не следует забывать про большее количество регистров имеющихся в распоряжении 64-битного компилятора. Усложним код экспериментальной функции:

Release 32-bit: последнее выведенное число — 16060
Компилятор использует при вызове данной функции уже 64 байта.

Release 64-bit: последнее выведенное число — 21310
Компилятор использует при вызове данной функции по-прежнему 48 байт.

Для данного примера 64-битному компилятору удалось использовать дополнительные регистры и построить более эффективный код, что позволило сократить количество используемой стековой памяти!

Источник

Minecraft Forums

This thread was automatically marked as Locked.

why are there 64 items to a stack?

No problem. :smile.gif:

64. everything about 64.

As a product of 8 x 8, it is the expression of a realized totality and perfect.

Being the cube of 4, the number 64 represents the physical world of the four elements to the third power, in the plenitude of its expansion.

According to Claude of Saint-Martin, this number represents the «complement of the octagonal circle where the powerful number, after having covered all the depths of area and of the existence of the beings, restore the unit in its simple number, there where it was divided, and the action where reigned the nothingness and the death».

Symbol of the paramount chaos.

It is the number of generations from Adam until Jesus according to the Gospel of Luke.

The mother of Buddha had, according to the tradition, to born in a family endowed of 64 species of qualities.

Age of the Virgin Mary when she died, according to visions of Ann-Catherine Emmerich.

The mathematician W. R. Ball reports the following legend: In a temple of Benares, there is a dome under which a plate of bronze marks the center of the world. On this plate, there are three vertical stems of one cubit height. During the creation of the world, God placed on one of the stems 64 discs of gold of different sizes, the largest at the basis, the others going decreasing. In top, the smallest disc. This accumulation is the tower of Brahma. Night and day, without stop, the priests relay to transfer the discs from a stem to another. Only one disc must be take at once and it is forbidden to place a disc on another of lower diameter. When the 64 discs will be transferred from the tower of Braham to an other stem, the temple and the Universe will crumble. This will be the end of the world.

The Chinese tradition wants that Confucius has had 64 generations since Hoang-ti, founder of the dynasty.

The 64 devas of the Abhavara class, at the Indians.

The 64 Koua (hexagrams) of the Yi-King.

To the funerals of Alexander the Great, the mortuary chariot was dragged by 64 mules.

The 64 persons in China who carry the skin of the defunct emperor.

The 64 «tantras» (books) of the «tantrism», which is a form of Hinduism.

The magic square using the first sixty four numbers is associated with the Mercury planet and has for sum 260.

64 7 6 60 61 3 2 57
49 55 11 13 12 14 50 56
41 18 46 21 20 43 23 48
32 34 27 37 36 30 39 25
40 26 35 29 28 38 31 33
17 42 22 44 45 19 47 24
9 15 51 52 53 54 10 16
8 63 62 4 5 59 58 1

The 64 nucleotides of the genetic code.

The 64 squares of a game of chessboard.

Nope. The max stack used to be 99. Also, the max in editors is 255.
I think it’s because 64 is just a good number. 16×4, one higher than 63, not too big, not to small, perfect!
I hope they don’t change it.

EDIT: @Above: Holy crap.

64. everything about 64.

As a product of 8 x 8, it is the expression of a realized totality and perfect.

Being the cube of 4, the number 64 represents the physical world of the four elements to the third power, in the plenitude of its expansion.

Читайте также:  сборник модов на майнкрафт андроид

According to Claude of Saint-Martin, this number represents the «complement of the octagonal circle where the powerful number, after having covered all the depths of area and of the existence of the beings, restore the unit in its simple number, there where it was divided, and the action where reigned the nothingness and the death».

Symbol of the paramount chaos.

It is the number of generations from Adam until Jesus according to the Gospel of Luke.

The mother of Buddha had, according to the tradition, to born in a family endowed of 64 species of qualities.

Age of the Virgin Mary when she died, according to visions of Ann-Catherine Emmerich.

The mathematician W. R. Ball reports the following legend: In a temple of Benares, there is a dome under which a plate of bronze marks the center of the world. On this plate, there are three vertical stems of one cubit height. During the creation of the world, God placed on one of the stems 64 discs of gold of different sizes, the largest at the basis, the others going decreasing. In top, the smallest disc. This accumulation is the tower of Brahma. Night and day, without stop, the priests relay to transfer the discs from a stem to another. Only one disc must be take at once and it is forbidden to place a disc on another of lower diameter. When the 64 discs will be transferred from the tower of Braham to an other stem, the temple and the Universe will crumble. This will be the end of the world.

The Chinese tradition wants that Confucius has had 64 generations since Hoang-ti, founder of the dynasty.

The 64 devas of the Abhavara class, at the Indians.

The 64 Koua (hexagrams) of the Yi-King.

To the funerals of Alexander the Great, the mortuary chariot was dragged by 64 mules.

The 64 persons in China who carry the skin of the defunct emperor.

The 64 «tantras» (books) of the «tantrism», which is a form of Hinduism.

The magic square using the first sixty four numbers is associated with the Mercury planet and has for sum 260.

64 7 6 60 61 3 2 57
49 55 11 13 12 14 50 56
41 18 46 21 20 43 23 48
32 34 27 37 36 30 39 25
40 26 35 29 28 38 31 33
17 42 22 44 45 19 47 24
9 15 51 52 53 54 10 16
8 63 62 4 5 59 58 1

The 64 nucleotides of the genetic code.

The 64 squares of a game of chessboard.

And someone just harnessed the power of the wikipedia.

That, or they have a ridiculously extensive knowledge of random numbers.

Источник

Топ сочетаний клавиш в Майнкрафт

Внимание! Данная статья предназначена для новичков, опытным игрокам содержимое статьи будет очевидно.

ЛКМ — левая кнопка мыши

ПКМ — правая кнопка мыши

1. Как сразу взять 64 (стак) блоков

Вы должны находиться в творческом режиме (/gamemode 1)! Для того, чтобы сразу брать 64 блока или предмета нужно зажать клавишу SHIFT и с помощью ЛКМ нажать по блоку. Чтоб поместить их в слоты быстрого доступа нужно просто навести курсор на предмет или блок, затем нажать нужную цифру на клавиатуре (от 1 до 9).

2. Клонирование предметов/блоков

Для клонирования предмета нужно назначить клавишу выбора блока. Для этого выполните следующие действия: ESC —> Настройки —> Управление —> Выбор блока —> назначаете клавишу. Затем наводите курсор мыши на предмет и нажимаете назначенную клавишу.

3. Быстрое удаление всех предметов в инвентаре.

4. Быстрый выбор блока

Наведите указатель на нужный блок и нажмите клавишу, которые вы настраивали в пункте 3. Данная функция работает как в креативе (творческом режиме) так и в выживании (при наличии блока в инвентаре). С помощью нее вы поместите блок прямо себе в руку.

Читайте также:  чит на мебель в майнкрафт

5. Быстрое перетаскивание предметов/блоков

Для того, чтобы быстро переместить предмет или блок (например в печку) зажмите клавишу SHIFT и нажмите ЛКМ по предмету или блоку.

6. Сортировка предметов

Если в вашем инвентаре находиться какой-то определенный предмет и вы хотите собрать все одинаковые предметы в один слот, просто нажмите по желаемому предмету быстро 2 раза ЛКМ.

7. Распределения предмета по инвентарю

Для того, чтобы быстро распределить блок или предмет по инвентарю, откройте свой инвентарь, затем просто зажмите ЛКМ и проводите предметов по инвентарю.

8. Быстрое перемещение предметов в сундук/из сундука

Если в вашем инвентаре или в сундуке находится, например 6 стаков булыжника, чтобы переместить сразу все вам понадобится зажать клавишу SHIFT и быстро нажать 2 раза ЛКМ.

9. Быстрое выбрасывание предметов.

Чтобы быстро выбросить сразу стак (или любое другое количество) предметов из инвентаря, просто зайдите в инвентарь и зажав клавишу SHIFT нажмите английскую «Q».

Вот и всё, если будут какие-либо вопросы, пишите нам в группу ВК.

Также можете посмотреть мое видео:

Источник

Почему в майнкрафте 64 стак

Стак – от английского «stack» — штабель, стопка, кипа. Стак в майнкрафте — это стопка материала, который сложен до предела в одной ячейке (зависит от материала, чаще в стопке получается 64 шт или 16 шт).

Это в значительной степени позволяет сэкономить место как инвентаря, так и в сундуках, однако, есть предметы, которые вообще не складываются друг с другом (примером может являться дверь). Упрощает работу с блоками, так как нет необходимости брать по одному блоку и ставить, тогда как в ячейке будет аж 64 штуки, что приятно упрощает и ускоряет работу.

Игра майнкрафт сопряжена с постепенным накоплением всевозможных необходимых ресурсов, складируя их в сундуках (это будет препятствовать потере предметов при гибели), что именно и диктует требование экономности свободного и именно безопасного места — в результате чего и было разработано, что одноименный материал (практически каждый) складывается в стопку, который и прозвали стаком.

Часто задаются вопросы — как взять стак в майнкрафте — все очень просто, ведь достаточно навести курсор на выбранный стак, зажать клавишу Shift и кликнуть левую кнопку мыши — весь материал сразу попадет из сундука в инвентарь. Если же сделать такую процедуру с открытым инвентарем — стак попадет в меню быстрого вызова.

Аналогичным образом можно и класть предметы в сундук. Предметы укладываются в первую же свободную клетку сундука/инвентаря начиная с левого верхнего края, постепенно смещаясь вправо и вниз по мере заполнения свободного места.

Источник

Почему в майнкрафте 64 стак

Стак – от английского «stack» – штабель, стопка, кипа. Стак в майнкрафте – это стопка материала, который сложен до предела в одной ячейке (зависит от материала, чаще в стопке получается 64 шт или 16 шт).

Это в значительной степени позволяет сэкономить место как инвентаря, так и в сундуках, однако, есть предметы, которые вообще не складываются друг с другом (примером может являться дверь). Упрощает работу с блоками, так как нет необходимости брать по одному блоку и ставить, тогда как в ячейке будет аж 64 штуки, что приятно упрощает и ускоряет работу.

Игра майнкрафт сопряжена с постепенным накоплением всевозможных необходимых ресурсов, складируя их в сундуках (это будет препятствовать потере предметов при гибели), что именно и диктует требование экономности свободного и именно безопасного места – в результате чего и было разработано, что одноименный материал (практически каждый) складывается в стопку, который и прозвали стаком.

Часто задаются вопросы – как взять стак в майнкрафте – все очень просто, ведь достаточно навести курсор на выбранный стак, зажать клавишу Shift и кликнуть левую кнопку мыши – весь материал сразу попадет из сундука в инвентарь. Если же сделать такую процедуру с открытым инвентарем – стак попадет в меню быстрого вызова.

Аналогичным образом можно и класть предметы в сундук. Предметы укладываются в первую же свободную клетку сундука/инвентаря начиная с левого верхнего края, постепенно смещаясь вправо и вниз по мере заполнения свободного места.

Источник

Информационный портал