Вы находитесь на странице: 1из 18

Conjuntos de instrues de microprocessadores

Joo Canas Ferreira

Novembro de 2011

Tpicos de Arquitetura e Organizao de Computadores

Assuntos

Tpicos

Arquitetura do conjunto de instrues

Codicao de instrues MIPS-32

Programao em Assembly

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

2 / 35

Arquitetura do conjunto de instrues

Arquitetura do conjunto de instrues

Codicao de instrues MIPS-32

Programao em Assembly

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

3 / 35

Arquitetura do conjunto de instrues

Dois princpios
Os computadores atuais seguem dois princpios-chave:
1 2

Instrues so representadas como nmeros; Programas (sequncias de instrues) so guardados em memria, tal como dados.

Programas podem ser fornecidos como cheiros (de dados binrios): os dados so as instrues do programa. Esses programas podem ser executados em computadores que aceitem o mesmo conjunto de instrues: compatibilidade binria. Um programa (A) tambm pode ser executado por outro programa (V), que interpreta as instrues de A: V um simulador ou uma mquina virtual. Questo: Como codicar as instrues? critrios (tipos de instrues, tipos de dados, modelo de execuo) formatos

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

4 / 35

Arquitetura do conjunto de instrues

Cdigo-mquina e cdigo assembly


O cdigo de um programa pode ser representado por nmeros: cdigo-mquina. Exemplo (em hexadecimal, MIPS-32): 8D2804b0 02484020 AC2804B0 Cdigo simblico para instrues (mnemnicas): assembly code O mesmo exemplo: lw add sw $t0, 1200($t1) $t0, $s2, $t0 $t0, 1200($t1)

Converso de cdigo assembly para cdigo-mquina tambm feita por um programa: assembler Cada microprocessador tem o seu cdigo-mquina, denido pela especicao do processador.
Joo Canas Ferreira (FEUP/DEEC) Conjuntos de instrues Novembro de 2011 5 / 35

Arquitetura do conjunto de instrues

Modelo de programao
O modelo de programao de um microprocessador denido por:
1 2

modelo de execuo conjunto de instrues


1 2

classes (ou tipos) de instrues modos de especicao de operandos (endereamento)

registos
1 2

de uso geral dedicados (de uso especco)

Modelo de execuo:
1 2 3 4

inicializar PC (program counter) obter instruo da posio PC da memria executar instruo e atualizar PC repetir a partir de 2

PC um registo dedicado.
Joo Canas Ferreira (FEUP/DEEC) Conjuntos de instrues Novembro de 2011 6 / 35

Arquitetura do conjunto de instrues

Classes de instrues
As classes de instrues mais comuns so:
1

Operaes aritmticas com nmeros inteiros


adio, subtrao, multiplicao, diviso

Operaes lgicas sobre conjuntos de bits


AND, OR, NOR, deslocamentos (shift)

Transferncias de dados
leitura e escrita de dados em memria

Alterao do uxo (sequencial) de execuo


saltos condicionais e comparaes saltos incondicionais execuo de subrotinas

As instrues de salto alteram o PC. Existem muitas alternativas. . .


Joo Canas Ferreira (FEUP/DEEC) Conjuntos de instrues Novembro de 2011 7 / 35

Arquitetura do conjunto de instrues

Modos de endereamento
Modos de endereamento = modos de especicao dos operandos Os mais comuns so:
1 2

imediato: o valor (constante) est includo na instruo. registo: o valor est num registo; a instruo inclui a especicao do registo. direto: a instruo inclui o endereo da posio de memria. indireto (via registo): o registo contm o endereo da posio de memria onde est o valor; a instruo especica o registo. indireto com deslocamento constante: instruo especica registo e um valor constante: a posio de memria obtida por soma do valor constante com o contedo do registo.
( uma generalizao da categoria anterior.)

3 4

relativo ao PC: a instruo inclui constante a adicionar ao valor de PC.


Conjuntos de instrues Novembro de 2011 8 / 35

Joo Canas Ferreira (FEUP/DEEC)

