• pranaless
      link
      fedilink
      317 months ago
      use std::process::Command;
      
      fn main() {
          Command::new("sh")
              .arg("-c")
              .arg("echo Hello World!")
              .spawn()
              .unwrap();
      }
      

      Like this?

      • @[email protected]
        link
        fedilink
        107 months ago

        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

          • pranaless
            link
            fedilink
            17 months ago

            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.

  • umbraroze
    link
    fedilink
    207 months ago

    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.

  • r00ty
    link
    fedilink
    197 months ago

    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.

  • @starman
    link
    English
    177 months ago

    Console.WriteLine("Hello World!");

  • DumbAceDragon
    link
    fedilink
    English
    157 months ago

    echo "Hello world"

    This is different from the other two echos here, this is Nim not Bash.

  • @[email protected]
    link
    fedilink
    14
    edit-2
    7 months ago

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

      • @[email protected]
        link
        fedilink
        67 months ago

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

        • @TadoTheRustaceanOP
          link
          17 months ago

          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?

  • @[email protected]
    link
    fedilink
    5
    edit-2
    7 months ago

    Ec Emm this side is the best one …

    ++++++++[< +++++++++>-]<. ++++[<+++++++>-]<+. +++++++… +++.

    ++++++[<+++++++>-]<++. ------------. ++++++[<+++++++++>-]<+. <. +++. ------. --------.

    ++++[<++++++++>-]<+.

    • @[email protected]
      link
      fedilink
      47 months ago

      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

      • @[email protected]
        link
        fedilink
        17 months ago

        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.

    • @rhpp
      link
      27 months ago

      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.

      • @rhpp
        link
        17 months ago

        deleted by creator

        • @rhpp
          link
          37 months ago

          Looks like you need to insert the raw image link, not Reddit’s media wrapper link.

          plan 9 cat vs GNU longcat meme