Computador Cleópatra Programação Assembly e Alto Nível

Slides:



Advertisements
Apresentações semelhantes
TRATAMENTO DE ARQUIVOS EM C
Advertisements

Complexidade de Algoritmos Recursivos
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Vetores Pseudo C Tipo <nome> :: vet[lim_ini..lim_fim]
Funções em C.
Listas encadeadas Prof. Rosana Palazon.
Algoritmos de manipulação de estruturas elementares de dados
Aula 5 – Sumário Revisão da aula anterior Endereçamento indirecto
TADS – Tipos Abstratos de Dados
Grupo de Sistemas Embarcados (GSE)
LPG - I: Alocação Dinâmica de Memória - Ponteiros
Ponteiros em C.
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo II Confecção de Tabelas.
Cronograma de SCII - 2o. Ano de STPD - Profs. Fátima e Paulo
Ponteiros em Linguagem C
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Vetor de Ponteiros Exemplo de Alocação. Escrever Vetor de Vetores de floats int main() { int i, k, n; float **vetor; // vetor de vetores int *tamanho;
Circuitos Combinacionais Portas Lógicas
Projeto de Somador com e sem Sinal
Cálculo da Freqüência de Operação do Relógio
Máquina de Estados Finito
Exercícios Referentes à Prova P2
Circuitos Seqüenciais Descrição VHDL
Circuitos Combinacionais Básicos Descrição VHDL
PROGRAMAÇÃO ESTRUTURADA II
Do alto-nível ao assembly
Circuitos Seqüenciais Contadores
Comunicações do Bloco de Controle para Bloco de Dados e Memória
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Qualificadores.
Projeto de um Comparador Descrição Estrutural x Comportamental
Arquitetura Cleópatra Bloco de Controle (Instruções e Microinstruções)
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Descrição de Atrasos.
Circuitos Seqüenciais
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Computador Cleópatra Arquitetura e Programação.
Exercícios de Máquinas de Estado
Exercícios Referentes à Prova P1
Computador Cleópatra Formato de Instrução e Codificação
Diagramas de Blocos e Descrição VHDL
Desempenho, Método de Shell, Quicksort
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Projeto de Circuito Combinacional Unidade Lógica e Aritmética (ULA)
PROGRAMAÇÃO I PONTEIROS.
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Memórias.
Arquiteturas Von Neumann e Harvard Computador Cleópatra
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Prof. Ricardo Santos PONTEIROS
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014
Circuitos Combinacionais Exercícios 2 POSCOMP e ENADE
Prof.: Edson Holanda Teoria da computação
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VII Variáveis Indexadas Numéricas.
Introdução a Organização e Arquitetura de Computadores
Circuitos Combinacionais Básicos Descrição VHDL
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Arquitetura Cleópatra Bloco de Controle.
Arquiteturas Von Neumann e Harvard Computador Cleópatra
Ciclos for, while e do...while
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IX Subprogramação e Recursividade.
Introdução à Linguagem VHDL
Profa. Patrícia A. Jaques
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Exercícios Circuitos Descritos em VHDL.
PONTEIROSPONTEIROS REVISÃO. Ponteiros Ponteiros representam endereços de memória Existem os ponteiros constantes e os ponteiros variáveis. Variáveis do.
Programação de Computadores I – Ponteiros Profa. Mercedes Gonzales Márquez.
Linguagem de Programação
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
Fundamentos de Programação 1
[ a r q u i t e t u r a s u s t e n t á v e l ] Professor: Flávio Silvério Arquitetura e Urbanismo FACSUM - Faculdade do Sudeste Mineiro Atividade Prática.
Transcrição da apresentação:

Computador Cleópatra Programação Assembly e Alto Nível

Descrição de Vetores Implementação de vetores na Cleópatra deve ser realizada com ponteiros  modo de endereçamento indireto Exemplo: Codifique o programa C abaixo, para o assembly da arquitetura Cleópatra. O programa DEVE ter todos os modos de endereçamento definidos na arquitetura. Comente todas as linhas do assembly para identificar o efeito de cada uma na arquitetura alvo #define TAM_VET 4 int cont = 0; int vet[TAM_VET] = {0, 0, 0, 0}; void main() { while(cont < TAM_VET) vet[cont] = cont + 3; cont++; }

Descrição de Vetores .code Enquanto: lda cont ; AC <- cont not add #1 ; AC <- (-cont) add #4 ; AC <- (4-cont) e C, V, N e Z setadas jn Continua ; Se (cont < 4) PC <- Continua, senão PC++ jmp Fim,R ; PC <- Fim (relativo) Continua: add #3 ; AC <- cont + 3 sta p,I ; *p <- AC, ou seja, vet[cont] <- AC; lda p ; + add #1 ; | sta p ; +--> p++ lda cont ; + sta cont ; ---> cont++ jmp Enquanto ; PC <- Enquanto Fim: hlt .endcode .data cont: db #0 p: db #vet vet: db #0, #0, #0, #0 .enddata

Descrição de Funções Chamadas de função requerem o salvamento do endereço subseqüente ao da chamada, para que este seja recuperado no retorno da função Na Cleópatra, a chamada a função é feita pela instrução JSR ENDEREÇO e o retorno é feito pela instrução RTS Exemplo: Fazer a função maior, que lê o maior de dois valores colocados nas variáveis A e B e retorna o resultado no AC (acumulador) int C, A = 7, B = 13; void main() { C = maior(); } int maior() if(A > B) return A; return B;

Descrição de Funções .code main: ; void main() { jsr maior ; | sta C ; +-> C = maior(A, B); hlt ; } maior: ; int maior() { lda A ; | not ; | add #1 ; | (-A) add B ; | (B – A) jn a_eh_maior ; +-> if(A > B) goto a_eh_maior lda B ; | rts ; +-> return B; a_eh_maior: ; | rts ; +-> return A; .endcode .data a: db #7 b: db #13 c: db #0 .enddata

Exercícios Fazer um programa que escreve o valor 0x3A em todas as posições de um vetor de 10 elementos Fazer um programa com as seguintes características/funcionalidades: (i) contém 3 vetores (A, B, C), cada qual com 6 posições; (ii) deve percorrer os vetores A e B pesquisando em cada índice, qual é o maior valor entre as posições de cada vetor (i.e. A[i] comparado com B[i]), sendo que este valor deve ser armazenado no índice equivalente do vetor C. Este programa deve ser feito inicialmente em C/Java e posteriormente convertido para o assembly da Cleópatra Faça o mesmo programa acima, só que agora utilizando uma chamada para função maior descrita anteriormente Dado o programa descrito em linguagem C/C++, obtenha uma descrição em linguagem da Cleópatra com funcionalidade equivalente int A[16], B[16]; int iguais = 0, k = 0; void main() { for(int i = 0; i < 4; i++) if(memcmp(&A[k], &B[k], 4) == 0) iguais++; k = k + 4; } int memcmp(int *v1, int *v2, int tam) { for(int i = 0; i < tam; i++) if(*v1 != *v2) return 1; v1++; v2++; } return 0;

Exercícios Apresente uma descrição equivalente em C/Java para o programa descrito a seguir em linguagem de montagem da Cleópatra .code lda m2 sta n21 lda m1 add #-1 sta m1 loop: sta n11 jsr soma16bits lda r1 sta n2 lda r11 jz fim jmp loop fim: hlt soma16bits: lda n1 add n2 sta r1 jc carry1 volta: lda n11 add n21 sta r11 jc carry jmp fim_soma16 carry: lda r1 add #01h fim_soma16: rts carry1: lda #01h sta c jmp volta .endcode .data n1: db #00h n11: db #00h n2: db #00h n21: db #00h c: db #00h r1: db #00h r11: db #00h m1: db #1Fh m2: db #3Fh .enddata