O documento descreve a linguagem assembly, incluindo:
1) Assembly é uma abstração simbólica da linguagem de máquina, mapeada diretamente em instruções de hardware.
2) Cada comando em assembly corresponde a uma instrução de máquina e permite acesso a todas as características do hardware.
3) Assembly é usado quando é necessário alto desempenho ou acesso direto ao hardware, como em drivers e partes críticas de aplicações.
[1] O documento descreve elementos básicos de algoritmos como variáveis, tipos de dados, operadores, funções e estruturas de controle.
[2] São apresentados tipos de dados como inteiro, real, caractere e lógico, e operadores aritméticos, relacionais e lógicos.
[3] Estruturas de controle como condicionais simples e compostas e repetições por condição e contagem são explicadas com exemplos de algoritmos.
O documento apresenta conceitos básicos sobre linguagem assembly, incluindo sua natureza como linguagem de baixo nível e não estruturada, além de exemplos de instruções e programas simples em assembly para realizar operações matemáticas e lógicas e manipulação de memória e pilhas.
O documento apresenta um curso de manutenção de computadores ministrado pelo professor Guilherme Nonino Rosa. A primeira aula inclui uma introdução ao curso, normas do laboratório, critérios de avaliação e uma breve história dos computadores desde as primeiras máquinas mecânicas de calcular até os computadores modernos.
Neste trabalho pretendo dar a conhecer a programação de Microprocessadores.
A tendência atual é a favor de uma programação mista, usando principalmente linguagens de mais alto nível (C em particular) e recorrendo à linguagem Assembly apenas em rotinas onde a eficiência do código seja o objetivo principal a atingir.
Disciplina: Arquitetura de Computadores
Este documento apresenta instruções básicas de saída em Visualg, incluindo escreva(), escreval() e limpatela(). A instrução escreva() imprime texto na tela, escreval() faz o mesmo e pula linha, e limpatela() limpa a tela. Exemplos de sintaxe e fluxogramas são fornecidos para cada instrução.
O documento discute o que é lógica. A lógica procura compreender como pensamos de forma técnica e ensina a usar as leis do pensamento corretamente. A lógica é considerada uma ciência que organiza o pensamento corretamente e é usada no cotidiano sem perceber. Algoritmos são sequências de passos para resolver problemas.
Este documento fornece instruções sobre programação em Assembly. Aborda os principais tópicos como registradores, instruções, estrutura de programas, criação de programas e exemplos.
[1] O documento descreve elementos básicos de algoritmos como variáveis, tipos de dados, operadores, funções e estruturas de controle.
[2] São apresentados tipos de dados como inteiro, real, caractere e lógico, e operadores aritméticos, relacionais e lógicos.
[3] Estruturas de controle como condicionais simples e compostas e repetições por condição e contagem são explicadas com exemplos de algoritmos.
O documento apresenta conceitos básicos sobre linguagem assembly, incluindo sua natureza como linguagem de baixo nível e não estruturada, além de exemplos de instruções e programas simples em assembly para realizar operações matemáticas e lógicas e manipulação de memória e pilhas.
O documento apresenta um curso de manutenção de computadores ministrado pelo professor Guilherme Nonino Rosa. A primeira aula inclui uma introdução ao curso, normas do laboratório, critérios de avaliação e uma breve história dos computadores desde as primeiras máquinas mecânicas de calcular até os computadores modernos.
Neste trabalho pretendo dar a conhecer a programação de Microprocessadores.
A tendência atual é a favor de uma programação mista, usando principalmente linguagens de mais alto nível (C em particular) e recorrendo à linguagem Assembly apenas em rotinas onde a eficiência do código seja o objetivo principal a atingir.
Disciplina: Arquitetura de Computadores
Este documento apresenta instruções básicas de saída em Visualg, incluindo escreva(), escreval() e limpatela(). A instrução escreva() imprime texto na tela, escreval() faz o mesmo e pula linha, e limpatela() limpa a tela. Exemplos de sintaxe e fluxogramas são fornecidos para cada instrução.
O documento discute o que é lógica. A lógica procura compreender como pensamos de forma técnica e ensina a usar as leis do pensamento corretamente. A lógica é considerada uma ciência que organiza o pensamento corretamente e é usada no cotidiano sem perceber. Algoritmos são sequências de passos para resolver problemas.
Este documento fornece instruções sobre programação em Assembly. Aborda os principais tópicos como registradores, instruções, estrutura de programas, criação de programas e exemplos.
O documento discute técnicas de detecção de avarias em computadores, listando os principais sintomas de problemas (não liga, liga sem imagem, trava), possíveis causas (fonte, placa de vídeo, memória) e métodos de resolução (configuração da BIOS, códigos de beep, substituição de componentes).
Barramento do Sistema - Arquitetura e Organização de ComputadoresWellington Oliveira
O documento descreve os principais componentes de um computador, incluindo a CPU, memória e dispositivos de E/S. Explica como esses componentes se conectam através de barramentos e como a CPU troca dados com a memória e E/S usando registradores. Também aborda o modelo de von Neumann e os ciclos de execução de instruções da CPU.
1) O documento descreve as etapas da inicialização de um sistema operacional, incluindo a execução do POST pela BIOS, a leitura do MBR pelo BIOS e o carregamento do núcleo do sistema operacional.
2) É explicado que o MBR contém informações sobre as partições do disco rígido que permitem ao BIOS carregar o código de inicialização da partição de boot.
3) As principais etapas da inicialização são a execução do POST pela BIOS, a leitura do MBR para identificar a partição de boot e o
O documento descreve a história e evolução dos computadores desde dispositivos mecânicos manuais até os computadores modernos. Ele detalha marcos como o ábaco, as máquinas mecânicas de Pascal e Babbage, e o desenvolvimento dos primeiros computadores eletrônicos como o ENIAC e EDVAC. Também discute as quatro gerações de computadores e como os transistores, circuitos integrados e microprocessadores levaram à miniaturização e popularização dos computadores pessoais.
Introdução à Arquitetura de ComputadoresMauro Pereira
Este documento fornece uma introdução à arquitetura de computadores e sistemas operacionais. Ele discute conceitos como arquitetura, organização, abstração e histórico das gerações de computadores, desde as máquinas da primeira geração baseadas em válvulas até as atuais arquiteturas x86 e ARM. O documento também apresenta os principais componentes de um computador e sua estrutura hierárquica.
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
A aula apresenta conceitos iniciais sobre linguagens de programação, incluindo uma breve história desde os primórdios até os dias atuais, níveis de linguagens, tipos como de script, interpretadas e compiladas, e tipagem.
O documento descreve as diferenças entre as arquiteturas RISC e CISC para microprocessadores. RISC usa um conjunto simplificado de instruções que executam operações em menos tempo do que CISC. Isso permite que processadores RISC sejam menores fisicamente, mais baratos de fabricar e produzam menos calor. Embora RISC ofereça vantagens de desempenho, a compatibilidade com software CISC e a necessidade de recompilação para RISC retardaram sua adoção generalizada.
O documento descreve algoritmos que utilizam estruturas condicionais "se-senão-se" e "escolha-caso" para executar comandos diferentes de acordo com valores de variáveis ou opções selecionadas pelo usuário. É apresentado um exemplo de algoritmo que imprime o curso do aluno baseado no código digitado e outro que exibe mensagens para cada opção de menu escolhida.
O documento discute a estrutura dos sistemas operacionais. Apresenta o kernel como o conjunto de rotinas e serviços oferecidos pelo sistema operacional. Descreve os modos de acesso kernel e usuário e o mecanismo de system calls. Explora diferentes arquiteturas de kernel, incluindo monolítica, em camadas e microkernel, assim como o modelo de máquina virtual.
O documento discute conceitos básicos de lógica, algoritmos e programação. Define lógica como a ciência do raciocínio e do pensamento formal. Explica que algoritmos são sequências de passos para resolver problemas e que programação é a codificação de algoritmos em linguagens de programação para serem executados por computadores. Também apresenta exemplos de linguagens como Pascal.
O documento descreve um curso profissional de técnico de programação de computadores oferecido pela Escola Latino Coelho em Lamego. O curso aborda tópicos como a estrutura do processador, portas e interfaces de periféricos, e transmissão de dados em série e paralelo.
1) O documento apresenta conceitos básicos sobre algoritmos como variáveis, constantes, tipos de dados, operadores e estrutura de algoritmos.
2) São descritos métodos para representar algoritmos como fluxogramas e pseudocódigo.
3) É explicado que um algoritmo é uma sequência de passos para solucionar um problema e como a lógica é fundamental nesse processo.
Aula Introdução a Arquitetura e Organização de ComputadoresGilvan Latreille
O documento apresenta os principais conceitos e tópicos sobre arquitetura e organização de computadores, incluindo a história dos computadores, organização básica da CPU e memória, barramentos, memória interna e externa, e tendências futuras.
Este documento fornece uma introdução sobre redes de computadores. Resume os principais pontos como:
1) Define o que é uma rede de computadores e seus objetivos de proporcionar entendimento dos conceitos e fundamentos de redes;
2) A metodologia inclui exposição participada com uso de recursos em sala de aula e atividades;
3) Os conteúdos abordados incluem introdução a redes, classificação, meios de transmissão, equipamentos e gestão de redes.
Este documento apresenta um curso técnico em manutenção e suporte em informática ministrado pelo Centro de Educação Tecnológica do Amazonas (CETAM). O curso aborda tópicos como a história da computação, evolução dos computadores, componentes de um microcomputador e instalação de servidores. O curso tem duração de 80 horas e é composto por 12 aulas com objetivos de aprendizagem, materiais e carga horária.
O documento fornece um resumo da história da computação e dos principais componentes de hardware de um computador, incluindo a evolução das tecnologias, partes internas como processador, memória e placa-mãe, além de periféricos como fonte de alimentação e discos rígidos.
O documento discute os sistemas operacionais, incluindo sua história desde os primeiros computadores mecânicos e eletrônicos até os sistemas operacionais modernos com interfaces gráficas. Também descreve as classificações dos sistemas operacionais de acordo com sua arquitetura, capacidade de execução de tarefas e número de usuários. Por fim, define sistemas avançados de processamento com múltiplos processadores.
O documento discute conceitos de concorrência em sistemas operacionais, incluindo: (1) a diferença entre sistemas monoprogramáveis e multiprogramáveis e as vantagens da multiprogramação; (2) o mecanismo de troca de contexto entre processos; e (3) o mecanismo de interrupções e exceções para lidar com eventos assíncronos no sistema.
O documento resume as seguintes informações sobre Assembly:
1) Assembly é uma linguagem de baixo nível atrelada à arquitetura da CPU e dependente do hardware, não sendo portável.
2) Foi muito usada até os anos 80 e atualmente é usada para manipulação de hardware e sistemas que necessitam de performance crítica.
3) Contém instruções básicas de movimentação de dados, aritmética e lógica operando nos registradores e memória da CPU.
O documento fornece uma introdução sobre a linguagem de montagem Assembly. Em 3 frases:
A linguagem Assembly é uma linguagem de programação de baixo nível utilizada para programar diretamente a unidade central de processamento. Ela é compilada em um programa objeto pelo assembler e permite maior controle sobre as funções do computador através do uso de registradores, instruções mnemônicas e flags de estado. A linguagem depende do hardware e não é portável entre arquiteturas de processadores diferentes.
O documento discute técnicas de detecção de avarias em computadores, listando os principais sintomas de problemas (não liga, liga sem imagem, trava), possíveis causas (fonte, placa de vídeo, memória) e métodos de resolução (configuração da BIOS, códigos de beep, substituição de componentes).
Barramento do Sistema - Arquitetura e Organização de ComputadoresWellington Oliveira
O documento descreve os principais componentes de um computador, incluindo a CPU, memória e dispositivos de E/S. Explica como esses componentes se conectam através de barramentos e como a CPU troca dados com a memória e E/S usando registradores. Também aborda o modelo de von Neumann e os ciclos de execução de instruções da CPU.
1) O documento descreve as etapas da inicialização de um sistema operacional, incluindo a execução do POST pela BIOS, a leitura do MBR pelo BIOS e o carregamento do núcleo do sistema operacional.
2) É explicado que o MBR contém informações sobre as partições do disco rígido que permitem ao BIOS carregar o código de inicialização da partição de boot.
3) As principais etapas da inicialização são a execução do POST pela BIOS, a leitura do MBR para identificar a partição de boot e o
O documento descreve a história e evolução dos computadores desde dispositivos mecânicos manuais até os computadores modernos. Ele detalha marcos como o ábaco, as máquinas mecânicas de Pascal e Babbage, e o desenvolvimento dos primeiros computadores eletrônicos como o ENIAC e EDVAC. Também discute as quatro gerações de computadores e como os transistores, circuitos integrados e microprocessadores levaram à miniaturização e popularização dos computadores pessoais.
Introdução à Arquitetura de ComputadoresMauro Pereira
Este documento fornece uma introdução à arquitetura de computadores e sistemas operacionais. Ele discute conceitos como arquitetura, organização, abstração e histórico das gerações de computadores, desde as máquinas da primeira geração baseadas em válvulas até as atuais arquiteturas x86 e ARM. O documento também apresenta os principais componentes de um computador e sua estrutura hierárquica.
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
A aula apresenta conceitos iniciais sobre linguagens de programação, incluindo uma breve história desde os primórdios até os dias atuais, níveis de linguagens, tipos como de script, interpretadas e compiladas, e tipagem.
O documento descreve as diferenças entre as arquiteturas RISC e CISC para microprocessadores. RISC usa um conjunto simplificado de instruções que executam operações em menos tempo do que CISC. Isso permite que processadores RISC sejam menores fisicamente, mais baratos de fabricar e produzam menos calor. Embora RISC ofereça vantagens de desempenho, a compatibilidade com software CISC e a necessidade de recompilação para RISC retardaram sua adoção generalizada.
O documento descreve algoritmos que utilizam estruturas condicionais "se-senão-se" e "escolha-caso" para executar comandos diferentes de acordo com valores de variáveis ou opções selecionadas pelo usuário. É apresentado um exemplo de algoritmo que imprime o curso do aluno baseado no código digitado e outro que exibe mensagens para cada opção de menu escolhida.
O documento discute a estrutura dos sistemas operacionais. Apresenta o kernel como o conjunto de rotinas e serviços oferecidos pelo sistema operacional. Descreve os modos de acesso kernel e usuário e o mecanismo de system calls. Explora diferentes arquiteturas de kernel, incluindo monolítica, em camadas e microkernel, assim como o modelo de máquina virtual.
O documento discute conceitos básicos de lógica, algoritmos e programação. Define lógica como a ciência do raciocínio e do pensamento formal. Explica que algoritmos são sequências de passos para resolver problemas e que programação é a codificação de algoritmos em linguagens de programação para serem executados por computadores. Também apresenta exemplos de linguagens como Pascal.
O documento descreve um curso profissional de técnico de programação de computadores oferecido pela Escola Latino Coelho em Lamego. O curso aborda tópicos como a estrutura do processador, portas e interfaces de periféricos, e transmissão de dados em série e paralelo.
1) O documento apresenta conceitos básicos sobre algoritmos como variáveis, constantes, tipos de dados, operadores e estrutura de algoritmos.
2) São descritos métodos para representar algoritmos como fluxogramas e pseudocódigo.
3) É explicado que um algoritmo é uma sequência de passos para solucionar um problema e como a lógica é fundamental nesse processo.
Aula Introdução a Arquitetura e Organização de ComputadoresGilvan Latreille
O documento apresenta os principais conceitos e tópicos sobre arquitetura e organização de computadores, incluindo a história dos computadores, organização básica da CPU e memória, barramentos, memória interna e externa, e tendências futuras.
Este documento fornece uma introdução sobre redes de computadores. Resume os principais pontos como:
1) Define o que é uma rede de computadores e seus objetivos de proporcionar entendimento dos conceitos e fundamentos de redes;
2) A metodologia inclui exposição participada com uso de recursos em sala de aula e atividades;
3) Os conteúdos abordados incluem introdução a redes, classificação, meios de transmissão, equipamentos e gestão de redes.
Este documento apresenta um curso técnico em manutenção e suporte em informática ministrado pelo Centro de Educação Tecnológica do Amazonas (CETAM). O curso aborda tópicos como a história da computação, evolução dos computadores, componentes de um microcomputador e instalação de servidores. O curso tem duração de 80 horas e é composto por 12 aulas com objetivos de aprendizagem, materiais e carga horária.
O documento fornece um resumo da história da computação e dos principais componentes de hardware de um computador, incluindo a evolução das tecnologias, partes internas como processador, memória e placa-mãe, além de periféricos como fonte de alimentação e discos rígidos.
O documento discute os sistemas operacionais, incluindo sua história desde os primeiros computadores mecânicos e eletrônicos até os sistemas operacionais modernos com interfaces gráficas. Também descreve as classificações dos sistemas operacionais de acordo com sua arquitetura, capacidade de execução de tarefas e número de usuários. Por fim, define sistemas avançados de processamento com múltiplos processadores.
O documento discute conceitos de concorrência em sistemas operacionais, incluindo: (1) a diferença entre sistemas monoprogramáveis e multiprogramáveis e as vantagens da multiprogramação; (2) o mecanismo de troca de contexto entre processos; e (3) o mecanismo de interrupções e exceções para lidar com eventos assíncronos no sistema.
O documento resume as seguintes informações sobre Assembly:
1) Assembly é uma linguagem de baixo nível atrelada à arquitetura da CPU e dependente do hardware, não sendo portável.
2) Foi muito usada até os anos 80 e atualmente é usada para manipulação de hardware e sistemas que necessitam de performance crítica.
3) Contém instruções básicas de movimentação de dados, aritmética e lógica operando nos registradores e memória da CPU.
O documento fornece uma introdução sobre a linguagem de montagem Assembly. Em 3 frases:
A linguagem Assembly é uma linguagem de programação de baixo nível utilizada para programar diretamente a unidade central de processamento. Ela é compilada em um programa objeto pelo assembler e permite maior controle sobre as funções do computador através do uso de registradores, instruções mnemônicas e flags de estado. A linguagem depende do hardware e não é portável entre arquiteturas de processadores diferentes.
1. O documento descreve o conjunto de instruções MIPS e suas características. 2. As instruções MIPS possuem três operandos fixos e operam apenas em registradores. 3. É necessário transferir dados entre registradores e memória usando instruções de load e store.
O documento apresenta um curso introdutório sobre programação em assembly para o microcontrolador 8051. Em 3 frases ou menos, o documento descreve:
1) A estrutura básica do microcontrolador 8051, incluindo sua memória, CPU e portas de entrada e saída. 2) Os principais componentes da CPU como unidade de controle, aritmética e registradores. 3) A organização da memória do 8051 e os registradores internos.
O documento discute instruções de desvio e loops no MIPS. Resume:
1) Instruções de desvio como BEQ e BNE permitem saltos condicionais baseados no conteúdo de registradores; 2) Loops são implementados usando desvios de volta ao início; 3) Um compilador traduz estruturas de controle de fluxo como if/else e while para instruções de desvio do MIPS.
O documento descreve os principais componentes de um computador e conceitos relacionados à linguagem assembly, incluindo registradores, segmentos de memória, instruções e operações aritméticas básicas.
O documento discute simuladores do processador 8086 como TASM, MASM, Debug e EMU8086. Apresenta as vantagens do EMU8086 como visualização gráfica da memória, registradores e outras partes do processador. Também lista algumas desvantagens como limitações em comandos e interrupções. Exemplos de código assembly são fornecidos para ilustrar uso do EMU8086.
O documento discute linguagens de programação de alto e baixo nível. Apresenta que linguagens de alto nível são mais próximas da linguagem natural e permitem aos programadores esquecer os detalhes da máquina, enquanto linguagens de baixo nível são dependentes da máquina e programas nelas não podem ser executados em outras máquinas. Também menciona que existem 5 gerações de linguagens e que linguagens de alto nível surgiram na terceira geração.
Pascal é uma linguagem de programação estruturada introduzida em 1970. Este documento fornece uma introdução básica ao Pascal, incluindo sua história, características e sintaxe, e destina-se a ensinar os fundamentos da programação estruturada usando Pascal. A licença GNU Free Documentation License é apresentada para permitir a distribuição e modificação livres deste material didático.
O documento discute os conceitos de compiladores, interpretadores e linkagem no contexto da programação. Explica que compiladores transformam programas de alto nível em código de máquina, enquanto interpretadores fazem isso linha a linha. A linkagem une código objeto e bibliotecas para criar programas executáveis.
Este documento apresenta conceitos básicos de algoritmos e programação, incluindo a introdução ao processamento de dados, fluxograma de algoritmos, linguagens de programação como Pascal, e os passos para elaboração de um programa. O documento também descreve comandos básicos em Pascal como declaração de variáveis, atribuição, entrada e saída de dados.
[1] O documento apresenta um curso de introdução à linguagem assembly para arquitetura PC (Intel 80XXX). [2] O curso é prático e apresenta os fundamentos da linguagem de forma não sequencial, com explicações e exemplos práticos em cada seção. [3] A primeira lição prática apresenta instruções assembly básicas para exibir uma mensagem "Hello World" diretamente na memória usando o programa DEBUG do Windows XP.
O documento discute interrupções e temporizadores no microcontrolador 8051. Explica como acessar tabelas de dados, como as interrupções salvam o endereço de programa atual e pula para uma subrotina, e como configurar e usar os temporizadores/contadores internos do 8051.
O documento descreve os conceitos de comunicação serial e paralela, circuitos série e paralelo, e a interface serial do microcontrolador 8051. A interface serial do 8051 utiliza um UART para converter dados entre formatos paralelo e serial, e sua programação envolve configurar registradores como SCON e monitorar flags como RI e TI.
Este programa implementa uma fila dinâmica utilizando ponteiros. Ele define um tipo de dado e nós, e implementa funções para criar a fila, inserir e remover itens, verificar se a fila está vazia e imprimir os itens. Um menu principal é fornecido para testar as operações da fila.
Kit Modular de Desenvolvimento Baseado em Microcontrolador PICBruno Silva
O documento descreve o desenvolvimento de um kit modular de hardware baseado em microcontrolador PIC para ensino e pesquisa de sistemas embarcados. O kit é composto por vários módulos comunicando-se através de barramento I2C, incluindo um controlador central PIC18F4520, módulos de motor de passo, teclado matricial e display LCD. O documento apresenta os requisitos, a arquitetura, a implementação virtual e física do kit, além dos custos envolvidos no projeto.
Este documento apresenta uma aula sobre microcontroladores PIC18 e programação em C. Ele descreve os objetivos do curso como compreender a arquitetura e operação dos PICs, aprender a programar em C para PICs e conhecer periféricos como comunicação serial e conversor analógico-digital. Também lista os tópicos a serem ensinados e os materiais e softwares que serão utilizados.
1. O documento descreve o conjunto de instruções e assembly x86, incluindo os formatos de instruções, modos de endereçamento e registradores.
2. É apresentado o assembly x86 de 16 bits, com detalhes sobre a organização de dados, registradores, interrupções e linguagem assembly.
3. Instruções sobre debug são fornecidas, com comandos básicos e um exemplo para solução de problemas.
Do alto para o baixo nível - Entendendo as DiferençasWelington Sampaio
O documento discute as diferenças entre linguagens de alto e baixo nível, usando GoLang, Node.js e PHP 5.5 como exemplos. Realiza testes de performance desses três scripts em loops de ordenação para comparar seus tempos de resposta.
Este documento resume as principais etapas da geração de código em compiladores: 1) geração de código intermediário, que produz um código mais próximo da linguagem da máquina antes da tradução final; 2) otimização desse código intermediário para produzir um código objeto mais eficiente; e 3) geração do código objeto final na linguagem da máquina alvo.
O documento discute a geração de código objeto, que é a última fase de um compilador. Ele explica que o gerador de código objeto recebe a representação intermediária do compilador e produz um código objeto semanticamente equivalente para a máquina-alvo. Alguns conceitos importantes incluem a seleção de instruções, alocação de registradores e escalonamento de instruções.
Processo de Desenvolvimento de Software - Linguagens Compiladas x InterpretadasNatanael Simões
O documento discute as diferenças entre linguagens compiladas e interpretadas. Linguagens compiladas traduzem o código diretamente para linguagem de máquina, enquanto linguagens interpretadas primeiro traduzem para um código intermediário que é então traduzido para linguagem de máquina por uma máquina virtual. O documento também descreve os processos de compilação e interpretação, além de comparar as vantagens e desvantagens de cada abordagem.
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux SystemsFernando Mercês
O documento apresenta um tutorial sobre engenharia reversa em sistemas GNU/Linux, abordando tópicos como o formato ELF de binários, técnicas como fishing, byte patching e unpacking, além de debugging e um exemplo de keygen em shell script.
O documento discute as diferenças entre linguagens de programação compiladas e interpretadas. Linguagens compiladas geram código objeto específico para um hardware e executam mais rápido, mas requerem recompilação para alterações. Linguagens interpretadas executam em qualquer hardware, mas são mais lentas pois um interpretador executa o código linha a linha. Exemplos de cada tipo de linguagem são fornecidos, assim como suas vantagens e desvantagens.
O documento discute aspectos fundamentais do conjunto de instruções de uma arquitetura de computador, incluindo: 1) O hardware executa instruções simples enquanto instruções complexas são decompostas em instruções simples; 2) O conjunto de instruções define as operações de um processador e permite ao programador escrever código de acordo; 3) A arquitetura do conjunto de instruções é a interface entre hardware e software.
Webinar: Arquitetura de software para sistemas embarcadosEmbarcados
Objetivo: Mostrar a importância da estruturação de firmware durante o ciclo de desenvolvimento de um produto.
Neste webinar abordaremos um pouco do ciclo de desenvolvimento de um produto e técnicas de programação que vão garantir a portabilidade, reuso e testabilidade de bibliotecas.
Link: https://www.embarcados.com.br/webinars/webinar-arquitetura-de-software-para-sistemas-embarcados/
Slides do primeiro dia do Workshop (intensivo :) ) sobre Introdução à Programação de Dispositivos Móveis (Google Android, Apple iPhone, iPod Touch e iPad)
O documento descreve as diferenças entre microprocessadores e microcontroladores. Microprocessadores são usados em sistemas de propósito geral enquanto microcontroladores integram CPU, memória e I/O em um único chip para aplicações específicas com restrições de custo, potência e espaço. O documento também explica conceitos básicos de arquitetura de microcomputadores como barramento, instruções e ciclos de máquina.
O documento apresenta conceitos básicos sobre computadores, hardware, software, sistemas operacionais, linguagens de programação e algoritmos. Explica que hardware são os componentes físicos de um computador, software são as instruções para o hardware executar tarefas e sistemas operacionais gerenciam os recursos de hardware. Também define linguagens de programação, algoritmos e variáveis, e fornece exemplos de como representar e escrever algoritmos simples em pseudocódigo.
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESwillian324163
Este documento descreve a arquitetura e organização do computador SAP1, definindo cada um de seus componentes e módulos, como a unidade de controle, memória RAM, registradores e unidades lógicas. Também exemplifica programas simples em linguagem de máquina, mostrando como instruções em assembly são traduzidas para códigos binários.
Este documento fornece uma introdução aos microcontroladores PIC e seus periféricos. Explica as diferenças entre linguagem assembly e C, as vantagens e desvantagens de C para microcontroladores PIC. Também descreve conceitos como arquitetura, contador de programa, barramentos, pilha e ciclo de máquina. Por fim, apresenta matriz de contatos, resistores e capacitores.
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...Tchelinux
O documento discute o desenvolvimento de sistemas embutidos com software livre. Apresenta definições de sistemas embutidos, máquinas virtuais e emuladores. Também fornece dicas sobre como programar, compilar, otimizar desempenho, reduzir espaço e testar sistemas embutidos.
O documento discute as técnicas de implementação de linguagens de programação, incluindo conceitos fundamentais, classificação de linguagens, aplicações de software, engenharia de software e tecnologias. É fornecida uma lista de sugestões bibliográficas.
O documento apresenta uma introdução à linguagem de programação C#. Apresenta os principais conceitos como: 1) Histórico e características da linguagem; 2) Ambiente de desenvolvimento Visual Studio; 3) Criação de um programa "Olá Mundo" simples para demonstrar os primeiros passos.
O documento descreve os conceitos fundamentais de arquitetura de conjunto de instruções, incluindo: 1) Instruções de máquina são comandos básicos para o hardware; 2) Conjunto de instruções define as operações de um processador; 3) Projeto do conjunto de instruções especifica formatos de instrução e operações suportadas.
O documento descreve as principais etapas de um compilador, incluindo a geração de código intermediário, geração de código objeto, otimização de código e gerenciamento de tabelas de símbolos. O código intermediário representa o programa em uma forma independente da máquina e pode ser otimizado antes de ser traduzido para código de máquina. A geração de código objeto mapeia o código intermediário para instruções da máquina-alvo.
Introdução à programação em Android e iOS - Conceitos fundamentais de program...Luís Gustavo Martins
Este documento apresenta um resumo de três frases ou menos:
O documento apresenta um curso introdutório de programação que inclui módulos sobre conceitos fundamentais de programação, programação orientada a objetos e programação para Android e iPhone. É destacado que o curso não requer conhecimentos prévios de programação.
O documento introduz os principais paradigmas de programação e conceitos básicos de implementação de linguagens de programação, discutindo a motivação para o estudo de linguagens de programação e definindo o que é uma linguagem de programação.
2. Software Básico - Linguagem Assembly 2
Linguagem de montagem (Assembly)
• Abstração simbólica da linguagem de máquina
• Traduzida pelo programa assembler
• Mapeada diretamente em instruções de máquina
• Pseudo-instruções e macros auxiliares
° Mnemônicos facilitam codificação
• Símbolos e rótulos simplificam endereçamento
3. Software Básico - Linguagem Assembly 3
Características
• Linguagem assembly pura
° Cada comando corresponde a uma instrução de máquina
° Uso de nomes e endereços simbólicos
° Instruções mnemônicas: ADD, SUB ...
• Acesso a todas as características do HW alvo
° Tudo que pode ser feito na máquina, pode ser feito em
assembly (diferentemente da linguagem de alto nível)
° Ex: testar bit de vai-um
• Restrita à família de processadores alvo
° Programa em linguagem de alto nível pode ser
recompilado para outra máquina
4. Software Básico - Linguagem Assembly 4
Por que Assembly?
• Programar em assembly é difícil
° Demora mais pra escrever um programa
° Depuração e manutenção complicadas
• Duas razões:
° Desempenho
° Acesso ao HW
5. Software Básico - Linguagem Assembly 5
Desempenho
• Em termos de tamanho: consumo de memória
° crítico para sistemas embutidos
° código em smart cards, telefones celulares
• Em termos de velocidade
° Lei 90 – 10 (10% código : 90% do tempo de execução)
° Implementar partes críticas em assembly
• drivers de dispositivos,
• rotinas de BIOS
• laços internos de aplicações com restrições de
desempenho críticas
6. Software Básico - Linguagem Assembly 6
Comparação entre programação em
linguagens assembly e de alto nível
Programadores-anos
para produzir programa
Tempo de
execução (seg)
Linguagem de alto nível 10 100
Linguagem de montagem 50 33 (= 100/3)
Abordagem mista (antes do ajuste) 10 100
10% críticos 1 90
Outros 90% 9 10
Abordagem mista (após ajuste) 15 40
10% críticos 1+5 30 ( = 90/3)
Outros 90% 9 10
7. Software Básico - Linguagem Assembly 7
Outras experiências práticas
• MULTICS: 1o SO de tempo compartilhado
° Função reescrita em 3 meses:
• 26 vezes menor
• 50 vezes mais rápida
° Função reescrita em 2 meses:
• 20 vezes menor
• 40 vezes mais rápida
8. Software Básico - Linguagem Assembly 8
Acesso
• Algumas tarefas exigem acesso direto ao HW
° Tratamento de interrupções do hardware
° Controladores de dispositivos (sistemas de tempo real)
• Sistemas modernos (Linux)
° Acesso às funções do processador para troca de contexto
° Boot
9. Software Básico - Linguagem Assembly 9
Motivações reavaliadas
• Desempenho
° É importante poder escrever um bom código de
linguagem de montagem para cenários críticos
• Acesso – motivo mais importante
° Mesmo assim, apenas em casos extremos
° Uma linguagem como C dá bom acesso
• Tamanho: às vezes código de montagem é única saída
devido à escassez de memória
10. Software Básico - Linguagem Assembly 10
Motivações reavaliadas
• Compilador deve ou produzir saída para assembler ou ele
mesmo tem que executar processo de montagem
° Alguém tem que escrever os compiladores
• Estudo de arquiteturas
° Assembly está diretamente relacionada ao hardware
° Permite entender como a máquina realmente trabalha
do ponto de vista do hardware
11. Software Básico - Linguagem Assembly 11
Formato das Instruções
• Está diretamente associado ao hardware
° Porém, possuem características comuns
• Instruções Assembly
° Representam os comandos da máquina
° Usualmente, quatro campos
• Label, operação, operandos, comentários
• Pseudo-instruções: comandos para o assembler
° Usadas para reservar espaço para dados
° Apenas tipos básicos
13. Software Básico - Linguagem Assembly 13
Campo de label
• Usado para atribuir um nome simbólico para
uma variável ou endereço (para desvio)
° Campo opcional
• Formato
° Posição fixa ou separador
° Tamanho fixo (6-8 caracteres) ou variável
14. Software Básico - Linguagem Assembly 14
Campo de operação
• Representações simbólicas das instruções do
hardware
° Critério de quem fez o montador
• Intel: MOV
• Motorola: MOVE
• Sun: ST e LD
° Variantes em função do tamanho do dado
• Motorola: MOVE.L / MOVE.W / MOVE.B
• Intel: EAX / AX / AH ou AL
15. Software Básico - Linguagem Assembly 15
Campo de operandos
• Especifica os alvos das operações
° Endereços: instruções de desvio
° Variáveis
• posição de memória sendo acessada
• Assemblers variam em como reservam espaço para
dados (DD na Intel vs. .WORD na Sparc)
° Constantes
• valores para operações aritméticas
(endereçamento imediato)
° Registradores
• variáveis locais do processador
16. Software Básico - Linguagem Assembly 16
Campo de comentário
• Usado para acrescentar informações relevantes
ao programa
° Facilitar a compreensão do mesmo
° Programa assembly é praticamente incompreensível
sem comentários
• Formato geral
° Indicador de início (; ou !)
° Até o final da linha
17. Software Básico - Linguagem Assembly 17
Pseudo-instruções
• Comandos para o montador, não instruções
° Diretivas de assember
• Relacionadas com o modo de operação da arquitetura e do montador
° Alocação de variáveis
• ex: DD no Pentium, .WORD no SPARC
° Criação de macros e subrotinas
° Definição de escopo de uma macro / subrotina / variável
• PUBLIC / EXTERN (local por default)
° Definição de segmentos
° Constantes
• Veja exemplos do assember MASM do Pentium 4 (Tabela 7.2)
18. Software Básico - Linguagem Assembly 18
Pseudo-instruções:
• Exemplos do MASM
° Definir um novo símbolo igual a uma expressão dada
BASE EQU 2000
LIMIT EQU 4 * BASE + 2000
° Alocar e definir armazenamento para um ou mais bytes ou
palavras (16 bits) ou double (32 bits)
TABLE DB 11, 23, 49
Aloca espaço para 3 bytes e os inicializa com 11, 23 e 49, respectivalmente
Define símbolo TABLE e o ajusta com o endereço onde 11 é armazenado
19. Software Básico - Linguagem Assembly 19
Definição de Macro
• Bloco de código de uso repetitivo
• Ao invés de realmente reescrevê-lo, define-se a
macro
° Identifica as instruções a serem repetidas
° Código é expandido em cada ocorrência
• Mais eficiente que chamada de procedimento
quando conjunto de instruções é pequeno mas
frequente
20. Software Básico - Linguagem Assembly 20
Definição, Chamada e expansão
• São necessários:
° Cabeçalho com o nome da macro;
° Bloco de instruções;
° Pseudo-instrução indicando o término da macro.
• O montador salva a macro em uma tabela e
quando esta é chamada, substitui a chamada
pelo código.
° Chamada de macro: utilização de um nome de macro
como opcode
° Expansão de macro: substituição pelo corpo da macro
22. Software Básico - Linguagem Assembly 22
Chamada e expansão
• A expansão ocorre durante o processo de montagem
e não durante a execução do programa.
• O código gerado pelo exemplo (a) é o mesmo do
gerado pelo exemplo (b).
• Assembler efetuado em 2 passos (conceitualmente):
° As definições de macro são salvas e as chamadas são
expandidas gerando um novo código em linguagem
assembly
° Código é processado pelo assembler como se fosse o
original.
24. Software Básico - Linguagem Assembly 24
Subrotina
• É uma chamada a procedimento.
• Onde houver uma chamada, o procedimento
é invocado separadamente e ao seu término,
retorna para o programa que originou esta
chamada.
• Ocorre um desvio no código.
25. Software Básico - Linguagem Assembly 25
Macro x Subrotina
Programa SubrotinaMacro
26. Software Básico - Linguagem Assembly 26
Tradução completa
• Constituída de duas fases (duas passagens):
1. Montagem dos procedimentos a partir dos arquivos
com código em assembly.
2. Ligação dos módulos-objetos resultantes.
• Ao final, teremos um programa binário executável.
27. Software Básico - Linguagem Assembly 27
Tradução completa
Fonte do
procedimento 1
Fonte do
procedimento 2
Fonte do
procedimento 3
Montador
Módulo
objeto 1
Módulo
objeto 2
Módulo
objeto 3
Ligador
(linker)
Programa
executável
em binário
28. Software Básico - Linguagem Assembly 28
O processo de montagem
Fonte do
procedimento 1
Fonte do
procedimento 2
Fonte do
procedimento 3
Montador
Módulo
objeto 1
Módulo
objeto 2
Módulo
objeto 3
• Entrada: arquivos com código assembly
• Saída: linguagem de máquina “anotada”
° Referências a outros módulos
° Reservas de espaço
29. Software Básico - Linguagem Assembly 29
Montagem em duas passagens
• Tradução imediata nem sempre é possível
° Problema da referência antecipada:
• Ex: desvio para endereço L no início, mas L definido no final
• Primeira passagem:
° Contagem do espaço ocupado por cada instrução
° Construção da tabela de símbolos (labels)
° Salva definição de macros e expande chamadas
à medida que são encontradas
• Segunda passagem:
° Geração do programa objeto para o Linker
° Resolução de símbolos e referências
30. Software Básico - Linguagem Assembly 30
Montagem em duas passagens
• Duas alternativas:
° Alternativa 1: ler o programa de entrada 2 vezes.
• armazenar os símbolos em uma tabela
• traduzir o programa
• solução simples
° Alternativa 2: ler o programa de entrada 1 vez
• gerar código intermediário e armazenar em memória
° remover comentários
° manter somente o essencial
• pode ser mais eficiente (memória X tempo de E/S)
31. Software Básico - Linguagem Assembly 31
Passo 1
• Principal papel: montar tabela de símbolos
° Símbolo: label ou valor ao qual é atribuído nome simbólico
° ex: BUFSIZE EQU 8192
• Contabiliza espaço para instruções
° ILC – Instruction Location Counter
• Incrementado do tamanho de cada instrução traduzida
• Usado para definir endereços de instruções com label
• Iniciado com 0 e incrementado do comprimento da
instrução para cada instrução processada
• Memoriza localização dos símbolos encontrados durante o
processo: tabela
33. Software Básico - Linguagem Assembly 33
Passo 1
• Usa no mínimo 3 tabelas internas
° Tabela de símbolos
° Tabela de pseudo-instruções
° Tabela de opcodes
• Opcional: tabela de literais
° Quando não tem suporte para operandos imediatos
° Constantes (ex: ´5´, ´9´);
° Após passo 1: tabela ordenada e duplicatas removidas
34. Software Básico - Linguagem Assembly 34
Tabela de símbolos
• Criada no passo 1 para utilização no passo 2
• Informações coletadas sobre símbolos
° Valor (endereço ou valor numérico)
° Tamanho do campo de dados
° Informação de relocação: o símbolo muda de valor se o
programa for carregado em um endereço diferente?
° Regras de escopo: acessível ou não fora do procedimento?
Símbolo Valor Outras
MARIA 100
ROBERTA 111
MARILYN 125
STEPHANY 129
35. Software Básico - Linguagem Assembly 35
Tabela de símbolos
• Várias maneiras de organizar a tabela
° Memória associativa: par (símbolo,valor):
• Forma mais simples: vetor de registros
• Forma mais esperta: tabela hash
36. Software Básico - Linguagem Assembly 36
Tabela de opcodes
• Uma entrada para cada opcode simbólico na linguagem assembly
° opcode simbólico,
° operandos,
° valor numérico do opcode,
° comprimento
° classe da instrução ( número e tipo dos operandos)
Opcode 1º
Operando
2º
Operando
Opcode
(hexa)
Comprimento
da instrução
Classe
AAA - - 37 1 6
ADD EAX immed32 05 5 4
ADD reg reg 01 2 19
AND EAX immed32 25 5 4
AND reg reg 21 2 19
37. Software Básico - Linguagem Assembly 37
Passo 1
Leitura
Label
Pesquisa tabela de
pseudo-instruções
Inicialização
Pesquisa tabela de
opcodes
Obtem tamanho da
instrução
Checa e processa literais
(inserir na tabela)
Atualiza ILC
Determinar espaço
p/ dados
Tipo ?
Executar ação
apropriada
Guardar label e ILC na tabela
de símbolos
Finalizar passo 1 e ir
ao passo 2
sim
não
encontrado END
outrosDD / DB / DWnão encontrado
38. Software Básico - Linguagem Assembly 38
Passo 2
• Tradução propriamente dita do programa
° Produz código
° Produz também informação extra que o ligador precisa pra
ligar procedimentos montados em tempos diferentes
• Leitura sequencial do código
° Acessos às tabelas de instruções e de símbolos
° Geração de código binário
• Tratamento de erros
° Símbolos desconhecidos ou definidos múltiplas vezes
° Opcode fornecido com # insuficiente/excessivo de operandos
° Declaração END faltante, etc...
39. Software Básico - Linguagem Assembly 39
Passo 2
leitura
pesquisa tabela de
pseudos
inicialização
pesquisa tabela de
opcode
avaliar tipo
da instrução
montar a
instrução
imprimir instrução e
informações
fazer conversão de
constantes
tipo ?
executar ação
apropriada
finalizar o
passo 2
encontrado END
outrosnão encontrado
obter tamanho, tipo e
código da instrução
Determinar espaço
p/ dados
atualizar ILC
40. Software Básico - Linguagem Assembly 40
Tradução completa
Fonte do
procedimento 1
Fonte do
procedimento 2
Fonte do
procedimento 3
Montador
Módulo
objeto 1
Módulo
objeto 2
Módulo
objeto 3
Ligador
(linker)
Programa
executável
em binário
41. Software Básico - Linguagem Assembly 41
Ligação dos módulos
Módulo
objeto 1
Módulo
objeto 2
Módulo
objeto 3
Ligador
(linker)
Programa
executável
em binário
• Para simplificar o desenvolvimento, cada programa
pode ser dividido em módulos, cada um com alguns
procedimentos.
• Para um programa poder ser executado, todos os
procedimentos devem ser ligados.
42. Software Básico - Linguagem Assembly 42
Ligador
• Funções:
° Ligação: une os procedimentos e resolve as
referências entre os módulos.
° Alocação: separa espaço na memória para o
programa.
° Relocação: ajusta os endereços que dependem da
posição do programa na memória.
43. Software Básico - Linguagem Assembly 43
Exemplo de ligação
600
500
400
300
200
100
0
CALL C
MOVE Q TO X
BRANCH TO 300
Object module B
CALL D
MOVE R TO X
BRANCH TO 200
Object module C
500
400
300
200
100
0
CALL B
MOVE P TO X
BRANCH TO 200
Object module A
400
300
200
100
0
MOVE S TO X
BRANCH TO 200
Object module D
300
200
100
0
Módulos isolados:
44. Software Básico - Linguagem Assembly 44
Exemplo de ligação
CALL C
MOVE Q TO X
BRANCH TO 300
CALL D
MOVE R TO X
BRANCH TO 200
CALL B
MOVE P TO X
BRANCH TO 200
MOVE S TO X
BRANCH TO 200
Object
module C
Object
module B
Object
module D
Object
module A
Para executar o programa, o
ligador traz os módulos para a
memória principal para formar a
imagem do programa binário
executável.
1900
1800
1700
1600
1500
1400
1300
1200
1100
1000
900
800
700
600
500
400
300
200
100
0
O que acontece se o programa
for executado assim?
Seção da memória com início em 0 é usada para vetores
de interrupção, comunicação com sistema operacional, etc
45. Software Básico - Linguagem Assembly 45
Problemas tratados pelo ligador
• Problema da relocação: todas as instruções de referência à
memória falhariam pois contém endereços determinados
assumindo cada módulo com um espaço de endereçamento
separado
° Se espaço de endereçamento segmentado em tese não
haveria problema
• Família Pentium tem suporte em hardware
• Porém OS/2 é único SO que tem suporte a segmentação
• Problema de referência externa: assembler não tem como
saber endereço de um procedimento externo (CALL B), pois
este só é conhecido em tempo de ligação
46. Software Básico - Linguagem Assembly 46
Fusão dos espaços de endereços dos
módulos objetos em um único espaço
1. Constrói tabela com módulos objetos e seus comprimentos
2. Com base na tabela, designa um endereço de início a cada
módulo objeto
3. Para cada instrução com referência à memória, adiciona ao
endereço sendo referenciado uma constante de relocação
iugal ao endereço de início do módulo em questão
4. Para cada instrução que referencia procedimentos externos,
insere os endereços destes procedimentos no lugar
adequado
47. Software Básico - Linguagem Assembly 47
CALL 1100
MOVE Q TO X
BRANCH TO 800
CALL 1600
MOVE R TO X
BRANCH TO 1300
CALL 500
MOVE P TO X
BRANCH TO 300
MOVE S TO X
BRANCH TO 1800
Object
module C
1900
1800
1700
1600
1500
1400
1300
1200
1100
1000
900
800
700
600
500
400
300
200
100
0
Object
module B
Object
module D
Object
module A
Módulos relocados:
Exemplo de ligação
48. Software Básico - Linguagem Assembly 48
Estrutura de módulos objetos
• Identificação: nome e tamanho das partes do
módulo
• Pontos de entrada (nome e endereço)
° Símbolos internos que podem ser
referenciados de outros módulos- PUBLIC
• Tabelas de referências externas
° Símbolos referenciados pelo módulo,
ausentes do mesmo - EXTERN
• Instruções, variáveis, constantes (código objeto)
° Única parte carregada em memória
° Outras partes é para uso do ligador
• Dicionário para relocação: contém endereços que devem ser relocados
(quais instruções na parte 4 precisam ser relocadas)
• Fim de módulo: marcação especial e (talvez) soma de verificação
Tabela de referências
externas
Fim do módulo
Dicionário de
símbolos para relocação
Instruções de máquina
e constantes
Tabela de pontos de entrada
Identificação do módulo
49. Software Básico - Linguagem Assembly 49
Tarefas do Ligador
• Maioria dos ligadores requer duas passagens
• Primeira passagem:
° Colocação de todos os módulos na memória
° Contabilização dos espaços ocupados
° Determinação dos endereços exportados
° Verificação de referências externas
° Constrói tabelas de nomes, comprimentos dos módulos,
tabelas com pontos de entrada e referências externas
• Segunda passagem:
° Relocação: Alteração de endereços em cada módulo
° Ligação efetiva
50. Software Básico - Linguagem Assembly 50
Não está tudo resolvido ainda....
• Um programa pode ser carregado/descarregado da
memória principal muitas vezes durante a execução
° Paginação: partes do programa (páginas) podem ser
retirados da memória principal para serem recarregados
depois
• O que acontece com as referências à memória?
51. Software Básico - Linguagem Assembly 51
Tempo de vínculação
• Momento em que é determinado o endereço de memória
principal correspondente a um símbolo
• Se uma instrução com endereço de memória for movida
após a vinculação, ela será incorreta
• Dois problemas:
° Mapeamento de símbolo para endereço virtual
° Mapeamento de endereço virtual para endereço físico
52. Software Básico - Linguagem Assembly 52
Oportunidades para vinculação
• Durante a escrita do programa
• Durante a tradução assembly
• Durante a ligação (geração do executável)
• Durante a carga do programa na memória
• Quando um registrador base é carregado
• Quando a instrução com o endereço é
executada
53. Software Básico - Linguagem Assembly 53
Relocação dinâmica
• Programas podem mudam de lugar na memória
° Sistemas de espaço de endereçamento único
• Endereços internos podem ser alterados
° Tabelas de tradução (paginação)
° Registrador de relocação (endereços relativos)
• Contém endereço de memória física do início do programa
• Hardware adiciona endereço de relocação a todos endereços
de memória antes de enviá-los a memória
• Atualizado toda vez que programa recarregado
° Acessos relativos ao PC
• Memória virtual acaba com esse problema!
° Ligador responsável pelo mapeamnto símbolo : endereço virtual
54. Software Básico - Linguagem Assembly 54
Ligação Dinâmica
• Ligação de um módulo somente quando um de
seus procedimentos é chamado pela primeira vez
° Evita carregar em memória, módulos ue poderão não
ser utilizados (procedimentos raramente chamados)
• Pioneiro: MULTICS
• Outros
° DLL no Windows: economia de memória pois código é
compartilhado entre aplicações
° Bibliotecas compartilhadas no Unix
• Ex: biblioteca padrão do C
55. Software Básico - Linguagem Assembly 55
MULTICS
• Cada programa tem um segmento de ligação: tabela com par
(nome, endereço virtual) para cada procedimento
° Os endereços virtuais são iniciados com valor inválido
• Instruções CALL apontam para entrada correspondente na tabela
• Quando a primeira chamada a um procedimento externo é
executada:
° Acesso a endereço inválido causa exceção para ligador
dinâmico
° Módulo é carregado e seu endereço virtual é atualizado na
tabela
° Chamadas subsequentes funcionam normalmente
56. Software Básico - Linguagem Assembly 56
Resolução de endereços
• Escrita do programa: endereços diretos
• Tradução do programa: resolução de nomes
• Durante a ligação: referências externas
• No momento da carga: relocação
• Na carga de um registrador de indexação
• Sob controle do sistema: relocação dinâmica
• Na execução de uma instrução: ref. relativas
• Carga e ligação sob demanda: DLLs