1 BPF ABI 推荐约定和指南 v1.0¶
这是信息文档的 1.0 版本,其中包含生成可移植 BPF 程序二进制文件的推荐约定和指南。
1.1 寄存器和调用约定¶
BPF 拥有 10 个通用寄存器和一个只读的帧指针寄存器,所有这些寄存器都是 64 位宽的。
BPF 调用约定定义如下:
R0:函数调用的返回值,以及 BPF 程序的退出值
R1 - R5:函数调用的参数
R6 - R9:被调用者保存的寄存器,函数调用将保留这些寄存器
R10:用于访问栈的只读帧指针
R0 - R5 是临时寄存器,BPF 程序在跨调用时如有必要需要溢出/填充它们。
BPF 程序在执行 EXIT
之前需要将返回值存储到寄存器 R0 中。