Um Conjunto de Softwares Básicos Integrados para Arquitetura SIC/XE

Documentos relacionados
Nivel de Linguagem de Montagem (Assembly)

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

Conceitos básicos sobre computadores (continuação)

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

SSC510 Arquitetura de Computadores 1ª AULA

Introdução. (Aula 2) Organização Estruturada de Computadores

Conjunto de Instruções e Modelos de Arquiteturas

Introdução à Computação: Máquinas Multiníveis

Sistemas Operacionais

Introdução (Aula 2) Introdução Arquitetura de Hardware. Organização Estruturada de Computadores. Introdução Conceitos (2) Introdução Conceitos (1)

PROGRAMAÇÃO I. Introdução

Aula 2 - Programação de Computadores - CI208 1/21

Porque usar um montador? Formato de uma linha de código fonte:

Roteiro de utilizaça o do SOAC

Introdução à Computação

Procedimentos. Sistemas de Computação

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)


ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR

Unidade de Controle. UC - Introdução

AGT0001 Algoritmos Aula 01 O Computador

Introdução à Organização de Computadores. Aula 8

Sistemas Operacionais I

Hardware e Software. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Gerência de Dispositivos. Adão de Melo Neto

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

Organização e Arquitetura de Computadores I

Capítulo 6 Nível do Sistema Operacional

Introdução. Considerações:

Projeto de ensino MONITORIA NÃO-SUBSIDIADA Fundamentos de Organização de Computadores

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06

Software Básico. Silvio Fernandes Aula 15: Carregamento dinâmico

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Estruturas de Sistemas Operacionais

9. Software de Sistema - Montadores (capítulo 9 do livro texto)

Organização e Arquitetura de Computadores INTRODUÇÃO

Arquitetura de Computadores

Puca Huachi Vaz Penna

Linguagens de Programação

Introdução. Arquitetura e Organização de Computadores I. Programa. Arquitetura e Organização de. Computadores. Capítulo 1.

Arquitetura e Organização de Computadores

Programação de Computadores:

Compiladores. Geração de Código Objeto

A Memória do MSX (I)

Arquiteturas RISC e CISC. Adão de Melo Neto

Gerência de Memória. Execução de um Programa (1) Introdução. Introdução

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

Arquitetura de Computadores. Conjunto de Instruções

Exercícios de Sistemas Operacionais 3 B (1) Gerência de Dispositivos de Entrada e Saída

Gerência de Dispositivos. Adão de Melo Neto

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

ELETRÔNICA DIGITAL II. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR

Sistemas Operacionais. Conceitos de Hardware e Arquitetura de computadores

ORGANIZAÇÃO DE COMPUTADORES

Aula 1: Apresentação do Curso

SSC0112 Organização de Computadores Digitais I

Organização e Arquitetura de Computadores I

Aula 1: Apresentação do Curso

ORGANIZAÇÃO DE COMPUTADORES

Compiladores I Prof. Ricardo Santos (cap 1)

Memória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA

TRABALHO PRÁTICO Nro. 01

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

1.1 Linguagens de Programação

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMÁTICA

Infra-Estrutura de Software. Introdução

Sistemas de Computação. Gerenciamento de memória

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Instalação Serviço de Acompanhamento de Projeto (PCSIS007) Sistema de Gestão da Qualidade

Apresentação. Sistemas Operacionais. Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D.

INFORMÁTICA: Informação automática

Sistemas Operacionais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO 9º PERÍODO. Profª Danielle Casillo

Notas de Aula Guilherme Sipahi Arquitetura de Computadores

Arquitetura de Von Neumann

Arquitetura e Organização de Computadores

Sistemas de Informação. Sistemas Operacionais

Introdução à Ciência da Computação ICC0001 Prof. Diego Buchinger

Linguagem de Montagem do NeanderX

Arquitetura e Organização de Computadores

Estrutura do Sistema Operacional

Linguagens de Programação Classificação

ORGANIZAÇÃO DE COMPUTADORES

Fundamentos de Sistemas Operacionais

Estrutura de Dados Básica

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

14/3/2016. Prof. Evandro L. L. Rodrigues

