in reply to code that runs at module loading
On your main question, since it needs to be initialised somewhere along the line anyway, I don't think that where the code is really matters — unless of course, other modules might be calling your module (and hence needing that data initialised already) from their own BEGIN { } section, in which case you have to place the initialisation in your own BEGIN too…
Tiny thing that you may well already be using (actually looking at your words again, maybe not), but for those autogeneratable opcodes, you could do something like this:
my %opcode_map = ( a => [0], (map +( "LD$_" => [1, $_], "TST$_" => [2, $_] ), 1 .. 6), b => [1] );
Ignore the a and b entries, they're just there for context — you can use map to replace 1 .. 6 with the computable opcode entries (note use of +( ) to prevent interpretation of the map as a function-style call).
Sounds like your LDi notation might be a bit clearer though :-)
|
|---|