一键导入
developer-assembly-registers
GPRs, segmento, flags, SSE/AVX em x86/x64. Aplicável a Delphi assembler, NASM, GAS.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
GPRs, segmento, flags, SSE/AVX em x86/x64. Aplicável a Delphi assembler, NASM, GAS.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Gera documentação completa por classe/interface com conteudo detalhado (O que e, Caracteristicas, Engine, Funcionalidades, Aplicabilidades, Exemplos de Uso, Relacionamentos) a partir do codigo-fonte. Generico para qualquer projeto. Orquestra agentes doc-agent-class-scanner, doc-agent-class-writer e doc-agent-class-indexer.
Convenções transversais de documentação entre skills (ordem de invocação, changelog em Markdown portátil, pacote para outro repositório/IA). Não define a pasta Analise/ — isso é documentation-paste_analysis_unit_class_method.
Ponto de entrada para todos os workflows de documentação — bootstrap, design OOP inicial, análise de código, conteúdo canónico, portais, manutenção e migração. Complementa o documentation-agent-orchestrator na camada de skills (25 skills da família documentation-*).
Inicializa o ecossistema documental em um projeto novo criando a estrutura canônica `Documentation/`, gerando o hub `README_V1.0.md`, criando o `Documentation/Versionamento/CHANGELOG.md` inicial e executando um scan inicial para lacunas (backlog documental). Use quando o usuario iniciar documentação "do zero" ou pedir "começar o padrão de Documentation". Raiz canónica `Documentation/`; se existir `Docs/` ou `docs/` na raiz, renomear para `Documentation/` antes do bootstrap.
Executa uma varredura (scanner padrão) para descobrir artefatos documentais e lacunas no ecossistema `Documentation/` (ou equivalente) com base em padrões de nomes/pastas. Gera inventário/classificação e um backlog acionável. Raiz canónica `Documentation/`; incluir `Docs/` ou `docs/` legados na raiz até consolidarem.
Referência do conjunto de instruções x86/x64 — utilizável com assembler Delphi, NASM, GAS e similares.
| name | developer-assembly-registers |
| description | GPRs, segmento, flags, SSE/AVX em x86/x64. Aplicável a Delphi assembler, NASM, GAS. |
| model | sonnet |
| license | MIT |
| copyright | Copyright (c) 2026 CSL Tech Solutions |
| company | CSL Tech Solutions |
| author | Claiton de Souza Linhares |
Versão: 1.0.0 Data: 2026-04-11 Locale: pt-BR Categoria: developer · delphi · assembly
Referência completa dos registradores x86/x86-64: subdivisões de tamanho, registradores de segmento, RFLAGS bit a bit, RIP, registradores SIMD (XMM/YMM/ZMM) e convenções de preservação (caller-saved vs callee-saved) para Windows x64 ABI. Inclui exemplos concretos de uso no built-in assembler Delphi.
| 64-bit | 32-bit | 16-bit | 8-bit alto | 8-bit baixo | Uso convencional |
|---|---|---|---|---|---|
| RAX | EAX | AX | AH | AL | Acumulador, retorno de função |
| RBX | EBX | BX | BH | BL | Base, callee-saved |
| RCX | ECX | CX | CH | CL | Contador, 1° param (x64) |
| RDX | EDX | DX | DH | DL | Dados, 2° param (x64) |
| RSI | ESI | SI | — | SIL | Source index, 6° param (Linux) |
| RDI | EDI | DI | — | DIL | Dest index, 7° param (Linux) |
| RSP | ESP | SP | — | SPL | Stack pointer (NÃO modificar!) |
| RBP | EBP | BP | — | BPL | Base pointer (frame), callee-saved |
| R8 | R8D | R8W | — | R8B | 3° param Windows x64 |
| R9 | R9D | R9W | — | R9B | 4° param Windows x64 |
| R10 | R10D | R10W | — | R10B | Caller-saved, uso geral |
| R11 | R11D | R11W | — | R11B | Caller-saved, uso geral |
| R12 | R12D | R12W | — | R12B | Callee-saved |
| R13 | R13D | R13W | — | R13B | Callee-saved |
| R14 | R14D | R14W | — | R14B | Callee-saved |
| R15 | R15D | R15W | — | R15B | Callee-saved |
REGRA CRÍTICA — Zero-extension em 64-bit:
Escrever em um registrador de 32 bits (ex: EAX) zera automaticamente os 32 bits
superiores do registrador de 64 bits (RAX). Operações de 8 e 16 bits NÃO fazem isso.
; Exemplo de zero-extension automático
mov rax, 0xFFFFFFFFFFFFFFFF ; RAX = 0xFFFFFFFFFFFFFFFF
mov eax, 1 ; RAX = 0x0000000000000001 (zeros superiores!)
mov ax, 1 ; RAX = 0xFFFFFFFF00000001 (NÃO zera os 48 bits superiores)
mov al, 1 ; RAX = 0xFFFFFFFFFFFF0001 (NÃO zera os 56 bits superiores)
RAX (64 bits):
┌────────────────────────────────────────────────────────────────┐
│ 63 32 31 16 15 8 7 0│
│ EAX AX AH AL │
└────────────────────────────────────────────────────────────────┘
| Registrador | Nome | Uso no Windows flat model |
|---|---|---|
| CS | Code Segment | Aponta para segmento de código (gerenciado pelo OS) |
| DS | Data Segment | Dados (base 0 em flat model) |
| ES | Extra Segment | Usado em string ops (MOVS, STOS) |
| FS | FS Segment | TEB (Thread Environment Block) em Windows user-mode |
| GS | GS Segment | TEB em Windows x64 / PCB em kernel mode |
| SS | Stack Segment | Stack (base 0 em flat model) |
Nota: No Windows FS:[0] (32-bit) e GS:[0x30] (64-bit) apontam para o TEB. Útil para
exceções estruturadas (SEH) e TLS.
| Bit | Sigla | Nome | Quando é setado (1) |
|---|---|---|---|
| 0 | CF | Carry Flag | Resultado gerou carry/borrow; overflow sem sinal |
| 2 | PF | Parity Flag | Byte baixo do resultado tem número PAR de bits 1 |
| 4 | AF | Auxiliary Carry | Carry do bit 3 para o bit 4 (aritmética BCD) |
| 6 | ZF | Zero Flag | Resultado é zero |
| 7 | SF | Sign Flag | Resultado é negativo (bit mais alto = 1) |
| 8 | TF | Trap Flag | Single-step mode (debug) |
| 9 | IF | Interrupt Enable | Interrupções habilitadas |
| 10 | DF | Direction Flag | String ops decrementam (STD/CLD) |
| 11 | OF | Overflow Flag | Overflow em operação com sinal |
| Instrução | CF | ZF | SF | OF | Observação |
|---|---|---|---|---|---|
| ADD/SUB | sim | sim | sim | sim | Todas as aritméticas |
| MUL | sim | — | — | sim | CF=OF=0 se parte alta é zero |
| IMUL | sim | — | — | sim | CF=OF=0 se não houve overflow |
| CMP | sim | sim | sim | sim | Subtração sem salvar resultado |
| TEST | 0 | sim | sim | 0 | AND sem salvar resultado |
| INC/DEC | — | sim | sim | sim | CF não é afetado! |
| AND/OR/XOR | 0 | sim | sim | 0 | Lógicas zeram CF e OF |
| SHL/SHR | sim | sim | sim | sim | CF = último bit deslocado |
MOV em x86 clássico.mov rax, [rip+offset]JMP, CALL, RET, Jcc, LOOP, interrupções.; RIP-relative addressing (x64 NASM)
section .data
valor dq 42
section .text
mov rax, [rel valor] ; lê 'valor' relativo a RIP (PIC-friendly)
; Operações SSE básicas
movaps xmm0, [array] ; load 4 floats alinhados (16-byte aligned)
movups xmm1, [ptr] ; load 4 floats NÃO alinhados
addps xmm0, xmm1 ; soma 4 floats em paralelo (packed single)
mulpd xmm0, xmm2 ; multiplica 2 doubles em paralelo (packed double)
{$DEFINE CPUAVX} ou detecção em runtime; Operações AVX básicas (256-bit)
vmovaps ymm0, [array] ; load 8 floats alinhados
vaddps ymm0, ymm0, ymm1 ; soma 8 floats em paralelo
Caller-saved (voláteis — não preservados entre calls):
RAX, RCX, RDX, R8, R9, R10, R11
XMM0, XMM1, XMM2, XMM3, XMM4, XMM5
Callee-saved (não-voláteis — DEVEM ser preservados):
RBX, RBP, RSI, RDI, R12, R13, R14, R15, RSP
XMM4, XMM5, XMM6, XMM7, XMM8, XMM9, XMM10, XMM11,
XMM12, XMM13, XMM14, XMM15
| Registrador | Papel |
|---|---|
| EAX | Self (métodos) ou 1° parâmetro; retorno de inteiro |
| EDX | 2° parâmetro |
| ECX | 3° parâmetro |
| ST(0) | Retorno de float/extended (FPU) |
| EBX, ESI, EDI, EBP, ESP | Callee-saved — DEVEM ser preservados |
| Registrador | Papel |
|---|---|
| RCX | Self (métodos) ou 1° parâmetro |
| RDX | 2° parâmetro |
| R8 | 3° parâmetro |
| R9 | 4° parâmetro |
| RAX | Retorno de inteiro/ponteiro |
| XMM0 | Retorno de float/double |
// Função assembly pura que retorna A + B via RAX
// Compatível com dcc64 (Windows x64)
function SomaDois(A, B: Int64): Int64;
asm
// RCX = A, RDX = B (Windows x64: 1° e 2° params)
MOV RAX, RCX // RAX = A
ADD RAX, RDX // RAX = A + B
// Retorno implícito: o valor em RAX é o resultado
end;
// Versão 32-bit: A em EAX, B em EDX
function SomaDois32(A, B: Integer): Integer;
asm
// EAX = A (1° param), EDX = B (2° param)
ADD EAX, EDX // EAX = A + B (resultado retornado em EAX)
end;
developer-assembly-registers_V1.0.0/
├── SKILL.md
├── exemplos/
│ ├── asm/
│ │ ├── registradores_subdivisoes.asm
│ │ └── lea_calculos.asm
│ └── pas/
│ ├── parametros_register.pas
│ ├── parametros_x64.pas
│ ├── preservar_obrigatorios.pas
│ └── self_access.pas
├── consultas_rapidas/
│ ├── registradores_completo.md
│ ├── preservacao_regras.md
│ ├── self_e_params.md
│ └── r8_r15_restricoes.md
└── templates/
├── TEMPLATE_metodo_asm.pas
├── TEMPLATE_func_preserva.pas
└── TEMPLATE_registradores.asm
developer-assembly-x86-fundamentals_V1.0.0 — arquitetura, modos, modelo de memóriadeveloper-assembly-instructions_V1.0.0 — conjunto de instruçõesdeveloper-assembly-stack-call_V1.0.0 — stack frame e convenções de chamada