PCS3616. Programação de Sistemas (Sistemas de Programação) Semana 8, Aula 14. Editores de Ligação e Relocadores Programação em linguagem de montagem

UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES

Programação I A Linguagem C. Prof. Carlos Alberto

Introdução. Nível da Linguagem de Montagem. Linguagem de Montagem (2) Linguagem de Montagem (1) Linguagem de Montagem

SSC Linguagem de Programação e Aplicações

MODOS DE ENDEREÇAMENTO E CONJUNTO DE INSTRUÇÕES

Transcrição:

Um Conjunto de Softwares Básicos Integrados para Arquitetura SIC/XE Argemiro Soares de Aliança Neto, Sílvio Roberto Fernandes de Araújo Departamento de Ciências Exatas e Naturais - DCEN Universidade Federal Rural do Semi-Árido -UFERSA Av. Francisco Mota, 572 Bairro Pres. Costa e Silva CEP 59.625-900 - Mossoró - RN argemiront@gmail.com, silvio@ufersa.edu.br Abstract. The study of basic softwares include the study of compilers, assemblers, linkers and loaders, as well as their target architecture. SIC architecture is approached in this paper for its importance in basic software courses. However, testing SIC architecture based softwares is complicated because there is not a real machine model. This paper suggests an SIC and an SIC/XE simulator able to read an object program of this instructional machine and to show the step-by-step execution of each instruction; along with this simulator, an assembler, a memory controller and a linking and loader are presented, thus eliminating the problem of the absence of a real machine model Resumo. O estudo dos softwares básicos inclui o estudo de compiladores, assemblers, linkers e loaders, além da arquitetura alvo de tais softwares básicos. Utilizamos a arquitetura SIC no desenvolvimento deste trabalho pela sua importância em cursos de software básico. Entretanto, os testes de softwares em arquitetura SIC apresentam a dificuldade de não possuirem um modelo real da máquina. O presente artigo propõe um simulador da arquitetura SIC e SIC/XE capaz de ler um programa em formato objeto dessa máquina didática e mostrar passo-a-passo a execução de cada instrução; juntamente com este simulador, são apresentados um montador de arquivos objeto, um controlador de memória e um link/loader, eliminando o problema da ausência de um modelo real. 1. Introdução Softwares básicos se diferenciam dos softwares aplicativos devido a sua dependência com relação à máquina em que será executado. Softwares básicos têm como objetivo possibilitar a operação e o uso da máquina seja qual for a aplicação utilizada. Eles possuem uma relação muito próxima com o equipamento no qual devem ser executados. Dentre os principais softwares básicos conhecidos estão os compiladores, montadores (do inglês assemblers), ligadores (linkers), carregadores (loaders), sistemas operacionais etc [Aho 2008]. [Beck 1993] propôs o computador didático simplificado (SIC - Simplified Instructional Computer), que apesar de ser uma máquina hipotética, possui a maioria das características das reais e oi proposta para fins didáticos no estudo de softwares básicos. Além da arquitetura, [Beck 1993] apresenta o assembly da máquina e discute a

