Пр о ц е с с о р TMS 3 2 0C4 x
153
имеющим смещение 2. В данном случае требуется полный 32-разрядный адрес,
поэтому в код секции .data записывается значение символа MP32 (4), а индекс
символа в элементе таблицы перемещений устанавливается равным индексу
символа .text. Такая ссылка требует коррекции при перемещении, она помеча-
ется в листинге программы специальным флагом, и элемент таблицы переме-
щений не удаляется. После этого на символ MP32 нет больше ссылок из таблиц
перемещений, и он не объявлен глобальным, поэтому символ удаляется из таб-
лицы. Аналогично обрабатываются символы L100 и DM, но они объявлены
глобальными и из таблицы символов не удаляются. Символ L200 объявлен
внешним, поэтому адресная ссылка на него не может быть разрешена ассемб-
лером. Символ помечается в листинге специальным флагом.
Таким образом, после второго прохода ассемблера в объектном файле
приведенного примера имеется:
•
разрешенная ссылка, не требующая коррекции при перемещении;
•
две разрешенных, но требующих при перемещении коррекции;
•
одна неразрешенная внешняя ссылка.
Окончательное содержимое объектного файла примера показано на
рис.Г.3, пример листинга приведен далее. В комментариях листинга отмечены
все встретившиеся ассемблеру адресные ссылки.
Ин-
декс
Имя
символа
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
0 0
3 1
0 2
CALL MP32
0
1 2
2
3
4
5
6
Таблица символов
Таблицы
перемещений
Секция .text
Секция .data
Секция .text
0
1’
.word MP32
1
0!
2
4’
Секция .data
.word L200
.word L100
Код секций
Рис.Г.3. Второй проход ассемблирования