void interpreter( void ) { for(;;) (*(prim *)(intptr_t)*(cell *)(intptr_t)(*++lc))(); }So, which pairs of brackets correspond to casts, grouped expressions, and function invocations? What is the operator precedence between casts, dereferencing, and pre-increment? I really don't know.
Here is the PowerPC disassembly:
0x00002488: mflr r0
0x0000248c: bcl- 20,4*cr7+so,0x2490 interpreter+8
0x00002490: stmw r30,-8(r1)
0x00002494: mflr r31
0x00002498: stw r0,8(r1)
0x0000249c: stwu r1,-80(r1)
0x000024a0: addis r2,r31,0
0x000024a4: lwz r30,23748(r2)
0x000024a8: lwz r2,0(r30)
0x000024ac: addi r2,r2,8
0x000024b0: stw r2,0(r30)
0x000024b4: lwz r9,4(r2)
0x000024b8: lwz r0,4(r9)
0x000024bc: mr r12,r0
0x000024c0: mtctr r0
0x000024c4: bctrl
0x000024c8: b 0x24a8 interpreter+32
Now if I wanted to figure things out, I could spend 5 minutes going through every instruction and keep track of registers with a paper and pen, but at least its possible. Not so with the C code.