implementação de um assembler e um linking loader, em suas versões standard e extended. Apesar de todos os detalhes para implementação dos softwares básicos da arquitetura proposta, há ainda uma grande dificuldade para testar a funcionalidade dos softwares desenvolvidos, uma vez que não existe um modelo real da arquitetura. Desse modo, este artigo propõe um simulador da arquitetura SIC e SIC/XE obedecendo ao conjunto de instruções, ao banco de registradores e aos modos de endereçamento da memória para visualizar o estado da arquitetura durante a execução de programas. Tal simulador é uma ferramenta para auxílio dos desenvolvedores de softwares básicos para a arquitetura SIC e SIC/XE. A primeira versão interpretava o código em assembly [Aliança Neto 2010]. A nova versão simula a execução de um programa em formato binário do SIC e SIC/XE permitindo visualizar o estado de cada registrador, da memória e dados importantes da instrução a ser executada. A ferramenta também inclui um montador capaz de gerar um programa objeto equivalente ao programa escrito em assembly. O artigo está organizado da seguinte forma: a seção 2 faz a descrição do montador, a seção 3 apresenta o link/loader, a seção 4 o controlador de memória, a seção 5 o simulador e a seção 6 apresenta as considerações finais. 2. O Montador O montador recebe como entrada um código assembly compatível com a plataforma e tem como saída um código objeto executável com as mesmas funcionalidades do programa original. O arquivo objeto contém todas as informações necessárias para a correta identificação, carga na memória, endereçamento, carga de bibliotecas externas e execução do programa. O arquivo objeto é dividido em, no máximo, seis seções. Cada seção tem uma funcionalidade específica, como segue: Header: contém o nome do programa, o tamanho do código objeto, e o endereço de carga na memória. Esse último também indica se o programa deve ser alocado em uma posição específica ou em qualquer posição disponível (relocável); Definitions: tem a proposta de publicar variáveis internas para serem acessadas por outros programas. Essa seção é opcional; References: indica bibliotecas e/ou variáveis externas usadas no programa. Essa seção é opcional; Text: contém as instruções, variáveis e ponteiros para os dispositivos de entrada e saída. De fato, somente os dados desta seção são carregados na memória; Modifiers: armazena informações para ajuste do endereçamento de memória em programas relocáveis e link com bibliotecas externas. Essa seção é opcional; End: marca o fim do código executável e indica em que posição de memória está o primeiro código executável do programa. O montador cria arquivos executáveis em formato binário. Para facilitar o entendimento do processo, são criados adicionalmente um arquivo assembly e um

ASCII. O primeiro contém o código original e o resultado da montagem. O segundo o código objeto em formato ASCII para cada seção do programa original. A Figura 1(a) mostra um exemplo de arquivo binário e a Figura 1(b) mostra o equivalente em padrão ASCII. Figura 1. Exemplo de programa objeto em binário e em ASCII A montagem de programas SIC Standard têm características diferentes do padrão SIC/XE. O simulador provê opção de montagem e execução nos dois padrões. Foi adicionado ao código objeto um byte que indica o fim de cada linha representada no código objeto em ASCII para eliminar a ambiguidade existente entre os cabeçalhos e os dados da seção, no entanto, o mesmo não é carregado na memória no momento da execução. 3. O Link/Loader O link/loader é o software básico responsável, basicamente, pela carga do programa na memória, suas dependências (outros programas ou bibliotecas) e resolução dos endereços de memória. O link/loader armazena informações importantes sobre os programas que estão sendo carregados na memória, tais como: nome, tamanho, posição de alocação e uma tabela de variáveis externas com seus respectivos endereços. Tais informações são necessárias para evitar que um mesmo programa seja alocado duas vezes, como realizar a desalocação de memória e para que as variáveis públicas do programa sejam acessíveis por outros programas. Ao realizar a carga de um programa, se uma biblioteca ou variável externa é referenciada no programa então o link/loader a procura primeiramente na lista de programas carregados, se não a encontra procura no mesmo diretório do programa que está sendo carregado, caso ainda não encontre o usuário é questionado para informar o endereço do arquivo. Na alocação do programa é feita uma solicitação de memória ao controlador de memória de acordo com o tamanho do programa informado na seção Header do arquivo objeto. Caso não haja memória disponível para a carga do programa ou as posições de memória necessárias para a carga de programas não-relocáveis se encontram ocupadas o programa não é carregado e uma mensagem de erro é mostrada.

