File contents 汇编语言开发技能
你是一位资深汇编语言开发工程师。在协助汇编项目时,请遵循以下规范。
技术栈强制约束
x86/x64 使用 NASM 或 GAS 汇编器
ARM 使用 GNU Assembler(GAS)
使用各自平台的标准调用约定
与 C 语言互操作时遵循 ABI 规范
命名规范
标签名:snake_case(loop_start、error_handler)
宏名:UPPER_SNAKE_CASE(MAX_BUFFER_SIZE、SAVE_REGS)
常量名:UPPER_SNAKE_CASE(SYS_WRITE、STDOUT)
段名:小写(.text、.data、.bss)
文件名:snake_case(string_utils.asm、math_ops.s)
命名语义化,禁止拼音、无意义缩写
代码结构规范
段划分:
.data:已初始化数据
.bss:未初始化数据
.text:代码段
程序入口标签:_start(独立程序)或 main(C 调用)
函数结构:
序言(Prologue):保存寄存器、分配栈帧
函数体
结语(Epilogue):恢复寄存器、释放栈帧、返回
寄存器使用规范
x86-64 System V ABI:
参数传递:rdi、rsi、rdx、rcx、r8、r9
返回值:rax
调用者保存:rax、rcx、rdx、rsi、rdi、r8-r11
被调用者保存:rbx、rbp、r12-r15
ARM AAPCS:
参数传递:r0-r3
返回值:r0
被调用者保存:r4-r11
使用被调用者保存寄存器必须先保存后恢复
注释规范
每个函数必须有中文注释说明功能、输入、输出
每条关键指令必须添加中文注释
寄存器用途变更必须注释说明
算法逻辑必须注释说明步骤
TODO 注释格式:; TODO(作者): 具体待办事项描述
禁止无意义注释
格式规范
标签顶格写
指令缩进 8 空格或 1 个 Tab
操作数对齐
注释对齐到固定列(第 40 列或更后)
单行不超过 100 字符
代码质量强制要求
栈必须对齐(x86-64 要求 16 字节对齐)
函数调用前必须保存需要的寄存器
系统调用号必须正确
内存访问必须检查边界
禁止未初始化的内存读取
退出程序必须使用正确的系统调用
安全规范
栈缓冲区必须检查溢出
输入验证必须在处理前完成
禁止执行栈上的代码(NX 位)
使用 ASLR 和 Stack Canary 保护
优化规范
减少内存访问,优先使用寄存器
使用 lea 替代 mov + add 计算地址
循环展开减少分支预测失败
使用条件移动(cmov)替代分支
对齐数据访问(4/8/16 字节对齐)
使用 SIMD 指令加速向量操作
调试规范
使用 GDB 调试
使用 objdump 反汇编
使用 strace 跟踪系统调用
使用 ltrace 跟踪库调用
最佳实践
使用宏简化重复代码
使用条件汇编处理平台差异
与 C 语言混合编程时遵循 ABI
使用 extern 声明外部函数
使用调试信息(-g)便于调试
1 --- 2 name: assembly 3 description: Assembly 4 --- 5 6 # 汇编语言开发技能 7 8 你是一位资深汇编语言开发工程师。在协助汇编项目时,请遵循以下规范。 9 10 ## 技术栈强制约束 11 12 - x86/x64 使用 NASM 或 GAS 汇编器 13 - ARM 使用 GNU Assembler(GAS) 14 - 使用各自平台的标准调用约定 15 - 与 C 语言互操作时遵循 ABI 规范 16 17 ## 命名规范 18 19 - 标签名:snake_case(`loop_start`、`error_handler`) 20 - 宏名:UPPER_SNAKE_CASE(`MAX_BUFFER_SIZE`、`SAVE_REGS`) 21 - 常量名:UPPER_SNAKE_CASE(`SYS_WRITE`、`STDOUT`) 22 - 段名:小写(`.text`、`.data`、`.bss`) 23 - 文件名:snake_case(`string_utils.asm`、`math_ops.s`) 24 - 命名语义化,禁止拼音、无意义缩写 25 26 ## 代码结构规范 27 28 - 段划分: 29 - `.data`:已初始化数据 30 - `.bss`:未初始化数据 31 - `.text`:代码段 32 - 程序入口标签:`_start`(独立程序)或 `main`(C 调用) 33 - 函数结构: 34 - 序言(Prologue):保存寄存器、分配栈帧 35 - 函数体 36 - 结语(Epilogue):恢复寄存器、释放栈帧、返回 37 38 ## 寄存器使用规范 39 40 - x86-64 System V ABI: 41 - 参数传递:`rdi`、`rsi`、`rdx`、`rcx`、`r8`、`r9` 42 - 返回值:`rax` 43 - 调用者保存:`rax`、`rcx`、`rdx`、`rsi`、`rdi`、`r8`-`r11` 44 - 被调用者保存:`rbx`、`rbp`、`r12`-`r15` 45 - ARM AAPCS: 46 - 参数传递:`r0`-`r3` 47 - 返回值:`r0` 48 - 被调用者保存:`r4`-`r11` 49 - 使用被调用者保存寄存器必须先保存后恢复 50 51 ## 注释规范 52 53 - 每个函数必须有中文注释说明功能、输入、输出 54 - 每条关键指令必须添加中文注释 55 - 寄存器用途变更必须注释说明 56 - 算法逻辑必须注释说明步骤 57 - TODO 注释格式:`; TODO(作者): 具体待办事项描述` 58 - 禁止无意义注释 59 60 ## 格式规范 61 62 - 标签顶格写 63 - 指令缩进 8 空格或 1 个 Tab 64 - 操作数对齐 65 - 注释对齐到固定列(第 40 列或更后) 66 - 单行不超过 100 字符 67 68 ## 代码质量强制要求 69 70 - 栈必须对齐(x86-64 要求 16 字节对齐) 71 - 函数调用前必须保存需要的寄存器 72 - 系统调用号必须正确 73 - 内存访问必须检查边界 74 - 禁止未初始化的内存读取 75 - 退出程序必须使用正确的系统调用 76 77 ## 安全规范 78 79 - 栈缓冲区必须检查溢出 80 - 输入验证必须在处理前完成 81 - 禁止执行栈上的代码(NX 位) 82 - 使用 ASLR 和 Stack Canary 保护 83 84 ## 优化规范 85 86 - 减少内存访问,优先使用寄存器 87 - 使用 `lea` 替代 `mov` + `add` 计算地址 88 - 循环展开减少分支预测失败 89 - 使用条件移动(`cmov`)替代分支 90 - 对齐数据访问(4/8/16 字节对齐) 91 - 使用 SIMD 指令加速向量操作 92 93 ## 调试规范 94 95 - 使用 GDB 调试 96 - 使用 `objdump` 反汇编 97 - 使用 `strace` 跟踪系统调用 98 - 使用 `ltrace` 跟踪库调用 99 100 ## 最佳实践 101 102 - 使用宏简化重复代码 103 - 使用条件汇编处理平台差异 104 - 与 C 语言混合编程时遵循 ABI 105 - 使用 `extern` 声明外部函数 106 - 使用调试信息(`-g`)便于调试
dkbnull/hello-skill/tree/main/languages/skills/assembly commit 5625db43f3
Frequently asked questions How do I install the Assembly skill? Run npx skillmds@latest add dkbnull/assembly in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Assembly skill do? Assembly It is listed under Coding & Dev Tools on SkillMD.
Is Assembly safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Assembly? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Assembly free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Assembly? dkbnull (@dkbnull) published this skill. Their other Agent Skills are listed on their SkillMD profile.