LINUX.ORG.RU

Почему 64-битная ОС использует больше ОЗУ, чем 32-битная?

 , , ,


0

2

Речь идет о полностью 64-битной ОС, которой не нужна совместимость с 32-битным ПО, т.е. lib32 версии библиотек отсутствуют. Также стоит забыть о том, что 64-битные инструкции длиннее. Препод говорил, что я разберусь с этим, прочитав о команде ассемблера call. Читал:

Команда call передает управление ближней или дальней процедуре с запоминанием в стеке адреса точки возврата. Команда ret возвращает управление из процедуры вызывающей программе, адрес возврата получает из стека. Пример:

..code..
call 0455659
..more code..
Код с адреса 455659:
add eax, 500
mul eax, edx
ret

Когда выполняется команда call, процессор передает управление на код с адреса 455659, и выполняет его до команды ret, а затем возвращает управление команде следующей за call. Код который вызывается командой call называется процедурой. Вы можете поместить код, который вы часто используете в процедуру и каждый раз когда он вам нужен вызывать его командой call.

Подробнее: команда call помещает регистр EIP (указатель на следующюю команду, которая должна быть выполнена) в стек, а команда ret извлекает его и передаёт управление этому адресу.

http://www.codenet.ru/progr/asm/newbee/lesson3.php

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

★★★★★

Ответ на: комментарий от quantum-troll

Почитай чем определяется битность процессора и у тебя не будет возникать таких глупых вопросов.

anonymous
()
Ответ на: комментарий от anonymous

Ну… Разница в потреблении памяти может быть в несколько раз. Не может же быть что практически вся память программы выделяется на указатели?

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

Выравнивание еще есть, оставляющее «неиспользуемые» дырки

unanimous ★★★★★
()

Указатели в 2 раза длиннее (а они используются гораздо чаще, чем можно подумать, особенно в ООП) + выравнимание структур не на 4, а на 8 байт

KivApple ★★★★★
()
Ответ на: комментарий от quantum-troll

никак. либо у них на смом деле 16-битные регистры для адресации памяти (i8080, 8085, Z80) либо таблица смещений (i8035/8051)

mumpster ★★★★★
()

плюс ещё многи переменные уже не 32 бита а 64 по умолчанию

mumpster ★★★★★
()
Ответ на: комментарий от quantum-troll

если что 8-битные процы имеют 16-битную адресную шину и используют пары регистров для адресации. плюс умельцы используют аналог EMS для страничного переключения банков памяти.

exception13 ★★★★★
()

А ты подумай, чем обусловлен размер указателя.

tiandrey ★★★★★
()
2 марта 2013 г.
Ответ на: комментарий от anonymous

слабак, надо было от 02.03.2012 тему поднимать.

mm3 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.