Arquitetura do conjunto de instrues

Classicao segundo a origem dos operandos


Mem. 0 1 2 3 Max. ops. 3 2 2 3 Arquitetura reg-reg reg-mem mem-mem mem-mem Exemplos Alpha, MIPS, SPARC IBM 360/370, Intel 80x86 VAX VAX

Tipo reg-reg reg-mem mem-mem

Vantagens Codicao simples, comprimento nico. Gerao de cdigo simplicada. Durao similar. Acesso a dados sem load em separado. Tendem a ter boa densidade de codicao. Programas compactos. No ocupa registos com resultados temporrios.

Desvantagens Nmero de instrues elevado. mais compridos. Programas

Operandos no so equivalentes. Durao varia com a localizao dos operandos. Pode restringir o nmero de registos codicveis. Comprimento de instrues muito varivel. Complexidade de instrues muito varivel. Acesso a memria crtico.

As duas principais caratersticas que dividem arquiteturas com registos de uso genrico so:
1 2

nmero de operandos: 2 ou 3; quanto operandos podem residir em memria (de 0 a 3).


Conjuntos de instrues Novembro de 2011 9 / 35

Joo Canas Ferreira (FEUP/DEEC)

Arquitetura do conjunto de instrues

Tipos de operandos
Tipos comuns de operandos:
1

nmeros inteiros de:


4 bytes (1 palavra) 2 bytes (meia palavra) 1 byte

nmeros de vrgula utuante:


4 bytes (preciso simples) 8 bytes (preciso dupla)

A interpretao dos dados e o seu tamanho so denidos pela instruo usada para os processar. O programador e/ou o compilador so responsveis pela utilizao coerente das instrues. Endereo de memria do item especica a posio do primeiro byte.
acesso posio N N+4 N+3 N+2 N+1 N

Regras de alinhamento tpicas:


4 2 1

palavra: s endereos mltiplos de 4 meia palavra: s endereos mltiplos de 2 byte: qualquer endereo
Conjuntos de instrues Novembro de 2011 10 / 35

Joo Canas Ferreira (FEUP/DEEC)

Codicao de instrues MIPS-32

Arquitetura do conjunto de instrues

Codicao de instrues MIPS-32

Programao em Assembly

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

11 / 35

Codicao de instrues MIPS-32

Caratersticas das instrues MIPS-32


Organizao reg-reg (RISC) Acesso a memria: apenas load (leitura) e store (escrita) Instrues lgicas e artitmticas com 3 operandos Conjunto de instrues ortogonal Onde pode ser usado um registo, pode ser usado qualquer outro. Todas as instrues tm 32 bits de comprimento Memria enderevel: 230 palavras (232 bytes) 32 registos de uso geral (0-31) de 32 bits: $0, $1, etc. Registo $0 ($zero) tem sempre o valor zero. Convenes de utilizao (para garantir interoperabilidade): $t0-$t9 e $s0-$s7: uso sem restries [registos 8 a 25]. $at: reservado para assembler [registo 1]. Todos os outros registos (salvo $0) esto reservados para implementao de subrotinas, para o sistema operativo ou para conterem o endereo de zonas especiais de memria. Dois registos especiais (multiplicaes e divises): $lo e $hi.
Joo Canas Ferreira (FEUP/DEEC) Conjuntos de instrues Novembro de 2011 12 / 35

Codicao de instrues MIPS-32

Subconjunto de instrues MIPS-32 (I)


Instruo add subtract add immediate and or and immediate or immediate shift left logical shift right logical load word store word load half load half unsigned store half load upper immediate Exemplo add $s1,$s2,$s3 sub $s1,$s2,$3 addi $s1,$s2,20 and $s1,$s2,$s3 or $s1,$s2,$s3 andi $s1,$s2,20 ori $s1,$s2,20 sll $s1,$s2,10 srl $s1,$s2,10 lw $s1,20($s2) sw $s1,20($s2) lh $s1,20($s2) lhu $s1,20($s2) sh $s1,20($s2) lui $s1,20 Signicado $s1 = $s2 + $s3 $s1 = $s2 - $s3 $s1 = $s2 + 20 $s1 $s1 $s1 $s1 $s1 $s1 = = = = = = $s2 $s2 $s2 $s2 $s2 $s2 AND $s3 OR $s3 AND 20 OR 20 << 10 >> 10

