Какие адресные пространства памяти существуют?

Какие формы адресного пространства памяти были использованы?

Сегодня широко распространено большое плоское виртуальное адресное пространство. Исторически использовались более сложные адресные пространства, такие как пара базового адреса и смещения, пара номера сегмента и смещения, адрес слова плюс некоторый индекс для байта или другого подобъекта и т. Д. ,

Время от времени в различных ответах и комментариях утверждается, что указатели C / C ++ являются по существу целыми числами. Это неверная модель для C / C ++, поскольку разнообразие адресных пространств, несомненно, является причиной некоторых правил C, касающихся операций с указателями. Например, отсутствие определения арифметики указателей за пределами массива упрощает поддержку указателей в базовой модели и модели смещения. Ограничения на преобразование указателя упрощают поддержку моделей «адрес плюс дополнительные данные».

Это повторяющееся утверждение мотивирует этот вопрос. Я ищу информацию о разнообразии адресных пространств, чтобы проиллюстрировать, что указатель C / C ++ не обязательно является простым целым числом и что ограничения C / C ++ на операции с указателями разумны, учитывая широкое разнообразие поддерживаемых машин.

Полезная информация может включать в себя:

Примеры компьютерных архитектур с различными адресными пространствами и описания этих пространств.Примеры различных адресных пространств, все еще используемых в машинах, которые в настоящее время производятся.Ссылки на документацию или пояснения, особенно URL.Разработка того, как адресные пространства мотивируют правила указателя C / C ++.

Это широкий вопрос, поэтому я открыт для предложений по управлению им. Я был бы рад видеть совместное редактирование одного и того же всеобъемлющего ответа. Тем не менее, это может не дать репутацию заслуженным. Я предлагаю внести несколько полезных вкладов.

Ответы на вопрос(2)

Ваш ответ на вопрос