В чем разница между маленькой моделью памяти и большой памятью? - PullRequest
3 голосов
/ 01 февраля 2010

Какая разница, когда я выбираю «модель большой памяти» вместо «модели маленькой памяти» в компиляторе Turbo C?

как это меняет поведение моей программы?

Эссбеев

Ответы [ 2 ]

8 голосов
/ 01 февраля 2010

Это относится к очень старой концепции 16-битной модели памяти.32-битные и 64-битные компьютеры ничего не знают об этих моделях памяти.

Итак, возвращаясь к вашим вопросам: small - объявляет, что указатели позволяют адресовать только 64 КБ данных или кода.Указатель имеет длину 16 бит.Вся ваша программа находится в одном сегменте 64 КБ.Чтобы явно обратиться к другой части памяти, вам нужно явно объявить указатель как FAR.большой - объявляет, что указатель на код или данные имеет 32-битный код, поэтому по умолчанию это FAR.

Надеюсь, вы не будете так долго зависать от этих вопросов, поскольку это устаревшая концепция.

2 голосов
/ 01 февраля 2010

Процессор 8086 имеет 20-битную физическую адресацию с использованием комбинации 16-битного регистра сегмента и 16-битного смещения. Вы можете упаковать оба в 32-битный указатель FAR или принять регистр сегмента по умолчанию и сохранить только младшие 16 битов в указателе NEAR.

Разница между моделями small и large заключается просто в том, указатели по умолчанию NEAR или FAR, если явно не указано.

...