A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Organização e Arquitetura de Computadores I Linguagem de Máquina Ivan Saraiva Silva.

Apresentações semelhantes


Apresentação em tema: "Organização e Arquitetura de Computadores I Linguagem de Máquina Ivan Saraiva Silva."— Transcrição da apresentação:

1 Organização e Arquitetura de Computadores I Linguagem de Máquina Ivan Saraiva Silva

2 Sumário Conjunto de Instruções do MIC Programação com o MIPS Simuladores de Arquitetura –MIPS –Neander

3 O MIC possui dois formatos de instrução: ENDEREÇOCODOP 4 bits 12 bits ENDEREÇOCODOP 8 bits CODOP 16 bits Formato 1 Formato 2 Formato 3

4 Conjunto de Instruões do MIC InstruçãoMnemônicoSignificado 0000xxxxxxxxxxxxLODD XAC := M[X] 0001xxxxxxxxxxxxSTOD XM[X] := AC 0010xxxxxxxxxxxxADDD XAC := AC + M[X] 0011xxxxxxxxxxxxSUBD XAC := AC - M[X] 0100xxxxxxxxxxxxJPOS X If AC 0; PC := X 0101xxxxxxxxxxxxJZER XIf AC = 0; PC := X 0110xxxxxxxxxxxxJUMPPC := X 0111xxxxxxxxxxxxLOCOAC := X 1000xxxxxxxxxxxxLODLAC := M[SP +X]

5 Conjunto de Instruções do MIC InstruçãoMnemônicoSignificado 1001xxxxxxxxxxxxSTOLM[X + SP] := AC 1010xxxxxxxxxxxxADDLAC := AC + M[SP + X] 1011xxxxxxxxxxxxSUBLAC := AC - M[SP + X] 1100xxxxxxxxxxxxJNEGif AC < 0; PC := X 1101xxxxxxxxxxxxJNZE if AC 0; PC := X 1110xxxxxxxxxxxCALLSP := SP - 1; M[SP] := PC; PC := X

6 Conjunto de Instruções do MIC InstruçãoMnemônicoSignificado PSHISP := SP - 1; M[SP] := M[AC] POPIM[AC] := M[SP] SP := SP + 1; PUSHSP := SP - 1; M[SP] := AC POPAC := M[SP]; SP := SP + 1; RETNPC := M[SP]; SP := SP + 1; SWAPTMP := AC; AC := SP; SP := TMP yyyyyyyyyINSPSP = SP + Y yyyyyyyyyDESPSP := SP - Y

7

8 Programação no MIPS Para somar os conteúdos de b, c, d e e –add a, b, c # a = b + c –add a, a, d # a = (b+c) + d –add a, a, e # a = (b+c+d) + e Cada Linha do programa tem apenas uma instrução Comentários terminam no fim da linha Principio 1: Simplicidade favorece a regularidade

9 Programação no MIPS 32 registradores estão disponíveis no MIPS –$s0, $s1, $s2, … # para variáveis –$t0, $t1, $t2, … # para temporários Instruções aritméticas do MIPS usam registradores como operando –add $s0, $s1, $s2 –sub $s0, $s1, $s2 Princípio 2: Menor significa mais rápido

10 Programação no MIPS A palavra do MIPS é de 32 bits Endereços precisam começar em endereços que sejam múltiplos de 4 A memória é acessada por instruções de load e store –lw $t0, 32 ($s3) –sw $t0, 32($s3) O endereço efetivo e formado por –32 + ($s3)

11 Memória do MIPS Computadores podem usar –Endereço do byte mais a esquerda como endereço da palavra Big Endian –Endereço do byte mais a direita como endereço da palavra Little Endian –O MIPS é Big Endian

12 Programação no MIPS Constantes e operandos Imediatos –Utilizar versões de instruções onde um dos operandos é uma constante –Aumenta da velocidade de execução addi $s3, $s3, 4 # add imediato Uso de uma constante imediata codificada na instrução Princípio 3: Agilize os casos mais comuns

13 Programação no MIPS Representando Instruções MIPS –Registradores $s0 a $s7 mapeados nos registradores 16 a 23 –Registradores $t0 a $t7 mapeados nos registradores 8 a 15 –Registrador $zero (sempre igual a zero) mapeado para o endereço zero Formato de instruções MIPS oprsrtrdshamtfunct 6 bits5 bits 6 bits Formato tipo R

14 Formato de Instrução MIPS op: opcode – operação básica da instrução rs: registrador do primeiro operando de origem rt: registrador do segundo operando de origem rd: registrador do operando destino shamt: Quantidade de deslocamento funct: função – define uma variante da operação oprsrtrdshamtfunct 6 bits5 bits 6 bits Formato tipo R

