TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Conversão De C Para Assembly

Monografias: Conversão De C Para Assembly. Pesquise 862.000+ trabalhos acadêmicos

Por:   •  6/4/2014  •  758 Palavras (4 Páginas)  •  408 Visualizações

Página 1 de 4

Conversão C para Assembly [MIPS]

Registradores:

Nome N° Uso Preservado

na chamada?

$zero 0 Valor da constante 0 NA

$at 1 Assembler Temporário Não

$v0 – $v1 2 – 3 Valores para guardar resultados e avaliar expressões Não

$a0 – $a3 4 – 7 Argumentos Não

$t0 – $t7 8 – 15 Temporários Não

$s0 – $s7 16 – 23 Temporários Salvos Sim

$t8 – $t9 24 – 25 Temporários Não

$k0 – $k1 26 – 27 Reservados para o Sistema Operacional Não

$gp 28 Global Pointer Sim

$sp 29 Stack Pointer Sim

$fp 30 Frame Pointer Sim

$ra 31 Return Address Sim

Exemplos:

 C: a = b + c;

ASM: add $s0, $s1, $s2

 C: a = b + c + d;

e = f – a

ASM: add $t0, $t1, $t2

add $t0, $t0, $t3

sub $t4, $t5, $t0

 C: f = (g + h) – (i + j);

$t0 $t1

ASM: add $t0, $s0, $s1

add $t1, $s3, $s4

sub $s0, $t0, $t1

1

 C: g = h + a[i];

Carrega no $t0

2

d e

add $s0, $s1, $t0 # que neste exemplo está contido no $t2.

C: a[i] = h + a[i]

:

sw $s0, astart($t2)

: L1;

L1: f = f – i;

:

L1: sub $s0, $s0, $t0

:

g + h;

f = g – h;

:

$s2

$s0, $s1, $s2 # f = g + h

Endif:

ASM: lw $t0, astart($t2) # astart é o endereço inicial do seu vetor o valor entre () é o

in ic

ASM lw $t0, astart($t2)

add $s0, $s1, $t0

C if (i == j) goto

f = g + h;

ASM beq $t0, $t1, L1

add $s0, $s1, $s2

C if (i == j)

f =

else

ASM beq $t0, $t1, Soma

sub $s0, $s1, j Endif

Soma: add

Posição onde começa o vetor:

Multiplicar i por 4.

 C: while (save[i] == k) {

i = i + j; Assumindo que: # $t0 = deslocamento

}

...

Baixar como (para membros premium)  txt (2.7 Kb)  
Continuar por mais 3 páginas »
Disponível apenas no TrabalhosGratuitos.com