Arquitectura de Computadores Geração do Código Objecto (10.7 e 10.8) José Monteiro Licenciatura em Engenharia Informática e de Computadores Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 30 de Março, 2009 José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 1 / 13
Sumário da Aula formato das instruções Assembly do P3 instruções de 0, 1 e 2 operandos instruções de salto José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 2 / 13
Instruções do P3 por Classes Aritméticas Lógicas Deslocamento Controlo Transferência Genéricas NEG COM SHR BR MOV NOP INC AND SHL BR.cond MVBH ENI DEC OR SHRA JMP MVBL DSI ADD XOR SHLA JMP.cond XCH STC ADDC TEST ROR CALL PUSH CLC SUB ROL CALL.cond POP CMC SUBB RORC RET CMP ROLC RETN MUL RTI DIV INT José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 3 / 13
Instruções do P3 por Número de Operandos Zero Operandos Um Operando Dois Operandos Controlo NOP NEG CMP JMP ENI INC ADD JMP.cond DSI DEC ADDC CALL STC COM SUB CALL.cond CLC PUSH SUBB BR CMC POP MUL BR.cond RET SHR DIV RTI SHL TEST INT SHRA AND RETN SHLA OR ROR XOR ROL MOV RORC ROLC MVBH MVBL XCH José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 4 / 13
Formato Geral das Instruções do P3 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OPCODE Descrição dos Operandos José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 5 / 13
Formato Geral das Instruções do P3 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OPCODE Descrição dos Operandos W : Operando imediato José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 5 / 13
Códigos de Operação das Instruções 0-op Código 1-op Código 2-op Código Ctrl Código NOP 000000 NEG 010000 CMP 100000 JMP 110000 ENI 000001 INC 010001 ADD 100001 JMP.cond 110001 DSI 000010 DEC 010010 ADDC 100010 CALL 110010 STC 000011 COM 010011 SUB 100011 CALL.cond 110011 CLC 000100 PUSH 010100 SUBB 100100 BR 111000 CMC 000101 POP 010101 MUL 100101 BR.cond 111001 RET 000110 SHR 011000 DIV 100110 RTI 000111 SHL 011001 TEST 100111 INT 001000 SHRA 011010 AND 101000 RETN 001001 SHLA 011011 OR 101001 ROR 011100 XOR 101010 ROL 011101 MOV 101011 RORC 011110 MVBH 101100 ROLC 011111 MVBL 101101 XCH 101110 José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 6 / 13
Instruções Sem Operandos NOP, ENI, DSI, STC, CLC, CMC, RET e RTI José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 7 / 13
Instruções Sem Operandos NOP, ENI, DSI, STC, CLC, CMC, RET e RTI 0 0 0 X X X José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 7 / 13
Instruções Sem Operandos NOP, ENI, DSI, STC, CLC, CMC, RET e RTI 0 0 0 X X X INT e RETN 0 0 1 X X X ARG José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 7 / 13
Instruções com Um Operando NEG, INC, DEC, COM, PUSH e POP 0 1 0 X X X W? M IR1 José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 8 / 13
Instruções com Um Operando NEG, INC, DEC, COM, PUSH e POP 0 1 0 X X X W? M IR1 Codificação do modo de endereçamento: M Endereçamento Operação 00 Por registo op = RX 01 Por registo indirecto op = M[RX] 10 Imediato op = W 11 Indexado, directo, relativo ou baseado op = M[RX+W] Nota: SP 1110 e PC 1111 José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 8 / 13
Instruções de Deslocamento SHR, SHL, SHRA, SHLA, ROR, ROL, RORC e ROLC 0 1 1 X X X W? PAR M IR1 José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 9 / 13
Instruções com Dois Operandos CMP, ADD, ADDC, SUB, SUBB, MUL, DIV, TEST, AND, OR, XOR, MOV, MVBL, MVBH e XCH 1 0 X X X X S IR2 M IR1 W? José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 10 / 13
Instruções de Controlo JMP, JMP.cond, CALL e CALL.cond 1 1 0 X X X COND M IR1 W? José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 11 / 13
Instruções de Controlo JMP, JMP.cond, CALL e CALL.cond 1 1 0 X X X COND M IR1 W? BR e BR.cond 1 1 1 X X X COND OFFSET José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 11 / 13
Código da Condição de Salto Condição Mnemónica Código Zero Z 0000 Não-zero NZ 0001 Transporte C 0010 Não-transporte NC 0011 Negativo N 0100 Não-negativo NN 0101 Excesso O 0110 Não-excesso NO 0111 Positivo P 1000 Não-positivo NP 1001 Interrupção I 1010 Não-interrupção NI 1011 José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 12 / 13
Exemplo FIM FRASE EQU 0 MAX FRASE EQU 100h JANELA TEXTO EQU FFFEh ORIG 8000h Frase TAB MAX FRASE ORIG 0A00h ; Escreve: Envia para janela de texto um conjunto de caracteres (frase) ; Entradas: M[Frase] - início da frase ; Saídas: N~ao tem. ; Efeitos: Altera os registos R1 e R4. Escreve: MOV R4, Frase ; Inicializa apontador para frase Prox: MOV R1, M[R4] ; L^e caracter CMP R1, FIM FRASE ; Fim da frase? BR.Z FimEsc ; Termina se sim MOV M[JANELA TEXTO], R1 ; Escreve na janela de texto INC R4 ; Avança apontador BR Prox ; Trata próxima FimEsc: RET José Monteiro (DEI / IST) Arquitectura de Computadores 2009-03-30 13 / 13