First, a quick introduction: I'm Eric. At YAPC, I asked Dan what I can do to help out Parrot and this is what he pointed me at.
I've compiled a list of all of the opcodes (as listed in the *.ops files) that are not documented in docs/pdds/pdd06_pasm.pod. In addition, because of some possible weirdness I noticed, I've also compiled a list of the opcodes which are in pdd06 but are not implemented in any of the *.ops. Without further ado: # parrot/core.ops (53/133 documented) abs and band bnot bor bounds bxor call callcc callco callnative capturecc chopn cleari clearn clearp clears close cmod collectoff collecton debug depth end enternative eq err find_type ge gt index intdepth intrestore intsave le loadext loadlib lt mod ne neg noop not or ord pack popi popn popp pops print profile pushi pushn pushp pushs readline restore restoreall rotate_up save saveall savec set_addr set_keyed set_keyed_integer shl shr sleep stringinfo substr sweepoff sweepon time trace unless warningsoff warningson xor yield # parrot/debug.ops (0/4 documented) debug_break debug_init debug_load debug_print # parrot/io.ops (3/8 documented) close fdopen print printerr puts # parrot/math.ops (0/3 documented) fact gcd lcm # parrot/obscure.ops (0/4 documented) covers exsec hav vers # parrot/rx.ops (0/32 documented) rx_advance rx_allocinfo rx_backwards rx_clearinfo rx_cloneinfo rx_compile rx_dot rx_endgroup rx_fail rx_forwards rx_freeinfo rx_incrindex rx_info_getgroup rx_info_getindex rx_info_getstartindex rx_info_successful rx_is_d rx_is_s rx_is_w rx_literal rx_makebmp rx_oneof rx_oneof_bmp rx_popindex rx_pushindex rx_pushmark rx_setprops rx_startgroup rx_succeed rx_zwa_atbeginning rx_zwa_atend rx_zwa_boundary Here is a listing of the unimplemented opcodes which are defined in pdd06. The reason I include them is that there are some opcodes in core.ops which are closely named to the ones listed below. For example 'pushn' (from core.ops) is similar to 'push_n' (from pdd06_pasm). atan2 call_method callout can chop_key clear_eh clone_key fetch_global fetch_lex find_attribute find_global_slot find_global_table find_lex find_method find_string_lib get_op_count get_string_name inc_key isa ke_type ke_value key_size load_bytecode load_opcode_lib load_string_lib lock log make_object new_fh new_key newpad pausecollect pop_i pop_n pop_p pop_s push_i push_i_c push_n push_n_c push_p push_p_c push_s push_s_c pushunlock readw restore_i restore_n restore_p restore_s resumecollect rethrow save_i save_n save_p save_s set_attribute set_eh set_key set_warp size_key status tell throw toss_key tostring unlock unwarp wait warp writew Finally, for my data collection techniques, I used a script which scans the *.ops files for: $op =~ /^(inline|)\s*op\s+([\w\d_]+)\s*\(/; which should signify the beginning of the C code for the opcode. Hopefully. I then compare that to a list of the opcodes pulled from pdd06_pasm (done by scanning the =item lines) to see what is where. If I've made any mistakes or am just deeply confused, please let me know and I'll make adjustments. Eric