15 Formato de Instrução MIPS E se a instrução necessitar de Campos maiores do que o especificado –lw $t0, 32 ($s3) ou sw $t0, 32($s3) –As constantes podem ser maiores que 5 bits Princípio 4: Um bom projeto exige bons compromissos oprsrtconstante ou endereço 6 bits5 bits 16 bits Formato tipo I (imadiato)

16 Programação no MIPS Operações lógicas –Shift à esquerda sll $t2, $s0, 4 # $t2 = shift a esquerda de $s0 de 4 bits O campo shamt indica o tamanho do deslocamento –Shift à direita srl $t2, $s0, 4 # $t2 = shift a direita de $s0 de 4 bits –AND bit-a-bit and $t0, $t1, $t2 ou andi $t0, $t1, 100 –OR bit-a-bit or $t0, $t1, $t2 ou ori $t0, $t1, 100 –NOR bit-a-bit nor $t0, $t1, $t2

17 Programação no MIPS Instruções de controle de fluxo –Desvios Condicionais beq $s3, $s4, label # salte para label se ($s3 = $s4) bne $s3, $s4, label # salte para label se ($s3 $s4) –Desvios Incondicionais j label # salte para label de forma incondicional –A instrução jump usa um formato chamado formato j opEndereço de salto 26 bits6 bits

18 Programação no MIPS Exemplo While (save[i] = = k) i += 1; Supor i e k armazenados em $s3 e $s5 Supor a base do array save armazenada em $s6. Precisamos do endereço de do array save Loop:sll $t1, $s3, 2 # $t1=4*i add $t1, $t1, $s6 # save = (4*i) + $s6 lw $t0, 0($t1) # $t0 = save(i) bne $t0, $s5, Exit # sai se i k addi $s3, $s3, 1 # i = i + 1 j Loop # vá para Loop Exit:

19 Programação no MIPS Testes de igualdade ou desigualdade – Normalmente comparam dois registradores e indicam o resultado em um terceiro slt $t0, $s3, $s4 # $t0 = 1 se $s3 < $s4; cc $t0 = 0 slti $t0, $s2, 10 # $t0 = 1 se $s2 < 10; cc $t0 = 0

20 Programação no MIPS Procedimentos: para a execução de um procedimento é necessário: –Colocar parâmetros em um local conhecido do procedimento –Transferir o controle para o procedimento –Adquirir recursos de armazenamento para o procedimento –Realizar a tarefa desejada –Colocar o valor de retorno em um valor conhecido por quem chamou o procedimento –Retornar ao ponto de origem

21 Programação no MIPS Registradores e procedimentos –$a0 a $a3 - Registradores de argumentos para passar parâmetros –$v0 e $v17 – Registradores de valor para valores de retorno –$ra – Registrador de endereço de retorno para retornar ao ponto de origem Mais registradores –Para usar mais registradores para parâmetros ou valores de retorno usa-se o $sp (apontador de pilha)

22 Programação no MIPS Instruções para procedimento – jal EndereçoProcedimento Salta para EndereçoProcedimento e salva endereço de retorno em $ra (PC = PC + 4) – jr $ra Instrução de salto incondicional para o endereço armazenado em $ra Esta instrução é usada coma a última instrução de um procedimento

23 Programação no MIPS RegistradorNúmeroUso Preservado na chamada? $zero0Valor 0n.a. $v0-$v12-3ResultadosN $a0-$a34-7ArgumentosN $t0-$t78-15TemporáriosN $s0-$s716-23Valores salvosS $t8-$t924-25TemporáriosN $gp28Ponteiro globalS $sp29pilhaS Sfp30quadroS $ra31retornoS

24 Programação no MIPS Estudo de caso –Com o que foi visto até agora tente escrever em assembly do MIPS o algoritmo ao lado –Identifique o que o algoritmo faz int X, S = 4, D = 2, R = 1, T = 0; cin >> X; While (T >= 0) { R = R+1; D = D+2; S = S+D+1; T = X – S; }

25 Atividades Recomendadas Procurar documentação sobre simulador MIPS em ftp://ftp.cs.wisc.edu/pub/spim/ –Caso não encontre procure o professor Estudar o capítulo 2 do livro: até a seção 2.8. Exercitar-se no uso do simulador do MIPS Baixar o simulador do Neander em Estudar o Neander e praticar com o simulador Desenvolver programas com as instruções do MIC –Simulador disponível na página da disciplina


Carregar ppt "Organização e Arquitetura de Computadores I Linguagem de Máquina Ivan Saraiva Silva."

Apresentações semelhantes


Anúncios Google