2 个版本
0.1.1 | 2022年1月4日 |
---|---|
0.1.0 | 2021年2月11日 |
#155 in FFI
205KB
5K SLoC
cly
cly 是一个使用领域特定语言计算 C 类型布局的程序。
示例
~$ cat input
const C = sizeof(char) + sizeof(long)
A = @pragma_pack(2) struct {
c char,
@align(4) i int:3,
j int:5,
k [C]short,
}
~$ cly --target x86_64-unknown-linux-gnu input
const C = {9}sizeof(char) + sizeof(long)
A = { size: 176, alignment: 16 }@pragma_pack(2) struct {
{ offset: 0, size: 8 }c { size: 8, alignment: 8 }char,
{ offset: 16, size: 3 }@align(4) i { size: 32, alignment: 32 }int:3,
{ offset: 19, size: 5 }j { size: 32, alignment: 32 }int:5,
{ offset: 32, size: 144 }k { size: 144, alignment: 16 }[{9}C]{ size: 16, alignment: 16 }short,
}
~$ cly --target i686-pc-windows-msvc input
const C = {5}sizeof(char) + sizeof(long)
A = { size: 144, field_alignment: 32, pointer_alignment: 16 }@pragma_pack(2) struct {
{ offset: 0, size: 8 }c { size: 8, alignment: 8 }char,
{ offset: 32, size: 3 }@align(4) i { size: 32, alignment: 32 }int:3,
{ offset: 35, size: 5 }j { size: 32, alignment: 32 }int:5,
{ offset: 64, size: 80 }k { size: 80, alignment: 16 }[{5}C]{ size: 16, alignment: 16 }short,
}
有关程序输入和输出的完整说明,请参阅 examples.md。
安装
您可以使用 cargo 安装 cly。
~$ cargo install cly
语法
领域特定语言的完整语法在 grammar.md 中描述。
许可
cly 在 GPLv3 或更高版本下授权。
依赖项
~1MB