Como o número de bits do registro é determinado?

3

São registros verdadeiros de 32 bits em x86 e 64 bits em x86-64?

    
por Moses 16.09.2010 / 17:32

3 respostas

4

Resposta curta: sim.

Resposta longa:

Todas as CPUs possuem vários registros. Em CPUs x86, a maior é de 32 bits e em x64 a mais longa é de 64 bits.

Os registros menores são fornecidos para compatibilidade retroativa com aplicativos mais antigos.

Por exemplo, o bx register tem sempre 16bits de comprimento e existe para compatibilidade com 16bits na maioria das CPUs, ebx tem 32bits e existe em CPUs de 32 e 64bits.

É importante notar que bx aponta para a "metade direita" de ebx

Por exemplo:

Se o valor em ebx for 0f0f 0b0b , o valor em bx será 0b0b

    
por 16.09.2010 / 17:40
2

Sim, mas ...

Tome como exemplo o registro acumulador.

No 8086/8088, esse era o registrador AX de 16 bits. As partes esquerda e direita de 8 bits podem ser acessadas separadamente como AH e AL:

    1
    5               0
    |+++++++*+++++++|
AX: |   AH  |   AL  |
    |+++++++*+++++++|

Os processadores de 32 bits adicionaram os registros de 32 bits, enquanto os registros originais de 16 e 8 bits ficaram disponíveis:

     3
     1                               0
     |+++++++*+++++++|+++++++*+++++++|
     |              AX               |
EAX: |               |   AH  |   AL  |
     |+++++++*+++++++|+++++++*+++++++|

E com 64 bits eles repetiram o truque:

     6
     3                                                               0
     |+++++++*+++++++|+++++++*+++++++|+++++++*+++++++|+++++++*+++++++|
     |                               |              EAX              |
RAX: |                               |               |      AX       |
     |                               |               |   AH  |   AL  |
     |+++++++*+++++++|+++++++*+++++++|+++++++*+++++++|+++++++*+++++++|

E há também os registradores de ponto flutuante, cada um com 80 bits, independentemente do tamanho do registro principal.

    
por 17.09.2010 / 08:55
1

Os registradores de propósito geral e o ponteiro de instrução são 16 bits em uma CPU x86 de 16 bits (isto é, 80x86 até 286 ou posterior no modo de compatibilidade), 32 bits em uma CPU x86 de 32 bits (ou seja, 386 em diante) e 64 bits em uma CPU de 64 bits (ou seja, amd64 ou compatível). Isso ocorre porque uma CPU N-bit é mais ou menos definida como uma CPU onde os registradores de propósito geral têm N bits de largura (ou uma CPU onde o ponteiro de instrução é N bits, mas em x86 e a maioria das outras arquiteturas é a mesma). p>

Alguns outros registradores possuem tamanhos diferentes. Por exemplo, CPUs x86 de 32 bits possuem registradores de segmento de 16 bits (raramente usados) e registradores de ponto flutuante de 80 bits. O artigo da wikipedia no X86 tem uma lista mais completa.

    
por 16.09.2010 / 20:46