 
        
        - •Архитектура эвм
- •Введение
- •Структура мпс
- •Основные понятия в архитектуре мпс
- •Архитектура фон Неймана
- •Гарвардская архитектура
- •Параллельная архитектура
- •Конвейерная архитектура
- •Суперскалярная архитектура
- •Архитектуры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-разрядного регистра общего назначения в памяти без использования кэша. | 
