Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Система машинних інструкцій






Повний перелік множини інструкцій надано таблицею 1. Зауважимо, що нестандартно використовують регістр R31 регістрового файла як такий, що містить адресу повернення у разі виконання деяких типів безумовних переходів.

Регістр R0 регістрового файла завжди містить нульові біти (або просто, нуль) і нульове вмістиме не змінює навіть запис до R0. Це дозволяє реалізувати абсолютний режим адресування, коли

address = offset + [R0] = offset + 0 = offset.

де offset є зсувом.

 

Таблиця 1. Множина інструкцій DLX машини

№ пп Код інструкції СУТНІСТЬ ІНСТРУКЦІЙ DLX МАШИНИ
Пересилання даних Move data between registers and memory, or between the integer and FP or special registers; only memory address mode is 16-bit displacement + contents of an integer register
  LB, LBU, SB Load byte, load byte unsigned, store byte
  LH, LHU, SH Load halfword, load halfword unsigned, store halfword
  LW, SW Load word, store word
  LF, LD, SF, SD Load single precision float, load double precision float, store single precision float, store double precision float
  MOVI2S, MOVS2I Move from/to integer register to/from a special register
  MOVF, MOVD Copy one floating point register or a DP pair to another register or pair
  MOVFP2I, MOVI2FP Move 32 bits from/to a FP register to/from an integer register
Арифметичні та логічні Operations on integer or logical data in integer registers; signed arithmetic instructions trap on overflow
  ADD, ADDI, ADDU, ADDUI Add, add immediate (all immediates are 16 bits); signed and unsigned
  SUB, SUBI, SUBU, SUBUI Subtract, subtract immediate; signed and unsigned
  MULT, MULTU, DIV, DIVU Multiply and divide, signed and unsigned; operands must be floating-point registers; all operations take and yield 32-bit values
  AND, ANDI And, and immediate
  OR, ORI, XOR, XORI Inclusive or, Inclusive or immediate, exclusive or, exclusive or immediate
  LHI Load high immediate - loads upper 16 bits of register with immediate and zeros the lower 16 bits
  SLL, SRL, SRA, SLLI, SRLI, SRAI Shifts; both immediate (S__I) and variable form (S__); shifts are left logical, right logical and right arithmetic
  SEQ, SNE, SLT, SGT, SLE, SGE Set conditional; set equal zero, set not equal zero, set less than, set greater than, set less than or equal, set greater than or equal
Керування Conditional branches and jumps; PC-relative or through register
  BEQZ, BNEZ Branch integer register equal/not equal to zero; 16 bit offset from PC+4
  BFPF, BFPT Test comparison bit in the FP status register and branch; 16 bit offset from PC+4
  J, JR Jumps; 26 bit offset from PC+4 (J) or target register (JR)
  JAL, JALR Jump and link; save PC+8 to R31, target is 26 bit offset from PC+4 (JAL) or a register (JALR)
  TRAP Transfer to operating system at a vectored address
  RFE Return to user code from an exception; restore user mode
Рухома кома Операції з рухомою комою: DP (подвійна точність) та SP (одинарна точність)
  ADDD, ADDF Add DP and SP floats
  SUBD, SUBF Subtract DP and SP floats
  MULTD, MULTF Multiply DP and SP floats
  DIVD, DIVF Divide DP and SP floats
  CVTD2F, CVTD2I, CVTF2D, CVTF2I, CVTI2D, CVTI2F Convert instructions; CVTx2y converts from type x to type y, where x and y are one of D (double precision float), F (single precision float) or I (integer); both operands are in floating point registers
  EQD, EQF, NED, NEF, LTD, LTF, GTD, GTF, LED, LEF, GED, GEF DP and SP compares; set comparison bit in FP status register

Пересилання даних поміж регістрами та пам'яттю даних, або поміж регістрами цілих операндів і регістрів операндів з рухомою комою та спеціальними регістрами; адресування пам'яті виконують за допомогою лише однієї адресувальної моди (mode), де 16-бітовий зсув, що міститься у форматі інструкції, додають до вмістимого одного з регістрів загального призначення (тобто регістра, що містить цілий операнд - базову адресу).

