hello there (and especially the JIT team), is anybody working on JIT-enabling the Win32 platform?
I've done some work on this (using MASM as an assembler and VisualC's DUMPBIN as a disassembler instead of the GNU as and objdump). I have a somewhat-working Parrot/Jit/MSWin32-x86.pm that generates a somewhat-correct jit_struct.h. there's still nothing implemented in .jit files (only Parrot_noop and Parrot_end in core.jit right now), so every opcode is just a Parrot::Jit->call output. I tested examples/assembly/fact.pasm and with the -j option it goes as far as saying: 'fact of 0'. it missed the constant 'is: ', because if (s && string_length(s)) { in core_ops.c was not true, and then it blows up on the pasm line: set I0,I1 which core_ops.c implements as: interpreter->string_reg.registers[cur_opcode[1]] = string_from_int(interpreter, cur_opcode[2]); the problem is that when it comes to this instruction, cur_opcode[1] contains a totally unrelated value (-41485056, or 0xfd86fd00), but cur_opcode[2] contains 0 as it should. I have no idea why my opcodes are broken. the jitted code actually looks like this: 55 push ebp 8B E5 mov esp,ebp 68 30 3C 2F 00 push 2F3C30h 68 C0 EA 2F 00 push 2FEAC0h E8 7F 3F 10 00 call Parrot_set_i_ic (00402da9) 83 C4 08 add esp,8 68 30 3C 2F 00 push 2F3C30h 68 CC EA 2F 00 push 2FEACCh E8 7D 34 10 00 call Parrot_print_sc (004022b9) 83 C4 08 add esp,8 68 30 3C 2F 00 push 2F3C30h 68 D4 EA 2F 00 push 2FEAD4h E8 8E 33 10 00 call Parrot_print_i (004021dc) 83 C4 08 add esp,8 68 30 3C 2F 00 push 2F3C30h 68 DC EA 2F 00 push 2FEADCh E8 59 34 10 00 call Parrot_print_sc (004022b9) 83 C4 08 add esp,8 68 30 3C 2F 00 push 2F3C30h 68 E4 EA 2F 00 push 2FEAE4h E8 1D 3F 10 00 call Parrot_set_i_i (00402d8f) 83 C4 08 add esp,8 which seems fine to me. so, I'm lost :-( cheers, Aldo __END__ $_=q,just perl,,s, , another ,,s,$, hacker,,print;