- •Введение
- •1. Архитектура ЭВМ
- •1.1. Структура МПС
- •1.2. Основные понятия в архитектуре МПС
- •1.3. Архитектура фон Неймана
- •1.4. Гарвардская архитектура
- •1.5. Параллельная архитектура
- •1.6. Конвейерная архитектура
- •1.7. Суперскалярная архитектура
- •1.8. Архитектура VLIW
- •1.9. Архитектуры CISC, RISC
- •1.10.2. Язык Ассемблер
- •1.10.4. API функции
- •1.11. Сообщения Windows
- •1.12. Версии ассемблеров
- •1.12.1. Microsoft Macro Assembler (MASM)
- •1.12.2. Flat assembler (FASM)
- •1.12.3. NASM (Netwide Assembler)
- •1.12.4. Turbo Assembler (TASM)
- •1.12.5. GoAsm
- •1.13. Среды разработки
- •1.13.1. RadASM
- •1.13.2. WinAsm Studio
- •1.13.3. Easy Code
- •2. Представление данных в ЭВМ
- •2.1. Системы счисления и преобразования между ними
- •2.2. Форматы представления чисел
- •2.2.1. Форматы представления двоичных чисел
- •2.2.2. Формат с плавающей точкой
- •2.3. Типы адресаций операндов
- •2.4. Интерфейсы
- •2.4.1. Последовательный интерфейс RS-232C
- •2.4.2. Интерфейс параллельного порта
- •2.4.3. Инфракрасный интерфейс
- •2.4.4. Интерфейс Bluetooth
- •2.4.5. Интерфейс USB
- •2.4.6. Интерфейс IEEE 1394 - FireWire
- •2.4.7. Сопроцессоры
- •2.4.8. Система прерываний и исключений
- •2.4.9. Интерфейс JTAG
- •3. Архитектура CISC от Intel
- •3.1. Введение
- •3.2. Микроархитектура Intel
- •3.2.1. Микроархитектура Р6
- •3.2.2. Микроархитектура NetBurst
- •3.2.3. Микроархитектура Pentium 4
- •3.2.4. Микроархитектура Intel Core
- •3.2.5. Микроархитектура Intel Core Duo
- •3.2.6. Микроархитектура Intel Nehalem
- •3.2.7. Микроархитектура Intel Sandy Bridge
- •3.2.8. Архитектура Haswell
- •3.2.9. Микроархитектура Intel Itanium
- •3.2.10. Микроархитектура Intel IA-64
- •3.3. Программная модель IA-32
- •3.3.1. Адресация памяти в IA_32
- •3.3.2. Наборы регистров
- •3.4. Целочисленный процессор
- •3.4.1. Регистры общего назначения (РОН)
- •3.4.2. Регистры флагов EFLAGS
- •3.4.3. Регистр указателя команд
- •3.4.4. Сегментные регистры
- •3.4.5. Управляющие регистры
- •3.4.6. Системные адресные регистры
- •3.4.7. Прямой и обратный порядок следования байтов
- •3.4.8. Виды адресации операндов в памяти
- •3.4.9. Цикл выполнения команды
- •3.4.10. Распределение адресного простраства
- •3.4.11. Образ программы в памяти.
- •3.4.12. Стек
- •3.5. Математический сопроцессор
- •3.6. MMX-технология
- •3.7. XMM технология
- •3.8.2. Классификация команд
- •3.8.3. Целочисленный процессор
- •3.8.4. Сопроцессор с плавающей точкой
- •3.8.5. Целочисленное MMX расширение
- •3.8.6. XMM расширение с плавающей точкой
- •3.9. Цикл трансляции, компоновки и выполнения
- •3.10. Ассемблер CISC
- •3.10.1. Введение
- •3.10.2. Средства программирования и отладки
- •3.11. Описание MASM
- •3.12. Структура программы на ассемблере
- •3.13. Типы данных
- •3.14. Макросредства
- •3.15. Директивы
- •4. Архитектура RISC
- •5. Архитектура VLIW
- •5.1. Архитектура вычислительных систем со сверхдлинными командами
- •5.2. Архитектура IA-64
- •5.3. Itanium
- •6. Многоядерные архитектуры
- •7.1.1. Основные параметры
- •7.1.2. Семейства
- •7.1.3. Описание выводов
- •7.1.4. Обзор архитектуры
- •7.1.5. Структура памяти
- •7.1.6. Режимы адресации
- •7.2. Ассемблер
- •7.2.1. Команды ассемблера
- •7.2.2. Директивы ассемблера
- •7.2.3. Выражения
- •7.3. ИСР AVR Studio
- •8.2. Архитектура F28x
- •8.3. Инструментальные средства разработки ПО
- •8.4. Ассемблер
- •8.5. Команды ассемблера
- •8.5.1. Операции с регистрами XAR0-XAR7
- •8.5.2. Операции загрузки регистра DP
- •8.5.3. Операции с регистром SP
- •8.5.4. Операции с регистрами AX (AH, AL)
- •8.5.5. Операции с регистрами ACC
- •8.5.6. Операции с регистрами P или XT
- •8.5.7. Операции прямого доступа к памяти
- •8.5.8. Операции ввода вывода
- •8.5.9. Операции с памятью программ
- •8.5.10. Операции ветвления, вызова, возврата
- •8.5.11. Математические
- •8.5.12. Ветвления
- •8.5.13. Основные инструкции для работы с регистрами
- •8.5.14. Основные команды для работы с вещественными числами
- •8.6. Листинги программ
- •8.7. Формат объектного файла
- •8.8. Директивы ассемблера
- •8.8.1. Разделы
- •8.8.2. Константы
- •8.8.3. Выравнивания
- •8.8.4. Листинг
- •8.8.5. Файлы
- •8.8.6. Условная трансляция
- •8.8.7. Структуры
- •8.8.8. Символы во время трансляции
- •8.8.9. Разные директивы
- •8.9. Макроязык и макрокоманды
- •8.10. Компоновщик
- •8.11. Архиватор
- •8.12. Абсолютный листер
- •8.13. Листер перекрестных ссылок
- •8.14. Утилита 16-ричного преобразования
- •8.15. Согласование заголовочных C/C++ файлов с ассемблером
- •8.16. ИСР Code Composer Studio (CCS)
- •9.1. Архитектура VelociTI
- •9.2. Структура и состав ЦСП С6x
- •9.3. Средства разработки ЦСП С6x
- •9.4. Ассемблер ЦСП С6x
- •9.5. Команды ассемблера
- •9.5.1. Основные команды для работы с целыми числами
- •9.5.2. Основные команды для работы с вещественными числами
- •9.6. Константы
- •9.7.2. Условные выражения
- •9.7.3. Законные выражения
- •9.8. Листинги
- •9.9. Листинги программ
- •9.9.1. Листинг перекрестных ссылок
- •9.10. Директивы ассемблера
- •9.10.1. Директивы, которые определяют разделы
- •9.10.2. Директивы, которые инициализируют константы (данные и память)
- •9.10.3. Директивы, которые выравнивают счетчик команд раздела (SPC)
- •9.10.4. Директивы, которые форматируют выходной листинг
- •9.10.5. Директивы, которые ссылаются на другие файлы
- •9.10.6. Директивы, которые допускают условную трансляцию
- •9.10.7. Директивы, которые определяют символы во время трансляции
- •9.11. Макроязык и макрокоманды
- •9.12. Компоновщик
- •9.13. Утилиты
- •9.13.1. Архиватор
- •9.13.2. Утилита 16-ричного преобразования
- •10.2. Встроенные платы для ЦСП ‘C6x
Названные разделы - разделы, которые Вы создаете. Вы можете использовать их подобно заданным по умолчанию .text, .data, и .bss разделам, но они транслируются отдельно. Например, повторное использование .text директивы создает единый .text раздел в объектном файле. Во время компоновки этот .text раздел распределяется в памяти как одиночный модуль. Предположим, что имеется часть выполняемого кода (возможно подпрограмма инициализации), которую Вы не хотите размещать вместе с .text. Если Вы размещаете этот сегмент кода в названном разделе, он транслируется отдельно от .text, и Вы можете распределять его в памяти отдельно. Вы можете также транслировать инициализированные данные, который отличны от .data раздела, и Вы можете резервировать пространство для неинициализированных переменных, которые отличны от .bss раздела.
8.8. Директивы ассемблера
Директивы ассемблера поставляют данные программе и управляют процессом трансляции. Директивы ассемблера дают возможность Вам делать следующее:
Транслировать код и данные в указанные разделы.
Резервировать пространство в памяти для неинициализированных переменных.
Управлять видом листинга.
Инициализировать память.
Транслировать условные блоки.
Определять глобальные переменные.
Определять библиотеки, из которых ассемблер может получить макрокоманды.
Исследовать информацию о символьной отладке.
Внимание: Метки и комментарии не показаны в синтаксисе.
Любая исходная инструкция, которая содержит директиву, может также содержать метку и комментарий. Метки начинаются в первом столбце (они - единственные элементы, кроме комментариев, которые могут появляться в первом столбце), а комментарии должны начинаться с точки с запятой или звездочки, если комментарий - единственный элемент в строке. Чтобы улучшать разборчивость, метки и комментарии не показываются, как часть синтаксиса директив. В описании части, заключенные в квадратные скобки, могут пропускаться, ассемблер будет их задавать по умолчанию.
425
8.8.1. Разделы
Мнемоника и синтаксис |
|
|
Описание |
|
.bss символ, размер в словах [, |
|
Резервирует пространство в разделе .bss |
||
флаг блокировки |
|
|
(неинициализированные данные) |
|
[, флаг выравнивания [, тип]] |
|
|
|
|
.data |
|
|
|
Транслирует в раздел .data (инициализиро- |
|
|
|
|
ванные данные). |
|
|
|
|
|
.sect ”имя раздела” |
|
|
Транслирует в названный (инициализиро- |
|
|
|
|
|
ванный) раздел |
.text |
|
|
|
Транслирует в раздел .text (выполняемый |
|
|
|
|
код) |
символ .usect ”имя раздела”, |
|
Резервирует пространство в названном раз- |
||
размер в словах |
|
|
деле (неинициализированном) |
|
[, флаг блокировки[, флаг |
|
|
||
выравнивания] |
|
|
|
|
8.8.2. Константы |
|
|
|
|
|
|
|||
Мнемоника и синтаксис |
Описание |
|||
.byte |
значение1[,..., |
Заносит в 16-разрядные слова байты из списка. |
||
значениеN] |
|
В слово 1 байт в младшую часть. |
||
.char |
значение1[,..., |
Заносит в 16-разрядные слова символы из спи- |
||
значениеN] |
|
ска. |
|
|
|
|
В слово 1 символ в младшую часть. |
||
.string |
{выражение |
Текстовые строки. |
||
”строка”} |
|
Заносятся символы строки в младшие байты по- |
||
|
|
следовательных слов. |
||
|
|
То же самое делает .char со списком символов. |
||
.pstring {выраж.1 ”строка1”} |
Аналог .string. |
|||
[,…,{выраж.N ”строкаN”}] |
Заносятся символы строки в оба байта последо- |
|||
|
|
вательных слов. |
||
.field значение[, размер] |
Инициализирует подполя в константе размером |
|||
|
|
16 бит. |
||
|
|
Для каждого подполя задаются значение и раз- |
||
|
|
мер. |
|
|
|
|
При |
последовательном применении константа |
|
|
|
заполняется справа налево. |
426
|
|
|
|
|
Применяется для упаковки нескольких значений в |
|
|
|
|
|
одном месте. |
.int |
|
|
|
|
Заносит в 16-разрядные слова 16-разрядные це- |
значение1[,...,значениеN] |
|
лые числа из списка. |
|||
|
|
|
|
|
Есть выравнивание по границам слов. |
.longзначение1 |
|
|
|
Заносит в 16-разрядные слова 32-разрядные це- |
|
[,...,значениеN] |
|
|
|
лые числа из списка. |
|
|
|
|
|
|
На одно значение 2 слова. Есть выравнивание по |
|
|
|
|
|
границам слов. |
.xlongзначение1 |
|
|
|
То же, что .long. |
|
[,...,значениеN] |
|
|
|
Нет выравнивания по границам слов. |
|
.word |
|
значение1 |
|
Заносит в 16-разрядные слова 16-разрядные чис- |
|
[,...,значениеN] |
|
|
|
ла из списка. |
|
|
|
|
|
|
Есть выравнивание по границам слов. |
.float |
|
|
|
|
Заносит в 16-разрядные слова 32-битные кон- |
значение1[,...,значениеN] |
|
станты с ПТ, IEEE с однократной точностью из |
|||
|
|
|
|
|
списка. |
|
|
|
|
|
На одно значение 2 слова. Есть выравнивание по |
|
|
|
|
|
границам слов. |
.xfloat |
|
значение1 |
|
То же, что .flooat. |
|
[,...,значениеN] |
|
|
|
Нет выравнивания по границам слов. |
|
8.8.3. Выравнивания |
|||||
|
|
|
|||
Мнемоника |
и |
Описание |
|||
синтаксис |
|
|
|
|
|
.align |
[размер |
в |
Выравнивает SPC на границе, указанной размером в |
||
словах] |
|
|
байтах, который должен быть степенью 2; по |
||
|
|
|
умолчанию – до границы |
||
.bes [размер в битах] |
Резервирует биты в текущем разделе. Метка указыва- |
||||
|
|
|
ет на конец резервируемого пространства |
||
.space |
[размер в |
Резервирует биты в текущем разделе. Метка указыва- |
|||
битах] |
|
|
ет на начало резервируемого пространства |
||
8.8.4. Листинг |
|
|
|
||
|
|
|
|||
Мнемоника |
и |
Описание |
|||
синтаксис |
|
|
|
|
|
.drlist |
|
|
Допускает распечатку всех строк директив (по умолча- |
||
|
|
|
нию). |
|
|
|
|
|
|
|
427 |
.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 размер |
Устанавливает размер знаков табуляции (в символах) |
|
.title “строка” |
Печатает заголовок в начале страницы листинга |
|
.width |
[ширина |
Устанавливает ширину страницы распечатки програм- |
страницы] |
мы |
8.8.5. Файлы
Мнемоника |
и |
Описание |
синтаксис |
|
|
.copy [“]имя файла[“] |
Включает исходные инструкции из другого файла |
|
.def |
символ1 |
Идентифицирует один или более символов, которые |
[,...,символN] |
|
определены в текущем модуле и могут использовать- |
|
|
ся в других модулях |
.global |
символ1 |
Идентифицирует один или более глобальных симво- |
[,...,символN] |
|
лов |
.include [“]имя файла[“] |
Включает исходные инструкции из другого файла |
|
.mlib [“]имя файла[“] |
Определяет библиотеку макрокоманд |
|
.ref |
символ1 |
Идентифицирует один или более символов, исполь- |
[,...,символN] |
|
зуемых в текущем модуле, которые определены в |
|
|
другом модуле |
428