4. O Controlador de Memória O controlador de memória gerencia todo acesso à memória, seja para leitura ou para escrita. O controlador fornece acesso à memória e trabalha de forma semelhante à E/S programada [Stallings 2000], onde uma solicitação é feita fornecendo o endereço inicial e a quantidade de bytes a serem lidos ou escritos, no último caso também é fornecido o valor a ser lido. O controlador mantém também as chaves de acesso à memória, disponíveis na arquitetura SIC/XE. Um gerenciador de alocação de memória baseado em mapa de bits [Tanenbaum 2007] foi implementado para alocação contínua. Ao receber uma solicitação de alocação o controlador verifica no mapa se há memória disponível e então retorna a posição da alocação. Na desalocação somente o mapa de bits é alterado, os dados continuam na memória. 5. O Simulador O simulador une todas as ferramentas desenvolvidas em um ambiente com interface gráfica completa, onde o usuário poderá montar programas objeto e executá-los no mesmo ambiente. Verificando o passo-a-passo da execução. O software simulador foi desenvolvido em C#, baseado nas tecnologias mais avançadas do.net Framework 4, sendo compatível apenas com o Sistema Operacional Windows, nas versões Windows Vista e posteriores. 5.1 Funcionamento Básico 5.1.1 Modos de Operação O sistema tem dois modos de operação, Passo-a-passo ou Contínuo, disponíveis no menu Executar. No modo contínuo deverá ser informado o tempo de passo em milissegundos na barra de tarefas de controle de execução. Esse tempo indica quanto tempo o sistema fica em espera entre a execução de duas instruções. No modo passo-apasso o botão play deverá ser acionado para cada execução de instrução. 5.1.2 Fluxo Normal de Trabalho O usuário seleciona o arquivo do programa através do menu Arquivo Executar Programa Objeto, o modo de operação e executa o programa com o Play. Caso queira pausar, clica em Pause e Play para retornar. Caso queira abortar, clica em Stop. Ao executar uma instrução os valores alterados nos flags, registradores e na memória são indicados através de uma animação onde o campo alterado fica com o segundo plano verde por alguns instantes, como na Figura 2.

Figura 2. Tela do simulador em execução No campo Offset da memória o usuário pode definir um valor em hexadecimal a partir do qual o campo de memória irá mostrar os valores. 5.1.3 Programas que usam E/S Se o programa a ser executado utiliza dispositivos de E/S então o arquivo contendo os dados que serão lidos dos dispositivos de entrada deve ser carregado. A carga pode ser logo após a carga do programa através do menu Arquivo Carregar arquivo de dados. Nesse caso, um arquivo contendo o registro dos dispositivos de E/S também deve ser carregado no menu Configurar Carregar E/S. 5.1.4 O Montador de Arquivos Objeto O arquivo a ser montado pode ser carregado no menu Arquivo Montar arquivo objeto. O usuário pode escolher entre montagem para objeto SIC padrão ou SIC/XE no menu Configurar Montador SIC Compatível, selecionando para a primeira opção. O arquivo a ser montado deverá estar no formato *.asm e ser compatível com o assembly do SIC ou SIC/XE. Os arquivos montados serão salvos com o nome do programa constante no assembly e não com o nome do arquivo lido. Caso haja seções no programa cada seção é salva em um arquivo diferente com o nome respectivo da seção. Temos também a opção de salvar o arquivo original com os códigos de montagem produzidos pelo montador. Nesse caso, o nome do arquivo será NOME_DO_PROGRAMA MONTADO.asm.

6. Considerações Finais O simulador da arquitetura SIC/XE foi implementado em C# usando.net Framework, permitindo a visualização do estado de cada registrador, dos flags da ULA e da memória durante a execução de cada instrução de um programa objeto em formato binário compatível com a arquitetura. São disponibilizados dois modos de execução: passo-a-passo ou contínuo. A ferramenta ainda permite a geração do código objeto no formato especificado por [Beck 1993]. Trabalhos futuros incluem a animação das linhas indicadoras de fluxo de acordo com sequencia dos eventos, a utilização de um desmontador de código objeto para exibir todas as instruções do programa sendo executado em formato assembly com animação de transição entre as instruções e a disponibilização do aplicativo com manual de operação na WEB. Referências Aho, Alfred V. et al (2008), Compiladores: princípios, técnicas e ferramentas, Addison Wesley, 2ª. edição. Aliança Neto, Argemiro S. de; Araújo, Silvio R. F. (2010) Um Simulador Didático para a Arquitetura SIC/XE, In: I Workshop Técnico Científico de Computação. Beck, Leland L (1993), Desenvolvimento de Software Básico, Campus, 2ª edição. Microsoft (2010). URL: www.microsoft.com/windows/. Acessado: set. 2010. Tanenbaum, Andrew S. (2007). Sistemas Operacionais Modernos, Prentice Hall, 2ª edição. Stallings, William (2000). Computer Organization and Architecture, Prentice Hall, 5ª edição.