OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ......

41
OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO Prof. Msc. Carlos José Giudice dos Santos [email protected] www.oficinadapesquisa.com.br

Transcript of OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ......

Page 1: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

OFICINA DA PESQUISA

PROGRAMAÇÃO APLICADA À

CIÊNCIA DA COMPUTAÇÃO

Prof. Msc. Carlos José Giudice dos Santos

[email protected]

www.oficinadapesquisa.com.br

Page 2: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

Evolução dos processadores

Arquitetura x86 e a

linguagem Assembly

Page 3: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

BREVÍSSIMO HISTÓRICO DOS MICROPROCESSADORES - 1a fase – 8 bits

Conforme vimos em nossas aulas, os processadores paramicrocomputadores 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 funcionarcom “apenas” 5 volts.

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

Page 4: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

BREVÍSSIMO HISTÓRICO DOS MICROPROCESSADORES - 1a fase – 8 bits

Intel 4004 – 1971 – 4 bits Intel 8008 – 1972 – 8 bitsIntel 8080 – 1974 – 8 bits

Equipou o Altair, primeiro

microcomputador do mundo

Page 5: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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.

O primeiro Apple

Page 6: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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

Page 7: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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 (PersonalComputer). Internamente era idêntico ao 8086, mas externamentecomunicava-se com um barramento de dados de 8 bits, mais barato ecom maior oferta de circuitos controladores naquela época. Eracapaz de endereçar até 1 MB de RAM.

1982 � A Intel lança o 80186, processador de 16 bits consideradomuito caro e avançado para a época. Passou a ser utilizado depoiscomo controlador de placas de comunicação, sobretudo placas derede.

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

Page 8: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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)

Page 9: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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

ao lado �

Page 10: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

BREVÍSSIMO HISTÓRICO DOS MICROPROCESSADORES - 3a fase – 32 bits

1987 � A Intel lança o poderoso 80386, seu primeiro processadorde 32 bits. É um processador simplesmente espetacular, cuja base einstruções são utilizadas em processadores até hoje (2010). Possuiasuporte para sistemas com multitarefa e um modo virtual DOS quepermitia rodar até 256 programas DOS simultaneamente. Depois dealgum tempo após o seu lançamento, passou a ser conhecido apenascomo 386.

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

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

Page 11: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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.

Page 12: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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

Page 13: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

BREVÍSSIMO HISTÓRICO DOS MICROPROCESSADORES - 3a fase – 32 bits

1995 � A Intel lança o Pentium Pro, um poderoso processadordestinado ao mercado corporativo (servidores).

1996 � A Intel lança o Pentium MMX, primeiro processador a darsuporte para instruções SIMD (Single Instruction Multiple Data),que permite aplicar uma mesma instrução a múltiplos dados comextrema rapidez. Isso permitiu a evolução dos sistemas multimídia.

1997 � A Intel lança o Pentium II, que tinha desempenho inferiorao Pentium Pro. Foi o primeiro processador da arquitetura P6, queainda hoje (em sua versão Yonah) é utilizada.

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

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

Page 14: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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.

Page 15: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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 (StreamingSIMD Extensions), uma evolução das instruções SIMD.

1999 � A Intel lança o Pentium III Xeon, destinado ao mercadocorporativo.

OBSERVAÇÃO: Esse brevíssimo histórico está mostrando apenas oslançamentos da Intel, principal fabricante de processadores paraPC’s. Seus principais concorrentes são a Motorola, cujosprocessadores equipam outro tipo de computador (Apple eMacinstosh 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, aconcorrência ficou mais acirrada. A Intel ainda domina o mercadoatual, especialmente no segmento corporativo, mas a AMD ainda temmuita força, sobretudo quando o assunto são aplicações gráficas.

Page 16: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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.

Page 17: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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.

Page 18: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

PROCESSADORES Pós-2000: A arquitetura Netburst (x32)

2002 � A Intel começa a projetar uma nova arquitetura parasubstituir a arquitetura P6, que deu origem aos Pentium II eIII. Trata-se da arquitetura Netburst, também conhecidacomo HPT (Hyper Pipelined Technology). A versão inicial(codinome Northwood) tinha um pipeline de 20 estágios), e aversão final (codinome Prescott) tinha um pipeline de 31está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 doprocessador, e outra chamada ETC (Execution Trace Cache)que armazena em cache os últimos dados processados para ocaso das próximas instruções necessitarem deles. O primeiroprocessador a usar esta arquitetura foi o Pentium 4 (lançadoem 2004), muito rápido mas com um grande problema própriodesta arquitetura: a grande quantidade de calor dissipadadevido ao alto consumo de energia destes processadores.

Page 19: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

PROCESSADORES Pós-2000: 4ª fase - A arquitetura x642003 � A AMD lança o primeiro processador de 64 bits(arquitetura x64) compatível com versões anteriores doWindows e do DOS (x86). Foi ao Athlon 64, que emboratenha sido lançado em setembro de 2003, só chegou comforça ao mercado em 2004.

2006 � A Intel lança a sua linha Core, sendo o Core 2 Duoo 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) efoi anunciada a 6ª geração para o 2º semestre de 2015.

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

Page 20: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

RESUMO SOBRE PROCESSSADORES [01]O QUE É IMPORTANTE SABER PARA AS AVALIAÇÕES

Neste resumo, trocaremos a palavra microprocessadorpela sigla MCPU (Micro CPU).1971: Lançamento do primeiro MCPU do mundo, o Intel4004 (um processador de 4 bits).1974: Lançamento do Intel 8080, primeiro MCPU de 8bits a equipar um “microcomputador” (o Altair).1975: Lançamento pela MOS Technology do MCPU 6502,processador de 8 bits que equipou o primeiromicrocomputador de sucesso mundial em 1977 (o Apple).1978: Lançamento do Intel 8086, primeiro MCPU de 16bits e que equipou o primeiro PC da IBM em 1981.

Page 21: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

RESUMO SOBRE PROCESSSADORES [02]O QUE É IMPORTANTE SABER PARA AS AVALIAÇÕES

Neste resumo, trocaremos a palavra microprocessadorpela sigla MCPU (Micro CPU).1987: Lançamento do primeiro MCPU de 32 bits domundo, o Intel 80386.2003: Lançamento do AMD Athlon 64, primeiro MCPU de64 bits do mundo que mantém compatibilidade com aarquitetura x86.2006: Lançamento da linha Core da Intel, inaugurandoMCPU’s com mais de um núcleo para PC’s e notebooks, oque vem resultando em MCPU’s cada vez mais rápidos ecom menor consumo de energia.

Page 22: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

ARQUITETURAS DE 8, 16, 32 e 64 bits [01]No mundo dos PC’s hoje existem basicamente trêstipos de arquiteturas: a x86, a x32 e a x64. Vamosentender o que significa isso. Em primeiro lugar,vamos voltar no tempo na época que surgiram osprimeiros microcomputadores.

Nessa época, os processadores possuíam palavras de8 bits, o que significa que cada instrução podiatrabalhar com valores variando entre 0 e (28-1), o quecorresponde a um valor máximo de 255. Para poderprocessar valores maiores que esse, o processadortinha que usar uma palavra (8 bits) de cada vez. Paraacessar a memória RAM, este tipo de processadorusava dois bytes (duas palavras) e este acesso erafeito em duas etapas, o que tornava esse acesso lento.

Page 23: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

ARQUITETURAS DE 8, 16, 32 e 64 bits [02]Assim, um processador de 8 bits manipulava no máximo1 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, umprocessador de 8 bits utilizava 16 bits. Desse modo, otamanho máximo de memória que um computador comCPU de 8 bits era capaz de endereçar com os seus 16bits era de 216 = 65536 posições de memória (0 a65535) ou 64 KB (64 Kilobytes).

Este tamanho de memória era mais do que suficientepara as necessidades de computação doméstica do finalda década de 1970 e início da década de 1980, mas ahistória mostra que os seres humanos nunca ficamsatisfeitos por muito tempo.

Page 24: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

ARQUITETURAS DE 8, 16, 32 e 64 bits [03]Com o sucesso dos computadores de 8 bits (em diversasfamílias ao longo de quase uma década - Sinclair, TRS-80, Commodore, Apple I, Apple II e MSX), a gigante dosetor (IBM) resolveu que era hora de intervir nomercado. Criou uma fábrica na Flórida (perto de umapraia - Boca Raton West Palm Beach), e em 1981, nasceuo 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 comunsde 16 bits e acessava a memória em palavras de 16bits), e o Intel 8088 (que tinha registradores internoscomuns de 16 bits e acessava a memória em palavras de8 bits – para baratear os custos).

Page 25: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

ARQUITETURAS DE 8, 16, 32 e 64 bits [04]Em relação ao endereçamento de memória, 16 bits eramsuficientes para acessar diretamente 64 KB dememória, como já vimos anteriormente.

Assim, o PC da IBM deveria ter um diferencial a maisdo que simplesmente acessar a memória maisrapidamente. Isto foi feito coma utilização de 20 bitspara endereçamento. Com 20 bits, a capacidade deendereçamento chegava a 220 bits = 1.048.576 posiçõesde memória ou 1 MB (1 Megabyte), algo impensável paraa época.

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

Page 26: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

ARQUITETURAS DE 8, 16, 32 e 64 bits [05]A IBM imaginou que 640 KB de memória RAM seriam maisdo que suficientes para qualquer tipo de aplicação, já queos melhores computadores de 8 bits da época sóendereçavam 64 KB. Como estes computadores aindautilizavam um sistema, que ocupava tipicamente algo emtorno de 32 KB desta memória, sobrava apenas 32 KB paraos usuários das CPU’s de 8 bits rodarem seus programas.

Ter um computador com 640 KB de RAM (10 vezes maisdo que qualquer um daquela época) era uma felicidade,quase um sonho. A história mostrou mais uma vez que essesonho durou muito pouco tempo (pouco menos de umadécada). Antes que eu explique como este sonho virou umpesadelo, vamos entender o endereçamento de memóriado PC com 20 bits.

Page 27: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

ARQUITETURAS DE 8, 16, 32 e 64 bits [06]Quando se fala em arquitetura x86, estamos nosreferindo à arquitetura do primeiro PC com processador8086, com registradores internos de 16 bits eendereçamento de 20 bits.

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

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

Page 28: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

ARQUITETURAS DE 8, 16, 32 e 64 bits [07]Convencionou-se chamar este endereçamento de 16 bitsdentro de cada segmento de offset. Desse modo, oendereçamento de 20 bits do PC era composto de 4 bitspara o segmento + 16 bits para o offset.

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

Quando a IBM lançou o IBM PC AT (Personal Computer– Advanced Technology), ela utilizou um processador80286, 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 dememória era utilizada por sistemas UNIX, já que o DOSsó “enxergava” no máximo 1 MB (até a versão 3.3).

Page 29: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

ARQUITETURAS DE 8, 16, 32 e 64 bits [08]Em 1987 a Intel lança o poderoso 80386 (ousimplesmente 386), primeiro processador de 32 bits.

Estava inaugurada a era x32 (na teoria), ou seja,computadores com registradores de 32 bits ecapazes de endereçar impensáveis 232 posições dememória RAM, ou seja, até 4.294.967.296 bytes ou 4GB.

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

Page 30: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

ARQUITETURAS DE 8, 16, 32 e 64 bits [09]Embora esta arquitetura (do 386) fosse oficialmente de32 bits (x32), ela não foi usada na época por causa deproblemas de compatibilidade com milhares deaplicativos DOS que necessitavam da arquitetura x86.

Já os processadores com 64 bits reais só vieram depoisda 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úmerosinteiros positivos equivalentes a 264. Isto equivale aonúmero 18.446.744.073.709.551.616. Este númerotambém equivale a quantidade de posições de memóriaque podem ser endereçadas = 16 EB (16 Exabytes ou 16x 1024 x 1024 x 1024 GB), algo em torno de 16 bilhõesde Gigabytes.

Page 31: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

A ARQUITETURA x86 [01]A arquitetura de processadores da família x86 possuias 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 eDX.

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

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

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

Page 32: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

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 guardaminformações essenciais para a execução dasinstruções e devem ser alterados com extremocuidado!

Page 33: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

A ARQUITETURA x86 [03]

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

8 registradores de 32 bits:

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

• Os registradores de segmento continuaram com16 bits.

• 2 novos registradores de segmento

• CS, DS, SS, ES, FS, GS

Page 34: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

A ARQUITETURA x86 [04]

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

8 registradores de 64bits:

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

• Os registradores de segmento continuaram com16 bits.

• 6 registradores de segmento

• CS, DS, SS, ES, FS, GS

Page 35: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

A linguagem Assembly x86 [01]

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

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

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

Page 36: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

A linguagem Assembly x86 [02]

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

• NASM � Netwide Assembler

• TASM � Turbo Assembler

• MASM � Microsoft Assembler

• GAS � GNU Assembler

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

Page 37: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

A linguagem Assembly x86 [03]

Para se programar em Assembly, deve-se conhecerprofundamente a estrutura interna do processador.Por exemplo, para se programar em Assembly x86para programas compatíveis como DOS e as primeirasversões do Windows, usa-se o chamado Modo Real, oque significa que apenas os registradores de 16 bitsestão disponíveis.

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

Page 38: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

A linguagem Assembly x86 [04]

Os principais comandos do Assembly são:• Atribuição: mov destino, origem

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

• Aritméticos: add operando1, operando2sub operando1, operando2mul operando1, operando2div operando1, operando2

• Comparação: cmp operando1, operando2

• Saltos: jmp endereço / je endereço / jne endereçojz endereço / jnz endereço / djnz endereçodje endereço / djne endereço

Page 39: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

Exemplos de códigos em Assembly x86 [01]

Fonte: Pannain. Disponível em: <http://www.ic.unicamp.br/~pannain/mc404/aulas/slides/obclm6_ppt.pdf>.

Page 40: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

Exemplos de códigos em Assembly x86 [02]

Fonte: Pannain. Disponível em: <http://www.ic.unicamp.br/~pannain/mc404/aulas/slides/obclm6_ppt.pdf>.

Page 41: OFICINA DA PESQUISA · linguagem Assembly. ... para ser usado no IBM PC (Personal Computer). ... MCPU’s com mais de um núcleo para PC’s e notebooks, o

BIBLIOGRAFIA CONSULTADA

• FORBELLONE, André Luiz Villar. Lógica de programação: aconstruçã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ívelem: <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 decomputadores. 5. ed. São Paulo: Pearson Prentice Hall, 2011.