$s1 = Mem[$s2 + 20] Mem[$s2 + 20] = $s1 $s1 = Mem[$s2 + 20] $s1 = Mem[$2 + 20] Mem[$s2 + 20] = $s1 $s1 = 20 216

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

13 / 35

Codicao de instrues MIPS-32

Subconjunto de instrues MIPS-32 (II)


Instruo branch on equal branch on not equal set less than set less than unsigned set less than immediate jump jump register Exemplo beq $s1,$s2,25 bne $s1,$s2,25 slt $s1,$s2,$s3 sltu $s1,$s2,$s3 slti $s1,$s2,20 j 2500 jr $s1 Signicado se ($s1 = $s2) PC = PC + 4 + 425 se ($s1 = $s2) PC = PC + 4 + 425 se ($s2 < $s3) $s1=1 seno $s1 = 0 se ($s2 < $s3) $s1=1 seno $s1 = 0 se ($s2<20) $s1=1 seno $s1=0 saltar para 25004 (PC=10000) saltar para valor de $s1 (mltiplo de 4)

As instrues comeam sempre em posies cujos endereos so mltiplos de 4.


Joo Canas Ferreira (FEUP/DEEC) Conjuntos de instrues Novembro de 2011 14 / 35

Codicao de instrues MIPS-32

Instrues lgicas e aritmticas


Formato R para instrues com 3 operandos op 6 bits rs 5 bits rt 5 bits rd 5 bits shamt 5 bits funct 6 bits

op: Cdigo bsico da operao (opcode). rs: O primeiro operando (nmero do registo). rt: O segundo operando (nmero do registo). rd: O destino do resultado (nmero do registo). shamt: 0, excepto para instrues de deslocamento (shift amount). funct: Cdigo da funo, que especica a variante da operao. add: op=0, funct=2016 sub: op=0, funct=2216 and: op=0, funct=2416 or: op=0, funct=2516 slt: op=0, funct=2A16

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

15 / 35

Codicao de instrues MIPS-32

Codicao de instrues lgicas e aritmticas


Exemplo: add $t0,$s1,$s2 Nmeros dos registos: $t0: 8, $s1: 17, $s2: 18 0 op 17 rs 18 rt 8 rd 0 shamt 32 funct

Em binrio: 000000 op 10001 rs 10010 rt 01000 rd 00000 shamt 100000 funct

Cdigo mquina: 0232402016 ou 0x02324020 ou 02324020H.

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

16 / 35

Codicao de instrues MIPS-32

Codicao de constantes imediatas


Algumas instrues lgicas ou aritmticas (e outras) requerem um formato com dois registos e uma constante: o formato I. op 6 bits rs 5 bits rt 5 bits constante 16 bits

op: Cdigo da operao (opcode). rs: Um registo (nmero do registo). rt: Outro registo (nmero do registo). constante: Valor imediato. Para instrues que usam valores com sinal (como addi) ou para endereos (lw e sw) o valor imediato em complemento para 2. addi: op=8 ori: op=D16 slti: op=A16 lw: op=2316 sw: op=2B16 lui: op=0F16

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

17 / 35

Codicao de instrues MIPS-32

Instrues de leitura de memria


Estas instrues usam o formato I. Exemplo: lw $t0,1200($t1) A constante (aqui: 1200) interpretada como o deslocamento (com sinal) a somar ao valor do registo de endereamento (aqui: $t1). Ateno: para acessos a palavras, o endereo nal deve ser mltiplo de 4. Para acessos a meias palavras (lh), o endereo nal deve ser mltiplo de 2. Nmero dos registos: $t0: 8, $t1: 9. O campo rs usado para a base do endereo.
31 26 25 21 20 16 15 0

35 100011 op

9 01001 rs

8 01000 rt

