• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
41
0
0

Texto

(1)

OFICINA DA PESQUISA

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

Prof. Msc. Carlos José Giudice dos Santos carlos@oficinadapesquisa.com.br

(2)

Evolução dos processadores

Arquitetura x86 e a

(3)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 1a fase – 8 bits

Conforme vimos em nossas aulas, os processadores para microcomputadores se desenvolveram muito rapidamente. Alguns desses processadores são históricos:

1971  A Intel lança o 4004, o primeiro processador de 4 bits.

1972  A Intel lança o 8008, o primeiro processador de 8 bits bits.

1974  A Intel lança o 8080, primeiro processador de 8 bits a equipar um “computador” (o Altair) que podia ser comprado por qualquer cidadão.

1975  A MOS Technology lança o 6502, baseado no 6800 da Motorola. Ele equipou o Apple por ser o mais barato processador do mercado.

1976  A Intel lança o 8085, primeiro processador de 8 bits a funcionar com “apenas” 5 volts.

1976  A Zilog lança o Z-80, um aperfeiçoamento do 8080 feito por um ex-funcionário da Intel. Junto com o 6502, dominou o mercado de processadores até meados da década de 80.

(4)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 1a fase – 8 bits

Intel 4004 – 1971 – 4 bits Intel 8008 – 1972 – 8 bits Intel 8080 – 1974 – 8 bits Equipou o Altair, primeiro microcomputador do mundo

(5)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 1a fase – 8 bits

MOS 6502 – 1975 – 8 bits – Equipou o Apple, primeiro microcomputador que foi um

fenômeno de vendas.

(6)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 1a fase – 8 bits

Intel 8085 – 1976 – 8 bits

Zilog Z-80 - 1976 – 8 bits

O mais famoso processador de 8 bits do mundo

Duas famílias de computadores baseadas no Zilog Z-80. Acima, o Sinclair. Abaixo, o TRS-80

(7)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 2a fase – 16 bits 1978  A Intel lança o 8086, seu primeiro processador de 16 bits. 1979  A Intel lança o 8088, para ser usado no IBM PC (Personal Computer). Internamente era idêntico ao 8086, mas externamente comunicava-se com um barramento de dados de 8 bits, mais barato e com maior oferta de circuitos controladores naquela época. Era capaz de endereçar até 1 MB de RAM.

1982  A Intel lança o 80186, processador de 16 bits considerado muito caro e avançado para a época. Passou a ser utilizado depois como controlador de placas de comunicação, sobretudo placas de rede.

1984  A Intel lança o 80286, processador de 16 bits que equipou o IBM PC AT (Advanced Technology). Endereçava até 16 MB de RAM e já oferecia algum suporte para sistemas que usavam memória virtual.

(8)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 2a fase – 16 bits

Intel 8086 – 1979 – 16 bits

Internamente era 16 bits, mas comunicava-se com o barramento em 8 bits

Equipou o primeiro micro da IBM, o PC (Personal Computer – 1981) – abaixo. Intel 8086 – 1978 – 16 bits

Primeiro processador de 16 bits fabricado pela Intel

Intel 80186 – 1982 Processador de 16 bits Evolução do 8086, foi e

continua sendo usado em placas de comunicação (rede, modem, roteadores)

(9)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 2a fase – 16 bits

Intel 80286 – 1984 Processador de 16 bits Primeiro processador a

endereçar até 16 MB de RAM – Equipou o IBM PC-AT (Personal Computer – Advanced Technology), mostrado

(10)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 3a fase – 32 bits 1987  A Intel lança o poderoso 80386, seu primeiro processador de 32 bits. É um processador simplesmente espetacular, cuja base e instruções são utilizadas em processadores até hoje (2010). Possuia suporte para sistemas com multitarefa e um modo virtual DOS que permitia rodar até 256 programas DOS simultaneamente. Depois de algum tempo após o seu lançamento, passou a ser conhecido apenas como 386.

1989  A Intel lança o 486, basicamente um 386 muito melhorado. Tinha algumas instruções a mais e um coprocessador aritmético interno. Foi o primeiro processador a adotar uma cache interna de 8 KB, além de um pipeline de 5 estágios. Foi construído até 2007 devido ao seu ótimo custo/benefício quando usado em sistemas embarcados.

1992  A Intel lança o Pentium, primeiro processador de 32 bits a utilizar arquitetura superescalar (dois pipelines).

(11)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 3a fase – 32 bits

Intel 386 – 1987 - Processador de 32 bits Capaz de endereçar impensáveis (para a época) 4 GB de RAM. Algumas placas-mãe tinham soquete para o 387 (co-processador

aritmético), que aumentava muito a velocidade de cálculos matemáticos.

Intel 486 – 1989 - Processador de 32 bits Basicamente era um 386 com 6 instruções a a mais, com co-processador 387 integrado à

ULA, uma cache interna L1 de 8 KB e um pipeline de 5 estágios.

(12)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 3a fase – 32 bits

Intel Pentium – 1989

Primeiro processador de 32 bits da Intel a utilizar arquitetura superescalar.

Internamente era formado por um núcleo único construído com dois núcleos de 486.

Visão interna ampliada do núcleo de um processador Pentium

(13)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 3a fase – 32 bits 1995  A Intel lança o Pentium Pro, um poderoso processador destinado ao mercado corporativo (servidores).

1996  A Intel lança o Pentium MMX, primeiro processador a dar suporte para instruções SIMD (Single Instruction Multiple Data), que permite aplicar uma mesma instrução a múltiplos dados com extrema rapidez. Isso permitiu a evolução dos sistemas multimídia. 1997  A Intel lança o Pentium II, que tinha desempenho inferior ao Pentium Pro. Foi o primeiro processador da arquitetura P6, que ainda hoje (em sua versão Yonah) é utilizada.

1998  A Intel lança o Pentium II Xeon, destinado ao mercado corporativo que exige processadores de alto desempenho.

1998  A Intel lança o malfadado Celeron, basicamente um Pentium II piorado (sem cache interno), mais barato, com o objetivo de brigar com a concorrência. Ficou conhecido como Lentium.

(14)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 3a fase – 32 bits

Acima, o Pentium Pro (1995), primeiro processador desenvolvido para o

mercado corporativo.

Ao lado, acima, o Pentium II (1997) em um encapsulamento tipo Slot 1.

Ao lado, abaixo, o mesmo Pentium II fora do seu encapsulamento.

(15)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 3a fase – 32 bits 1999  A Intel lança o Pentium III, uma evolução do Pentium II, com 8 novos registradores e suporte a instruções SSE (Streaming SIMD Extensions), uma evolução das instruções SIMD.

1999  A Intel lança o Pentium III Xeon, destinado ao mercado corporativo.

OBSERVAÇÃO: Esse brevíssimo histórico está mostrando apenas os lançamentos da Intel, principal fabricante de processadores para

PC’s. Seus principais concorrentes são a Motorola, cujos

processadores equipam outro tipo de computador (Apple e Macinstosh e iMac), e a AMD, que atua no mesmo mercado da Intel e é a principal concorrente. Desde o 286 existe concorrência da AMD, que também fez clones do 386 e 486. A partir do Pentium, a concorrência ficou mais acirrada. A Intel ainda domina o mercado atual, especialmente no segmento corporativo, mas a AMD ainda tem muita força, sobretudo quando o assunto são aplicações gráficas.

(16)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 3a fase – 32 bits

Acima, o Pentium II Xeon (1998), processador desenvolvido para o

mercado corporativo em um encapsulamento do tipo Slot 2. Ao lado, acima, um Pentium III em um

encapsulamento tipo ZIF.

Ao lado, abaixo, um Pentium III (1999) em um encapsulamento tipo Slot 1.

(17)

BREVÍSSIMO HISTÓRICO DOS

MICROPROCESSADORES - 3a fase – 32 bits

Acima, o Pentium III Xeon (1999), processador desenvolvido para o

mercado corporativo em um encapsulamento Slot 2.

Ao lado, o mesmo Pentium III Xeon fora do seu encapsulamento.

(18)

