▲ 266 ▼ thisIsGoingToBeASeriousDebate (programming.dev) submitted 2 years ago by TadoTheRustacean@programming.dev to c/programmer_humor@programming.dev 41 comments fedilink hide all child comments
[–] TadoTheRustacean@programming.dev [S] 1 point 2 years ago (1 child) What mistakes? permalink fedilink source parent hideshow 2 child comments replies: [–] Speiser0@feddit.de 6 points 2 years ago (1 child) Mostly the missing listing of clobbered registers. Other than that it's mostly just that you're doing useless things, like manually putting the stuff into the registers instead of letting the compiler do it, and the useless push and pop. And the loop is obviously not needed and would hurt performance if you do every write like that. asm!( "syscall", in("rax") 1, in("rdi") 1, in("rsi") text_ptr, in("rdx") text_size, ) ("so many" was inappropriate, sorry.) permalink fedilink source parent hideshow 2 child comments replies: [–] TadoTheRustacean@programming.dev [S] 1 point 2 years ago (1 child) I am hopeless at getting the text_ptr simpler than i64::from_str_radix(&format!("{:p}", my_string)[2..], 16).unwrap(); How can i get it the normal way? permalink fedilink source parent hideshow 2 child comments replies: [–] Speiser0@feddit.de 2 points 2 years ago Just use str::as_ptr(). Here's an example (disclaimer: I haven't used inline asm in rust before, expect issues): https://godbolt.org/z/sczYGe96f permalink fedilink source parent
[–] Speiser0@feddit.de 6 points 2 years ago (1 child) Mostly the missing listing of clobbered registers. Other than that it's mostly just that you're doing useless things, like manually putting the stuff into the registers instead of letting the compiler do it, and the useless push and pop. And the loop is obviously not needed and would hurt performance if you do every write like that. asm!( "syscall", in("rax") 1, in("rdi") 1, in("rsi") text_ptr, in("rdx") text_size, ) ("so many" was inappropriate, sorry.) permalink fedilink source parent hideshow 2 child comments replies: [–] TadoTheRustacean@programming.dev [S] 1 point 2 years ago (1 child) I am hopeless at getting the text_ptr simpler than i64::from_str_radix(&format!("{:p}", my_string)[2..], 16).unwrap(); How can i get it the normal way? permalink fedilink source parent hideshow 2 child comments replies: [–] Speiser0@feddit.de 2 points 2 years ago Just use str::as_ptr(). Here's an example (disclaimer: I haven't used inline asm in rust before, expect issues): https://godbolt.org/z/sczYGe96f permalink fedilink source parent
[–] TadoTheRustacean@programming.dev [S] 1 point 2 years ago (1 child) I am hopeless at getting the text_ptr simpler than i64::from_str_radix(&format!("{:p}", my_string)[2..], 16).unwrap(); How can i get it the normal way? permalink fedilink source parent hideshow 2 child comments replies: [–] Speiser0@feddit.de 2 points 2 years ago Just use str::as_ptr(). Here's an example (disclaimer: I haven't used inline asm in rust before, expect issues): https://godbolt.org/z/sczYGe96f permalink fedilink source parent
[–] Speiser0@feddit.de 2 points 2 years ago Just use str::as_ptr(). Here's an example (disclaimer: I haven't used inline asm in rust before, expect issues): https://godbolt.org/z/sczYGe96f permalink fedilink source parent