К основному содержанию
скилл CX Codex

abi-and-calling-conventions — скилл для Claude Code: ABI и соглашения

Скилл для ИИ-агента, который разбирает правила ABI: какие регистры держат аргументы, как выравнивается стек, что ломается в FFI.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mohitmishra786/low-level-dev-skills --skill abi-and-calling-conventions -a claude-code
Открыть на GitHub

Что делает abi-and-calling-conventions

Скилл описывает соглашения вызова для трёх архитектур: System V AMD64, ARM AAPCS и RISC-V psABI. Внутри — таблицы регистров под целочисленные и вещественные аргументы, возвращаемые значения, callee-saved наборы и выравнивание стека. Отдельные разделы про раскладку стекового фрейма, вариативные функции и проверку вывода компилятора через gcc -O2 -S и objdump -d -M intel.

Пригодится, когда вы пишете ассемблерные thunks или inline asm с clobber-списками, ловите испорченный стек в смешанном C/asm коде, читаете дизассемблер или связываете Rust, C и Zig через FFI. Скилл ссылается на смежные материалы: skills/rust/rust-ffi, skills/zig/zig-cinterop, skills/debuggers/gdb, skills/low-level-programming/assembly-x86.

Есть таблица типовых сбоев с причиной и исправлением: падение на call из-за невыровненного rsp, неверный float-аргумент при расхождении XMM и GPR, мусор в FFI при смешивании Windows x64 и System V. Для Windows x64 правила другие, скилл отправляет за ними в skills/compilers/msvc-cl — это повод проверить, под какую платформу вы вообще собираете.

Какие задачи решает

  • разобрать, какие регистры получают 5–8-й аргументы функции
  • починить падение на call из-за невыровненного стека
  • найти потерянный clobber в inline asm
  • связать Rust и C через FFI без мусора в аргументах
  • прочитать .cfi_* в выводе компилятора

Примеры запросов агенту

  • /abi-and-calling-conventions какие регистры держат аргументы 5–8 в AArch64 для моей C-функции?
  • /abi-and-calling-conventions почему падает вызов после моего ассемблерного thunk?
  • /abi-and-calling-conventions проверь clobber-список в этом inline asm

Как установить abi-and-calling-conventions

1Через Skills CLI (Vercel)

npx skills add mohitmishra786/low-level-dev-skills --skill abi-and-calling-conventions -a claude-code

2Вручную: положить файлы

~/.claude/skills/abi-and-calling-conventions/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/abi-and-calling-conventions/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора62

zig-testing Скилл ведёт агента по тестовой системе Zig: zig build test, фильтры, comptime-проверки, тестовый аллокатор и встроенный фаззер. CX Codex +1 440установок stm32-baremetal Ведёт агента по сборке прошивки STM32 на одних заголовках CMSIS: тактовые частоты, RCC, линкерный скрипт, сборка через arm-none-eabi-gcc. CX Codex +1 360установок device-drivers Скилл ведёт агента по разработке драйверов ядра Linux: platform/i2c/spi, символьные устройства, IRQ, DMA, regmap и runtime PM. CX Codex +1 358установок reverse-engineering Скилл для разбора скомпилированных бинарей: подсказывает агенту порядок работы с Ghidra, radare2 и Binary Ninja. Пригодится, когда исходников нет, а логику восстановить надо. CX Codex +1 350установок linux-kernel-architecture Даёт агенту карту ядра Linux: порядок загрузки, крупные подсистемы, уровни initcall и места, где искать код в linux.git. CX Codex +1 333установок cuda Помогает агенту писать и оптимизировать CUDA-ядра: иерархия потоков, разделяемая память, потоки, флаги nvcc и Thrust. CX Codex +1 320установок kernel-debugging-advanced Скилл для трассировки ядра Linux: ftrace, trace-cmd, perf, kprobes, kgdb и разбор vmcore. Пригодится, когда драйвер тормозит без явной ошибки. CX Codex +1 317установок cuda-profiling Ведёт агента по профилированию CUDA-приложений: таймлайн в Nsight Systems, метрики ядер в Nsight Compute, разбор roofline и узких мест. CX Codex +1 316установок

Похожие

dart-use-ffigen flutter Скилл учит агента генерировать FFI-биндинги через package:ffigen вместо ручного написания. Используй, когда нужно создать или расширить привязки к C/Objective-C/Swift библиотекам. CX Codex +1 14 000установок langchain4j-tool-function-calling-patterns giuseppe-trisciuoglio Скилл подсказывает агенту, как описывать Java-методы через @Tool, регистрировать их в AiServices и обрабатывать ошибки вызова. CX Codex +1 3 700установок Compiler Explorer compiler-explorer Даёт агенту доступ к godbolt.org: компилирует код, показывает ассемблер и делится ссылками. Пригодится, когда нужно разобрать, во что превращается ваш C++ или Rust. CX Codex +1 ★ 19 148звёзд репо rust-pro Seth Hobson Субагент на модели Opus для разработки на Rust 1.75+. Помогает писать асинхронный код на Tokio и axum, настраивать многопоточность и разбираться с проверками заимствований. CX Codex 1 148установок dart-setup-ffi-assets flutter Скилл помогает агентам автоматизировать компиляцию и упаковку кода на C/C++ в динамические или статические библиотеки через систему Native Assets в Dart. Нужен, если вы интегрируете нативный код в Flutter или Dart-пакеты. CX Codex +1 14 000установок constant-time-analysis trailofbits Статически проверяет ассемблер и байткод криптографического кода на утечки по времени. Находит деление на секретные данные и ранние выходы из сравнений. CX Codex +1 5 400установок

