Introdução a Organização de Computadores e Linguagens de Montagem. Ricardo Anido
|
|
- Brian Almeida Regueira
- 8 Há anos
- Visualizações:
Transcrição
1 Introdução a Organização de Computadores e Linguagens de Montagem Ricardo Anido Draft date 15 de Agosto de 2013
2 Capítulo 3 O processador Faíska Neste capítulo iniciaremos o estudo mais detalhado do repertório de instruções do processador Faíska, ilustrando com exemplos de trechos de programas o uso das diversas instruções. As instruções serão apresentadas usando um descritor no formato de uma tabela, como o mostrado na Figura 3, contendo o mnemônico da instrução em destaque em uma aba (MNE na figura), o nome, a sintaxe do comando correspondente em linguagem de montagem, a operação descrita de forma sucinta, e a codificação. O descritor inclui também um campo Flags, cujo significado será introduzido mais adiante, na Seção MNE Nome da instrução Sintaxe Operação Flags Codificação Figura 3.1: Formato do descritor de instruções As instruções serão apresentadas em grupos: transferência de dados, operações aritméticas, instruções para controle de fluxo e operações lógicas. 3.1 Transferência de dados Instruções de transferência de dados são as que permitem a transferência de dados entre dois registradores do processador ou entre a memória e um registrador. Um exemplo de 1
3 2 CAPÍTULO 3. O PROCESSADOR FAÍSKA instrução de transferência de dados é a instrução carrega registrador com valor imediato, que já foi introduzida no capítulo anterior. Nesta seção iremos estudar as outras instruções para transferência de dados do repertório de instruções do Faíska Transferência entre registradores Os operandos para instruções de transferência entre registradores são sempre dois registradores: o registrador destino (operando mais à esquerda) e o registrador fonte (operando mais à direita). A operação executada é muito simples: o valor do registrador fonte é copiado para o registrador destino. MOV Carrega registrador com registrador Sintaxe Operação Flags Codificação mov r dest, r fonte r dest r fonte 00 r dest r fonte Qualquer dos registradores de propósito geral do Faíska (r0 a r15) pode ser usado como registrador destino ou fonte. Exemplo Endereço Código Programa ; exemplo de instrução de carga de registrador 2 ; com valor constante (endereçamento imediato) [ ] mov r1,r5 ; instrução é codificada em 5 ; uma palavra r1 ff ff ff ff 00104h r h r h r h fch fch Antes Depois
4 3.1. TRANSFERÊNCIA DE DADOS 3 No exemplo acima são mostrados o estado antes e após a execução do trecho de programa em linguagem de montagem, tanto do processador como da memória. Em todos os exemplos seguintes o mesmo esquema será utilizado. No processador são mostrados apenas os registradores importantes para entender a execução do trecho de programa; os registradores e posições de memória que tiveram seus valores alterados são mostrados em tom cinza após a execução Transferência da para um registrador O Faíska possui diferentes instruções para transferência de valores da memória para um registrador, cada uma com modos de endereçamento distintos. As instruções de transferência da memória para registrador no Faíska utilizam três modos de endereçamento: endereçamento imediato, endereçamento direto e endereçamento indireto por registrador. Carrega registrador com endereçamento imediato No endereçamento imediato, o valor do operando faz parte do próprio código da instrução. Na instrução carrega registrador com endereçamento imediato o registrador destino é carregado com o valor do operando. E como o valor do operando é codificado na própria instrução, o valor carregado no registrador é sempre o mesmo. Em outras palavras, sempre que uma particular instrução desse to for executada, o registrador destino será carregado sempre com o mesmo valor. Dessa forma, essa instrução é utilizada para carregar um valor constante no registrador destino. Compare o efeito dessa instrução com a instrução carrega registrador com endereçamento direto, introduzida no capítulo anterior. No endereçamento direto, o valor carregado no registrador é o valor corrente de uma posição de memória. Como esse valor pode ser alterado pelo programa, uma mesma instrução carrega registrador com endereçamento direto pode carregar diferentes valores no registrador destino a cada vez que é executada.
5 4 CAPÍTULO 3. O PROCESSADOR FAÍSKA SET Carrega registrador com endereçamento imediato Sintaxe Operação Flags Codificação set r dest, expr 8 r dest ext(imd 8 ) 01 imd 8 r dest set r dest, expr 32 r dest imd r dest imd 32 O Faíska possui duas instruções de carga de registrador com endereçamento imediato: uma em que a constante é codificada em apenas um byte e uma em que a constante é codificada em 32 bits. No caso em que a constante é codificada em 32 bits, a instrução ocupa duas palavras. Para constantes que podem ser representadas em 8 bits, a instrução utiliza o campo imd8 para armazenar a constante como um inteiro com sinal em complemento de dois. Assim, esta forma só permite carregar constantes entre 128 e 127. Como veremos, na programação em linguagem de montagem muitas vezes utilizamos constantes dentro desse intervalo, o que nos permite utilizar a forma mais econômica com bastante frequência. É importante notar que todos os 32 bits do registrador destino são carregados pela instrução set, mesmo na sua forma mais curta. Nesse caso, quando um valor imd8 positivo é carregado em um registrador, os 24 bits mais significativos do registrador são zerados. Quando o campo imd8 tem um valor negativo, os 24 bits mais significativos do registrador destino recebem o valor 1, de forma a fazer com que o registrador tenha o valor negativo correto. Ou seja, o bit de sinal do operando imd8 é estendido para os bits mais significativos do registrador destino. O fato de que o bit de sinal de imd8 é estendido para compor o valor de 32 bits é mostrado no campo operação do descritor pela expressão ext(imd 8 ). Note que na descrição da sintaxe do comando em linguagem de montagem aparece o termo expr 8, que representa uma expressão inteira, que quando avaliada deve resultar em um inteiro de 8 bits com sinal. Exemplo
6 3.1. TRANSFERÊNCIA DE DADOS 5 Endereço Código Programa ; exemplo de instrução de carga de registrador 2 ; com valor constante (endereçamento imediato) [01 ff 03 00] set r3,-1 ; instrução é codificada em 5 ; uma palavra 6 r h r3 ff ff ff ff 01004h ff h ff h Antes Depois Exemplo Endereço Código Programa ; outros exemplos de instrução de carga de 2 ; registrador com endereçamento imediato, com 3 ; constantes que não podem ser representadas 4 ; em 8 bits [ ] set r9,400h ; um valor que não pode 7 [ ] ; ser representado 8 ; em 8 bits. Código da 9 ; instrução ocupa 10 ; duas palavras [ c 00] set r12,var1 ; carrega endereço de 12 [ ] ; var1. Código também 13 ; ocupa duas palavras 14.org 70000h var1: ds 4 ; uma variável associada 18 ; ao endereço 70000h
7 6 CAPÍTULO 3. O PROCESSADOR FAÍSKA r h r h r c h 0010ch r c h 0010ch h h Antes Depois Note que no Exemplo acima, quando o montador avalia a expressão inteira composta pelo rótulo var1, durante a montagem do comando set r12,var, o resultado é o endereço do rótulo, ou seja, o endereço da variável associada àquele rótulo. É esse endereço que é montado na segunda palavra da instrução, e portanto é esse endereço que é carregado como novo valor do registrador r12. Carrega registrador com endereçamento direto O endereçamento imediato só é útil para carregar o valor de uma constante em um registrador. Para implementar o conceito de variável é necessário associar um nome a uma posição específica na memória. Assim, uma variável (i, por exemplo) pode ser associada a uma determinada posição da memória (2000h, por exemplo). Toda vez que se quiser acessar uma variável, faz-se um acesso à posição de memória correspondente. Uma maneira de acessar posições específicas é utilizar o chamado endereçamento direto, no qual a instrução contém o endereço da posição de memória que contém o valor a ser acessado. A instrução ld (abreviatura do inglês load) carrega o valor de um registrador com o conteúdo de uma posição de memória, cujo endereço é dado na própria instrução. LD Carrega registrador com endereçamento direto Sintaxe Operação Flags Codificação ld r dest, expr 32 r dest mem[imd 32 ] 03 r dest imd 32 Note que na descrição da sintaxe do comando em linguagem de montagem aparece o termo expr 32, que representa uma expressão inteira, que quando avaliada deve
8 3.1. TRANSFERÊNCIA DE DADOS 7 resultar em um inteiro de 32 bits (sem sinal, já que representa um endereço), representada na codificação como imd 32. No entanto, na maioria dos casos expr 32 é na realidade apenas um rótulo, associado a uma variável. O montador monta na segunda palavra da instrução o endereço associado ao rótulo. Para executar uma instrução ld o processador faz três acessos à memória: um acesso no endereço do corrente, para a busca da primeira palavra da instrução; outro acesso no endereço do corrente mais quatro, para a busca do endereço do operando (imd 32, segunda palavra da instrução); e ainda outro acesso para a busca do valor operando (no endereço retirado no segundo acesso). Exemplo Endereço Código Programa ; exemplo de instrução ld 2 ; código ocupa duas palavras [ a 00] ld r9,cont 5 [ ] org 2000h 9 cont: ds 4 ; uma variável associada 11 ; ao endereço 2000h 02004h 02004h r h 0fffch r h 0fffch h h Antes a h Depois a h Carrega registrador com endereçamento indireto por registrador No modo de endereçamento indireto por registrador o endereço do operando é dado em um registrador, ao invés de ser um valor constante, codificado na instrução, como no endereçamento direto. Na linguagem de montagem, utilizaremos para a instrução de carga de registrador com endereçamento indireto por registrador o mesmo mnemônico ld já utilizado anteriormente, mas indicaremos o modo de endereçamento distinto pela grafia do operando fonte. Enquanto na instrução ld com modo de endereçamento direto o operando fonte é um rótulo (no caso geral, qualquer expressão inteira), na instrução
9 8 CAPÍTULO 3. O PROCESSADOR FAÍSKA ld com modo de endereçamento indireto por registrador o operando fonte é o nome de um registrador entre parênteses. Essa convenção de utilizar o mesmo mnemônico para duas instruções distintas é apenas uma conveniência para o programador; é importante notar no entanto que para o processador o que existe são duas instruções distintas, com codificações diferentes. LD Carrega registrador com endereçamento indireto por registrador Sintaxe Operação Flags Codificação ld r dest, (r fonte ) r dest mem[r fonte ] 04 r dest r fonte Exemplo Endereço Código Programa ; instrução carrega registrador com 2 ; endereçamento indireto por registrador 3 ; código da instrução ocupa uma palavra ac [ ] ld r6, (r5) h 03010h r c ch r c ch r6 ff ff ff f h r h ac b0 001b0h 001b0h Antes ach Depois ach Carrega registrador com endereçamento indireto por registrador mais uma constante A instrução carrega registrador com endereçamento indireto por registrador mais uma constante é na verdade a mesma instrução que carrega registrador com endereça-
10 3.1. TRANSFERÊNCIA DE DADOS 9 mento indireto por registrador. Apresentamos as duas instruções separadamente apenas como forma mais didática de introduzir o modo de endereçamento indireto por registrador mais constante. Nesse novo modo de endereçamento o operando fonte é uma expressão de adição, entre parênteses, em que um termo é o nome de um registrador e o outro termo é uma expressão constante com valor entre 128 e 127. O termo constante é codificado no campo imd8; o endereço efetivo é calculado efetuando a adição do valor do registrador com o valor de imd8 com o sinal estendido. O fato de que o bit de sinal de imd8 é estendido para compor o valor de 32 bits é mostrado no campo Operação do descritor pela expressão ext(imd 8 ). LD Carrega registrador com endereçamento indireto por registrador mais uma constante Sintaxe Operação Flags Codificação ld r dest, (r fonte + expr 8 ) r dest mem[r fonte + ext(imd 8 )] 04 imd 8 r dest r fonte Exemplo Endereço Código Programa ; instrução carrega registrador com 2 ; endereçamento indireto por registrador 3 ; mais uma constante. 4 ; código da instrução ocupa uma palavra [ ] ld r2,(r3+8) [04 fc 06 05] ld r6,(r5-4)
11 10 CAPÍTULO 3. O PROCESSADOR FAÍSKA 04004h 04004h r h r h r f f8 03ffch r f f8 03ffch r r r h h r h h ffch ffch Antes 04 fc h Depois 04 fc h h h É interessante notar que os modos de endereçamento indireto por registrador e indireto por registrador mais uma constante são implementados pela mesma instrução, com código 04h. Na verdade, a execução desta instrução do processador sempre soma o valor do campo imd8 ao valor do registrador destino para encontrar o valor do endereço efetivo do operando. Quando imd8 é zero resulta no modo de endereçamento indireto por registrador ; quando imd8 é diferente de zero resulta no modo de endereçamento indireto por registrador mais uma constante. Transferência de bytes entre a memória e um registrador Como é muito comum a necessidade de manular valores de 8 bits (especialmente caracteres), o Faíska inclui também instruções para carregar um byte da memória em um registrador. Na instrução Carrega registrador com byte da memória, apenas um byte é carregado da memória para o registrador destino. O byte carregado é colocado nos 8 bits menos significativos do registrador destino; os 24 bits mais significativos do registrador são zerados. O mnemônico utilizado pelo montador é ldb; como no caso da instrução ld, há dois modos de endereçamento possíveis: direto e indireto por registrador mais uma constante.
12 3.1. TRANSFERÊNCIA DE DADOS 11 LDB Carrega registrador com byte da memória Sintaxe Operação Flags Codificação ldb r dest, expr 32 r dest mem 8 [imd 32 ] 07 r dest imd 32 ldb r dest, (r fonte + expr 8 ) r dest mem 8 [r fonte + ext(imd 8 )] 08 imd 8 r dest r fonte Novamente, é interessante notar que os modos de endereçamento indireto por registrador e indireto por registrador mais uma constante são implementados pela mesma instrução, com código 08h. Como comentado anteriormente a execução desta instrução sempre soma o valor do campo imd8 ao valor do registrador destino para encontrar o valor do endereço efetivo do operando, de fomra que o modo de endereçamento indireto por registrador pode ser entendido como um caso especial do modo de endereçamento indireto por registrador mais uma constante, quando a constante tem valor zero. Exemplo Endereço Código Programa ; instrução carrega registrador com byte da 2 ; memória [ d 00] ldb r13,carac+7 ; carrega byte cujo 5 [ b] ; endereço é carac [ ] ldb r1,(r2) ; r2 tem endereço do 8 ; byte que queremos 9 ; carregar em r [08 ff 0c 02] ldb r12,(r2-1) ; r2-1 tem endereço do 12 ; byte que queremos 13 ; carregar em r org 4004h 17 carac: ; uma variável que 18 ; contém uma sequência 19 ; de bytes (caracteres) [ ].db U, V, W, X [ ].db a, b, c, d
13 12 CAPÍTULO 3. O PROCESSADOR FAÍSKA 0400ch 0400ch r h r h r h r h r12 bb bb bb bb r r13 aa aa aa aa h 0020ch r ff 0c h 0020ch h h b 00204h b 00204h Antes d h Depois d h Transferência de um registrador para a memória As instruções de transferência de um registrador para memória permitem armazenar o valor de um registrador em uma posição de memória, efetuando a operação inversa das instruções de carga de registrador. No Faíska, estas instruções utilizam o mnemônico st (do inglês store, armazenar) e possui duas variantes, correspondentes aos modos de endereçamento direto e indireto por registrador. Armazena registrador em memória ST Armazena de registrador na memória Sintaxe Operação Flags Codificação st (r dest + expr 8 ), r fonte mem[r dest +ext(imd8)] r fonte 05 r dest r fonte st (r dest ), expr 32 mem[imd 32 ] r fonte 06 r fonte imd 32 Exemplo
14 3.1. TRANSFERÊNCIA DE DADOS 13 Endereço Código Programa ; exemplos de instrução armazena registrador na 2 ; memória [ ] st var,r7 ; armazena registrador 5 [ ] ; r7 na variável var [ ] st (r4),r3 ; r4 tem endereço 9 ; onde queremos 10 ; armazenar r org 1000h 13 var: ; uma variável montada ds 4 ; no endereço 1000h 01008h 01008h r3 ff ff ff ff h r3 ff ff ff ff ff ff ff ff 01004h r ff ff ff ff 01000h r h r r h 0031ch h 0031ch Antes h 00314h Depois h 00314h
15 14 CAPÍTULO 3. O PROCESSADOR FAÍSKA Armazena byte de registrador em memória STB Armazena byte de registrador na memória Sintaxe Operação Flags Codificação stb (r dest ), r fonte r dest mem 8 [r fonte ] 0a r dest r fonte stb (r dest ), expr 32 mem 8 [imd 32 ] r fonte r dest 0a imd 32 Exemplo Endereço Código Programa ; exemplo de instruções que armazenam byte de 2 ; registrador memória [ ] stb carac+2,r4 ; armazena byte de r4 5 [ ] ; no endereço carac+2 6 ; instrução ocupa duas 7 ; palavras [0a ] stb (r5),r2 ; r5 tem endereço onde 10 ; queremos armazenar 11 ; byte em r2 12 ; instrução ocupa uma 13 ; palavra org 2000h 16 carac: ; uma variável montada ds 8 ; no endereço 2000h que 18 ; representa uma 19 ; sequência de oito 20 ; bytes 21
16 3.1. TRANSFERÊNCIA DE DADOS h 02008h r h r h r h r h r r a h 00110h a h 00110h Antes ch 00108h Depois ch 00108h Podemos agora ver como traduzir, para linguagem de montagem, um pequeno trecho de programa escrito em linguagem C exemplificando o uso de variáveis e comandos de atribuição: Exemplo Traduzir o trecho abaixo, em linguagem C, contendo alguns comandos de atribuição, para linguagem de montagem do Faíska. 1 // Trecho de programa em C 2 3 #define TAMANHO int a,b; 6 char c; a = TAMANHO; 10 b = a; 11 c = a ;
17 16 CAPÍTULO 3. O PROCESSADOR FAÍSKA 1 ; tradução para linguagem de montagem 2 ; do trecho de programa acima 3 4 TAMANHO.equ ; reserva espaço para as variáveis 7.org 20h 8 a:.ds 4 9 b:.ds 4 10 c:.ds org 100h 13 set r0, TAMANHO ; r0 usado como auxiliar 14 st a, r0 ; armazena valor na variável a 15 st b, r0 ; armazena valor na variável b 16 set r1, a ; r1 usado como auxiliar; note 17 ; que r0 poderia ser reutilizado 18 stb c, r1 ; armazena caractere na variável c Ordem de bytes na memória Como vimos, a memória do computador é vista como um vetor de bytes, em que os endereços de memória representam os índices desse vetor. Ou seja, o primeiro byte da memória tem endereço 0, o segundo byte da memória tem endereço 1, o terceiro byte tem endereço 2 e assim por diante. Muitas vezes também consideramos a memória como uma sequência de palavras. Mas como o endereçamento da memória é por bytes, quando consideramos a memória como uma sequência de palavras continuamos a utilizar os endereços dos bytes individuais. Assim, para um processador com palavras têm 32 bits, como o Faíska, a primeira palavra está no endereço 0, a segunda palavra no endereço 4 (e não 1), a terceira palavra está no endereço 8 (e não 2), e assim por diante. Isso fica também evidente nas figuras que temos usado para representar o conteúdo da memória, como mostrado na figura abaixo, que mostra duas palavras presentes nos endereços de memória 0200h e 0204h. 208h h 200h 1fch Vamos agora examinar com maior detalhe a ordem em que os bytes de uma palavra são armazenados na memória. Quando por exemplo valor de um registrador é transferido para ou da memória, um processador pode considerar os bytes que formam a
18 3.1. TRANSFERÊNCIA DE DADOS 17 palavra a ser transferida em pelo menos duas ordens distintas: o byte de memória que tem endereço mais baixo pode conter (i) o byte mais significativo do registrador ou (ii) o byte menos significativo da palavra. Registrador end_inicio+12 end_inicio+8 end_inicio+4 end_inicio Big-endian end_inicio+12 end_inicio+8 end_inicio+4 end_inicio Registrador Little-endian A ordem (i) é chamada em inglês de big-endian, e ordem (i) é chamada de littleendian. Esses nomes são referências ao livro Viagens de Gulliver, de Jonathan Swift, em que dois reinos estão em guerra por divergirem sobre como deve ser comido um ovo quente: a partir do extremo mais fino ou do extremo mais grosso do ovo. Tal como no conto de Swift, a ordem escolhida pelo processador não importa, pois como o processador sempre armazena e lê os bytes da memória na mesma ordem, ambas as ordens são funcionalmente equivalentes, embora haja vantagens e desvantagens de cada uma em relação à implementação em hardware. Mas como processadores distintos utilizam ordens distintas, quando é necessária a transferência de informação entre um computador e outro é importante que se conheça a ordem utilizada em ambos os processadores envolvidos para que a informação seja corretamente recebida. A figura abaixo mostra um exemplo de duas palavras, de valores h e h, armazenadas em endereços consecutivos da memória (respectivamente 200h e 204h), utilizado as ordens little-endian e big-endian.
19 18 CAPÍTULO 3. O PROCESSADOR FAÍSKA (em bytes) (em bytes) 208h 208h (em palavras) h 206h h 206h 208h h h h h h h h h 1fch h h h h h h 1ffh 1ffh Little-endian Big-endian Note que o Faíska utiliza a ordem little-endian. 3.2 Instruções aritméticas No grupo das instruções aritméticas encontramos instruções para somar, subtrair, multlicar e dividir números inteiros. Nesta seção estudaremos apenas as instruções para somar e subtrair; multlicação e divisão serão apresentadas mais adiante. No Faíska as instruções de adição e subtração têm sempre como operando destino um registrador; o segundo operando pode ser um outro registrador ou um valor imediato codificado em 8 bits (inteiro em complemento de dois) Adição ADD Adição Sintaxe Operação Flags Codificação add r dest, expr 8 r dest r dest + ext(imd 8 ) CNVZ 10 imd 8 r dest add r dest, r fonte r dest r dest + r fonte CNVZ 11 r dest r fonte
20 3.2. INSTRUÇÕES ARITMÉTICAS 19 Bits de estado Note que na instrução add pela primeira vez o campo Flag do descritor de instrução não está vazio, e contém quatro letras. Essas letras representam bits de estado (em inglês, flags). No Faíska os bits de estado são: C: vai-um (carry). Ligado se operação causou vai-um (carry-out) ou vem-um (carryin), desligado caso contrário. Z: zero. Ligado se o resultado foi zero, desligado caso contrário. N: sinal. Cópia do bit mais significativo do resultado; considerando aritmética com sinal, se N igual a zero, o resultado é maior ou igual a zero. Se N igual a 1, resultado é negativo. V: overflow. Ligado se ocorreu estouro de campo; calculado como o ou-exclusivo entre o vem-um e o vai-um do bit mais significativo do resultado. No descritor de instruções o campo Flag indica quais os bits de estado são afetados pela instrução; no caso da instrução add, todos os bits são afetados. Um bit de estado guarda a informação do resultado da última instrução executada que o afetou. Isto é, se uma instrução não afeta um determinado bit de estado, este permanece com o mesmo valor anterior à execução da instrução. Bits de estado não são alterados por operações de transferência de dados. Os bits de estado são armazenados em um registrador especial no Faíska, que não é acessível através de instruções de carga. Nas figuras dos exemplos, esse registrador especial é mostrado com o nome flags. Veremos mais adiante como os bits de estado são utilizados para controlar o fluxo de execução de um programa. Exemplo Endereço Código Programa ; exemplos de adição com endereçamento 2 ; imediato e entre registradores [ ] add r4,1 ; adição com valor imediato 5 ; instrução ocupa uma 6 ; palavra [ ] add r1,r2 ; adição de dois 10 ; registradores 11 ; instrução ocupa uma 12 ; palavra
21 20 CAPÍTULO 3. O PROCESSADOR FAÍSKA r r bc r ab h 30004h r ab h 30004h r4 00 ff ff ff h r h flags C N Z V Antes flags C N Z V Depois Subtração SUB Subtração Sintaxe Operação Flags Codificação sub r dest, expr 8 r dest r dest ext(imd 8 ) CNVZ 12 imd 8 r dest sub r dest, r fonte r dest r dest r fonte CNVZ 13 r dest r fonte Exemplo Endereço Código Programa ; exemplos de adição com endereçamento 2 ; imediato e entre registradores [ ] sub r6,1 ; subtração com valor 5 ; imediato, instrução 6 ; ocupa uma palavra [ ] sub r8,r7 ; subtrai registrador de 10 ; registrador 11 ; instrução ocupa uma 12 ; palavra
22 3.2. INSTRUÇÕES ARITMÉTICAS 21 r r6 0f ff ff ff r7 ff ff ff ff h 50004h r7 ff ff ff ff h 50004h r8 ff ff ff ff h r h flags C N Z V Antes flags C N Z V Depois Exercício 3.1 Escrever um trecho de programa em linguagem de montagem que implemente o seguinte comando de atribuição em C: 1 var a, b, c: integer; a = b + c - 2;
23 22 CAPÍTULO 3. O PROCESSADOR FAÍSKA Solução 1 ; tradução para linguagem de montagem 2 ; do trecho para implementar a = b + c ; reserva espaço para as variáveis inteiras a, b e c 5 a:.ds 4 6 b:.ds 4 7 c:.ds ld r0,b ; r0 e r1 são usados como auxiliares 10 ld r1,c 11 add r0,r1 ; r0 agora tem b+c 12 sub r0,2 13 st a,r0 ; e armazena o resultado 3.3 Instruções de desvio Até agora, em todos os exemplos mostrados as instruções são executadas em sequência estrita das suas posições da memória, ou seja, o valor do registrador é sempre incrementado de quatro a cada instrução. Se não houver uma forma de fazer o valor de variar de maneira não sequencial, fica impossível de implementar repetições como os comandos for e while em C ou Pascal. Para controlar o fluxo de execução do programa, são usadas instruções de desvio, que alteram o valor do registrador interno. Instruções de desvio podem ser condicionais ou incondicionais Desvio incondicional A execução da instrução de desvio incondicional tem apenas um operando é bastante simples: o valor do registrador é modificado para o valor do operando. Ou seja, o valor do operando é copiado para o registrador, fazendo com que a próxima instrução a ser executada tenha o endereço do operando, alterando dessa forma a execução puramente sequencial de instuções vista até agora. Há duas instruções de desvio incondicional: uma que é codificada em duas palavras, com a segunda palavra contendo o valor do endereço alvo do desvio, e uma instrução codificada em uma palavra, na qual o endereço alvo é dado em um registrador. O mnemônico utilizado para as duas instruções é jmp, do inglês jump (salto).
24 3.3. INSTRUÇÕES DE DESVIO 23 JMP Armazena byte de registrador na memória Sintaxe Operação Flags Codificação jmp expr 32 imd imd 32 jmp r dest r dest 21 r dest Exemplo Endereço Código Programa ; exemplo de desvio incondicional 2 3.org 200h [ ] set r0,0 ; uma instrução montada 5 ; no endereço 200h 6 ; ocupa uma palavra [ ] jmp fora ; instrução de desvio 10 [ ] ; incondicional 11 ; codificação ocupa duas 12 ; palavras [ ] mov r1,r2 ; esta instrução não é 14 ; executada org 3000h 18 fora: [ ] mov r2,r1 ; esta instrução é a 20 ; próxima a ser executada 21 ; após o desvio
ULA Sinais de Controle enviados pela UC
Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento
Leia maisProgramação ao nível da máquina. Operações lógicas e aritméticas
Programação ao nível da máquina Operações lógicas e aritméticas Operações lógicas e aritméticas Operações: aritméticas: add, sub, inc, dec, cmp lógicas: and, or, xor, not Realizadas pela ALU (Arithmetic
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal
Leia maisLaboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly
Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly Gustavo G. Parma Lista dos comandos assembly que serão utilizados ao longo das práticas. 1 Comandos 1. ADD destino, fonte
Leia maisComponentes do Computador e. aula 3. Profa. Débora Matos
Componentes do Computador e modelo de Von Neumann aula 3 Profa. Débora Matos O que difere nos componentes que constituem um computador? Princípios básicos Cada computador tem um conjunto de operações e
Leia maisOperadores lógicos (bit a bit)
Operadores lógicos (bit a bit) Instrução AND Instruções: AND OR XOR NOT Os operandos destas instruções podem ser de 8 ou 16 bits 10010011
Leia maisArquitetura de Computadores. Tipos de Instruções
Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada
Leia maisCAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM
CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal
Leia maisAritmética Binária e. Bernardo Nunes Gonçalves
Aritmética Binária e Complemento a Base Bernardo Nunes Gonçalves Sumário Soma e multiplicação binária Subtração e divisão binária Representação com sinal Sinal e magnitude Complemento a base. Adição binária
Leia maisProgramação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1
Conteúdo Página Operações Lógicas Binárias: AND, OR...2 Operações Lógicas Binárias: OR Exclusivo (XOR)...3 Contatos Normalmente Abertos e Normalmente Fechados. Sensores e Símbolos... 4 Exercício...5 Resultado
Leia maisOPERADORES E ESTRUTURAS DE CONTROLE
OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisUnidade: Unidade Lógica e Aritmética e Registradores. Unidade I:
Unidade: Unidade Lógica e Aritmética e Registradores Unidade I: 0 Unidade: Unidade Lógica e Aritmética e Registradores UNIDADE LÓGICA E ARITMÉTICA E REGISTRADORES O Processador é um chip com milhares de
Leia maisARQUITETURA DE COMPUTADORES - 1866
7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Pipeline Slide 1 Pipeline Pipeline Hazards: Hazards Estruturais Hazards de Dados Hazards de Controle Organização e Arquitetura de Computadores I Caminho de Dados
Leia maisComputadores de Programação (MAB353)
Computadores de Programação (MAB353) Aula 6: 27 de abril de 2010 1 Recaptulando operações já estudadas Operações lógicas 2 3 Exercícios Referências bibliográficas Recaptulando operações já estudadas Operações
Leia maisOrganização de Computadores 1
Organização de Computadores 1 5 CONJUNTO DE INSTRUÇÕES Prof. Luiz Gustavo A. Martins Introdução O que é um conjunto de instruções? Coleção completa das instruções que a CPU é capaz de executar (entende).
Leia maisA lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.
INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,
Leia mais2 Formalidades referentes ao trabalho
Bacharelado em Ciência da Computação DINF / UFPR Projetos Digitais e Microprocessadores 1 o Semestre de 2006 MICO-v12.r0 07/03/2006 Profs. Luis Allan Künzle e Armando Luiz Nicolini Delgado Atenção: Este
Leia maisTais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.
Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:
Leia mais3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:
Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de
Leia maisAula 14: Instruções e Seus Tipos
Aula 14: Instruções e Seus Tipos Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Instruções e Seus Tipos FAC 1 / 35 Conceitos Básicos Diego Passos
Leia maisDadas a base e a altura de um triangulo, determinar sua área.
Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares
Leia maisProgramação Básica em Arduino Aula 2
Programação Básica em Arduino Aula 2 Execução: Laboratório de Automação e Robótica Móvel Variáveis são lugares (posições) na memória principal que servem para armazenar dados. As variáveis são acessadas
Leia maisDisplay de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos
TUTORIAL Display de 7 Segmentos Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br
Leia maisAula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis
1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que
Leia maisAlgoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br
(Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução
Leia maisPipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.
O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline Todos os estágios devem estar prontos ao mesmo tempo para prosseguir O tempo requerido para mover uma instrução
Leia maisGeração de código intermediário. Novembro 2006
Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas
Leia maisCAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:
Leia mais3. Arquitetura Básica do Computador
3. Arquitetura Básica do Computador 3.1. Modelo de Von Neumann Dar-me-eis um grão de trigo pela primeira casa do tabuleiro; dois pela segunda, quatro pela terceira, oito pela quarta, e assim dobrando sucessivamente,
Leia maisComputadores XXI: Busca e execução Final
Computadores XXI: Busca e execução Final A6 Texto 6 http://www.bpiropo.com.br/fpc20060123.htm Sítio Fórum PCs /Colunas Coluna: B. Piropo Publicada em 23/01/2006 Autor: B.Piropo Na coluna anterior, < http://www.forumpcs.com.br/viewtopic.php?t=146019
Leia maisBARRAMENTO DO SISTEMA
BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade
Leia maisAula 2 Modelo Simplificado de Computador
Aula 2 Modelo Simplificado de Computador Um computador pode ser esquematizado de maneira bastante simplificada da seguinte forma: Modelo Simplificado de Computador: Memória Dispositivo de Entrada Processador
Leia maisExemplo de Subtração Binária
Exemplo de Subtração Binária Exercícios Converta para binário e efetue as seguintes operações: a) 37 10 30 10 b) 83 10 82 10 c) 63 8 34 8 d) 77 8 11 8 e) BB 16 AA 16 f) C43 16 195 16 3.5.3 Divisão binária:
Leia maisLÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dos dispositivos
Leia maisREPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade
REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro Princípios Básicos de Arquitetura e Organização
Leia mais20 Caracteres - Tipo char
0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,
Leia maisO que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.
O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. Linguagem de Programação Uma linguagem de programação é um método padronizado para expressar
Leia mais[RÓTULO:] MNEMÔNICO [OPERANDOS] [;COMENTÁRIO]
Instruções de uso do montador DAEDALUS (baseadas em texto extraído da monografia apresentada como trabalho de diplomação no curso de Bacharelado em Ciência da Computação por Luís Ricardo Schwengber, sob
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem
Leia maisProcessadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:
Processadores BIP A família de processadores BIP foi desenvolvida por pesquisadores do Laboratório de Sistemas Embarcados e Distribuídos (LSED) da Universidade do Vale do Itajaí UNIVALI com o objetivo
Leia mais3. O NIVEL DA LINGUAGEM DE MONTAGEM
3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também
Leia maisExercícios Teóricos Resolvidos
Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Matemática Exercícios Teóricos Resolvidos O propósito deste texto é tentar mostrar aos alunos várias maneiras de raciocinar
Leia maisMemória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos
TUTORIAL Memória Flash Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br
Leia maisIntrodução às Linguagens de Programação
Introdução às Linguagens de Programação Histórico de Linguagens de Programação O computador não faz nada sozinho Precisamos informar, de forma clara, como ele deve executar as tarefas Ou seja, o computador
Leia maisGeração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO
Geração de código Ivan Ricarte 2008 Sumário Geração de código intermediário Código de três endereços Notação pós-fixa Otimização de código Heurísticas de otimização Geração de código em linguagem simbólica
Leia maisConjunto de instruções e modos de. aula 4. Profa. Débora Matos
Conjunto de instruções e modos de endereçamento aula 4 Profa. Débora Matos Conjunto de Instruções A = ((B + C) x D + E F)/(G x H) A H denotam posições da memória endereços As arquiteturas possuem as seguintes
Leia maisLista de Exercícios. Vetores
Lista de Exercícios Vetores LINGUAGEM DE PROGRAMAÇÃO PROF. EDUARDO SILVESTRI. WWW.EDUARDOSILVESTRI.COM.BR ATUALIZADO EM: 13/03/2007 Página 1/1 1. Faça um programa que crie um vetor de inteiros de 50 posições
Leia mais7. Instruções lógicas, de deslocamento e de rotação
7. Instruções lógicas, de deslocamento e de rotação São instruções que permitem mudar o padrão de bits num byte (8 bits) ou numa palavra (16 bits). Linguagens de alto nível (exceto C) não permitem manipular
Leia maisProgramando o computador IAS
Programando o computador IAS Edson Borin e Rafael Auler 21 de março de 2012 1 Introdução O computador IAS foi um dos primeiros computadores a implementar o conceito do programa armazenado. Neste paradigma,
Leia maisFuncionamento básico de um computador
Funcionamento básico de um computador Processador Unidade de dados Unidade de controlo Arquitetura de computador básica Linguagem assembly Exemplos Arquitetura de Computadores Funcionamento básico de um
Leia maisArquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva
Arquitetura de Computadores - Arquitetura RISC por Helcio Wagner da Silva Introdução RISC = Reduced Instruction Set Computer Elementos básicos: Grande número de registradores de propósito geral ou uso
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
Leia maisMáquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa.
Máquina Multinível Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa. Uma instrução pode ser definida como um comando para o processador.
Leia maisLinguagem de Montagem Funcionamento de CPU e Assembly Rudimentar
Componentes de um Computador (5) Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) 2007/01 - INF02597 Com slides de Roberta Lima Gomes
Leia maisSoluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental
a e 6 a séries (6º e 7º anos) do Ensino Fundamental 1. (alternativa C) Os números 0,01 e 0,119 são menores que 0,12. Por outro lado, 0,1 e 0,7 são maiores que 0,. Finalmente, 0,29 é maior que 0,12 e menor
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números
Leia maisCapacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB
Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha
Leia maisUnidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano
Arquitetura e Organização de Computadores 1 Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano Objetivo: Apresentar as funções o mecanismo de atuação da
Leia maisPROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br
- Aula 5 - O NÍVEL DA LINGUAGEM DE MONTAGEM 1. INTRODUÇÃO É relativamente fácil compreender os fundamentos da programação de computadores, sob o ponto de vista da inteligibilidade dos comandos de alto
Leia maisPC Fundamentos Revisão 4
exatasfepi.com.br PC Fundamentos Revisão 4 André Luís Duarte...mas os que esperam no Senhor renovarão as suas forças; subirão com asas como águias; correrão, e não se cansarão; andarão, e não se fatigarão.is
Leia maisPCS-2302 / PCS-2024 Lab. de Fundamentos de Eng. de Computação
PCS-2302 / PCS-2024 Lab. de Fundamentos de Eng. de Computação Aula 02 Anarosa Alves Franco Brandão (PCS 2302) Jaime Simão Sichman (PCS 2302) (PCS 2024) Ricardo Luís de Azevedo da Rocha (PCS 2024) Monitores:
Leia maisDiminui o gargalo existente entre processador e memória principal; 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP;
Diminui o gargalo existente entre processador e memória principal; Diferença de velocidade 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP; Tecnologia semelhante à da CPU e,
Leia maisOrganização de Computadores Hardware
Organização de Computadores Hardware Professor Marcus Vinícius Midena Ramos Colegiado de Engenharia de Computação (74)3614.1936 marcus.ramos@univasf.edu.br www.univasf.edu.br/~marcus.ramos Computador Ferramenta
Leia maisGeração e Otimização de Código
Geração e Otimização de Código Representação de código intermediária Código de três endereços, P-código Técnicas para geração de código Otimização de código Prof. Thiago A. S. Pardo 1 Estrutura geral de
Leia mais3 Sistemas de Numeração:
3 Sistemas de Numeração: Os computadores eletrônicos têm como base para seu funcionamento a utilização de eletricidade. Diferente de outras máquinas que a presença ou ausência de eletricidade apenas significam
Leia maisMC102 Algoritmos e programação de computadores Aula 3: Variáveis
MC102 Algoritmos e programação de computadores Aula 3: Variáveis Variáveis Variáveis são locais onde armazenamos valores na memória. Toda variável é caracterizada por um nome, que a identifica em um programa,
Leia maisArquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva
Arquitetura de Computadores - Processadores Superescalares por Helcio Wagner da Silva Introdução O Pipeline é uma técnica desenvolvida para a melhoria do desempenho frente à execução seqüencial de instruções
Leia maisAlgoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo
Algoritmos e Estruturas de Dados I 01/2013 Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Problema 1 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em
Leia maisCAPÍTULO 6 ARITMÉTICA DIGITAL
CAPÍTULO 6 ARITMÉTICA DIGITAL Introdução Números decimais Números binários positivos Adição Binária Números negativos Extensão do bit de sinal Adição e Subtração Overflow Aritmético Circuitos Aritméticos
Leia maisO processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.
O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. Unidade aritmética e lógica - Executa operações aritméticas (cálculos);
Leia mais9 Comandos condicionais
9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em
Leia maisArquitetura de Rede de Computadores
TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador
Leia maisAlgoritmos de Busca em Tabelas
Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados
Leia maisPeriféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa. Aula Teórica 11
Sumário: O disco rígido e a disquete estrutura física. Como os dados são armazenados fisicamente. Como o MS-DOS organiza o disco. O registo de boot. Aula Teórica 11 Leitura Recomendada: Capítulos 28 e
Leia maisBusca. Pesquisa sequencial
Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um
Leia maisOrganização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I. 2002 Juliana F. Camapum Wanderley
Organização e Arquitetura de Computadores Aula 10 Ponto Flutuante Parte I 2002 Juliana F. Camapum Wanderley http://www.cic.unb.br/docentes/juliana/cursos/oac OAC Ponto Flutuante Parte I - 1 Panorama Números
Leia maisSistemas Numéricos e a Representação Interna dos Dados no Computador
Capítulo 2 Sistemas Numéricos e a Representação Interna dos Dados no Computador 2.0 Índice 2.0 Índice... 1 2.1 Sistemas Numéricos... 2 2.1.1 Sistema Binário... 2 2.1.2 Sistema Octal... 3 2.1.3 Sistema
Leia maisLinguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1
Linguagem C: Estruturas de Controle Prof. Leonardo Barreto Campos 1 Sumário Estrutura de Controle e de Fluxo Comandos de Seleção: O comando if; Ifs Aninhados; A escada if-else-if; A expressão condicional;
Leia maisSISTEMAS DIGITAIS. Memórias. Prof. Guilherme Arroz Prof. Carlos Sêrro Alterado para lógica positiva por Guilherme Arroz.
SISTEMAS DIGITAIS Memórias Alterado para lógica positiva por Guilherme Arroz Sistemas Digitais 1 Tipos de memórias Existem vários tipos de memórias em sistemas digitais As memórias internas dos dispositivos,
Leia maisAlgoritmos Computacionais ( Programas )
Algoritmos Computacionais ( Programas ) A partir deste tópico, consideramos a utilização do universo Computacional na solução de problemas. Para tanto devemos lembrar que a transposição de problemas do
Leia maisResumo da Matéria de Linguagem de Programação. Linguagem C
Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis
Leia maisArchC. Wesley Nunes Gonçalves
Implementação do Processador ARM7 em ArchC Wesley Nunes Gonçalves 23 de novembro de 2007 ARM7 Instruções Implementadas O ARM possui 37 registradores, sendo 31 registradores de propósito geral e 6 registradores
Leia mais2 echo "PHP e outros.";
PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento
Leia mais6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto
Capítulo 6. Autômatos com Pilha 6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto Nos exemplos da seção anterior, vimos que os autômatos com pilha existem para
Leia maisArquitetura de Computadores I
Arquitetura de Computadores I Pipeline -- Conflito de dados paradas e adiantamentos -- Conflito de controle detecção de desvios e descarte de instruções -- Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno
Leia mais2. Representação Numérica
2. Representação Numérica 2.1 Introdução A fim se realizarmos de maneira prática qualquer operação com números, nós precisamos representa-los em uma determinada base numérica. O que isso significa? Vamos
Leia maisARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto
Leia maisSistemas Computacionais II Professor Frederico Sauer
Sistemas Computacionais II Professor Frederico Sauer Livro-texto: Introdução à Organização de Computadores 4ª edição Mário A. Monteiro Livros Técnicos e Científicos Editora. Atenção: Este material não
Leia mais1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos
1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos Já estudamos anteriormente que os processadores funcionam (ou melhor, o seu hardware funciona) através de ordens simples e básicas,
Leia maisCT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 4) Árvores balanceadas AVL, Rubro-Negras, B-Trees Operações em árvores binárias de busca
Leia maisProgramação WEB I Estruturas de controle e repetição
Programação WEB I Estruturas de controle e repetição Operadores de Incremento Operadores de incremento servem como expressões de atalho para realizar incrementos em variáveis Operadores de Incremento Vamos
Leia mais2. A influência do tamanho da palavra
1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos etc.) e de controle, durante a execução de
Leia maisIntrodução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis
Ciência da Computação Arq. e Org. de Computadores Máquinas Multiníveis Prof. Sergio Ribeiro Computador digital máquina que resolve problemas executando uma série de instruções. Programa conjunto de instruções
Leia maisIntrodução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br
Introdução INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br introdução Tópicos conceitos básicos o que é um programa um programa na memória decifrando um código referência Capítulo
Leia maisSistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani
Sistema de Arquivos Ambientes Operacionais Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani Gerência de Arquivos É um dos serviços mais visíveis do SO. Arquivos são normalmente
Leia maisBUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES
BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é
Leia mais