PROCESSADORES Pós-2000: A arquitetura Netburst (x32) 2002  A Intel começa a projetar uma nova arquitetura para substituir a arquitetura P6, que deu origem aos Pentium II e III. Trata-se da arquitetura Netburst, também conhecida como HPT (Hyper Pipelined Technology). A versão inicial (codinome Northwood) tinha um pipeline de 20 estágios), e a versão final (codinome Prescott) tinha um pipeline de 31 estágios. Incorporou duas novas tecnologias: uma chamada REE (Rapid Execution Engine ou Mecanismo de Execução Rápida), que permitia a ULA trabalhar no dobro da velocidade do processador, e outra chamada ETC (Execution Trace Cache) que armazena em cache os últimos dados processados para o caso das próximas instruções necessitarem deles. O primeiro processador a usar esta arquitetura foi o Pentium 4 (lançado em 2004), muito rápido mas com um grande problema próprio desta arquitetura: a grande quantidade de calor dissipada devido ao alto consumo de energia destes processadores.

(19)

PROCESSADORES Pós-2000: 4ª fase - A arquitetura x64

2003  A AMD lança o primeiro processador de 64 bits (arquitetura x64) compatível com versões anteriores do Windows e do DOS (x86). Foi ao Athlon 64, que embora tenha sido lançado em setembro de 2003, só chegou com força ao mercado em 2004.

2006  A Intel lança a sua linha Core, sendo o Core 2 Duo o primeiro processador dessa família. Depois vieram os i3, i5 e i7 de 1ª geração (2008 a 2010), 2ª geração (2011), 3ª geração (2012), 4ª geração (2013), 5ª geração (2014) e foi anunciada a 6ª geração para o 2º semestre de 2015.

Observação: A Intel tem outras arquiteturas de 32 e 64 bits (IA-32 e IA-64) para processadores de servidor (Itanium), que são incompatíveis com versões anteriores do Windows e do DOS.

(20)

RESUMO SOBRE PROCESSSADORES [01]

O QUE É IMPORTANTE SABER PARA AS AVALIAÇÕES

Neste resumo, trocaremos a palavra microprocessador pela sigla MCPU (Micro CPU).

1971: Lançamento do primeiro MCPU do mundo, o Intel 4004 (um processador de 4 bits).

1974: Lançamento do Intel 8080, primeiro MCPU de 8 bits a equipar um “microcomputador” (o Altair).

1975: Lançamento pela MOS Technology do MCPU 6502, processador de 8 bits que equipou o primeiro microcomputador de sucesso mundial em 1977 (o Apple). 1978: Lançamento do Intel 8086, primeiro MCPU de 16 bits e que equipou o primeiro PC da IBM em 1981.

(21)

RESUMO SOBRE PROCESSSADORES [02]

O QUE É IMPORTANTE SABER PARA AS AVALIAÇÕES

Neste resumo, trocaremos a palavra microprocessador pela sigla MCPU (Micro CPU).

1987: Lançamento do primeiro MCPU de 32 bits do mundo, o Intel 80386.

2003: Lançamento do AMD Athlon 64, primeiro MCPU de 64 bits do mundo que mantém compatibilidade com a arquitetura x86.

2006: Lançamento da linha Core da Intel, inaugurando MCPU’s com mais de um núcleo para PC’s e notebooks, o que vem resultando em MCPU’s cada vez mais rápidos e com menor consumo de energia.

(22)

ARQUITETURAS DE 8, 16, 32 e 64 bits [01]

No mundo dos PC’s hoje existem basicamente três tipos de arquiteturas: a x86, a x32 e a x64. Vamos entender o que significa isso. Em primeiro lugar, vamos voltar no tempo na época que surgiram os primeiros microcomputadores.

Nessa época, os processadores possuíam palavras de 8 bits, o que significa que cada instrução podia trabalhar com valores variando entre 0 e (28-1), o que

corresponde a um valor máximo de 255. Para poder processar valores maiores que esse, o processador tinha que usar uma palavra (8 bits) de cada vez. Para acessar a memória RAM, este tipo de processador usava dois bytes (duas palavras) e este acesso era feito em duas etapas, o que tornava esse acesso lento.

(23)

ARQUITETURAS DE 8, 16, 32 e 64 bits [02]

Assim, um processador de 8 bits manipulava no máximo 1 byte de cada vez, o que significa que a sua palavra é de 8 bits (ou 1 byte).

Para endereçar a memória, por exemplo, um processador de 8 bits utilizava 16 bits. Desse modo, o tamanho máximo de memória que um computador com CPU de 8 bits era capaz de endereçar com os seus 16 bits era de 216 = 65536 posições de memória (0 a

65535) ou 64 KB (64 Kilobytes).

Este tamanho de memória era mais do que suficiente para as necessidades de computação doméstica do final da década de 1970 e início da década de 1980, mas a história mostra que os seres humanos nunca ficam satisfeitos por muito tempo.

(24)

ARQUITETURAS DE 8, 16, 32 e 64 bits [03]

Com o sucesso dos computadores de 8 bits (em diversas famílias ao longo de quase uma década - Sinclair, TRS-80, Commodore, Apple I, Apple II e MSX), a gigante do setor (IBM) resolveu que era hora de intervir no mercado. Criou uma fábrica na Flórida (perto de uma praia - Boca Raton West Palm Beach), e em 1981, nasceu o primeiro microcomputador (Personal Computer – PC) destinado ao mercado corporativo.

Havia duas versões de processadores, ambos de 16 bits: o Intel 8086 (que tinha registradores internos comuns de 16 bits e acessava a memória em palavras de 16 bits), e o Intel 8088 (que tinha registradores internos comuns de 16 bits e acessava a memória em palavras de 8 bits – para baratear os custos).

(25)

ARQUITETURAS DE 8, 16, 32 e 64 bits [04]

Em relação ao endereçamento de memória, 16 bits eram suficientes para acessar diretamente 64 KB de memória, como já vimos anteriormente.

Assim, o PC da IBM deveria ter um diferencial a mais do que simplesmente acessar a memória mais rapidamente. Isto foi feito coma utilização de 20 bits para endereçamento. Com 20 bits, a capacidade de endereçamento chegava a 220 bits = 1.048.576 posições

de memória ou 1 MB (1 Megabyte), algo impensável para a época.

Desta quantidade “imensa” de memória, 640 KB eram reservados para os aplicativos, enquanto que a memória entre 640 KB e 1024 KB (1 MB) era reservada para o sistema operacional, vídeo, controle de E/S, etc.

(26)

ARQUITETURAS DE 8, 16, 32 e 64 bits [05]

A IBM imaginou que 640 KB de memória RAM seriam mais do que suficientes para qualquer tipo de aplicação, já que os melhores computadores de 8 bits da época só endereçavam 64 KB. Como estes computadores ainda utilizavam um sistema, que ocupava tipicamente algo em torno de 32 KB desta memória, sobrava apenas 32 KB para os usuários das CPU’s de 8 bits rodarem seus programas. Ter um computador com 640 KB de RAM (10 vezes mais do que qualquer um daquela época) era uma felicidade, quase um sonho. A história mostrou mais uma vez que esse sonho durou muito pouco tempo (pouco menos de uma década). Antes que eu explique como este sonho virou um pesadelo, vamos entender o endereçamento de memória do PC com 20 bits.

(27)

ARQUITETURAS DE 8, 16, 32 e 64 bits [06]

Quando se fala em arquitetura x86, estamos nos referindo à arquitetura do primeiro PC com processador 8086, com registradores internos de 16 bits e endereçamento de 20 bits.

Como já vimos, 220 bits equivalem a 1 MB. A IBM dividiu a memória em 16 “pacotes” de 64 KB cada um. Convencionou-se chamar cada pacote de 64 Kilobytes conConvencionou-secutivos de segmento. Convencionou-se que os 10 primeiros segmentos ficariam reservados como memória do usuário (640 KB) enquanto que os outros seis segmentos (384 KB) seriam reservados para o sistema.

Para acessar cada um destes pacotes, utilizava-se 4 bits (24 = 16 segmentos). Para acessar um endereço individual dentro de cada pacote utilizava-se 16 bits (216 = 65.536).

(28)

ARQUITETURAS DE 8, 16, 32 e 64 bits [07]

Convencionou-se chamar este endereçamento de 16 bits dentro de cada segmento de offset. Desse modo, o endereçamento de 20 bits do PC era composto de 4 bits para o segmento + 16 bits para o offset.

Entretanto, deve ficar claro que o PC era um computador de 16 bits, ou seja, arquitetura x86.

Quando a IBM lançou o IBM PC AT (Personal Computer – Advanced Technology), ela utilizou um processador 80286, que possuía registradores internos de 16 bits, mas utilizava 24 bits para endereçamento de memória, chegando a incríveis 16 MB de RAM. Esta capacidade de memória era utilizada por sistemas UNIX, já que o DOS só “enxergava” no máximo 1 MB (até a versão 3.3).

(29)

ARQUITETURAS DE 8, 16, 32 e 64 bits [08]

Em 1987 a Intel lança o poderoso 80386 (ou simplesmente 386), primeiro processador de 32 bits. Estava inaugurada a era x32 (na teoria), ou seja, computadores com registradores de 32 bits e capazes de endereçar impensáveis 232 posições de

memória RAM, ou seja, até 4.294.967.296 bytes ou 4 GB.

Na prática os computadores da época vinham com no máximo 4 MB de RAM, mas o 386 consegui acessar até 4 GB se o SO permitisse isso. Geralmente o máximo de RAM na época era 16 MB, ficando o restante como memória virtual.

(30)

ARQUITETURAS DE 8, 16, 32 e 64 bits [09]

Embora esta arquitetura (do 386) fosse oficialmente de 32 bits (x32), ela não foi usada na época por causa de problemas de compatibilidade com milhares de aplicativos DOS que necessitavam da arquitetura x86. Já os processadores com 64 bits reais só vieram depois da virada do milênio, e a aguardada arquitetura x64 (compatível com a x86) só deu as caras em 2003/2004. Um registrador de 64 bits pode trabalhar com números inteiros positivos equivalentes a 264. Isto equivale ao

número 18.446.744.073.709.551.616. Este número também equivale a quantidade de posições de memória que podem ser endereçadas = 16 EB (16 Exabytes ou 16 x 1024 x 1024 x 1024 GB), algo em torno de 16 bilhões de Gigabytes.

(31)

A ARQUITETURA x86 [01]

A arquitetura de processadores da família x86 possui as seguintes características:

1. Oito registradores de 16 bits (sendo dois deles reservados).

2. Os registradores de propósito geral são: AX, BX, CX e DX.

3. Podem ser acessados os 8 bits superiores ou inferiores destes registradores  Ex.: AL (8 bits inferiores de AX); AH (8 bits superiores de AX);

4. SI, DI – Índices (podem ser usados como propósito geral)

5. BP, SP – Pilha (reservados, devem ser apenas configurados na inicialização do programa)

(32)

A ARQUITETURA x86 [02]

Continuação...

4 registradores de segmento

• CS – Code Segment – Início das instruções • DS – Data Segment – Início das variáveis

• ES – Extra Segment – Para uso do programador • SS – Stack Segment – Início da pilha

OBS: Os registradores de segmento guardam informações essenciais para a execução das instruções e devem ser alterados com extremo cuidado!

(33)

A ARQUITETURA x86 [03]

Com a introdução da arquitetura x32, foram criados “novos” registradores para manter a compatibilidade com a arquitetura x86.

8 registradores de 32 bits:

• EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP

• Os registradores de segmento continuaram com 16 bits.

• 2 novos registradores de segmento • CS, DS, SS, ES, FS, GS

(34)

A ARQUITETURA x86 [04]

Com a introdução da arquitetura x64, foram criados “novos” registradores para manter a compatibilidade com a arquitetura x86.

8 registradores de 64bits:

• RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP

• Os registradores de segmento continuaram com 16 bits.

• 6 registradores de segmento • CS, DS, SS, ES, FS, GS

(35)

A linguagem Assembly x86 [01]

Linguagem Assembly (Assembly Language) é uma linguagem de montagem de instruções. É uma linguagem de baixo nível, fortemente relacionada à arquitetura do processador, que possui comandos mnemônicos com uma notação legível para seres humanos.

Os comandos mnemônicos são uma representação da linguagem de máquina, para substituir os padrões de bits que só os processadores entendem.

Nunca confunda Assembly com Assembler. Assembler é um programa que cria o código objeto (padrões de bits) a partir do código em Assembly.

(36)

A linguagem Assembly x86 [02]

Existem vários programas de Assembler. Os mais comuns são:

• NASM  Netwide Assembler • TASM  Turbo Assembler

• MASM  Microsoft Assembler • GAS  GNU Assembler

A maioria dos programadores de Assembly x86 usam o NASM pelo fato de ter uma sintaxe menos poluída (mais fiel ao padrão original), possuir mais abstrações e principalmente, por ser Open Source (assim como o GAS).

(37)

A linguagem Assembly x86 [03]

Para se programar em Assembly, deve-se conhecer profundamente a estrutura interna do processador. Por exemplo, para se programar em Assembly x86 para programas compatíveis como DOS e as primeiras versões do Windows, usa-se o chamado Modo Real, o que significa que apenas os registradores de 16 bits estão disponíveis.

Outra característica do Assembly é o fato de ser uma linguagem imperativa pura, ou seja, um programa em Assembly é constituído de uma série de ações em forma de instruções em sequência. Isto dificulta a legibilidade de um programa escrito em Assembly, porque a linguagem permite saltos.

(38)

A linguagem Assembly x86 [04]

Os principais comandos do Assembly são:

• Atribuição: mov destino, origem

• Lógicos: and operando1, operando2 or operando1, operando2

• Aritméticos: add operando1, operando2 sub operando1, operando2 mul operando1, operando2 div operando1, operando2

• Comparação: cmp operando1, operando2

• Saltos: jmp endereço / je endereço / jne endereço jz endereço / jnz endereço / djnz endereço dje endereço / djne endereço

(39)

Exemplos de códigos em Assembly x86 [01]

(40)

Exemplos de códigos em Assembly x86 [02]

(41)

BIBLIOGRAFIA CONSULTADA

• FORBELLONE, André Luiz Villar. Lógica de programação: a construção de algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson Prentice Hall, 2005.

• NOBRE, Roberta; SILVA, Sandro. Interrupção no PC. Disponível

em: <http://www2.pelotas.ifsul.edu.br/sandro/docs/OC_unidade

_04_2_interrupcao.pdf>. Acesso em: 7 set. 2015.

• KINOSHITA, Jorge. O que são interrupções. PCS – USP. Disponível em: <http://www.pcs.usp.br/~jkinoshi/2005/e5roberto. doc>. Acesso em: 7 set. 2015.

• SEBESTA, Robert. W. Conceitos de linguagens de programação. 9. ed. Porto Alegre: Bookman, 2011.

• TANEMBAUM, Andrew S. Organização estruturada de

Referências

Documentos relacionados

Eles tinham a necessidade de voltar para a terra deles, é por isso que eles iam sobre aquela colina lá, para rezar para que o Senhor favorecesse o retorno para a terra deles..

Os tradicionais 16 bits são suficientes para reproduzir com alta qualidade sonora os sons que somos capazes de ouvir, por isso não há a necessidade de trabalhar com mais bits.. As

O processo da construção e permanência do projeto de vida a dois, que articula individualidades e relação conjugal, de fato, como escreve Féres-Carneiro e Ziviani (2009), é um

Diante disso, os ensaios “in vitro” (Estudo de Equivalência Farmacêutica) e/ou “in vivo” (Estudo de Bioequivalência) deverão ser realizados para comprovar

A pesquisa foi dividida em pesquisa bibliográfica e visita técnica a uma obra que adotou o sistema de bombeamento da argamassa de contrapiso, o que auxiliou

Este trabalho tem como objetivo a implementação de estratégias metodológicas para o estudo de comportamentos sociais em animais modelo de autismo, bem como, caracterizar, por meio

Richard: Obviamente temos interesse bíblico em toda a região, simplesmente porque todos aqueles países do Oriente Próximo e do Oriente Médio estão dentro do plano de Deus para

copia 2 palavras da memória (posições 1000 e 1001) porque o registrador AX é de 16 bits... Considerações sobre o uso de memória