Buscar

Simuladores e Depuradores de Linguagem de Máquina

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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.

Outros materiais