Ще раз пригорнемо увагу до того, що саме інструкції завантаження (load) чи збереження (store), які належать до цього типу, вивільняють від додаткової функції арифметичного, логічного чи будь-якого іншого опрацювання операндів. Це, по-перше, задовільняє необхідній умові створення множини інструкцій (машинних команд) RISC- архітектури, а по-друге, дозволяє визнати архітектуру, що зараз проектується, як Load/store architecture.

Арифметико/логічні інструкції вивільнено від дій з обміну поміж програмно керованими регістрами процесора та комірками пам'яті даних. За допомогою цієї групи інструкцій виконують дії з додавання або віднімання операндів, логічну обробку та різноманітні зсуви операндів.

Інструкції керування виконанням програми, до яких належать умовні і безумовні переходи і деякі інші інструкції, наприклад, TRAP (остання тимчасово, на короткий термін ніби " передовіряє" керування системою деякому модулю операційної системи), а також інструкція повернення з виключення (обробка особливої ситуації, що може виникнути при виконанні операції) RFE (Return From Exeption).

Інструкції обробки чисел у форматі з рухомою комою, за допомогою яких виконується додавання, віднімання, множення, ділення і низка інших операцій над відповідними кодами, як правило, у двох варіантах, із стандартною та подвійною точністю.

 

Пояснемо на ілюстративному прикладі синтаксис запису алгоритмів виконання окремих машинних інструкцій DLX (див. таблицю 2). Надано запис:

Regs[R19] 16..31 = 16(DM[Regs[R8]]0)8 ## DM[Regs[R8]].

Запис фіксує наступне. Оновлюють лише 16 молодших (правих) бітів регістру R19. До них пересилають двохбайтовий бінарний код, в якому молодший правий байт береться з пам’яті даних DM за адресою, що є збіжною з вмістимим регістру R8. Старший лівий байт утворюють вісімразовим повторюванням нульового (старшого) розряду щойно згаданого правого байта. Парою символів ## позначено операцію конкатенації (зчеплення) двох байтів до двохбайтового напівслова. Наведеного у таблиці 2 достатньо для синтезу відсутніх в ній алгоритмів.

Таблиця 2. Приклади алгоритмів виконання інструкцій DLX

Приклад інструкції Алгоритм виконання інструкції
Арифметичні та логічні інструкції
ADD R1, R2, R3 Regs[R1] = Regs[R2} + Regs[R3]
ADDI R1, R2, #3 Regs[R1] = Regs[R2] + 3
LHI R1, #42 Regs[R1] = 42 ## 016
SLLI R1, R2, #5 Regs[R1] = Regs[R2} < < 5
SLT R1, R2, R3 if (Regs[R2] < Regs[R3]) Regs [R1] = 1 else Regs[R1] = 0
Інструкції збереження і завантаження
LW R1, 30(R2) Regs [R1] = 32 DM [30 + Regs[R2]]
LW R1, 1000(R0) Regs [R1] = 32 DM [1000 + 0]
LB R1, 40(R3) Regs [R1] = 32 (DM [40 + Regs[R3]] 0) 24 ## DM [40 + Regs[R3]]
LBU R1, 40(R3) Regs [R1] = 32 0 24 ## DM [40 + Regs[R3]]
LH R1, 40(R3) Regs [R1] = 32 (DM [40 + Regs[R3]] 0) 16 ## DM [40 + Regs[R3]] ## DM [41 + Regs[R3]]
SW 500(R4), R3 DM[500 + Regs[R4]] = 32 Regs[R3]
SH 502(R2), R3 DM[502 + Regs[R2]] = 16 Regs[R3] 16…31
SB 41(R3), R2 DM[ 41 + Regs[R3]] = 8 Regs[R2] 24…31
Інструкції керування програмою
J name PC = name; ((PC + 4) – 2 25) =< name =< ((PC + 4) + 2 25);
JAL name R31 = PC + 4; PC = name; ((PC + 4) – 2 25) =< name =< ((PC + 4) + 2 25);
JALR R2 Regs[R31] = PC + 4; PC = Regs[R2];
BEQZ R4, name if (Regs[R4] == 0) PC = name; ((PC + 4) – 2 15) =< name =< ((PC + 4) + 2 15);
BNEZ R4, name if (Regs[R4]! = 0) PC = name; ((PC + 4) – 2 15) =< name =< ((PC + 4) + 2 15);






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.