
Ruby inline assembler - lawl
https://github.com/seattlerb/wilson
======
nathell
Been doing something similar for Clojure:

<https://github.com/nathell/lithium>

<http://blog.danieljanus.pl/blog/2012/05/14/lithium/>

------
api
This is like putting NOS on a school bus.

~~~
JonnieCache
That's ironic because it was written on a bus.

See the following rubycon talk, "worst idea ever!" which covers this and
several other even more horrendously ill-advised gems:

[http://www.confreaks.com/videos/198-rubyconf2009-worst-
ideas...](http://www.confreaks.com/videos/198-rubyconf2009-worst-ideas-ever)

It includes a way to rescue from segfaults, which goes quite nicely with the
inline assembly :)

If you are a rubyist you should watch this. It's hilarious. If you think this
wilson gem is crazy wait until you see the other shit they get up to.

------
kgo
I wrote a similar thing a while ago for python:

<http://www.grant-olson.net/python/pyasm>

It even mapped all the exported symbols from the python API so you could do
stuff like:

    
    
        CALL PySys_WriteStdout "Hello, World!\n\0"
    

About every three months I get an email from someone where I have to explain
it was a proof-of-concept and never intended for production use.

------
jbarnette
My favorite thing about this library is that it parses the NASM manual:
[https://github.com/seattlerb/wilson/blob/master/lib/wilson.r...](https://github.com/seattlerb/wilson/blob/master/lib/wilson.rb#L75-L77)

------
donavanm
You guys do understand this is a joke, right? It's a (cool) example of stupid
things that you can get up to in ruby. See the ruby con talk for other
examples. Enterprise Ruby is my personal favorite.

~~~
tzumby
The rdoc for enterprise ruby is hilarious
(<https://github.com/tenderlove/enterprise#synopsis>)

"Let’s convert that crappy ruby code to XML"

~~~
jrabone
I don't think the community should be laughing too loudly about enterprise
XML, given the security difficulties Rails has been having with its
serialisation formats. How much did people lose in that Bitcoin exchange hack?

~~~
donavanm
Approximately 1 hojillion[1] dollars? But I think we both know that's not the
real question here. Not to dissect the frog too much, but the joke is that XML
== Enterprise === Grown Up. Therefore more XML is mo betta.

[1] www.penny-arcade.com/comic/2001/6/22

------
drv
Pretty neat hack.

However, it's a bit odd that it parses the intended-for-humans NASM
documentation instead of the machine-readable insns.dat that NASM actually
uses to generate opcodes: <http://repo.or.cz/w/nasm.git/blob/HEAD:/insns.dat>

------
helper
Cool. Looks similar to ronin: <https://github.com/ronin-ruby/ronin-asm>.

I'm curious if there are equivalent tools for doing this sort of thing for
other cpu families. Specifically, what do people use for MIPS and ARM
architectures?

~~~
sokrates
What's different (from a quick look at ronin) is that this actually runs the
assembled code _within the currently running ruby interpreter_. That's a lot
more than a DSL for creating assembly.

------
artellectual
Hats off to you! This is simply amazing!

~~~
lawl
I didn't write it. I just found it. Maybe should have mentioned that. But I
thought it was clear. Sorry.