Рядом в теме «Языки программирования»

Все скиллы по теме «Языки программирования» →

Вопросы о abi-and-calling-conventions

Как установить abi-and-calling-conventions в Claude?

Выполните npx skills add mohitmishra786/low-level-dev-skills --skill abi-and-calling-conventions -a claude-code. Файл скилла окажется в ~/.claude/skills/abi-and-calling-conventions/SKILL.md.

Что делает abi-and-calling-conventions?

Описывает правила ABI для System V AMD64, ARM AAPCS и RISC-V psABI: роли регистров, выравнивание стека, передачу аргументов, возвращаемые значения и вариативные вызовы.

Чем правила Windows x64 отличаются от System V?

Скилл прямо говорит, что Windows x64 отличается, и отправляет за деталями в skills/compilers/msvc-cl. Если смешать два ABI в одной сборке, FFI вернёт мусор.

Исходный текст

SKILL.md · MIT
---
name: abi-and-calling-conventions
description: ABI and calling conventions skill for cross-language boundaries. Use when explaining System V AMD64, ARM AAPCS, RISC-V psABI, stack frames, variadic calls, or FFI register rules. Activates on queries about calling convention, ABI, System V AMD64, AAPCS, stack frame, variadic function, or FFI registers.
---

# ABI and Calling Conventions

## Purpose

Document application binary interface (ABI) rules: register roles, stack alignment, argument passing, return values, and variadic conventions across System V AMD64, ARM AAPCS, and RISC-V — essential for assembly, FFI, and debugging.

## When to Use

- Writing assembly thunks or inline asm clobbers
- Debugging corrupted stack in mixed C/asm
- FFI between Rust/C/Zig (`skills/rust/rust-ffi`, `skills/zig/zig-cinterop`)
- Reading disassembly from `skills/debuggers/gdb`

## Workflow

### 1. System V AMD64 (Linux/macOS)

| Item | Rule |
|------|------|
| Integer args | `rdi, rsi, rdx, rcx, r8, r9` |
| XMM args | `xmm0`–`xmm7` (float) |
| Return int/ptr | `rax` (+ `rdx` for 128-bit) |
| Stack alignment | 16-byte before `call` |
| Red zone | 128 bytes below `rsp` (Linux) |
| Callee-saved | `rbx, rbp, r12–r15` |

```c
/* void foo(int a, int b, int c, int d, int e, int f, int g); */
/* a–f in regs, g on stack */
```

Windows x64 differs — see `skills/compilers/msvc-cl`.

### 2. ARM AAPCS (AArch32/AArch64)

**AArch64:**

| Item | Rule |
|------|------|
| Integer args | `x0`–`x7` |
| Float args | `v0`–`v7` |
| Return | `x0`/`x1` or `v0` |
| Stack align | 16-byte |
| Callee-saved | `x19`–`x28`, `fp` (`x29`), `lr` (`x30`) |

Thumb interworking: LSB of function pointer set for Thumb code.

See `skills/low-level-programming/assembly-arm`.

### 3. RISC-V psABI (RV64)

| Item | Rule |
|------|------|
| Integer args | `a0`–`a7` |
| Callee-saved | `s0`–`s11`, `sp` |
| Return | `a0`, `a1` |
| Stack align | 16-byte |

See `skills/low-level-programming/assembly-riscv`.

### 4. Stack frame layout (conceptual)

```
high addresses
├── return address
├── saved frame pointer
├── local variables
├── spill slots / alignment padding
└── outgoing args (if any)
low addresses (rsp)
```

### 5. Variadic functions

System V: `al` holds number of vector args used; `register_save_area` on stack for `va_start`. Prefer typed wrappers over raw `va_arg` in portable FFI.

### 6. Verify in compiler output

```bash
gcc -O2 -S -o - foo.c   # study .cfi_* and mov args
objdump -d -M intel ./a.out
```

### 7. Agent usage

```
/abi-and-calling-conventions Which registers hold args 5–8 in AArch64 for my C function?
```

## Common Problems

| Symptom | Cause | Fix |
|---------|-------|-----|
| Crash on `call` | Stack misaligned | Align `rsp` mod 16 |
| Wrong float arg | XMM vs GPR mismatch | Match prototype |
| Corrupt callee-saved | Asm clobber missing | List in clobber or save |
| FFI garbage | Windows vs SysV mix | Match toolchain ABI |
| Variadic UB | Wrong type to `va_arg` | Cast to promoted type |

## Related Skills

- `skills/low-level-programming/assembly-x86` — x86-64 asm
- `skills/low-level-programming/assembly-arm` — AAPCS examples
- `skills/low-level-programming/assembly-riscv` — RISC-V asm
- `skills/rust/rust-ffi` — `extern "C"` guarantees
- `skills/binaries/elf-inspection` — symbol and relocation views

© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой