Programação em Assembly Variáveis estruturadas

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Arquitetura de Computadores
Désiré NGuessan Programação II Estruturas de Dados
Aula 5 – Sumário Revisão da aula anterior Endereçamento indirecto
Assembly MAC-1 Implementação de ciclos Ciclo ‘while’ // Em Java : ...
Alocação Dinâmida de Memória
SSC541 - SISTEMAS OPERACIONAIS I Aula 13 – Gerenciamento de Memória
Estruturas de Dados e Algoritmos
LPG - I: Alocação Dinâmica de Memória - Ponteiros
Organização da Memória Principal
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aula 8 Orientação à Objetos
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Escola Secundária c/ 3º CEB da Batalha
Introdução a Linguagem de Programação C
1MF. Vectores Tipo de dado usado para representar um CONJUNTO de dados do um mesmo tipo Estrutura de dados homogénea unidimensional Ex: Ler a nota de 3.
Programação em Assembly Optimização do código
Programação em Assembly Procedimentos e funções
Arquitecturas RISC Programação em assembly
Programação em assembly
Listas Encadeadas.
Apontadores ou Ponteiros
Arquitetura de Sistemas Operacionais – Machado/Maia 10/1 Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Capítulo 10 Gerência.
PROGRAMAÇÃO I UNIDADE 1.
Alocação Dinâmica de Memória
Aula 3 Vetores e Listas. Arrays (vetores) Array – sequência de elementos do mesmo tipo. Tamanho do Array – seu número de elementos (número fixo) Consequência:
Estruturas de Dados Aula 5: Matrizes
Organização e Arquitetura de Computadores
Vetores e Matrizes Ameliara Freire
Capítulo VIII Ambientes de Execução
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
8088 Assembly Software Básico Mitsuo Takaki.
Procedimentos Registro de Ativação e Variáveis Locais 11 1.
Processador MAC-1 Arquitectura.
Existem 8 registos principais de 32 bits no processador (existem mais como %EIP): %EAX %EBX %ECX %EDX %ESI %EDI %EBP %ESP Os registos são armazenados em.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
IA889 – Sistemas de Cognição Artificial
Elementos de máquinas II
Funções trigonométricas
COMO SE PREPARAR PARA O ENEM?
Análise económica e financeira das entidades privadas Bloco I
Reabilitação Estrutural de Edifícios
2.3. Composição quantitativa de soluções
Destilação Binária Método de McCabe - Thiele
Frederico Rocha Um olhar sobre os esforços tecnológicos dos fornecedores do setor de petróleo e gás Frederico Rocha
Probabilidade e Estatística Aplicadas à Contabilidade I
Organização Celular dos Seres Vivos
47º CONGRESSO NACIONAL DE SANEAMENTO DA ASSEMAE
Capítulo 23 TERMODINÂMICA
Quando o Superfaturamento é legal ...
1 Construção de uma pilha. APL 1 - Construção de uma pilha com determinada diferença de potencial elétrico.
Processos Hidrológicos CST 318 / SER 456 Tema 8 -Métodos estatísticos aplicados à hidrologia ANO 2017 Camilo Daleles Rennó Laura De Simone Borma
O Debate sobre a Estagnação Secular
Principles of Maritime Trade
Projetos de Redes de Computadores
Ramo da eletricidade que estuda as cargas em movimento.
Professor Rodrigo Menezes
Professor Renato Madeira
Técnicas Aplicadas ao Seis Sigma
Atividade Estatística Educacional 2017
Prof. Ionildo José Sanches
Métricas de Desenvolvimento e Custo de Software
AULA 4 – LENTES ESFÉRICAS
Nome: Barbara Hass Disciplina Análise Espacial
Sejam todos bem-vindos!
Avaliação de Impacto Experimental: Teoria e Prática
ETE BOSQUE DAS PALMEIRAS
Disciplina: Economia Internacional
FM 05 Vetores.
Tributação e meio ambiente – aula 4 Cátedra Escolhas: Economia e Meio Ambiente Bernard Appy Março/abril de 2017.
Transcrição da apresentação:

Programação em Assembly Variáveis estruturadas IA32 AC1 – Programação em Assembly 2

Variáveis estruturadas Variáveis estruturadas são compostas por conjuntos de variáveis escalares. Exemplos: array unidimensional – vector de variáveis escalares estrutura – várias variáveis escalares e/ou vectoriais encapsuladas O tamanho destas variáveis inviabiliza o seu armazenamento em registos. Afectação em memória AC1 – Programação em Assembly 2

Espaço de Endereçamento Um processo é a abstracção do sistema operativo para um programa em execução. Cada processo tem um espaço de endereçamento virtual, que vê como se fosse físico e exclusivamente seu. Este espaço de endereçamento é dividido em várias secções lógicas que incluem o código, dados estáticos, dados dinâmicos, stack, etc. Variáveis globais – dados estáticos Variáveis locais - stack AC1 – Programação em Assembly 2

Vectores unidimensionais int array[5]; Endereço base – início do array Endereço base Factor de escala Factor de escala – número de bytes de cada elemento do array array[4] array[3] Índice – número do elemento do array ao qual se pretende aceder Deslocamento – valor a somar ao endereço base para aceder ao elemento do array = índice*factor de escala Desloca mento array[2] array[1] array[0] Exemplo: &array[3] = base+3*factor de escala AC1 – Programação em Assembly 2

IA32 – vectores unidimensionais int array[100]; int main () { int i; for (i=0;i<100;i++) array[i] = 10; } main: pushl %ebp movl %esp, %ebp movl $0, %eax ; i = 0 movl $array, %edx ; %edx=&array jmp teste ciclo: ; array[i] = 10 movl $10,(%edx, %eax, 4) incl %eax ; i++ teste: cmpl $100, %eax ; i < 100 ? jl ciclo leave ret array – global i - %eax AC1 – Programação em Assembly 2

IA32 – vectores unidimensionais char a[100], b[100]; int main () { int i; for (i=0;i<100;i++) a[i] = b[99-i]; } main: pushl %ebp movl %esp, %ebp movl $0, %eax ; i = 0 movl $a, %edx ; %edx = &a movl $b, %ecx ; %ecx = &b jmp teste ciclo: movl $99, %esi subl %eax, %esi ; %esi = 99-i ; %bl = b[99-i] movb (%ecx, %esi), %bl ; a[i] = %bl movb %bl, (%edx, %eax) incl %eax ; i++ teste: cmpl $100, %eax jl ciclo leave ret a, b – globais i - %eax NOTA: A utilização de %ebx e %esi viola a convenção de utilização de registos. Ver 7ª aula AC1 – Programação em Assembly 2

IA32 – vectores unidimensionais struct { int t; int n; } array[100]; int main () { int i; for (i=0;i<100;i++) { array[i].t = 10; array[i].n = -i; } main: pushl %ebp movl %esp, %ebp movl $0, %eax movl $array, %edx jmp teste ciclo: movl $10,(%edx, %eax, 8) movl %eax, %ecx negl %ecx ; %ecx = -i movl %ecx,4(%edx, %eax, 8) incl %eax teste: cmpl $100, %eax jl ciclo leave ret array[?].n array[?].t 8 bytes 4 AC1 – Programação em Assembly 2

IA32 – vectores unidimensionais (uso de apontadores) int a[100]; int main () { int i; for (i=0;i<100;i++) a[i] = 10; } main: pushl %ebp movl %esp, %ebp movl $0, %eax ; i=0 movl $a, %edx ; %edx=&a jmp teste ciclo: movl $10,(%edx) ; a[i]=10 addl $4, %edx incl %eax ; i++ teste: cmpl $100, %eax jl ciclo leave ret a – global i - %eax AC1 – Programação em Assembly 2

Sumário Tema Hennessy [COD] Bryant [CS:APP] Sec 3.3 e 3.5 Sec 3.11 Variáveis estruturadas Sec 3.3 e 3.5 Sec 3.11 Sec 3.8 a 3.8.3 Sec. 3.9.1 AC1 – Programação em Assembly 2