Nvel Mquina Formatos de Instrues IA 32 e

  • Slides: 15
Download presentation
Nível Máquina Formatos de Instruções IA 32 e MIPS AC 1 – Formatos de

Nível Máquina Formatos de Instruções IA 32 e MIPS AC 1 – Formatos de Instruções 1

Stored Program Concept As instruções são sequências de bits, armazenados em memória, que são

Stored Program Concept As instruções são sequências de bits, armazenados em memória, que são descodificados pela Unidade de Controlo do processador. É possível descodificar estes números porque a Unidade de Controlo conhece o formato da informação que estes contêm. Esta informação consiste geralmente nos seguintes campos: • opcode – código que identifica a operação; • identificação dos modos de endereçamento • operandos (registos, valores imediatos) Algumas arquitecturas incluem prefixos que modificam o comportamento da instrução. AC 1 – Formatos de Instruções 2

Formato das Instruções : IA 32 Instruções podem variar entre 1 a 17 bytes

Formato das Instruções : IA 32 Instruções podem variar entre 1 a 17 bytes AC 1 – Formatos de Instruções 3

Formatos das Instruções : IA 32 ADDB $0 x 20, %AL Opcode = 0

Formatos das Instruções : IA 32 ADDB $0 x 20, %AL Opcode = 0 x 04 0 x 20 ADDL $0 x 5 F 0043, %EAX Opcode = 0 x 05 0 x 43 0 x 00 0 x 5 F 0 x 00 LOCK ADDL $0 x 5 F 0043, 0 x 08 FFA 021(%eax, %esi, 2) Opcode = 0 x 81, Prefix = 0 x. F 0 0 x 81 0 x 84 0 x 70 0 x 21 0 x. A 0 0 x. FF 0 x 08 0 x 43 0 x 00 0 x 5 f 0 x 00 prefixo opcode Mod. R/M SIB AC 1 – Formatos de Instruções deslocamento valor imediato 4

Formato de instruções – MIPS 32 A simplicidade do formato das instruções permite o

Formato de instruções – MIPS 32 A simplicidade do formato das instruções permite o desenho de uma unidade de controlo mais simples, mais rápida e que facilita a incorporação de outras funcionalidades no processador. Simplicidade: as instruções têm tamanho fixo e apenas 3 tipos diferentes R I J op rs rt rd shamt Funct 6 bits 5 bits 6 bits op rs rt Imm 6 bits 5 bits 16 bits op Target 6 bits 26 bits AC 1 – Formatos de Instruções 5

Tipo R 6 bits 5 bits 6 bits op rs rt rd shamt funct

Tipo R 6 bits 5 bits 6 bits op rs rt rd shamt funct Op – código que identifica a instrução. Para R é sempre 0 (excepto rfe=0 x 10) funct – identifica a função (operação) rs, rt – números do dois registos que contêm os operandos rd – número do registo que virá a conter o resultado Número de shifts – apenas para sll, srl e sra (0 nas outras instruções) AC 1 – Formatos de Instruções 6

Tipo R add $t 0, $t 2, $s 0 rt = $s 0 =

Tipo R add $t 0, $t 2, $s 0 rt = $s 0 = 16 rd = $t 0 = 8 shamt = 0 op = 0 x 00 funct = 0 x 20 rs = $t 2 = 10 op rs 000000 01010 Hexa: 0 1 AC 1 – Formatos de Instruções 5 rt rd 10000 01000 0 4 shamt funct 00000 100000 0 2 0 7

Tipo I addi $t 0, $t 2, 256 rt = $t 0 = 8

Tipo I addi $t 0, $t 2, 256 rt = $t 0 = 8 imm = 256 op = 0 x 08 rs = $t 2 = 10 op rs 001000 01010 2 1 AC 1 – Formatos de Instruções 4 rt imm 01000 0001 0000 8 0 1 0 0 8

Tipo I lw $t 9, -20 ($sp) rt = $t 9 = 25 imm

Tipo I lw $t 9, -20 ($sp) rt = $t 9 = 25 imm = -20 op = 0 x 23 rs = $sp = 29 op rs 100011 11101 8 f AC 1 – Formatos de Instruções b rt imm 11001 1111 1110 1100 9 f f e c 9

Instruções de salto – branch e jump Branch (Tipo I) – endereçamento relativo A

Instruções de salto – branch e jump Branch (Tipo I) – endereçamento relativo A constante de 16 bits indica o número de instruções a saltar Jump (Tipo J) – endereçamento absoluto A constante de 26 bits indica os 26 bits menos significativos do endereço de destino (excluindo os 2 bits menos significativos que são 00) Jump register (Tipo R) – endereçamento absoluto O registo indica o endereço de destino AC 1 – Formatos de Instruções 10

Endereçamento relativo op = 05 rs = $t 0 = 8 rt = $0

Endereçamento relativo op = 05 rs = $t 0 = 8 rt = $0 = 0 for: subi $t 0, -1 bne $t 0, $0, for addi $t 0, -1 op rs rt imm 000101 001000 000000 1111 1110 PC = imm*4 + PC AC 1 – Formatos de Instruções 11

Endereçamento Absoluto –Tipo J Endereço destino do jump é dado por: • 4 bits

Endereçamento Absoluto –Tipo J Endereço destino do jump é dado por: • 4 bits mais significativos – são obtidos do PC • 26 bits do meio – obtidos do campo target da instrução • 2 bits menos significativos – 00 pois as instruções têm que estar em endereços múltiplos de 4 PC: Old PC Instruction Target Field 00 Para saltos que necessitem da especificação dos 32 bits do endereço de destino usar a instrução jr (jump register) carregando previamente o valor apropriado num registo AC 1 – Formatos de Instruções 12

Endereçamento absoluto – Tipo J j longe Supondo que esta instrução está no endereço

Endereçamento absoluto – Tipo J j longe Supondo que esta instrução está no endereço de memória 0 XE 0 AA 0000 e que longe é uma etiqueta que corresponde a 0 x. E 0000008 então teremos: op target 000010 0000 0000 10 PC = 1110 0000 1010 0000 0100 Após substituir os 26 bits apropriados do PC teremos PC = 1110 0000 0000 1000 AC 1 – Formatos de Instruções 13

Valores Imediatos Como lidar com instruções que tenham constantes de mais de 16 bits

Valores Imediatos Como lidar com instruções que tenham constantes de mais de 16 bits addi $t 0, 0 x. A 00 CD 1. Carregar a constante para $at usando lui e ori 2. Usar a versão R da instrução lui $at, 0 x 000 A ori $at, 0 x 00 CD add $t 0, $at: AC 1 – Formatos de Instruções 0 x 000 A 0000 0 x 000 A 00 CD 0 x? ? ? ? 14

Formato de Instruções Tema MIPS - Instruções I e R H&P Sec 3. 4,

Formato de Instruções Tema MIPS - Instruções I e R H&P Sec 3. 4, 3. 5 MIPS - Instruções J Sec 3. 8 MIPS - Constantes > 16 bits Sec 3. 8 Instruções Intel AC 1 – Formatos de Instruções Manual Intel Página da disciplina: “IA 32 Intel Architecture Software Developer's Manual. Volume 2: The Instruction Set Reference” 15