# Prefixo REX

Como eu mencionei antes esse prefixo só existe no modo de 64-bit e ele é necessário para usar operandos de 64-bit. Esse prefixo não é um byte específico mas sim todos os bytes entre `40` e `4F`. Isso porque os últimos 4 bits do prefixo são campos distintos, mas os 4 bits mais significativos do prefixo REX sempre tem o valor fixo de `0100`.

Observe as figuras tiradas dos manuais da Intel:

![](/files/TbSXAGdqiSpXqyY36z9H)

Em modo de 16-bit e 32-bit há 8 registradores de propósito geral, mas em 64-bit há 16 registradores de propósito geral. Como eu mencionei antes os campos que especificam os registradores por códigos contém somente 3 bits de tamanho, daí só é possível especificar 8 registradores distintos.

Mas alguns bits do prefixo REX são usados para estender os tamanhos desses campos em 1 bit, assim permitindo especificar até 16 registradores distintos ou 16 modos de endereçamento distintos. Cada bit do prefixo REX é identificado por uma letra e é comumente referido como no formato `REX.B` que seria o bit `B` (o menos significativo) do prefixo.

#### **REX.B (bit 0)**

Em instruções cujo a codificação do registrador faz parte do opcode, ele é usado para estender o campo de registrador. Onde ele se torna o bit mais significativo do valor.

Em instruções com ModR/M (sem SIB) ele estende o campo R/M como o bit mais significativo.

Em instruções com SIB ele estende o campo **Base** como o bit mais significativo.

#### **REX.X (bit 1)**

Estende o campo **Index** do SIB como o bit mais significativo.

#### **REX.R (bit 2)**

Estende o campo REG do byte ModR/M como o bit mais significativo.

#### **REX.W (bit 3)**

Se ligado a instrução usa operandos de 64-bit, onde por padrão os operandos são de 32-bit.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mentebinaria.gitbook.io/assembly/apendices/codigo-de-maquina/prefixo-rex.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
