Кодировка набора инструкций
Я пытаюсь решить это упражнение:
Вы закодируете набор инструкций для процессора с 32 регистрами (R0-R31). Арифметико-логические инструкции имеют вид:
Ri<-Rj op Rk
и для их кодирования доступно 22 бита.
Инструкции по чтению и письму в форме:
Ri<-memory[Rj+offset] (i,j = 0...31)
Ri->memory[Rj+offset] (i,j = 0...31)
и для их кодирования доступно 30 битов.
i) Сколько арифметико-логических инструкций вы можете закодировать? ii) Рассчитайте максимальную длину смещения в битах.
Я пытался найти решения, искал несколько часов, но ничего не нашел. Любая помощь будет потрясающей!
1 ответ
Если у вас есть 32 регистра в вашем ISA, то вы знаете, сколько места занимает каждый спецификатор регистра (5 бит каждый). Оставшиеся оставшиеся биты могут быть использованы для указания конкретного типа команды ("код операции") и немедленной ("смещение", в случае команд ld/st).
Для команды регистр / регистр требуется 3 спецификатора, то есть 15 бит. Остальные биты могут быть использованы для указания типа инструкции.