Instruções de um processador Fevereiro 20, 2009
Posted by daniellapa in microprocessadores.trackback
A Execução de programas pode ser dividida em várias camadas que são:
- High Level – é o codigo programado exemplo: C e C++;
- Assembly – ser de intermediário entre o código e a linguagem máquina;
- Exemplos de programas em c para codigo Assembly:
- Exemplo 1:
- Em c :
- Exemplos de programas em c para codigo Assembly:
#include<stdio.h>
int main(){
printf("Ola");
return 0;
}
-
-
- Através do comando cc -S nomedoficheiro.c e o código c e convertido para assembly;
- Em Assembly:
-
.file "1.c" .section .rodata .LC0: .string "Ola" .text .globl main .type main, @function main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $4, %esp movl $.LC0, (%esp) call printf movl $0, %eax addl $4, %esp popl %ecx popl %econvertbp leal -4(%ecx), %esp ret .size main, .-main
-
-
- Exemplo 2:
-
#include <stdio.h>
void main(){
int i=0;
while(i++<10)
printf("Ola");
}
-
-
- Em Assembly:
-
.file "2.c" .section .rodata .LC0: .string "Ola" .text .globl main .type main, @function main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $20, %esp movl $0, -8(%ebp) jmp .L2 .L3: movl $.LC0, (%esp) call printf .L2: cmpl $9, -8(%ebp) setle %al addl $1, -8(%ebp) testb %al, %al jne .L3 addl $20, %esp popl %ecx popl %ebp leal -4(%ecx), %esp ret .size main, .-main
- Exemplo 3:
#include<stdio.h>
void main(){
int i=0, j;
scanf("%d",&j);
while(i++<j)
if(i%2)
printf("%d",i);
}
-
-
- Em Assembly:
-
.file "3.c" .section .rodata .LC0: .string "%d" .text .globl main .type main, @function main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $36, %esp movl $0, -8(%ebp) leal -12(%ebp), %eax movl %eax, 4(%esp) movl $.LC0, (%esp) call scanf jmp .L2 .L3: movl -8(%ebp), %eax andl $1, %eax testb %al, %al je .L2 movl -8(%ebp), %eax movl %eax, 4(%esp) movl $.LC0, (%esp) call printf .L2: movl -12(%ebp), %eax cmpl %eax, -8(%ebp) setl %al addl $1, -8(%ebp) testb %al, %al jne .L3 addl $36, %esp popl %ecx popl %ebp leal -4(%ecx), %esp ret .size main, .-main
- Das linhas 23 a 43 corresponde á condição if , das linhas 23 a 30 é a condição se for verdadeira, das linhas 32 a 43 é a condição de for falsa.
- Machine – é a linguagem em que o computador funciona;
- Register Tranfer – executa instruções no CPU;
- Gate -
- Circuit -
A memória retem corrente para guardar o valor 1 e 0.
Existem varios tipos de registos entre os quais:
- Contador do programa -
- Registo de endereçamento da memória – serve como meio de comunicação entre o processador e o barramento.
- Registos de dados – reserva-nos uma área de armazenamento temporário de todos os dados que passam do CPU para a memória.
- Registos de instruções – guarda o código da operação da instrução no ciclo da máquina.
- Palavra de estado do programa – guarda informação sobre o programa que esta a executar e esta encarregue também de tratar das interrupções.
A sequência de passos de execução de instruções num CPU são:
- Instruções aritméticas e lógicas – esta encarregue de realizar as operações binárias num resultado único.
- Instruções de movimento de dados – efectua uma cópia dos dados de umalocalização para a outra.
- De um modo geral os dados podem mover-se de:
- Registo a registo
- Registo a memória.
- Memória a registo.
- Memória a memória.
- De um modo geral os dados podem mover-se de:
- Operações de dados em blocos
- Instruções de controlo do programa
- Instruções de Entrada – Saída
Comentários»
No comments yet — be the first.