if it’s a true bic. knockoffs might not work very well.
[Il/Elle] C’est comme vous voulez, peu me chaud.
Adepte du je-m’en-foutisme.
#nobridge #nobot
if it’s a true bic. knockoffs might not work very well.
Ok! Thanks for the clarification !
according to godbolt: https://rust.godbolt.org/z/hP5Y3qMPW
use rand::random;
pub fn main1() {
let mut var : u128;
loop {
var = random();
}
}
pub fn main2() {
loop {
let var : u128 = random();
}
}
compiles to:
example::main1::h45edf333d7832d08:
.Lfunc_begin8:
sub rsp, 24
.LBB8_1:
.Ltmp80:
mov rax, qword ptr [rip + rand::random::he3c23ceb967a3e28@GOTPCREL]
call rax
mov qword ptr [rsp + 8], rdx
mov qword ptr [rsp], rax
jmp .LBB8_1
.Ltmp81:
.Lfunc_end8:
example::main2::h1a899b25b96d66db:
.Lfunc_begin9:
sub rsp, 24
.LBB9_1:
.Ltmp82:
mov rax, qword ptr [rip + rand::random::he3c23ceb967a3e28@GOTPCREL]
call rax
mov qword ptr [rsp + 8], rdx
mov qword ptr [rsp], rax
jmp .LBB9_1
.Ltmp83:
.Lfunc_end9:
jmp .LBB9_1
So yeah, exactly the same thing.
I would say that they are equivalent. If I’m not mistaken, let
statements only reserves space on the stack, and this only increments the stack register.
And on the latter snippet, the compiler would certainly not bother to modify the stack pointer as the type doesn’t change.
this is actually a joke compression algorithm that compresses your data by one byte by appending it to the filename. (and you can execute it as many time as you want)
Too bad I can’t remember the name.