Const Writer
####Documentation
Compile time verified byte writer for slice and vector.
Install
[]
= "0.1.0"
Usage example
use ConstWrite;
use ConstWrite;
use ;
Assembly
It generates super optimal assembly with pretty rust syntax
Rust:
// we return modified reference so compiler won't optimise away reference manipulation
Assembly:
Assembly consists only one comparison
write:
subq $88, %rsp
movq %rsi, %rdx
cmpq $30, %rsi
jbe .LBB2_1 # panic
movq %rdi, %rax
movb $1, (%rdi)
movw $515, 1(%rdi) # imm = 0x203
movl $67438087, 3(%rdi) # imm = 0x4050607
movabsq $579005069656919567, %rcx # imm = 0x8090A0B0C0D0E0F
movq %rcx, 7(%rdi)
movabsq $1157726452361532951, %rcx # imm = 0x1011121314151617
movq %rcx, 23(%rdi)
movabsq $1736447835066146335, %rcx # imm = 0x18191A1B1C1D1E1F
movq %rcx, 15(%rdi)
addq $31, %rax
addq $-31, %rdx
addq $88, %rsp
retq
And sometimes rustc can generate really pretty assembly :heart_eyes:
Rust:
Assembly:
write_struct:
movq %rdi, %rax
movl $34, (%rsi)
movabsq $1407392063619074, %rcx # imm = 0x5000400030002 <- OMG
movq %rcx, 4(%rsi)
leaq 12(%rsi), %rdx
retq
Features
- Support
no_std