Язык ассемблера: Размер счетчика программы - PullRequest
0 голосов
/ 09 ноября 2011

От чего зависит размер счетчика программ?

Итак, вот что я знаю:

Размер регистра адреса памяти (MAR) - это log2 (пространство памяти).

Размер ПК такой же, как адресность каждого адреса памяти, или такой же, как у MAR?

Например, если пространство памяти задано равным 16 МБ, а каждое пространство памяти имеет 16-битную адресуемость, то размер MAR будет 24-битным адресуемым для указания местоположения адреса в памяти.

Является ли размер ПК 24 бита - таким же, как у MAR - или 32 бита - адресуемость каждого пробела?

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Это полностью зависит от прихотей проектировщика оборудования.

0 голосов
/ 09 ноября 2011

Я не знаю, что такое MAR, но обычно ваш регистр program counter (AKA instruction pointer) достаточно велик, чтобы охватить всю память программы. Как правило.

Исходные процессоры i80x86 имеют указатель команд, эффективно разделенный на 2 части, селектор сегмента и смещение. Фактический адрес, который поступает на адресную шину при доступе к физической памяти, формируется с использованием этих двух частей. В так называемом режиме реальной адресации адрес просто segment selector * 16 + offset. Эти 2 компонента являются 16-разрядными, и эта схема адресации позволяет получить доступ к около 1 МБ памяти. Если вы изменили только указатель инструкций, а не сегмент, вы будете ограничены 64 КБ. Есть и другие процессоры с указателями разделенных команд. Например, TMS320C54xx компании Texas Instruments.

Возвращаясь к x86 ... На 64-битных процессорах x86 ваш указатель инструкций имеет длину 64 бита. Тем не менее, процессор может не (и я думаю, что все еще не) поддерживает полные 64-битные адреса памяти, используя только младшие 52 или около того бит Это пример, где указатель инструкции больше, чем необходимо для доступа ко всей памяти.

...