- •Архитектура эвм
- •Введение
- •Структура мпс
- •Основные понятия в архитектуре мпс
- •Архитектура фон Неймана
- •Гарвардская архитектура
- •Параллельная архитектура
- •Конвейерная архитектура
- •Суперскалярная архитектура
- •АрхитектурыCisc
- •Архитектуры risc
- •Архитектуры misc
- •Ассемблеры
- •Программа Ассемблер
- •Язык Ассемблер
- •Основы 32-битного программирования в Windows
- •Api функции
- •Сообщения Windows
- •Версии ассемблеров
- •Среды разработки
- •Представление данных в эвм
- •Системы счисления и преобразования между ними
- •Форматы представления чисел
- •Форматы представления двоичных чисел
- •Формат с плавающей точкой
- •Типы адресаций операндов
- •Интерфейсы
- •Последовательный интерфейс rs-232c
- •Интерфейс параллельного порта
- •Инфракрасный интерфейс
- •Интерфейс Bluetooth
- •Интерфейс usb
- •Интерфейс ieee 1394 - FireWire
- •Сопроцессоры
- •Система прерываний и исключений
- •Интерфейс jtag
- •Символы и строки
- •Архитектура cisc от Intel
- •Введение
- •Микроархитектура Intel
- •Микроархитектура р6
- •Микроархитектура NetBurst
- •Микроархитектура Pentium 4
- •Микроархитектура Intel Pentium Mobile
- •Микроархитектура Intel Core
- •Микроархитектура Intel Core Duo
- •Микроархитектура Intel Nehalem
- •Адресация памяти в ia_32
- •Наборырегистров
- •Целочисленныйпроцессор
- •Регистры общего назначения (рон)
- •Регистры флагов eflags
- •Регистр указателя команд
- •Сегментные регистры
- •Управляющие регистры
- •Системные адресные регистры
- •Прямой и обратный порядок следования байтов
- •Виды адресации операндов в памяти
- •Цикл выполнения команды
- •Распределение адресного простраства
- •Образ программы в памяти.
- •Математический сопроцессор
- •Xmm технология
- •Система команд
- •Формат команды
- •Классификация команд
- •Целочисленный процессор
- •Команды общего назначения
- •Команды ввода-вывода
- •Инструкции работы со стеком
- •Арифметико-логические инструкции
- •Цепочечные операции
- •Команды управления
- •Команды поддержки языков высокого уровня
- •Команды прерываний
- •Команды синхронизации процессора
- •Команды обработки цепочки бит
- •Команды управления защитой
- •Команды обмена с управляющими регистрами
- •Команды идентификации и управления архитектурой
- •Управление кэшированием
- •Команды управления кэшированием
- •Сопроцессор с плавающей точкой
- •Классификация команд
- •Команды управления сопроцессором
- •Команды передачи данных
- •Команды сравнения данных
- •Арифметические команды
- •Трансцендентные функции
- •Целочисленное mmx расширение
- •Синтаксис ммх-команд
- •Классификация команд
- •Инициализация
- •Передача данных
- •Упаковка данных
- •Распаковка данных
- •Арифметика
- •Сравнения
- •Дополнительные команды
- •XmMрасширение с плавающей точкой
- •Типы данных
- •Передача данных
- •Арифметика
- •Сравнения
- •Преобразования
- •Управление состоянием
- •Распаковка данных
- •Управление кэшированием
- •Дополнительные команды
- •Цикл трансляции, компоновки и выполнения
- •Ассемблер cisc
- •Введение
- •Средства программирования и отладки
- •Описание masm
- •Структура программы на ассемблере
- •Типы данных
- •Макросредства
- •Директивы
- •Архитектура risc
- •Система команд
- •Архитектура misc
- •Архитектура vliw
- •Архитектура вычислительных систем со сверхдлинными командами
- •Архитектура ia-64
- •Многоядерные архитектуры
- •Микроконтроллер avr от Atmel
- •Архитектура avr от Atmel
- •Ассемблер
- •Команды ассемблера
- •Директивы ассемблера
- •Выражения
- •Микроконтроллеры c28x
- •Архитектура c28x
- •Архитектура f28x
- •Инструментальные средства разработки по
- •Ассемблер
- •Команды ассемблера
- •Формат объектного файла
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Архиватор
- •Абсолютный листер
- •Листер перекрестных ссылок
- •Утилита 16-ричного преобразования
- •Архитектура VelociTi
- •Структура и состав цсп с6x
- •Средства разработки цсп с6x
- •Ассемблер цсп с6x
- •Команды ассемблера
- •Выражения
- •Листинги
- •Листинги программ
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Утилиты
- •Поддержка в matlab
- •Введение
- •Встроенные платы для цсп ‘c6x
Команды поддержки языков высокого уровня
Команда
Описание
ENTER Размер,Вложенность
Подготовка стека для локальных параметров процедуры. Алгоритм:
(EBP) => стек.
(ESP) => промежуточная переменная fp.
Если Вложенность не 0, то коррекция EBP по режиму адресации и (EBP) => стек.
(fp) => EBP.
(fp) => стек.
ESP = (ESP) - Размер
LEAVE
LEAVE from procedure – выход изпроцедкры.
Выполгяет действия, обратные комаде ENTER, приводя стек в исходное состояние:
(EBP) => ESP – восстановление состояния стека до процедуры.
EBP восстанавливается из стека.
BOUND
РегистрИндекса, ГраницыМассива
BOUND check array BOUNDs – контроль нахождения индекса в гоаницах массива.
РегистрИндекса содержит текущий индекс массива, а второй операнда определяет в памяти 2 слова или 2 двойных слова. Первое считается минимальным значением индекса, а второе - максимальным. Если текущий индекс оказывается вне границ, то генерируется команда INT 5. Используется для контроля нахождения индекса в заданных рамках, что является важным средством отладки.
Команды прерываний
Команда
Описание
INT НомерПрерывания
INTerrupt – прерывание.
Вызов прерывания с заданным номером. Алгоритм:
В стек содержимое регистра флагов.
В стек полный адрес возврата.
Сбрасывается флаг TF.
Косвенный переход через элемент дескрипторной таблицы прерываний по НомерПрерывания.
INTO
INTerrupt if Overflow – прерывание, если переполнение.
Вызов прерывания с заданным номером. Алгоритм:
Если флаг переполнения OF = 0, ничего не делается.
Если флаг переполнения OF = 1, то вызов команды INT.
IRET
Interrupt RETurn – возврат из прерывания. Алгоритм:
Если флаг NT = 0, то возврат в прерванную программу.
Если флаг NT = 1, то переключение задач.
Команда извлекает из стека сохраненные в нем адрес возврата и регистр флажков. Бит уровня привилегий будет модифицироваться только в том случае, если текущий уровень привилегий равен 0.
Команды синхронизации процессора
Команда
Описание
HLT
HaLT – останов.
Останавливает процессор. Из него процессор может быть выведен внешним прерыванием или перезагрузкоц.
LOCK
LOCK signal prefix – блокировка.
Представляет собой префикс блокировки шины. Он заставляет процессор сформировать сигнал LOCK# на время выполнения находящейся за префиксом команды. Этот сигнал блокирует запросы шины другими процессорами в мультипроцессорной системе.
NOP
No Operanion – нетоперации.
Холостая команда. Не производит никаких действий.
WAIT
WAIT – ожидание.
Синхронизация с сопроцессором, останавливает основной процессор до завершение операции в сопроцессоре.. Большинство команд сопроцессора автоматически вырабатывают команду.FWAIT, выполняющую то же самое.
Команды обработки цепочки бит
Команда
Описание
BSFприемник, источник
BitScanForward– побитовое сканирование вперед.
Проверка наличия битов 1 в источнике
Номер первого бита, находящегося в состоянии 1, помещается в приемник, флажок ZF сбрасывается в 0. Если источниксодержит 0, то флаг ZF=1, а содержимое приемника не определено.
BSR приемник, источник
BitScanRevers– побитовое сканирование назад.
Аналогична BSF. Разница в направлении просмотра..
BTисточник, индекс
BitTest – проверка битов.
Извлечение бита (с номером индекс) из источника, помещение в флаг CF..
BTCисточник, индекс
Bit Test and Complement – проверка битов и инверсия.
Извлечение бита (с номером индекс) из источника, помещение в флаг CF, инверсия.
BTRисточник, индекс
BitTestandReset– проверка битов и сброс в 0.
Извлечение бита (с номером индекс) из источника, помещение в флаг CF, сброс в 0.
BTSисточник, индекс
BitTestandSet– проверка битов и установка в 1.
Извлечение бита (с номером индекс) из источника, помещение в флаг CF, установка в 1.
Команды управления защитой
Команда
Описание
LGDT источник_48
Load Global Descriptor Table
Загрузка 48-битного регистра глобальной дескрипторной таблицы GDTR из памяти. Источник_48 указывает на 6-байтную величину. Это 16 бит размера и 32 бита базового адреса начала таблицы GDT.
SGDT приемник_48
Store Global Descriptor Table
Сохранить регистр GDTR в памяти.
LIDT источник_16
Load Interrupt Descriptor Table
Загрузка 16-битного регистра дескрипторной таблицы прерываний IDTR из памяти.
SIDT приемник_16
SIDT
Сохранить регистр IDTR в памяти.
LLDT источник_16
Load Local Descriptor Table
Загрузка 16-битного регистра локальной дескрипторной таблицы LLDR значением селектора глобальной дескрипторной таблицы GDT из памяти (16 бит).
SLDT приемник_16
Store Local Descriptor Table
Сохранить регистр LDTR в регистре или памяти (16 бит).
LMSW источник_16
LoadMachineStatusWord
Загрузка слова состояния машины MSW (младшие 16 бит регистра CRO) значением 16-битного слова памяти или регистра.
SMSW приемник_16
StoreMachineStatusWord
Сохранить MSW в регистре или памяти (16 бит).
LTRисточник_16
LoadTestRegister
Загрузка регистра задачи TR селектором сегмента Tss задачи из регистра или памяти (16 бит).
STR приемник_16
StoreTestRegister
Сохранить регистр задачи TR в регистре или памяти (16 бит).
LAR приемник, источник
LoadAccessRightsbyte
Загрузка в приемник байта прав доступа, дескриптор которого задан в источнике.
LSL приемник, источник
LosdSegmentLimit
Загрузка в приемник лимита сегмента, дескриптор которого задан в источнике.
ARPL приемник, источник
Adjust RPL field of selector – настройка поля RPL селектора. Алгоритм:
ЕслиRPL_прием> RPL_источ,тофлагZF=0.
ЕслиRPL_прием< RPL_источ,тофлагZF=1, RPL_прием= RPL_источ.
VERR сегмент
VERify for Reading – проверка сегмента на чтение. Алгоритм:
Проверка определения сегмента в таблицах CDT или LDT.
Проверка, указывет ли дескриптор сегмента на сегмент кода или данных.
Проверка, является ли сегмент записываемым.
Проверка уровня привилегий..
Если проверки положительны, то флаг ZF=1, иначе ZF=0.
VERW сегмент
VERify for Writing – проверка сегмента на чтение. Алгоритм:
Проверка определения сегмента в таблицах CDT или LDT.
Проверка, указывет ли дескриптор сегмента на сегмент кода или данных.
Проверка, является ли сегмент считываемым.
Если проверки положительны, то флаг ZF=1, иначе ZF=0.
Команды обмена с управляющими регистрами
Команда
Описание
MOV CRn,источник
MOV operand to system register
Загрузка управляющего регистра CRn.
MOV приемник,CRn
MOV operand from system register
Чтение управляющего регистра CRn.
MOV DRn, источник
MOV operand to system register
Загрузка регистра отладки DRn.
MOV приемник,DRn
MOV operand from system register
Чтение регистра отладки DRn.
MOV TRn, источник
MOV operand to system register
Загрузка регистра тестирования TRn.
MOV приемник,TRn
MOV operand from system register
Чтение регистра тестирования TRn.
RDTSC
ReaD from Time Stamp Counter
Чтение счетчика тактов.
Команды идентификации и управления архитектурой
Команда
Описание
CPUID
CPU IDentification
Получение информации о текущем процессоре. Требует параметр в регистре EAX.
Если EAX=0, то процессор в регистрах EBX,EDX,ECX возвращает символьную строку, специфичную для производителя. Процессоры AMD возвращают строку "AuthenticAMD", процессоры Intel - "Genuinelntel".
Если EAX=1, то в младшем слове регистра EAX возвращает код идентификации.
Если EAX=2, то в регистрах EAX, EBX, ECX, EDX возвращаются параметры конфигурации процессора.
RDMSR
ReaD from Model Specific Register
Чтение из 64 разрядного модельно-специфического регистра MSR. Номер MSR должен находиться в регистре ECX. Алгоритм:
Проверить на нулевой привилегий.
Проверка правильности номера в регистре ECX.
Если все правильно, то поместить значение адресуемого MSR в регистровую пару EDX:EAX.
WRMSR
Write to Model Specific Register
Запись в 64 разрядный модельно-специфического регистра MSR. Номер MSR должен находиться в регистре ECX. Алгоритм:
Проверить на нулевой привилегий.
Проверка правильности номера в регистре ECX.
Если все правильно, то поместить в адресуемый MSR значние из регистровой пары EDX:EAX.
Управление кэшированием
Необходимость управления кэшированием вызвана тем, что большинство мультимедийных приложений оперируют большими объемами данных, при этом может случиться, что данные, загруженные в кэш, никогда не понадобятся. Чтобы оптимизировать работу кэша, в систему команд SSE-расширения и были включены команды управления кэшем.
Мнемоника |
Описание |
MOVNTI |
MOVe using Non-Temporal of Int32 Сохранение двойного слова из 32-разрядного регистра общего назначения в памяти без использования кэша. |