1200 0000 0100 1011 0000 constante

Instruo lh faz expanso de sinal da meia-palavra lida de memria (para preencher o registo de destino, que de 32 bits). Instruo lhu acrescenta 16 zeros esquerda da meia-palavra lida.
Joo Canas Ferreira (FEUP/DEEC) Conjuntos de instrues Novembro de 2011 18 / 35

Codicao de instrues MIPS-32

Instrues de escrita em memria


Estas instrues usam o formato I. Exemplo: sw $t0,1200($t1) A constante (aqui: 1200) interpretada como o deslocamento (com sinal) a somar ao valor do registo de endereamento (aqui: $t1). Ateno: para acessos a palavras, o endereo nal deve ser mltiplo de 4. Para acessos a meias palavras (sh), o endereo nal deve ser mltiplo de 2. Nmero dos registos: $t0: 8, $t1: 9. O campo rs usado para a base do endereo.
31 26 25 21 20 16 15 0

43 101011 op

9 01001 rs

8 01000 rt

1200 0000 0100 1011 0000 constante

Instruo sh guarda os 16 bits menos signicativos do registo especicado na de memria.


Joo Canas Ferreira (FEUP/DEEC) Conjuntos de instrues Novembro de 2011 19 / 35

Codicao de instrues MIPS-32

Instrues de deslocamento
Instrues de deslocamento movem os bits de um registo para a direita ou para a esquerda. As posies livres so preenchidas com 0. Estas instrues usam o formato R, geralmente com shamt = 0. Exemplo: sll $t2,$s0,4 Estas instrues usam o formato R. Nmero dos registos: $t2: 10,$s0:16 0 op 0 rs 16 rt 10 rd 4 shamt 0 funct

Se $s0 = 0000 0000 0000 0000 0000 0000 0000 1001, ento $t2 = 0000 0000 0000 0000 0000 0000 1001 0000 Deslocamento de N posies para a esquerda multiplica um nmero positivo por 2N . (Porqu?)
Joo Canas Ferreira (FEUP/DEEC) Conjuntos de instrues Novembro de 2011 20 / 35

Codicao de instrues MIPS-32

Saltos condicionais
Instrues de comparao (ex. slt) usam o formato R. Instrues de salto usam o formato I. O salto relativo: deslocamento em relao instruo seguinte. O deslocamento multiplicado por 4 (para contar instrues, que tm 4 bytes). O deslocamento pode ser positivo ou negativo. Exemplo: etiqueta: add ... slt $t0,$t1,$t2 beq $t0,$zero, etiqueta
26 25 21 20 16 15 0

31

4 000100 op
Joo Canas Ferreira (FEUP/DEEC)

0 01000 rs

8 00000 rt
Conjuntos de instrues

-3 1111 1111 1111 1101 constante


Novembro de 2011 21 / 35

Codicao de instrues MIPS-32

Instrues de salto incondicional


A instruo jr usa o formato R com op=0, funct=8, rt=0, rd=0, rs=registo a usar. A instruo j (jump) usa o formato J.
31 26 25 0

op 6 bits Endereo para onde salta:


31 27 26

endereo parcial 26 bits

2 1 0

PC[31:28]

endereo parcial 26

00 2

Os 4 bits mais signicativos so iguais aos 4 bits mais signicativos do PC.

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

22 / 35

Codicao de instrues MIPS-32

Resumo dos modos de endereamento MIPS-32


1. Immediate addressing op rs rt Immediate

2. Register addressing op rs rt rd . . . funct Registers Register 3. Base addressing op rs rt Address Memory + Byte Halfword Word

Register

4. PC-relative addressing op rs rt Address Memory + Word

PC

5. Pseudodirect addressing op Address Memory Word

PC

Fonte: [COD4]

