Hacker News new | past | comments | ask | show | jobs | submit login
Inline C/Assembler in Bash (github.com/eklitzke)
106 points by eklitzke on June 17, 2016 | hide | past | favorite | 16 comments



The insane things people do in Bash sometimes...although I don't think anything can top the x86 Assembler that was written entirely in Bash:

http://lists.gnu.org/archive/html/bug-bash/2001-02/msg00054....


to call this an assembler is to not give it credit where it's due - this is not an assembler, it's much more than that.

it's a set of functions for bash that when sourced make the assembly a valid bash script which then runs and assembles itself. this is genius.


It's using the shell's own tokenizer to parse asm! That's glorious!

I don't really understand why the code works since I can't read x86 asm yet, but I think how it works is reasonably clear. Each instruction has its own bash function that writes its opcodes to the output file and the asm script to be assembled is (I think) sourced directly into the running shell session.


Neat!


why ....


Click the link, and you're just a few spacebar presses away from answering that question for yourself (it's a few paragraphs down).


> It just continuously cracks me up.

My favourite of the listed reasons.


The next step is to write a new Bash in that C, and write a C compiled inside that Bash and so on. (See Godel, Escher, Bach)


Godel, Escher, Bash?



Sadly, you missed the pun


Could he not remove the temp files and use process substitution instead? (looks cleaner in my opinion)

i.e:

cc -fPIC -o $sofile -shared <(cat <<'EOF'

...

EOF

)


I once built a package to allow redistribution of C/Flex/Go-scripts with just-in-time compilation (https://github.com/radiospiel/jit) but mine does not allow to mix the to-be-compiled language into the bash script itself; so count me impressed :)


I used to write CGI in shell scripts. OK, it was the mid 1990s.


this is cool do more


> Has you ever wanted to combine the speed and safety of Bash with the raw, unbridled power of C?

Uh, no? :)




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: