this post was submitted on 31 Oct 2023
0 points (NaN% liked)

Programmer Humor

19551 readers
583 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 
top 11 comments
sorted by: hot top controversial new old
[–] Speiser0@feddit.de 0 points 1 year ago* (last edited 1 year ago) (1 children)

Definitely left. Right one won't be optimized. (And there are ~~so many~~ some mistakes in your inline asm...)

[–] TadoTheRustacean@programming.dev 0 points 1 year ago (1 children)
[–] Speiser0@feddit.de 0 points 1 year ago (1 children)

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.)

[–] TadoTheRustacean@programming.dev 0 points 1 year ago (1 children)

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?

[–] Speiser0@feddit.de 0 points 1 year 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

[–] 30p87@feddit.de 0 points 1 year ago (1 children)

Personally,

echo Hello World!
[–] pranaless@beehaw.org 0 points 1 year ago (1 children)
use std::process::Command;

fn main() {
    Command::new("sh")
        .arg("-c")
        .arg("echo Hello World!")
        .spawn()
        .unwrap();
}

Like this?

[–] 30p87@feddit.de 0 points 1 year ago (1 children)

No, more like

use std::process::Command; fn main() { Command::new("sh").arg("-c").arg("echo Hello World!").spawn().unwrap(); }

.
Just a little bit shorter, as it seems /s

[–] funkajunk@lemm.ee 0 points 1 year ago (1 children)
[–] 30p87@feddit.de 0 points 1 year ago

I did too. Multiple times in fact, I had to look at the other Rust code!

[–] dauerstaender@feddit.de 0 points 1 year ago

Unsafe block detected. Extermination initiated. There is no hiding from memory safety!