Galería de mapas mentales Глава 4. Система команд.
Это интеллектуальная карта системы инструкций главы 4, включая систему инструкций, режим адресации инструкций, представление кода программы на машинном уровне и т. д.
Editado a las 2024-01-16 15:52:47,Глава 4. Система команд.
система команд
система команд
Система инструкций — это основная часть архитектуры набора команд (ISA), полностью определяющая интерфейс между программным и аппаратным обеспечением.
Основной формат инструкций
инструкция с нулевым адресом
одна адресная команда
Две адресные инструкции
Три адресные инструкции
Четыре адресные инструкции
Формат инструкции кода операции фиксированной длины
Коды операций фиксированной длины очень полезны для упрощения конструкции компьютерного оборудования и улучшения скорости декодирования и распознавания инструкций.
Расширенный формат инструкции кода операции
Тип операции инструкции
передача данных
Перенос между регистрами (MOV)
Блок памяти считывает данные в регистр ЦП (ЗАГРУЗКА).
Регистр ЦП записывает данные в блок памяти (STORE)
Арифметические и логические операции
Сложение (ADD), вычитание (SUB), сравнение (CMP), умножение (MUL), деление (DIV), прибавление 1 (INC), вычитание 1 (DEC), И (И) или (ИЛИ), отрицание (НЕ ), исключающее ИЛИ (XOR)
сменная работа
Арифметический сдвиг, логический сдвиг, круговой сдвиг
инструкции по управлению программой
Инструкции по управлению контуром
ПЕТЛЯ L1. Каждый раз при выполнении этой инструкции количество циклов в счетчике циклов ECX уменьшается на 1, а затем оценивается, равно ли значение ECX 0. Если оно не равно 0, программа переходит к L1 для продолжения выполнения; в противном случае программа переходит к L1, чтобы продолжить выполнение; цикл завершится, и будет выполнена следующая инструкция инструкции LOOP.
инструкция по переводу
безусловная передача
условный перевод
Используйте JZ и JNZ для обозначения ветвления, когда = и ≠, и используйте JGE/JAE, JG/JA, JLE/JBE и JL/JB для представления ветвления, когда ≥, >, ≤ и < знаковых/беззнаковых чисел соответственно.
Инструкции по вызову и возврату подпрограммы
инструкции вызова подпрограммы
Адрес следующей инструкции инструкции ротора в основной программе называется точкой останова, а точка останова — это адрес возврата, когда подпрограмма возвращается в основную программу.
инструкция вызова в x86, инструкция jal в MIPS
Команда возврата
инструкция ret в x86, инструкция jr $ra в MIPS.
Разница между инструкциями по вызову и инструкциями по переводу
Инструкции передачи передаются внутри одной программы, а инструкции ротора передаются между разными программами.
Инструкции передачи не требуется возвращаться в исходное положение, а команде ротора не требуется возвращаться в исходное положение.
Инструкции ротора и инструкции возврата обычно являются безусловными, тогда как инструкции условной передачи требуют условий.
Операции ввода и вывода
Когда внешнее устройство и основная память используют единый режим адресации, нет необходимости настраивать специальные инструкции ввода-вывода, а инструкции доступа к памяти можно использовать для прямого доступа к внешнему устройству.
инструкции по работе со стеком
Инструкции по обработке строк
Режим адресации инструкций
Адресация инструкций и адресация данных
Адресация инструкций (поиск адреса следующей выполняемой инструкции называется адресацией инструкций)
последовательная адресация
Адрес следующей инструкции формируется путем прибавления единицы к PC, то есть EA=(PC) «1» адреса следующей инструкции. Среди них «1» — это количество единиц памяти, занимаемых текущей инструкцией.
пропустить адресацию
Абсолютный адрес (полученный непосредственно из маркера)
Относительный адрес (смещение относительно текущего адреса инструкции)
Адресация данных (поиск адреса данных этой инструкции называется адресацией данных)
Общие методы адресации данных
неявная адресация
Немедленная (числовая) адресация
ДВИЖЕНИЕ EAX, 2008H
Прямая адресация
ДВИЖЕНИЕ EAX,[2008H]
Косвенная адресация
MOV EAX,@2008H — флаг косвенной адресации;
Зарегистрировать адресацию
ДВИЖЕНИЕ EAX,ECX
зарегистрировать косвенную адресацию
МОВ АЛ,[EBX]
относительная адресация
ЕА=ПК 1 Д
базовая адресация
Используйте специальные регистры. Регистр базового адреса использует метод неявной адресации и не требует явного указания в инструкции. Поле формального адреса в инструкции дает значение смещения, используемое при базовой адресации. Использование регистров общего назначения: необходимо добавить поле номера регистра, чтобы указать номер используемого регистра базового адреса.
индексированная адресация
MOV EAX,32[ESI] #Добавьте смещение 32 к значению индексного регистра ESI, чтобы сформировать адрес для доступа к основной памяти, и отправьте результат в EAX.
адресация стека
стек памяти
стек регистров
представление кода программы на машинном уровне
Формат инструкции по сборке
Сравнение команд формата AT&T и команд формата Intel
Общие инструкции (формат Intel)
Метки, используемые для операндов, представляют регистры, память и константы соответственно.
<reg>: представляет любой регистр. Если после него идет число, укажите его количество цифр.
<mem>: представляет адрес памяти.
<con>: представляет 8-битную, 16-битную или 32-битную константу.
инструкции по передаче данных
инструкция перемещения
push-инструкция
поп-команда
Инструкции по арифметическим и логическим операциям
команда jmp
Обратите внимание на различие между jmp (безусловный переход) и jcondition (инструкции условного перехода).
инструкция jcondition
команда cmp/test
Инструкции cmp и test обычно используются вместе с инструкцией jcondition.
инструкция вызова/возврата
Инструкции по общим арифметическим операциям
Общие инструкции логических операций
Представление вызовов процедур на машинном уровне
Предположим, что процесс P (вызывающий) вызывает процесс Q (вызываемый). Шаги выполнения вызова процедуры следующие.
1) P помещает входные параметры (фактические параметры) туда, где Q может получить к ним доступ.
2) P сохраняет обратный адрес в определенном месте, а затем передает управление Q. Инструкция ВЫЗОВ
3) Q сохраняет местоположение P (содержимое общего регистра) и выделяет место для своих собственных нестатических локальных переменных.
4) Выполнить процесс Q.
5) Q восстанавливает сцену P, помещает возвращенный результат туда, к чему P может получить доступ, и освобождает пространство, занимаемое локальными переменными.
6) О вынимает обратный адрес и передает управление П. Инструкция РЕТ
Инструкция вызова функции: вызов <имя функции>
①Поместите старое значение IP в стек (сохраните его в верхней части кадра стека функции) ② Установить новое значение IP и безоговорочно перейти к первой инструкции вызываемой функции.
Инструкция возврата функции: ret
Найдите старое значение IP (т. е. адрес возврата) в верхней части кадра стека функции, извлеките его из стека и восстановите регистр IP.
Отметить диапазон кадров стека: EBP, регистр ESP
ebp: указывает на «низ» текущего кадра стека.
esp: указывает на «верх» текущего кадра стека
Доступ к данным внутри кадра стека основан на ebp и esp.
Как получить доступ к фрейму стека?
Как переключать кадры стека при вызове функции?
«Рутинная обработка» в начале каждой функции
push ebp #Сохраняем базовый адрес стекового фрейма функции предыдущего уровня (старое значение ebp)
mov ebp,esp #Устанавливаем базовый адрес стекового фрейма текущей функции (новое значение ebp)
Как переключать кадры стека при возврате функции?
«Рутинная обработка» перед каждой функцией ret
Примечание. Нижняя часть каждого кадра стека используется для сохранения базового адреса предыдущего кадра стека.
mov esp, ebp #Пусть esp укажет на нижнюю часть текущего кадра стека
pop ebp #Извлекаем элемент, на который указывает esp, из стека и записываем его в регистр ebp
Какой контент может содержаться в кадре стека
Представление операторов выбора на машинном уровне
инструкция безусловного перевода
jmp<адрес> #ПК безоговорочно передан на <адрес> jmp 128 #<адрес> можно указать как константу jmp eax #<адрес> может быть получен из регистра jmp[999] #<адрес> может поступать из основной памяти jmp NEXT #<адрес> можно закрепить с помощью «метки»
Основной принцип инструкции cmp
По сути, он выполняет операцию вычитания a-b и генерирует биты флагов OF, ZF, CF, SF.
je<адрес> #Если a==b, перейти, ZF==1?
jne<адрес> #Если a!=b, прыгать, ZF==0?
jg<адрес> #Если a>b, перейти, 2F==0 && SF==OF?
jge<адрес> #Если a>=b, перейти, SF==OF?
jl<адрес> #Если a<b, перейти, SF!=OF?
jle<адрес> #Если a<=b, перейти, SF!=OF||ZF==1?
Представление операторов цикла на машинном уровне
Реализация циклов с использованием инструкций условного переноса
Используйте инструкцию цикла для реализации цикла
Основные понятия CISC и RISC
Компьютер со сложной системой инструкций (CISC)
Главная особенность
Система команд сложна и огромна.
Длина инструкции не фиксирована, существует множество форматов инструкций и множество режимов адресации.
Нет ограничений на инструкции, доступ к которым возможен из памяти.
Частота использования различных инструкций сильно различается.
Время выполнения различных инструкций сильно различается, и для выполнения большинства инструкций требуется несколько тактов.
Большинство контроллеров используют микропрограммное управление.
Трудно создавать эффективные программы с объектным кодом с оптимизированной компиляцией.
Большинство из них могут обеспечить совместимость программного обеспечения, то есть машины высокого класса содержат все инструкции машин низкого уровня и могут быть расширены.
Компьютер с сокращенной системой инструкций (RISC)
Главная особенность
Выберите некоторые из наиболее часто используемых простых инструкций. Функции сложных инструкций реализуются комбинацией простых инструкций.
Длина инструкции фиксирована, существует несколько типов форматов инструкций и несколько типов режимов адресации.
Только инструкции загрузки/сохранения (выборки/сохранения) получают доступ к памяти, а операции других инструкций выполняются между регистрами.
Количество регистров общего назначения в ЦП довольно велико.
RISC должен использовать технологию конвейера команд, и большинство инструкций выполняются за один такт.
В основном основано на аппаратном управлении, отсутствие или меньшее использование микропрограммного управления.
Особое внимание уделите работе по оптимизации компиляции, чтобы сократить время выполнения программы.
Большинство машин RISC несовместимы со старыми машинами.
Сравнение CISC и RISC