Hacker News

Quantos registros uma CPU x86-64 possui? (2020)

Quantos registros uma CPU x86-64 possui? (2020) Esta exploração se aprofunda em muitos aspectos, examinando seu significado e potencial no Mewayz Business OS.

5 minutos de leitura

Mewayz Team

Editorial Team

Hacker News

Uma CPU x86-64 possui 16 registros de uso geral, mas o arquivo de registro completo é muito maior – abrangendo mais de 100 registros arquitetônicos quando você inclui registros de ponto flutuante, SIMD, segmento, controle e específicos de modelo. Compreender o quadro completo é importante, quer você esteja escrevendo código de baixo nível, depurando o desempenho do sistema ou simplesmente satisfazendo sua curiosidade sobre o que acontece no sistema operacional.

Quais são os 16 registros de uso geral em x86-64?

A extensão de 64 bits da arquitetura x86 (AMD64/Intel 64) dobrou os 8 registros originais de uso geral do IA-32 para 16. Esses são os burros de carga da computação diária — usados ​​para aritmética, endereçamento de memória, argumentos de função e valores de retorno.

RAX, RBX, RCX, RDX — os registros originais "acumulador", "base", "contador" e "dados", agora estendidos para largura de 64 bits

RSI, RDI — índice de origem e índice de destino, frequentemente usado para operações de string e argumentos de função

RSP, RBP — ponteiro de pilha e ponteiro base, essenciais para gerenciar a pilha de chamadas e os quadros de pilha

R8 a R15 — oito registros totalmente novos introduzidos em x86-64, não presentes na arquitetura de 32 bits, dando aos compiladores muito mais flexibilidade para otimização

Cada um desses registros de 64 bits é compatível com versões anteriores, o que significa que você pode endereçar os 32 bits inferiores (por exemplo, EAX), 16 bits (AX) ou até mesmo metades individuais de 8 bits (AH, AL) – um legado de design que remonta ao Intel 8086 de 1978.

Quantos registros totais o x86-64 realmente possui?

💡 VOCÊ SABIA?

A Mewayz substitui 8+ ferramentas empresariais numa única plataforma

CRM · Faturação · RH · Projetos · Reservas · eCommerce · POS · Análise. Plano gratuito para sempre disponível.

Comece grátis →

O número cresce substancialmente quando você olha além dos registros de uso geral. Um processador x86-64 moderno expõe várias classes de registro distintas para programas de espaço do usuário e para o kernel do sistema operacional:

O registro RFLAGS é um único registro de 64 bits que contém códigos de condição - sinalizador zero, sinalizador de transporte, sinalizador de overflow - que controla a ramificação condicional após cada operação aritmética ou lógica. O registro RIP (ponteiro de instrução) rastreia o endereço da próxima instrução a ser executada e não pode ser modificado diretamente pela maioria das instruções.

Seis registradores de segmento (CS, DS, ES, FS, GS, SS) permanecem do modelo de memória segmentada das arquiteturas x86 anteriores. No modo de 64 bits, a maioria é vestigial, mas FS e GS ainda são usados ​​ativamente pelos sistemas operacionais para apontar para armazenamento local de thread e estruturas de dados de kernel locais de CPU.

Depois, há 16 registros XMM (XMM0–XMM15) introduzidos com SSE, cada um com 128 bits de largura. Com o AVX, eles se tornam registros YMM de 256 bits e, com o AVX-512, eles se expandem ainda mais para registros ZMM de 512 bits — adicionando outros 32 registros ao arquivo no hardware suportado. Os registros legados 8 x87 FPU (ST0 – ST7), organizados como uma pilha, lidam com computação de ponto flutuante de precisão estendida de 80 bits.

Insight principal: O número total de registros visíveis para o código do espaço do usuário em um processo x86-64 típico é de cerca de 40 a 50 (uso geral, sinalizadores, ponteiro de instrução, segmento e registros XMM). Quando você adiciona registros de controle de modo kernel, registros de depuração e centenas de registros específicos de modelo (MSRs), o espaço completo de registros arquitetônicos chega a milhares - a maioria dos quais nunca é tocada por software comum.

Por que o x86-64 dobrou a contagem de registros de uso geral?

O salto de 8 para 16 registros de uso geral foi uma das melhorias mais práticas que a AMD fez ao projetar a extensão x86-64 no início dos anos 2000. Os 8 registros originais criaram um sério gargalo: os compiladores eram forçados a despejar constantemente variáveis ​​na memória (a pilha) porque simplesmente não havia registros suficientes para armazenar valores intermediários. Esse derramamento gera instruções extras de carga e armazenamento, queimando tempo e largura de banda de memória.

Com 16 registros de uso geral, a convenção de chamada x86-64 (System V AMD64 ABI no Linux/macOS, Microsoft x64 ABI no Windows) pode passar os primeiros argumentos de função inteiramente em registros - seis argumentos inteiros no Linux (RDI, RSI, RDX, RCX, R8, R9) - sem tocar na pilha.

Build Your Business OS Today

From freelancers to agencies, Mewayz powers 138,000+ businesses with 207 integrated modules. Start free, upgrade when you grow.

Create Free Account →

Experimente o Mewayz Gratuitamente

Plataforma tudo-em-um para CRM, faturação, projetos, RH e muito mais. Cartão de crédito não necessário.

Comece a gerenciar seu negócio de forma mais inteligente hoje

Присоединяйтесь к 30,000+ компаниям. Бесплатный тариф навсегда · Без банковской карты.

Pronto para colocar isto em prática?

Junte-se a 30,000+ empresas a usar o Mewayz. Plano gratuito para sempre — cartão de crédito não necessário.

Iniciar Teste Gratuito →

Pronto para agir?

Inicie seu teste gratuito do Mewayz hoje

Plataforma de negócios tudo-em-um. Cartão de crédito não necessário.

Comece grátis →

Teste gratuito de 14 dias · Sem cartão de crédito · Cancele a qualquer momento