
Inline C/Assembler in Bash - eklitzke
https://github.com/eklitzke/c.sh
======
unsignedqword
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....](http://lists.gnu.org/archive/html/bug-
bash/2001-02/msg00054.html)

~~~
foxhill
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.

~~~
gcr
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.

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

~~~
unsignedqword
Godel, Escher, Bash?

~~~
teddyh
[https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach](https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach)

~~~
turbohedgehog
Sadly, you missed the pun

------
FatalBaboon
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

)

------
radiospiel
I once built a package to allow redistribution of C/Flex/Go-scripts with just-
in-time compilation
([https://github.com/radiospiel/jit](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 :)

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

------
susanthesquark
this is cool do more

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

Uh, no? :)

