* FabioOlive (~olive@oesc-livre/founder/fabioolive) entrou em #OeSC-Livre

* ChanServ coloca o modo de operador a FabioOlive

<AlissonB> FabioOlive, as arquiteturas tem um valor fixo de registradores pra realizar as operações?

<FabioOlive> AlissonB: sim, quando uma família de processadores é criada, a arquitetura indica quantos registradores tem, pra que servem, etc, e aí isso geralmente não muda (ou no máximo aumenta) nas novas versões da arquitetura

<AlissonB> e quantos registradores são, normalmente?

<FabioOlive> varia muito de arq pra arq

<FabioOlive> x86 em 16 e 32 bits tem o AX, BX, CX, DX, SI, DI pra uso genérico, mais BP e SP com uso um pouco mais especial

<FabioOlive> e o IP que aponta as instruções, então não é usado em operações normais (a não ser jumps :)

<FabioOlive> e alguns registradors de “segmento de memória” tipo CS, DS, ES, SS e tal

<FabioOlive> em 32bits os regs são os mesmos, só se inclui um E (de Extended) na frente, EAX, EBX, ECX, …

<FabioOlive> quando em modo 64bits, aparecem mais 8 regs, R8, R9, R10, …, R15

<FabioOlive> arquiteturas RISC geralmente possuem 32 registradores ou mais

<FabioOlive> e geralmente são chamados r0, r1, r2, r3, … até r31

<_edEr> AlissonB depois manda os logs.. ;)

<FabioOlive> RISC é uma característica de projeto que limita as operações diretas em memória, então ela provê mais registradores pra poder ter mais informação útil na CPU pra operar em cima

<FabioOlive> a x86 é uma arquitetura CISC, então característicamente tem menos registradores e usa mais a memória

<FabioOlive> então em x86 tu podes fazer algo como

<FabioOlive> carrega o conteúdo do endereço foobar no registrador AX

<FabioOlive> multiplica pelo conteúdo do endereço baz

<FabioOlive> enquanto em RISC (ARM, SPARC, MIPS, etc) teria que ser:

<FabioOlive> carrega o conteúdo de foobar em r2, carrega o conteúdo de baz em r3, multiplica r2 por r3

<FabioOlive> AlissonB: pensa assim: sabe uma calculadora de 4 operações, aquela calculadorinha básica? :)

<AlissonB> sim FabioOlive

<FabioOlive> então, uma calculadora dessas é como uma CPU sem RAM ligada nela

<FabioOlive> tu controlas a CPU e o registrador único dela diretamente no teclado

<FabioOlive> tu digita um número, tipo 42

<FabioOlive> quando tu apertas + pra indicar a operação de soma,

<FabioOlive> ela percebe que tu terminou de digitar o número e guarda ele no registrador

<FabioOlive> e guarda que a instrução a ser executada (em outro registrador) é soma, pois tu apertou +

<FabioOlive> quando tu digitares outro número e apertar =, ela executa a operação entre o conteúdo do registrador e o segundo número, coloca o resultado no registrador de novo e mostra no display

<FabioOlive> o resultado já fica no registrador, pois se tu apertares outra operação e outro número, ele segue acumulando o resultado no registrador

<FabioOlive> por isso geralmente se chama esse tipo de registrador de Acumulador :) ou A, pra abreviar, e quando a gente evolui a arquitetura de 8 bits pra 16 bits, a gente chama o A de AX, porque agora ele é o A eXtendido pra 16 bits ;-)

<FabioOlive> viu que divertido? :)

<FabioOlive> no caso da calculadora de 4 operações, o usuário faz o papel da RAM, pois é ele quem fornece os dados e as instruções :)

<FabioOlive> ou a folha de papel é a RAM, hehehe

<AlissonB> tudo tem lógica, basta sabê-la, hehe

<FabioOlive> a calculadora não armazena programa, ela é só a CPU, só armazena os registradores para as operações mais imediatas e fundamentais

<AlissonB> bem interessante, hehe

<AlissonB> saquei isso da calculadora

<AlissonB> é tudo pra uso imediato

<FabioOlive> no caso de um computador, a gente pluga a CPU na RAM, e coloca na RAM números que vão indicar operações (instruções) e operandos (dados), e a CPU sai executando sozinha :)

<FabioOlive> AlissonB: exato!

Navegação
Ferramentas