FIGURE 2.18 Illustration of the ve MIPS addressing modes. The operands are shaded in color. The operand of mode 3 is in memory, whereas the operand for mode 2 is a register. Note that versions of load and store access bytes, halfwords, or words. For mode 1, the operand is 16 bits of the instruction itself. Modes 4 and 5 address instructions in memory, with mode 4 adding a 16-bit address shifted left 2 bits to the PC and mode 5 concatenating a 26-bit address shifted left 2 bits with the 4 upper bits of the PC. Copyright 2009 Elsevier, Inc. All rights reserved.

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues Programao em Assembly

Novembro de 2011

23 / 35

Arquitetura do conjunto de instrues

Codicao de instrues MIPS-32

Programao em Assembly

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

24 / 35

Programao em Assembly

Fluxo (simplicado) de criao de programas


1 2 3 4

Preparar programa com editor de texto (1 ou mais cheiros) Invocar assembler para converter cheiros para cdigo mquina Ligar programa s subrotinas do sistema (linker) Executar (talvez usando um emulador) O programa deve ser carregado previamente para memria (loader) Depurar (voltar a 1)

O que preciso saber sobre o sistema:


1 2 3 4

organizao de memria (sistema operativo e aplicao) onde ca colocado o cdigo e as zonas de dados subrotinas disponveis (sistema ou bibliotecas de funes) como invocar servios do sistema operativo (se existir) e/ou como aceder a perifricos

Emulador para MIPS-32: MARS http://courses.missouristate.edu/KenVollmar/MARS/


Joo Canas Ferreira (FEUP/DEEC) Conjuntos de instrues Programao em Assembly Novembro de 2011 25 / 35

Assemblador
Funo principal: cdigo assembly cdigo-mquina. Facilitar a programao:
1

vericar a legalidade das instrues


sintaxe das instrues, tamanho das constantes, . . .

2 3 4 5

nomes para posies de memria: etiquetas reserva de zonas de memria para dados (alocao de memria) especicao de valores iniciais para zonas de memria sntese de instrues teis (pseudo-instrues) ou de sinnimos
MIPS-32 no tem instruo para copiar um valor de um registo para outro, mas o assembler suporta a instruo move RD, RS que copia o contedo do registo RD para o registo RS.

6 7

ajuste de saltos, dependendo da distncia ao destino denir procedimentos para gerao de grupos de instrues (macros)
O prprio assembler programvel!

Para alm do cdigo-mquina, tambm produzem listagens anotadas do cdigo gerado.


Joo Canas Ferreira (FEUP/DEEC) Conjuntos de instrues Novembro de 2011 26 / 35

Programao em Assembly

Pseudo-instrues
Pseudo-instrues so convertidas pelo assembler em uma ou mais instrues nativas. Pseudo-instrues servem para colmatar uma desvantagem da simplicidade do conjunto de instrues. Exemplo: convertida em:

move $t0, $t1 add $t0, $zero, $t1

Pseudo-instruo branch on less than blt $t0, $t1, L convertida em: slt $at,$t0,$t1 bne $at,$zero,L Por conveno, o registo $at est reservado para o assembler.
Joo Canas Ferreira (FEUP/DEEC) Conjuntos de instrues Programao em Assembly Novembro de 2011 27 / 35

Constantes de 32 bits
Porqu usar apenas valores imediatos de 16 bits?
1

A maior parte das constantes que surge num programa tem um valor pequeno. A maior parte dos destinos dos saltos tambm est a curta distncia. Uma instruo de 32 bits no tem espao para mais (se necessitar de especicar vrios registos).

2 3

Instrues com valores imediatos de 16-bits so um bom compromisso. Soluo para dados: transformada em: move $s0,0xABCDEF98 lui $s0,0xABCD ori $s0,$s0,0xEF98
16 15 0

31

lui: ori:

1010 1011 1100 1101 1010 1011 1100 110

0000 0000 0000 0000 1110 1111 1001 1000

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

28 / 35

Programao em Assembly

Saltos a grandes distncias


Como efectuar saltos para distncias superiores ao permitido pela codicao de endereos relativos em 16 bits? Gama normal de deslocamento: +32767 a -32768 instrues. Soluo: o assembler converte o salto relativo em salto relativo + salto incondicional. Para L1 referido a uma posio fora da gama, a instruo beq $s0,$s1,L1 transformada em: bne $s0,$s1,L2 j L1 ...

