Assembly IA32 Procedimentos
|
|
|
- André da Costa Tavares
- 9 Há anos
- Visualizações:
Transcrição
1 1 Procedimentos Assembly IA32 Procedimentos Uma chamada a um procedimento implica a transferência de dados (na forma de parâmetros do procedimento e na forma de valores retornados pelo procedimento) e do controlo de uma parte do programa para outra parte Além disso, deve ser reservado espaço para as variáveis locais do procedimento, no seu início, e libertado no seu fim A maioria das arquitecturas, incluindo a IA32, disponibilizam instruções base para a transferência do controlo de e para procedimentos A alocação e libertação de variáveis locais, bem como a passagem de dados, é conseguida através da utilização da program stack 11 Estrutura do Stack Frame Os programas suportados pela arquitectura IA32 usam a program stack para implementarem as chamadas a procedimentos A stack é usada para passar os respectivos argumentos aos procedimentos, para guardar valores de retorno, para guardar conteúdos de registos para posterior recuperação, e para armazenamento de variáveis locais A uma porção da stack reservada para um procedimento chamamos stack frame A figura 1 mostra a estrutura geral do stack frame O stack frame de topo é delimitado por dois apontadores, o registo %ebp, que funciona como frame pointer, e o registo %esp, que funciona como stack pointer O stack pointer pode ser deslocado à medida que o procedimento é executado e quando exista essa necessidade, daí que geralmente a informação contida na stack seja acedida relativamente ao frame pointer Base da Stack +4n+4 Argumento (n) a passar +8 Argumento (1) a passar +4 Endereço de retorno Frame Pointer %ebp %ebp (anterior) guardado -4 Outros registos guardados Variáveis locais e temporárias Frame do procedimento chamador Frame do procedimento chamado Incremento dos índices de endereçamento Stack Pointer %esp Argumentos a passar Topo da Stack Fig 1 (Estrutura do Stack Frame) PJSR - IPB Pág 1 Arquitecturas II 01/02
2 Considere que o procedimento P (o chamador) evoca o procedimento Q (o chamado) Os argumentos a receber por Q estão contidos no stack frame de P Quando P chama Q, o endereço de programa, no qual, após término de Q, a execução deve prosseguir, é colocado (pushed) na stack, constituindo o último elemento do stack frame de P O primeiro elemento do stack frame de Q guardará o valor do frame pointer de P, uma vez que %ebp deixará de apontar o stack frame de P, para apontar o stack frame de Q Os elementos, do stack frame, situados imediatamente a seguir, poderão guardar valores de outros registos O procedimento Q também poderá usar a stack para variáveis locais que não possam ser guardadas em registos Isto pode ocorrer pelas seguintes razões: Não existem registos suficientes para todas as variáveis locais; Algumas variáveis locais são arrays ou estruturas, daí que tenham de ser acedidas através de referências; O operador de endereço & encontra-se aplicado a uma variável local, assim terá que ser conhecido o endereço da posição de memória que a suporta (não pode ser um registo) Os últimos elementos do stack frame de Q irão guardar argumentos para procedimentos que Q poderá chamar Como descrito atrás, o crescimento da stack faz-se no sentido das menores posições de memória, ficando o registo %esp a apontar para o elemento de topo da stack Os elementos podem ser introduzidos e retirados através das instruções pushl e popl Espaço para dados, sobre os quais ainda não se conhece o seu conteúdo, pode ser reservado na stack, decrementando o stack pointer (%esp) de acordo com o espaço a alocar Similarmente, esse mesmo espaço poderá ser libertado através do incremento do stack pointer 12 Transferência do controlo As instruções que suportam as chamadas e os retornos de procedimentos são as seguintes: Instrução call Label call * Operand Leave Ret Descrição Chama um procedimento Chama um procedimento Prepara a stack para o retorno retorna a partir do procedimento chamado A instrução call tem um parâmetro que indica o endereço da instrução onde o procedimento chamado inicia Tal como nas instruções de salto, a chamada poderá ser directa ou indirecta No código em assembly, o alvo de uma chamada directa é indicado por um label, enquanto que numa chamada indirecta, o alvo é dado por um operando precedido por um * PJSR - IPB Pág 2 Arquitecturas II 01/02
3 A execução da instrução call provoca a adição de um novo elemento ao stack frame do procedimento chamador Este novo elemento contém o endereço de programa (endereço de retorno) a atingir depois de o procedimento chamado terminar Além disto, call faz com que o fluxo de programa passe para o início (primeira instrução) do procedimento chamado O endereço de retorno é o endereço da instrução imediatamente a seguir à instrução de call (contidos no procedimento chamador) A instrução ret retira(pop) o elemento (último endereço de retorno) do stack frame do procedimento chamador e salta para a posição de programa indicada por este O objectivo da instrução leave consiste na preparação da stack de forma a que o stack pointer aponte para o elemento da stack onde a anterior instrução call guardou o endereço de retorno Desta forma, a instrução leave pode ser usada para preparar a stack para a operação de retorno No entanto, o mesmo pode ser feito com a seguinte sequência de código: 1 movl %ebp,%esp desloca o valor do stack pointer para o início do frame (do pchamado) 2 popl %ebp repõe em %ebp o início do frame chamador e decrementa uma posição ao %esp, assim este aponta agora para o final do stack frame do procedimento chamador 13 Convenção sobre a utilização dos registos O conjunto dos registos de programa actua como um único recurso partilhado por todos os procedimentos Embora apenas um procedimento possa estar activo a cada instante, temos que garantir que, quando um procedimento (chamador) chama outro (chamado), este não destrua os valores guardados nos registos que o chamador pretende ainda usar a seguir Por este motivo, na arquitectura IA32 adoptou-se uma convenção para a utilização dos registos Esta terá que ser respeitada por todos os procedimentos Por convenção, registos %eax, %edx e %ecx estão classificados como registos guardados pelo procedimento chamador (caller save registers) Quando o procedimento Q é chamado por P, Q pode perder o valor guardado nesses registos sem correr o risco de destruir dados requeridos por P Por outro lado, os registos %ebx, %esi, e %edi estão classificados como registos guardados pelo procedimento chamado (callee save registers) Isto significa que Q terá de guardar os valores destes registos na stack, antes de os poder utilizar, para que posteriormente possam ser repostos e utilizados pelo procedimento chamador Considere a seguinte situação: int P( ) int x = f(); /* executa uma qualquer tarefa */ Q(); return x; O procedimento P necessita que o valor computado para x se mantenha válido após a evocação do procedimento Q Se x está num caller save register, então P(o chamador) tem que guardar o valor contido no registo, antes da evocação de Q, e repô-lo depois de Q terminar Se x está num callee save register, e Q(o chamado) necessita de usar o registo, então Q tem que guardar o valor antes de usar o registo e restitui-lo antes de retornar para P Em qualquer dos casos o acto de guardar o valor do registo passa por PJSR - IPB Pág 3 Arquitecturas II 01/02
4 copiá-lo (push) para a stack, enquanto que a recuperação do valor passa por removê-lo (pop) da stack para o registo Considere o seguinte exemplo: int P(int x) int y = x*x; int Z = Q(y); return y + z; O procedimento P estabelece um valor para y antes da chamada a Q, mas deve também assegurar que o valor de y continue o mesmo depois de Q retornar Isto pode ser feito de uma das duas seguintes maneiras: Guardar o valor de y no seu próprio stack frame, antes de chamar Q Quando Q retorna, P pode recuperar o valor de y através da stack Guardar o valor de y num callee save register Se Q, ou qualquer procedimento chamado por Q, necessita de usar esse registo, tem então que guardar o valor contido no registo no seu stack frame e recuperá-lo antes de retornar ao procedimento evocador Assim, quando Q retornar para P, o valor de y encontrar-se-á no callee save register, ou porque o registo nunca foi alterado ou porque o seu conteúdo foi guardado e reposto O mais frequente é o GCC usar esta última convenção, já que tende a reduzir o número total de acessos à stack 14 Um exemplo: int swap_add(int *xp, int *yp) int x = *xp; int y = *yp; *xp = y; *yp = x; return x + y; int caller() int arg1 = 534; int arg2 = 1057; int sum = swap_add(&arg1, &arg2); int diff = arg1 arg2; return sum * diff; Fig 2 PJSR - IPB Pág 4 Arquitecturas II 01/02
5 Stack Frame do caller %ebp 0 %ebp (ant) guardado -4 arg2-8 arg1-12 &arg2 %esp -16 &arg1 Stack Frame do caller +12 yp (= &arg2) +8 xp (= &arg1) +4 endereço de retorno %ebp 0 %ebp (ant) guardado %esp -4 %ebx guardado Stack Frame do swap_add Fig 3 Considere os procedimentos escritos em C apresentados na figura 2 A figura 3 mostra os stack frame para os dois procedimentos Observe que swap_add retira os valores dos seu argumentos a partir do stack frame do procedimento caller Estas localizações são obtidas por deslocamento relativo ao frame pointer localizado em %ebp Os números colocados na parte esquerda dos frames representam os deslocamentos de endereço relativo ao frame pointer A stack frame do caller inclui elementos que guardam os valores das variáveis arg1 e arg2, nas posições 8 e 4 relativamente ao frame pointer Estas variáveis têm que estar guardadas na stack (e não em registos), já que temos que saber os endereços delas O seguinte código em assembly, obtido da compilação do caller, mostra como este chama swap_add 1 leal 4(%ebp), %eax Obtém o endereço de arg2 2 pushl %eax Guarda na stack &arg2 3 leal 8(%ebp), %eax Obtém o endereço de arg1 4 pushl %eax Guarda na stack &arg1 5 call swap_add Chama a função swap_add Observe neste código a obtenção do endereço das variáveis locais arg2 e arg1 (através da instrução leal) e o seu armazenamento na stack Só depois é que swap_add é evocado O código resultante da compilação de swap_add é formado por três partes: o setup, onde o stack frame é iniciado; o body, onde a computação inerente ao procedimento é executada; e o finish, onde o estado da stack é recuperado (adquire o estado anterior à chamada de swap_add) e o procedimento retorna O código seguinte representa o setup do procedimento swap_add De notar que a instrução call inseriu um elemento na stack, cujo conteúdo é o endereço de retorno 1 swap_add: 2 pushl %ebp Guarda o %ebp que aponta p/ frame de caller 3 movl %esp,%ebp Coloca %ebp como frame pointer de swap_add 4 pushl %ebx Guarda %ebx na stack (adiciona uma unidade a %esp) PJSR - IPB Pág 5 Arquitecturas II 01/02
6 O procedimento swap_add necessita usar o registo %ebx Sendo %ebx um callee save register, o procedimento swap_add tem que guardar o seu valor antes de poder usá-lo e fá-lo no setup adicionando um elemento à stack O código seguinte representa o body do procedimento swap_add: 1 movl 8(%ebp), %edx Coloca xp em %edx 2 movl 12(%ebp), %ecx Coloca yp em %ecx 3 movl (%edx), %ebx x = *xp 4 movl (%ecx), %eax y = *yp 5 movl %eax, (%edx) Guarda y em *xp 6 movl %ebx, (%ecx) Guarda x em *yp 7 addl %ebx, %eax Estabelece o valor de retorno = x + y Neste código podemos ver que o procedimento swap_add obtém os valores dos seus argumentos a partir do stack frame do procedimento caller Daí que os valores de deslocamento sobre %ebp actual (stack frame do caller) sejam +12 e +8 e não 12 e 16 como acontecia com o valor de %ebp anterior (stack frame do swap_add) Observe que a soma sobre as variáveis x e y é guardada em %eax, este registo é usado na transferência do valor (ex: inteiros; apontadores) devolvido O código seguinte representa o finish do procedimento swap_add: 1 popl %ebx Repõe %ebx 2 movl %ebp, %esp Repõe %esp 3 popl %ebp Repõe %ebp 4 ret Retorna para caller Este código recupera os valores de três registos %ebx, %esp e %ebp, a seguir executa a instrução ret Repare que as instruções 2 e 3 podem ser substituídas pela instrução leave Diferentes versões do GCC apresentam diferentes escolhas neste âmbito A seguinte linha de código aparece imediatamente a seguir à instrução que chama swap_add: 1 movl %eax, %edx Depois de retornar do procedimento swap_add, caller prossegue a execução neste procedimento, copiando o conteúdo de %eax (valor devolvido) para o registo %edx PJSR - IPB Pág 6 Arquitecturas II 01/02
A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.
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 de registos visíveis Número de operandos Endereçamento
Programando em Assembly
Programando em Assembly precisa-se saber exatamente como interpretar & gerenciar a memória e como usar instruções de baixo nível para o processamento Não existem tipos e variáveis (apenas bytes na memória)
CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados
CPU CPU Unidade Central de Processamento Função: leitura, escrita e processamento de dados Constituída por: dispositivos que gerem a entrada (leitura) e saída (escrita) de dados; registos (memórias auxiliares)
Estrutura do tema ISA do IA-32
Análise do Instruction Set Architecture (2) Acesso a operandos no IA-32: sua localização e modos de acesso Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos
Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -
Microprocessadores I ELE 1078 Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS - 9.1 - Grupos de Instruções As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência
Computadores e Programação (MAB-353) Primeira Prova -Prof. Paulo Aguiar (DCC/UFRJ) 19/05/ pontos
Computadores e Programação (MAB-353) Primeira Prova -Prof. Paulo Aguiar (DCC/UFRJ) 19/05/2015-100 pontos Nome: GABARITO (revisado) Questão 1 (20 pontos) Preencha os pontilhados do código C com variável
Sumário. Sistemas Operativos 1
Sumário Requisitos mínimos do hardware para suportar um SO protegido (ex: Windows/Linux) Mecanismos hardware de suporte nas arquitecturas x86/x64 Sequência de chamada de serviços sistema no Windows a 32
Exceções no Fluxo de Execução: Interrupções e Traps
Exceções no Fluxo de Execução: Interrupções e Traps 1 Fluxo de Controle Fluxo de controle de um programa: a 0 a 1 a 2 a n sequência de endereços I 0 I 1 I 2 I n sequência de instruções O fluxo mais simples
Fluxo de Execução em Assembly
Fluxo de Execução em Assembly A forma natural de execução de um programa é sequencial: CPU busca instruções na memória em endereços sequenciais Instruções de desvio de assembly servem para quebrar a execução
Ordem de Bytes: Big Endian e Little Endian
Ordem de Bytes: Big Endian e Little Endian Dependendo da máquina que se usa, tem de se considerar a ordem pela qual os números constituídos por múltiplos bytes estão armazenados. As ordem são duas: big
Procedimentos e Gestão de Subrotinas
5 Procedimentos e Gestão de Subrotinas Wait a minute, Doc. Are you telling me you built a time machine out of a DeLorean? Marty McFly para o Dr. Brown no filme de 1985, Back to the future O desenho de
Estruturas de controlo do C if-else statement
Análise do Instruction Set Architecture (3) Alteração do fluxo de execução de instruções Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos e operações
PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR
PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR Introdução Instruções são representadas em linguagem de máquina (binário) E x i s t e m l i n g u a g e n
AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 05: Prof. Max Santana Rolemberg Farias [email protected] Colegiado de Engenharia de Computação O QUE SÃO PROCEDIMENTOS? Procedimentos são um conjunto
Organização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Linguagem de Montagem Slide 1 Operações Lógicas Embora os primeiros computadores se concentrassem em words completas, logo ficou claro que era útil atuar sobre
Assembly do IA-32 em ambiente Linux
MIEI: Sistemas de Computação 2015/16 Assembly do IA-32 em ambiente Linux Trabalho para Casa: TPC6 Alberto José Proença Objectivo A lista de exercícios propostos em TPC6 para resolução antes e durante a
A linguagem ASSEMBLY
A linguagem ASSEMBLY Assembly é uma linguagem de baixo nível, chamada freqüentemente de linguagem de montagem É uma linguagem considerada difícil, principalmente porque o programador precisa conhecer a
Testando o Teorema de De Morgan
Pedro Garcia http://www.sawp.com.br 04 de Fevereiro de 2010 Assembly Working Party Laboratório de Cálculos Científicos, Instituto de Física, Universidade de Brasília, Brasil O Teorema Teorema de De Morgan
Sistemas Operacionais. Pilha de Execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.
Eecução 17-29 - Volns Bernal 1 17-29 - Volns Bernal 2 Agenda Volns Borges Bernal [email protected] http://www.lsi.u.br/~volns Os problemas Controle do endereço de orno da função Controle do quadro da pilha
Escreva um programa em código assembly correspondente ao seguinte programa C.
Exercício 11.1 Escreva um programa em código assembly correspondente ao seguinte programa C. cont=0; for (n=0; n
CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)
CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP) 1 LINGUAGENS Conhecida pelo PROCESSADOR Conhecida pelo Usuário COMPILADOR LINGUAGEM DE ALTO NÍVEL LINGUAGEM ASSEMBLY 2 INSTRUÇÕES EM ASSEMBLY Para programar
Lab. de Programação Concorrente em Física Primeira Prática
Lab. de Programação Concorrente em Física Primeira Prática Paulo Matias 5626309 24 de agosto de 2009 1 Introdução Nesta prática, avaliaremos a importância de se utilizar bons algoritmos e de otimizar o
Microcontrolador Assembly UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Assembly 8051 Num sistema microprocessado, geralmente, não existe um sistema operacional; O programa desenvolvido pelo programador deve cuidar tanto da lógica do programa, bem como da configuração e acesso
Conjunto de Instruções. Prof. Leonardo Barreto Campos 1
Conjunto de Instruções Prof. Leonardo Barreto Campos 1 Sumário Introdução; CISC; RISC; MIPS; Representação de Instruções; SPIM; Prof. Leonardo Barreto Campos 2/58 Sumário Operações Lógicas; Instruções
Memória. Função: armazenamento de dados e instruções h FFFF FFFE h FFFF FFFF h byte.
Memória Função: armazenamento de dados e instruções Estrutura Lógica: Endereço Conteúdo 0000 0000 h 1010 0010 0256 0A20 h 1101 1100 0D63 52E2 h 0011 1111 0D63 52E3 h 0110 1001 FFFF FFFE h 0111 0101 FFFF
Linguagem de Montagem e Assembly. André Luiz da Costa Carvalho
Linguagem de Montagem e Assembly André Luiz da Costa Carvalho Linguagem de Montagem Todo programa para ser executado precisar ser convertido de linguagem fonte (alto nível) para um programa equivalente
Linguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior [email protected] Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
CONJUNTO DE INSTRUÇÕES
CONJUNTO DE INSTRUÇÕES 1 CARACTERÍSTICAS DE INSTRUÇÕES DE MÁQUINA Quando um programador usa uma linguagem de alto-nível, como C, muito pouco da arquitetura da máquina é visível. O usuário que deseja programar
Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo
Nível da Arquitetura do Conjunto de Instruções Ronaldo de Freitas Zampolo Tópicos Introdução Visão geral do nível ISA Tipos de dados Formatos de instruções Endereçamento Tipos de instruções Fluxo de controle
Linguagem de Montagem Assembly
Linguagem de Montagem Assembly Especificações O programa em Assembly Fica sobre a camada do Sistema Operacional Efetua chamadas ao Sistema Operacional O montador Chama-se Assembler Traduz a linguagem de
Sistemas Embebidos I , Tiago Miguel Dias ISEL, ADEETC - Secção de Electrónica e Telecomunicações e de Computadores
Sistemas Embebidos I Licenciatura em Eng. de Electrónica e Telecomunicações e de Computadores Licenciatura em Engenharia Informática e de Computadores Mestrado em Engenharia de Electrónica e Telecomunicações
Conjunto de Instruções (ISA) I
Conjunto de Instruções (ISA) I José Costa Introdução à Arquitetura de Computadores Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 2013-10-16 José Costa (DEI/IST) Conjunto de Instruções
ARQUITETURA DE COMPUTADORES INTRODUÇÃO
CURSO TÉCNICO DE REDES DE COMPUTADORES Disciplina de Arquitetura de Computadores Juliana Cristina dos Santos ARQUITETURA DE COMPUTADORES INTRODUÇÃO Processamento de Dados Computador máquina capaz de coletar,
Arquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Linguagem de Montagem e Linguagem de Máquina Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha [email protected] Conceitos básicos Linguagem/código
SCC Capítulo 2 Recursão
SCC-501 - Capítulo 2 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis
CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)
CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP) 1 LINGUAGENS Constituída de seqüência de zeros (0) e uns (1) Cada instrução em ASSEMBLY constitui-se em um mnemônico (uma forma fácil de se lembra) de uma
Um Exemplo de Nível ISA: o IJVM. Pilhas. Pilhas. O Modelo de Memória da IJVM. Pilhas de Operandos. Nível ISA
Ciência da Computação Arq. e Org. de Computadores Nível ISA Prof. Sergio Ribeiro Um Exemplo de Nível ISA: o IJVM Objetivo: Introduzir um nível ISA (Instruction Set Architecture), a ser interpretado pelo
Assembly x86. Hugo Bessa - hrba Paulo Serra Filho ptvsf
Assembly x86 Hugo Bessa - hrba Paulo Serra Filho ptvsf Roteiro Assembly Assemblers Sections Registradores Registradores de Segmentos Principais Operações do NASM Funcões e Macros Interrupções Compilando
Execução detalhada de instruções
LEI Sistemas de Computação 2014/15 Execução detalhada de instruções TPC3 + Guião Teatral Alberto José Proença ------------------------------------------------------------------------------------------------------------------------------------------------
Registradores. Os processadores possuem espaços específicos onde são guardados valores, os chamados registradores.
Os processadores possuem espaços específicos onde são guardados valores, os chamados registradores. Esses espaços são parecidos com variáveis de uma linguagem de programação de alto nível, onde se guarda
Tópicos: 1 - Modos de endereçamento do Pilha e instruções de Pilha. 3 - Instruções que usam pilha: - instrução CALL - instrução RET
Tópicos: 1 - Modos de endereçamento do 8051 2 - Pilha e instruções de Pilha 3 - Instruções que usam pilha: - instrução CALL - instrução RET 4 - Interrupção 1 - Modos de Endereçamento do 8051 Os modos de
Execução detalhada de instruções
MIEI Sistemas de Computação 2015/16 Execução detalhada de instruções TPC4 + Guião Teatral Alberto José Proença ------------------------------------------------------------------------------------------------------------------------------------------------
Programação 11543: Engenharia Informática 6619: Tecnologias e Sistemas de Informação. Cap. 8 Endereçamento de Memória Endereçamento de Memória
Programação 11543: Engenharia Informática 6619: Tecnologias e Sistemas de Informação Cap. 8 Endereçamento de Memória Endereçamento de Memória Sumário: O que nós já sabemos sobre endereçadores (ou apontadores
Computadores e Programação (DCC/UFRJ)
Computadores e Programação (DCC/UFRJ) Aula 6: 1 2 3 A necessidade dos programadores escreverem código em linguagem de montagem tem mudado ao longo dos últimos anos: de um programador capaz de escrever
EEC2104 Microprocessadores
EEC2104 Microprocessadores Edição 2005/2006 Arquitectura de um microprocessador básico (Qual o hardware necessário para executar instruções e poder chamar subrotinas?) Uso da memória Guardar instruções
Capítulo 4 Nível da microarquitetura
Capítulo 4 Nível da microarquitetura Nível acima da lógica digital Função: Implementar a ISA (Instruction Set Architecture) O projeto da microarquitetura depende diretamente da ISA, além dos objetivos
SCC Algoritmos e Estruturas de Dados I
SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Lembrem...TADs são tipos definidos em termos de seu comportamento e não de sua representação (que pode variar na busca de eficiência) 12/8/2010 Pilha
Símbolos e abreviaturas utilizadas na descrição das instruções
Símbolos e abreviaturas utilizadas na descrição das instruções acumulador registo A addr endereço de 16 bits data quantidade de 8 bits data 16 quantidade de 16 bits byte 2 segundo byte da instrução byte
MICROPROCESSADORES 2º TESTE - A
MICROPROCESSADORES 2º TESTE - A Ano Lectivo: 2005/2006 Data: 8 de Maio de 2006 Ano Curricular: 1º Ano 2º Semestre Duração: 2h00 INFORMAÇÕES GERAIS 1. Identifique todas as folhas do enunciado com nome e
Compiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Revisão da Linguagem C Prof. Evandro L. L. Rodrigues
SEL0433 Aplicação de Microprocessadores I Revisão da Linguagem C Prof. Evandro L. L. Rodrigues Estrutura de um programa C Diretivas de pré processamento Declaração de variáveis globais Declaração de protótipos
Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO
Linguagem de Montagem Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO 1 Introdução Independente da linguagem de programação utilizada, todo programa
