Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LK_MashZavYP_Akchurin_2011.pdf
Скачиваний:
190
Добавлен:
10.06.2015
Размер:
8.79 Mб
Скачать

директиву с операндом X. Ассемблер добавляет перекрестную ссылку в конец листинга программы.

Пример. Листинг перекрестных ссылок ассемблера

LABEL

VALUE

DEFN

REF

.BIG_ENDIAN

00000000

0

 

 

.LITTLE_ENDIAN

00000001

0

 

 

.TMS320C6200

00000001

0

 

 

.TMS320C6700

00000000

0

 

 

.TMS320C6X

00000001

0

 

 

_func

00000000’

18

 

 

var1

00000000–

4

17

 

var2

00000004–

5

18

 

Заголовки столбцов:

LABEL (Метка) содержит каждый символ, который был определен или упомянут во время трансляции.

VALUE (Значение) содержит шестнадцатеричное число с 8 цифрами (которое является значением, назначенным символу) или имя, которое описывает атрибуты символа. Значению может также предваряться знаком, который описывает атрибуты символа.

DEFN (Определение) содержит номер инструкции, которая определяет этот символ. Этот столбец пустой для неопределенных символов.

REF (Ссылка) перечисляет номера строк инструкций, которые обращаются к этому символу. Пробел в этом столбце указывает, что символ никогда не использовался.

9.10. Директивы ассемблера

Директивы ассемблера поставляют данные программе и управляют процессом трансляции. Директивы ассемблера дают возможность Вам делать следующее:

Транслировать код и данные в указанные разделы.

Резервировать пространство в памяти для неинициализированных переменных.

Управлять видом листинга.

Инициализировать память.

Транслировать условные блоки.

471

Определять глобальные переменные.

Определять библиотеки, из которых ассемблер может получить макрокоманды.

Исследовать информацию о символьной отладке.

Таблица дает сводку директив ассемблера. Помимо директив ассемблера, указанных здесь, программные средства ’C6x поддерживают следующие директивы:

Ассемблер использует несколько директив для макрокоманд. Макродирективы обсуждаются в главе 5, Макроязык; они не обсуждаются в этой главе.

Оптимизатор ассемблера использует несколько директив, которые поставляют данные и управляют процессом оптимизации. Директивы оптимизатора Ассемблера обсуждены в Руководстве «Оптимизирующий компилятор C TMS320C6x»; они не обсуждаются в этой книге.

Компилятор C использует директивы для символьной отладки. В отличие от других директив, директивы символьной отладки не используются в большинстве программ на языке ассемблера. Приложение B, Директивы символьной отладки, обсуждает эти директивы; они не обсуждаются в этой главе.

Внимание: Метки и комментарии не показаны в синтаксисе.

Любая исходная инструкция, которая содержит директиву, может также содержать метку и комментарий. Метки начинаются в первом столбце (они - единственные элементы, кроме комментариев, которые могут появляться в первом столбце), а комментарии должны начинаться с точки с запятой или звездочки, если комментарий - единственный элемент в строке. Чтобы улучшать разборчивость, метки и комментарии не показываются, как часть синтаксиса директив. В описании части, заключенные в квадратные скобки, могут пропускаться, ассемблер будет их задавать по умолчанию.

9.10.1. Директивы, которые определяют разделы

Мнемоника и синтаксис

Описание

bss символ,

Резервирует пространство в разделе .bss

размер в байтах

(неинициализированные данные)

[, выравнивание

 

[, сдвиг банка]]

 

.data

Транслирует в раздел .data

472

 

(инициализированные данные)

.sect ”имя раздела”

Транслирует в названный (инициализиро-

 

ванный) раздел

.text

Транслирует в раздел .text (выполняемый

 

код)

символ .usect ”имя раздела”, раз-

Резервирует пространство в названном

мер в байтах [,выравнивание]

разделе (неинициализированном)

 

 

9.10.2. Директивы, которые инициализируют константы (данные и память)

Мнемоника

и

Описание

синтаксис

 

 

.bss размер в байтах

Резервирует пространство в текущем разделе;

 

 

метка указывает на конец зарезервированного про-

 

 

странства

.byte значение1

Инициализирует один или более байт в текущем раз-

[,..., значениеN]

деле

.char значение1

Инициализирует один или более байт в текущем раз-

[,..., значениеN]

деле

.double значение1

Инициализирует 64-битнуые константы с плавающей

[,...,значениеN]

точкой, IEEE с двойной точностью

 

 

.field значение

Инициализирует поле размером в битах (1-32) со зна-

[, размер]

 

чением

.float значение1

Инициализирует 32-битные константы с плавающей

[,...,значениеN]

точкой, IEEE с однократной точностью

.half

значение1

Инициализирует 16-разрядные целые числа

[,...,значениеN]

 

.int значение1

Инициализирует 32-разрядные целые числа

[,...,значениеN]

 

.long

значение1

Инициализирует 32-разрядные дробные числа

[,...,значениеN]

 

.short

значение1

Инициализирует 16-разрядные дробные числа

[,...,значениеN]

 

.space размер

Резервирует пространство в текущем разделе;

 

 

метка указывает на начало зарезервированного про-

 

 

странства

 

 

473

.string

{выраж.1

Инициализирует одну или более текстовых строк

”строка1”}

 

 

.word

значение1

Инициализирует 32-разрядные целые числа

[,...,значениеN]

 

9.10.3. Директивы, которые выравнивают счетчик команд раздела (SPC)

Мнемоника

и

Описание

синтаксис

 

 

.align

[размер

в

Выравнивает SPC на границе, указанной размером в

байтах]

 

 

байтах, который должен быть степенью 2; по

 

 

 

умолчанию - 1 байт

9.10.4. Директивы, которые форматируют выходной листинг

Мнемоника

и

Описание

синтаксис

 

 

.drlist

 

Допускает распечатку всех строк директив (по умолча-

 

 

нию)

.drnolist

 

Подавляет распечатку определенных строк директив

.fclist

 

Позволяет распечатку ложного условного блока (по

 

 

умолчанию)

.fcnolist

 

Подавляет распечатку ложного условного блока кода

.length

 

Устанавливает длину страницы листинга программы

[длина страницы]

 

 

.list

 

Повторный запуск распечатки программы

.mlist

 

Позволяет распечатку макрокоманд и блоков циклов(по

 

 

умолчанию)

.mnolist

 

Подавляет распечатку макрокоманд и блоков циклов

.nolist

 

Останавливает распечатку программы

.option опция1

 

Выбирает опции листинга; доступны опции -

[, опция2,...]

 

A,B,D,H,L,М,N,O,R,T,W и X

.page

 

Пропускает страницу в распечатке программы

.sslist

 

Позволяет расширенный листинг символов замены

.ssnolist

(по

Подавляет расширенный листинг символов замены

умолчанию)

 

 

.tab размер

 

Устанавливает размер знаков табуляции (в символах)

474

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]