Programação em assembly

Slides:



Advertisements
Apresentações semelhantes
Introdução à Programação Engenharia da Computação
Advertisements

Programação em Java Prof. Maurício Braga
Um programa em C Bibliotecas Variáveis globais
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Linguagem de Programação VI Tipos de Dados Compostos - structs
Introdução à Programação usando Processing Programação Gráfica 2D Estrutura de Seleção Exercício Estrutura de Seleção 2º Semestre 2009 > PUCPR > Design.
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
SOFTWARE BÁSICO.
Aula 5 – Sumário Revisão da aula anterior Endereçamento indirecto
Assembly MAC-1 Implementação de ciclos Ciclo ‘while’ // Em Java : ...
Aula 4 – Sumário Linguagem assembly do MAC-1 A pilha
Programação para Engenharia I
TADS – Tipos Abstratos de Dados
Algoritmos e Programação Linguagens de Programação Teoria Aula 5 (05/05) Universidade Federal do Vale do São.
PROCEDIMENTOS COM RECURSIVIDADE
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Recursividade Inhaúma Neves Ferraz
Variáveis Dinâmicas Caixas de Nós
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Aula 4 Nomes, Vinculações, Tipos e Escopos
Ponteiros.
Lista Encadeada Circular Lista Duplamente Encadeada
Sobrecarga de nomes de rotinas Rotinas recursivas Invocação de rotinas
Arquitectura e Organização de Computadores
A arquitectura IA32 A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. Tamanho da palavra Número.
Programação em Assembly Optimização do código
Programação em Assembly Variáveis estruturadas
Programação em Assembly Procedimentos e funções
Arquitecturas RISC Programação em assembly
Y86: Definição da Arquitectura
Optimização do Desempenho: Técnicas Dependentes da Máquina
Listas Encadeadas.
Revisão da Linguagem C.
Classes e objetos Arrays e Sobrecarga
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
Análise Semântica e Representação Intermédia
Algoritmos de Ordenação 4
Programação Orientada a Objetos com Java
IAED Tagus, 2009/2010 Introdução à Programação em C (I)
PROGRAMAÇÃO ESTRUTURADA II
Aula 3©Universidade do Algarve 1 Do alto-nível ao assembly Compiladores, Aula Nº 3 João M. P. Cardoso.
Salas de Matemática.
AJProença, Sistemas de Computação, UMinho, 2013/141 Análise do código de gestão de uma função –invocação e regresso instrução de salto, mas com salvaguarda.
Lista Encadeada Circular Lista Duplamente Encadeada
PROGRAMAÇÃO I PONTEIROS.
Seminário 1: Revisão de C
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Linguagem de Montagem PROVA 4 – 3/12.
Hugo Calazans André Ricardo
Prof. Celso Cardoso Neto. (2) ALINHAMENTO Caso 1.
Interface entre as linguagens C e Assembly 8085
Vetores e Matrizes Ameliara Freire
1.
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Técnicas de Programação I Prof:. Msc. Arimatéia Junior Fortaleza-2011.
Listas Simplesmente Encadeadas
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
Procedimentos Registro de Ativação e Variáveis Locais 11 1.
Hugo Calazans André Ricardo
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.
ASSEMBLY – aula 2 Hugo Calazans
Linguagem de Programação
Suporte a funções e procedimentos no IA-32 (3)
Suporte a funções e procedimentos no IA-32 (3)
Suporte a funções e procedimentos no IA-32 (3)
Transcrição da apresentação:

Programação em assembly Variáveis escalares e controlo de fluxo IA32 AC1 – Programação em Assembly 1

IA32 – Variáveis escalares Contêm apenas um valor de um tipo de dados primitivo: caracter, inteiro, vírgula flutuante, etc. Podem ser alocadas na memória ou em registos. A utilização eficiente dos registos depende do compilador e do nível de optimização utilizado. As variáveis globais são alocadas na memória. O seu endereço só é determinado pelo linker. Em assembly aparecem referenciadas pelo seu nome. AC1 – Programação em Assembly 1

IA32 – Variáveis escalares int i, j; int main () { j=10; i = j * 4; } main: pushl %ebp movl %esp, %ebp movl $10, j ; j=10 movl j, %eax ; %eax=j sall $2, %eax ; %eax = j*4 movl %eax, i ; i=%eax leave ret leave  movl %ebp,%esp;popl %ebp AC1 – Programação em Assembly 1

IA32 – Variáveis Escalares int i, j, k; int main () { j = 10; k = 20; i = 100 + k/j; } main: pushl %ebp movl %esp, %ebp movl $10, j ; j=10 movl $20, k ; k=20 movl k, %eax ; %eax=k idivl j, %eax ; %eax = %eax/j addl $100, %eax ; %eax = %eax + 100 movl %eax, i ; i=%eax leave ret AC1 – Programação em Assembly 1

IA32 – if .. then .. else Optimização: k em %eax int i, j, k; main () { i = 5; j = 10; k = j * i; if (k<10) return (0); else return (1); } main: pushl %ebp movl %esp, %ebp movl $5, i ; i = 5 movl $10, j ; j = 10 movl j, %eax imull i, %eax ; %eax = j*i cmpl $10, %eax ; %eax – 10 jge else movl $0, %eax ; return (0) jmp fim_if else: movl $1, %eax ; return (1) fim_if: leave ret Optimização: k em %eax AC1 – Programação em Assembly 1

IA32 – for (.. ; .. ; ..) int i, ret; int main () { ret = 1; for (i=10;i>1;i--) ret = ret * i; return (ret); } main: pushl %ebp movl %esp, %ebp movl $1, ret ; ret = 1 movl $10, %eax ; i = 10 jmp teste ; necessário? ciclo: imull %eax, ret ; ret *= %eax decl %eax ; i-- teste: cmpl $1, %eax ; i > 1 ?? jg ciclo movl ret, %eax ; return (ret) leave ret Optimização: i em %eax AC1 – Programação em Assembly 1

Sumário Tema Hennessy [COD] Bryant [CS:APP] Variáveis escalares e controlo de fluxo Sec 3.6 AC1 – Programação em Assembly 1