Baixe o app para aproveitar ainda mais
Prévia do material em texto
A-1 Apêndice UM Utilização dos simuladores e depuradores As características e comandos de depuração aqui apresentadas são válidas para os simuladores dos pseudo-computadores Neander e Ahmes, estudados nesta disciplina. Estes comandos serão válidos também para outras máquinas utilizadas na disciplina subseqüente de Arquitetura e Organização de Computadores I. Estes simuladores foram desenvolvidos para computadores PC e compatíveis, e permitem a execução e depuração de programas em linguagem de máquina escritos para os computadores NEANDER e AHMES. Os simuladores desenvolvidos incorporam grande parte das funções encontradas em depuradores comerciais, tais como: • edição de memória, • execução passo a passo, • inserção de pontos de parada (break-points), • janela de memória e • visualização do conteúdo dos registradores. Exercícios usando os simuladores visam principalmente familiarizar o usuário com os conceitos básicos de arquitetura de computadores, através de programação em linguagem de máquina e simbólica, e com as técnicas de depuração de tais programas. A.1 Simulador Os simuladores existem atualemnte em duas versões: para DOS e para Windows. Embora estas duas versões sejam funcionalemnte equivalentes, recomenda-se fortemente o uso da versão Windows, pois a versão DOS não será mais atualizada. Após carregado o simulador é mostrada a tela de trabalho. Preste bastante atenção a ela. A tela de trabalho é formada por campos de edição, campos de informação estática (cujo conteúdo não se altera) e campos de informação dinâmica (cujo conteúdo se altera em resposta a uma ação do usuário). A.2 Formato da tela Os elementos na tela do simulador são os seguintes: • Janela de Dados (Memória) mostra o conteúdo de 16 posições da memória, interpretadas como dados, e permite eventualmente alterar tais valores. • Registradores para o computador NEANDER é mostrado o conteúdo do acumulador (AC), do registrador de status (bits N e Z), do apontador de instruções (PC) e do registrador de instruções (RI). Para o AHMES apresenta-se a mesma informação, sendo a única diferença o maior número de bits do registrador de status (bits N, Z, C, V e B). Os demais computadores possuem outros conjuntos de registradores. A-2 • Janela de Programa (Memória) mostra o conteúdo de 16 posições da memória, interpretadas como programa, e permite eventualmente alterar tais valores. • Break-point um ponto qualquer do programa, escolhido pelo usuário como ponto de parada (o simulador para no endereço indicado, sem executar a instrução apontada). O valor do break-point é inicializado com o endereço superior de memória (255 decimal ou FF hexa). • Tabela de códigos de instrução para ajudar a quem possui memória volátil, mostra os mnemônicos e os códigos das instruções. • Menu de comandos mostra os comandos aceitos pelo simulador/depurador. O caractere sublinhado em cada comando pode ser usado para ativação via teclado. Os campos listados abaixo são de informação estática: - tabela de códigos de instrução (pode ser ativada ou apagada pela tecla F1) - menu de comandos Os campos a seguir são de informação dinâmica: - registradores - break-point - linha de mensagens Os demais são campos de edição: - janela de dados - janela de programa A.3 Entrada numérica Entradas numéricas são necessárias em duas situações distintas: para fornecer um endereço solicitado pelo simulador ou para editar posições de memória. Na digitação de valores numéricos, valem as seguintes regras: • valores maiores que 25510 (decimal) e FF16 (hexadecimal) não são aceitos, • valores negativos não são aceitos (devem ser entrados em complemento de dois) • as teclas de edição são válidas para alterações e correções • a tecla ENTER termina a entrada do número. Quando é necessária a entrada de um endereço, o simulador fornece um valor padrão, de acordo com a situação atual. Para aceitar este valor, basta digitar ENTER . Caso contrário, o início da digitação de um novo número anula o valor padrão. Durante a entrada de valores na memória, a utilização da tecla ENTER incrementa automaticamente o endereço, ou seja, termina a entrada do número e inicia a edição do próximo endereço. A.4 Comandos de operação Os comandos que permitem editar e depurar programas usando os simuladores são apresentados nas próximas seções. A-3 A.4.1 Hexadecimal x decimal Todos os valores numéricos (endereços, códigos de instruções, dados) podem ser representados tanto em hexadecimal como em decimal. O simulador começa sempre a operar em hexadecimal. Você pode escolher a forma que melhor lhe convém, através dos seguintes comandos: Comando “Decimal” ou Icone “0..9” todos os valores numéricos aceitos e mostrados pelo simulador são decimais. Comando “Hexadecimal” ou Icone “0..F” todos os valores numéricos aceitos e mostrados pelo simulador são hexadecimais. A.4.2 Visualização Simbólica A Janela de Programa possui uma coluna que permite visualizar as instruções em modo simbólico, ou seja, em uma interpretação a nível de linguagem assembler. Note-se que o código da instrução é “desmontado”, sendo apresentado na forma de mnemônico, mas endereços e operandos são somente visualizados na forma numérica, em decimal ou hexadecimal (dependendo da base escolhida). A visualização inicia no endereço inicial da janela, independente do fato deste endereço ser realmente o início de uma instrução ou não. Por exemplo, considerem-se as duas janelas abaixo (mostradas somente com 10 posições, em decimal): Endereço Dado Simbólico Endereço Dado Simbólico 0 32 LDA 128 1 128 JMP 48 1 128 2 48 2 48 ADD 129 3 129 JMP 48 3 129 4 48 4 48 ADD 130 5 130 JMP 16 5 130 6 16 6 16 STA 128 7 128 JMP 240 7 128 8 240 8 240 HLT 9 0 NOP 9 0 NOP 10 0 NOP 10 0 NOP 11 0 NOP Na janela da esquerda, o endereço inicial é zero, e tem-se um programa que soma três posições. Ao deslocar-se esta janela de uma posição (com a seta para baixo), tem-se a janela da direita, cujo conteúdo é o mesmo, mas foi interpretado de forma diferente. Esta característica não se constitui propriamente um erro, mas é típica da arquitetura de von Neuman, que permite uma completa liberdade no posicionamento de dados de instruções, e inclusive no início das instruções. Um computador deste tipo executa automaticamente as instruções a partir do endereço apontado pelo PC. Cabe ao programador (ou ao sistema operacional) garantir que o programa inicie em um endereço coerente. Caso entretanto se deseje iniciar a interpretação simbólica sempre no início do programa (endereço zero) e não no início da janela de programa, pode-se utilizar para isto o comando “Mnemônicos relativos”, ou a tecla F2. A.4.3 Editando um programa na memória Para alterar o conteúdo da memória, use os comandos de edição, válidos tanto para a janela de dados como para a janela de programa. Ambas apresentam um campo de edição, que permite alterar um byte de cada vez. A-4 A escolha de uma das duas janelas para edição é feita com o mouse , e a movimentação dentro da janela também. Uma vez ativada uma janela, algumas teclas também podem ser usadas para movimentação: Tecla Significado seta para baixo ou enter posição posterior de memória seta para cima posição anterior de memória page up volta 16 posições page down avança 16 posições Tabela A.1 - Movimento do cursor na janela de memória durante edição As duas janelas podem ter seu tamanho redimensionado, para permitir a visualização de mais de 16 posições. A.4.4 Inspecionando a memória O comando “Ir para” permite o deslocamento rápido para qualquer posição da janela de programa. A.4.5 Imprimindo porções da memória O comando “Salver Texto” permite que trechos de programas possam ser transcritos para um outro arquivo, para fins de documentação. O comando de impressão não envia os dados diretamente para um impressora, mas sim armazenatoda a informação que se deseja imprimir em um arquivo, a fim de que o usuário complete esta informação com comentários e outros dados. O formato da impressão segue a base atualmente sendo utilizada (decimal ou hexadecimal), ou seja, o formato segue exatamente aquele da Janela de Programa. A.4.6 Zerando uma área de memória Uma determinada área de memória pode ser zerada usando o comando “Zerar Memória”. O simulador solicita o endereço inicial e o endereço final da área de memória a ser zerada. A.4.7 Movendo blocos Blocos podem ser movidos na memória através do comando “Copiar Memória”. O simulador solicita o endereço inicial e o endereço final da área de memória a ser movida e o endereço inicial da área de destino. Forneça-os. O bloco sempre é deslocado de forma a manter a sua integridade na posição de destino. Assim, por exemplo, pode-se mover um bloco que inicie no endereço 10 e termine no endereço 15 para o endereço de destino 11. Com isto, as posições 11 a 16 receberão os conteúdos originais das posições 10 a 15. Observação: o bloco fonte não é alterado, a menos das posições que coincidam com o bloco destino. A.4.8 Executando um programa Você pode executar um programa em dois modos: passo a passo ou contínuo. Os dois modos iniciam a execução a partir do valor atual do apontador de instruções (PC). Este pode ser ajustado utilizando-se o comando “Alterar PC” ou “Zerar PC” (F10). Para o modo contínuo, através do comando “Rodar” (F9), voce pode determinar um ponto de parada na execução do seu programa. A-5 Alterar AC permite fornecer um valor inicial para o acumulador (AC). Após o comando, o simulador solicita um endereço para inicializar o AC. Alterar PC permite fornecer um valor inicial para o apontador de instruções (PC). Após o comando, o simulador solicita um endereço para inicializar o PC. Passo (F8) cada vez que o comando é ativado (via menu, tecla F8, ou iconed e passo a passo), o simulador executa a instrução apontada pelo PC, parando logo após. BP Break point permite especificar um endereço de parada. No campo BP da janela de programa pode ser fornecido o endereço para o break point. Rodar (F9) após o comando “Rodar” (via menu, tecla F9 ou icone) o simulador executa continuamente um programa, a partir da posição indicada pelo PC, até encontrar uma instrução de halt (HLT), o ponto de parada ou o comando ser ativado novamente (freio de emergência). A.4.9 Salvando e carregando arquivos Para os comandos que seguem, deve ser fornecido um nome de arquivo. Os simuladores adicionam, automaticamente, o sufixo “.mem”. Arquivos de simuladores diferentes podem ou não ser compatíveis entre si, dependendo da compatibilidade entre as respectivas arquiteturas. Carregar carrega um arquivo para a memória do computador sendo simulado. O arquivo deve conter uma memória compatível com o computador sendo simulado, caso contrário o simulador indica erro e o comando é anulado. Salvar grava o conteúdo da memória do computador sendo simulado.
Compartilhar