L2:

Para distncias ainda maiores, o assembler carrega o endereo de destino para um registo e usa a instruo jr.

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues Programao em Assembly

Novembro de 2011

29 / 35

Exemplos: expresses numricas


Cdigo para calcular a expresso f = (g + h) - (i + j) Atribuio de variveis a registos: f, . . . j $s0, . . . , $s4 add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1

Cdigo para calcular a expresso f = (g + h - 100) - (i + 320) Atribuio de variveis a registos: f, . . . i $s0, . . . , $s3 add addi addi sub $t0, $t1, $t0, $s0, $s1, $s3, $t0, $t0, $s2 320 -100 $t1

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

30 / 35

Programao em Assembly

Armazenamento de vetores em memria


Vetores homogneos:
1 2 3 4

Vetor A[] com N elementos: V[0], , . . . , V[N-1]. Todos os elementos tm o mesmo tamanho S (em bytes). Um vetor de N elementos, cada um de S bytes, ocupa N S bytes. Cada elemento de um vetor pode ser especicado pelo par de nmeros (b, d):
1 2

endereo do primeiro elemento: endereo base do vetor b deslocamento d dentro do vetor.

Exemplo: Disposio de um vetor de 3 meias-palavras em memria:

O deslocamento associado a V[i] : d = i S

100

102 V[0]

104

106

108
b = 102 endereo de V[1]: b + 1 2 = 104
Novembro de 2011

V[1] V[2]

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues Programao em Assembly

31 / 35

Exemplos: Acesso a memria


Operandos em memria: g = h + A[8] Atribuio de variveis a registos: g $s1, h $s2, base do vetor A $s3

lw $t0,32($s3) add $s1,$s2, $t0

Porque que o deslocamento 32? Cdigo correspondente a: A[12] = h + A[8] Atribuio de variveis a registos: h $s2, base de A $s3 lw $t0, 32($s3) add $t0, $s2,$t0 sw $t0, 48($s3)

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

32 / 35

Programao em Assembly

Instrues condicionais
Cdigo correspondente a: se (i = j) f = g + h Atribuio de variveis a registos: f, g, . . . j $s0, $s1, . . . , $s4 Cont: Cdigo correspondente a: se (i = j) f = g + h seno f = g - h Atribuio de variveis a registos: f, g, . . . j $s0, $s1, . . . , $s4 bne add j sub ... $s3, $s4, Alt $s0, $s1,$s2 Cont $s0, $s1, $s2 bne add ... $s3, $s4, Cont $s0, $s1,$s2

Alt: Cont:
Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues Programao em Assembly

Novembro de 2011

33 / 35

Ciclos
Cdigo correspondente a: enquanto (V[i] = k) i = i + 1 Atribuio de variveis a registos: i $s3, k $s5, base de V[] $s6 Ciclo: sll add lw bne addi j Cont: ... $t1, $s3, 2 $t1, $t1,$s6 $t0, 0($t1) $t0, $s5, Cont $s3, $s3, 1 Ciclo

Cdigo-mquina (colocado em memria a partir de 80000):


80000: 80004: 80008: 80012: 80016: 80020: 80024: 0 0 35 5 8 2 0 9 9 8 19 19 22 8 21 19 9 9 2 0 0 2 1 0 32

20000 instruo seguinte


Conjuntos de instrues

Joo Canas Ferreira (FEUP/DEEC)

Novembro de 2011

34 / 35

Referncias

Referncias

COD4 D. A. Patterson & J. L. Hennessey, Computer Organization and Design, 4 ed. MARS K. Vollmar, MARS (MIPS Assembler and Runtime Simulator), http://courses.missouristate.edu/KenVollmar/MARS/ Os tpicos tratados nesta apresentao so abordados nas seguintes seces de [COD4]: 2.12.3, 2.52.7, 2.10

Joo Canas Ferreira (FEUP/DEEC)

Conjuntos de instrues

Novembro de 2011

35 / 35

Вам также может понравиться