Yes, more or less.
Every operation must be written, that the type is obvious for the compiler. And you have one array, the heap with some special index rules. For example:
(r[((ins >> 9) & 0x7C)>>2]|0
The >>2 and |0 is necessary.
No, it doesn't. Where in IodineGBA do you see any hand-written asm.js code?
Here's are some quotes from the author of that very library:
"asm.js requires a style of coding only compilers can output. A person writing actual asm.js code by hand would need to be insane as asm.js code required style of coding is horribly disorganized"[1]
"Unfortunately asm.js requires one giant array to put things on. No one in their right mind codes like that by hand."[2]
Who?