Introdução a Organização de Computadores e Linguagens de Montagem. Ricardo Anido

Tamanho: px
Começar a partir da página:

Download "Introdução a Organização de Computadores e Linguagens de Montagem. Ricardo Anido"

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

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 mais

Programaçã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 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 mais

Organização e Arquitetura de Computadores I

Organizaçã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 mais

Laborató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 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 mais

Componentes do Computador e. aula 3. Profa. Débora Matos

Componentes 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 mais

Operadores lógicos (bit a bit)

Operadores 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 mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura 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 mais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

CAPÍ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 mais

Organização e Arquitetura de Computadores I

Organizaçã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 mais

Aritmética Binária e. Bernardo Nunes Gonçalves

Aritmé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 mais

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1

Programaçã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 mais

OPERADORES E ESTRUTURAS DE CONTROLE

OPERADORES 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 mais

Orientação a Objetos

Orientaçã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 mais

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

Unidade: 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 mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA 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 mais

Organização e Arquitetura de Computadores I

Organizaçã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 mais

Computadores de Programação (MAB353)

Computadores 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 mais

Organização de Computadores 1

Organizaçã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 mais

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

A 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 mais

2 Formalidades referentes ao trabalho

2 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 mais

Tais 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. 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 mais

3/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:

3/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 mais

Aula 14: Instruções e Seus Tipos

Aula 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 mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas 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 mais

Programação Básica em Arduino Aula 2

Programaçã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 mais

Display 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

Display 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 mais

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Aula 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 mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos 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 mais

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Pipeline. 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 mais

Geração de código intermediário. Novembro 2006

Geraçã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 mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍ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 mais

3. Arquitetura Básica do Computador

3. 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 mais

Computadores XXI: Busca e execução Final

Computadores 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 mais

BARRAMENTO DO SISTEMA

BARRAMENTO 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 mais

Aula 2 Modelo Simplificado de Computador

Aula 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 mais

Exemplo de Subtração Binária

Exemplo 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 mais

LÓ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 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 mais

REPRESENTAÇÃ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 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 mais

20 Caracteres - Tipo char

20 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 mais

O 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. 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]

[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 mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃ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 mais

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Processadores 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 mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. 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 mais

Exercícios Teóricos Resolvidos

Exercí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 mais

Memó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

Memó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 mais

Introdução às Linguagens de Programação

Introduçã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 mais

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Geraçã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 mais

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos

Conjunto 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 mais

Lista de Exercícios. Vetores

Lista 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 mais

7. Instruções lógicas, de deslocamento e de rotação

7. 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 mais

Programando o computador IAS

Programando 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 mais

Funcionamento básico de um computador

Funcionamento 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 mais

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Arquitetura 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 mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

UNIVERSIDADE 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 mais

Má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. 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 mais

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

Linguagem 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 mais

Soluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental

Soluçõ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 mais

Organização e Arquitetura de Computadores I

Organizaçã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 mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 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 mais

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano

Unidade 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 mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO 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 mais

PC Fundamentos Revisão 4

PC 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 mais

PCS-2302 / PCS-2024 Lab. de Fundamentos de Eng. de Computação

PCS-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 mais

Diminui 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; 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 mais

Organização de Computadores Hardware

Organizaçã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 mais

Geração e Otimização de Código

Geraçã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 mais

3 Sistemas de Numeração:

3 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 mais

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

MC102 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 mais

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

Arquitetura 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 mais

Algoritmos 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 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 mais

CAPÍTULO 6 ARITMÉTICA DIGITAL

CAPÍ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 mais

O 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. 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 mais

9 Comandos condicionais

9 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 mais

Arquitetura de Rede de Computadores

Arquitetura 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 mais

Algoritmos de Busca em Tabelas

Algoritmos 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 mais

Periféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa. Aula Teórica 11

Perifé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 mais

Busca. Pesquisa sequencial

Busca. 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 mais

Organizaçã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 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 mais

Sistemas Numéricos e a Representação Interna dos Dados no Computador

Sistemas 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 mais

Linguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1

Linguagem 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 mais

SISTEMAS DIGITAIS. Memórias. Prof. Guilherme Arroz Prof. Carlos Sêrro Alterado para lógica positiva por Guilherme Arroz.

SISTEMAS 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 mais

Algoritmos Computacionais ( Programas )

Algoritmos 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 mais

Resumo da Matéria de Linguagem de Programação. Linguagem C

Resumo 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 mais

ArchC. Wesley Nunes Gonçalves

ArchC. 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 mais

2 echo "PHP e outros.";

2 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 mais

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto

6.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 mais

Arquitetura de Computadores I

Arquitetura 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 mais

2. Representação Numérica

2. 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 mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. 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 mais

Sistemas Computacionais II Professor Frederico Sauer

Sistemas 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 mais

1. 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 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 mais

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

CT-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 mais

Programação WEB I Estruturas de controle e repetição

Programaçã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 mais

2. A influência do tamanho da palavra

2. 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 mais

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

Introduçã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 mais

Introduçã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 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 mais

Sistema 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 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 mais

BUSCA 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 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