Пр о ц е с с о р TMS 3 2 0C4 x
152
Состояние таблиц ассемблирования после первого прохода показано на
рис.Г.2. Из рисунка хорошо видно, что символ (метка) с именем MP32 опреде-
лен в секции 1 (.text) и имеет значение четыре. Символ используется командой
CALL, поэтому изменение значения символа требует и соответсвующей кор-
рекции команды. По этой причине в таблице перемещений секции .text опреде-
лен элемент, связывающий символ MP32 (значение адреса) и команду CALL
(адресная ссылка). Символ MP32 используется и в секции .data, в связи с этим
ее таблица перемещений содержит аналогичный элемент.
На втором проходе ассемблирования выполняется коррекция адресных
ссылок (разрешение адресных ссылок). Целью этого прохода является приведе-
ние адресных ссылок, за исключением внешних, к адресам программных сек-
ций. Ассемблер последовательно просматривает таблицы перемещения секций.
В нашем случае таблица перемещений секции .text содержит элемент (выделен
утолщенным прямоугольником), указывающий, что в команде CALL (смеще-
ние 1 в коде секции) должно быть использовано значение символа с индексом 6
(символа MP32) из таблицы символов. Ассемблер определяет, что в команде
используется смещение относительно PC (относительная адресация), поэтому
вместо символа MP32 в команду подставляется значение символа (4), из кото-
рого вычитается смещение кода, увеличенное на 1 (1+1).
Таким образом, в команду CALL MP32 вместо символа подставляется
значение два, т.е. адресная ссылка разрешена. Дальнейшая коррекция этой ад-
ресной ссылки не требуется, поскольку в команде используется относительный
метод адресации и перемещение секции на произвольный адрес не изменит ад-
ресную часть команды, поэтому элемент удаляется из таблицы перемещений
секции .text.
В таблице перемещений секции .data имеется элемент (выделен утолщен-
ным прямоугольником), связывающий символ MP32 со словом в секции .data,
6 1
4 0
3 1
6 2
3
4
5
6
0
CALL MP32
1
2
Секция .data
0
Таблица
символов
Таблицы
перемещений
Секция .text
Секция .text
.word MP32
1
2
Секция .data
.word L200
.word L100
Код секций
Ин-
декс
Имя
символа
N
секции
Значе-
ние
0
.text
1
0
1
.data
2
0
2
.bss
3
0
3
L200
0
0
4
L100
1
1
5
DM
2
0
6
MP32
1
4
Рис.Г.2. Первый проход ассемблирования