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
I just fucking threw up
I did too. Multiple times in fact, I had to look at the other Rust code!
Isn't echo a shell builtin?
Yes and no. While coreutils does provide an echo binary, shells also have a built-in for optimisation purposes.
At first I had the code calling the binary directly, but then changed it to spawning a shell (and so using the builtin). It's very cursed either way.
Oh you fancy PC people and your fancy syscall instruction.
I still don't know why I could remember jsr $ab1e. I didn't even write that much assembly.
That looks like a 6502 instruction. What system is it from?
Or, you could just go the whole hog. Create your own simple CPU emulator, design a basic 8bitesque CPU, give it an output port that is the console, and load up some basic ASM to cycle through Hello World to the console port.
System.out.println
Console.WriteLine("Hello World!");
echo "Hello world"
This is different from the other two echos here, this is Nim not Bash.
Definitely left. Right one won't be optimized. (And there are so many some mistakes in your inline asm...)
What mistakes?
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.
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?
Why do you call write() for every char? You can always just pass a pointer with its length.
I am not skilled enough to do that ngl
edit: reddit image linking is broken?
Well, the GNU version does more and is more documented. The Plan9 code is frankly shitC, even for 1980z
But this monstrosity is something else
Plan 9 does the job. GNU is better for the end user. But if I had to maintain that stuff I would definitely want to maintain the Plan 9 code and not the GNU code.
Of course, not always is shorter better.
reddit image linking is broken?
Well you didn't link to a reddit image, you linked to Google image search result page which is not an image.
I did that because the image didn't show in reddt.
Looks like you need to insert the raw image link, not Reddit's media wrapper link.
Oh, so it's only my browser setup that doesn't show it.
dc <<<'10435358689859 70511561 11297399 23 5 3 2 ******P'
note: lemmy's "smart quotes" vs its input sanitization required me to code-format the second half of that line (and not the first half) to make it copy+paste runnable.
echo Hello World
I thought the whole point of rust macros was to abstract away the scary asm at zero cost!
Unsafe block detected. Extermination initiated. There is no hiding from memory safety!
Personally,
Like this?
No, more like
.
Just a little bit shorter, as it seems /s
I just fucking threw up
I did too. Multiple times in fact, I had to look at the other Rust code!
Isn't echo a shell builtin?
Yes and no. While coreutils does provide an
echo
binary, shells also have a built-in for optimisation purposes.At first I had the code calling the binary directly, but then changed it to spawning a shell (and so using the builtin). It's very cursed either way.
Oh you fancy PC people and your fancy
syscall
instruction.I still don't know why I could remember
jsr $ab1e
. I didn't even write that much assembly.That looks like a 6502 instruction. What system is it from?
Or, you could just go the whole hog. Create your own simple CPU emulator, design a basic 8bitesque CPU, give it an output port that is the console, and load up some basic ASM to cycle through Hello World to the console port.
System.out.println
Console.WriteLine("Hello World!");
echo "Hello world"
This is different from the other two
echo
s here, this is Nim not Bash.Definitely left. Right one won't be optimized. (And there are
so manysome mistakes in your inline asm...)What mistakes?
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.
("so many" was inappropriate, sorry.)
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?
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
https://www.gnu.org/fun/jokes/helloworld.html
console.log("Hello World!")
Ec Emm this side is the best one ....
Why do you call write() for every char? You can always just pass a pointer with its length.
I am not skilled enough to do that ngl
edit: reddit image linking is broken?
Well, the GNU version does more and is more documented. The Plan9 code is frankly shitC, even for 1980z
But this monstrosity is something else
Plan 9 does the job. GNU is better for the end user. But if I had to maintain that stuff I would definitely want to maintain the Plan 9 code and not the GNU code.
Of course, not always is shorter better.
Well you didn't link to a reddit image, you linked to Google image search result page which is not an image.
I did that because the image didn't show in reddt.
Looks like you need to insert the raw image link, not Reddit's media wrapper link.
Oh, so it's only my browser setup that doesn't show it.
? "Hello World"
dc <<<
'10435358689859 70511561 11297399 23 5 3 2 ******P'
note: lemmy's "smart quotes" vs its input sanitization required me to code-format the second half of that line (and not the first half) to make it copy+paste runnable.
I thought the whole point of rust macros was to abstract away the scary asm at zero cost!
Camel case?
this_is_not_going_to_be_a_serious_debate
Hello, world!
base64 -d <<<SGVsbG8gV29ybGQhCg==