u7opcodes.data
来自「一个制作3d游戏的源程序」· DATA 代码 · 共 971 行 · 第 1/2 页
DATA
971 行
<name> EXIT2 </> <asm_nmo> `exit2` </> <asm_comment> `` </> <ucs_nmo> `exit2()` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!--Yet Another Return. Exult implements this identically to the RET opcode (0x25). --> </> <0x2D> <name> SETR </> <asm_nmo> `setr` </> <asm_comment> `` </> <ucs_nmo> `rr = %p1` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 1 </> <num_push> 0 </> <call_effect> 0 </> <!--Pops the top most element off the stack and stores it in the return register. --> </> <0x2E> <name> ENUM </> <asm_nmo> `enum` </> <asm_comment> `` </> <ucs_nmo> `enum()` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!--Part one of the two opcode for...each opcode loop. Details under opcode 0x02. --> </> <0x2F> <name> ADDSV </> <asm_nmo> `addsv\t[%1]` </> <asm_comment> `\t\t\t;` </> <ucs_nmo> `UcMessage(var%1)` </> <num_bytes> 2 </> <param_types> {varoffset} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!--Appends the local variable pointed to by {varoffset} onto the end of thestring register. --> </> <0x30> <name> IN </> <asm_nmo> `in` </> <asm_comment> `\t\t\t\t;` </> <ucs_nmo> `in(%p2, %p1)` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 2 </> <num_push> 1 </> <call_effect> 0 </> <!--Tests if a value is in an array. Pops two elements from the stack (pop v1,then pop v2) test if any of the elements inside the array v1 are equal tothe element v2 (v2 cannot be an array), and pushes the resulting truth valueon the stack. --> </> <0x31> <name> SMTH </> <asm_nmo> `smth\t%1 %2` </> <asm_comment> `\t\t\t;` </> <ucs_nmo> `smth(%p2, %p1)` </> <num_bytes> 4 </> <param_types> {short,offset} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!--Does something related to conversations. Only occurs (2x) in the usecodefunction handling the 'audition' in Britain. Current implementationproduces same result as original, although we're unsure of the exactfunction of this opcode.(Doesn't push or pop anything) --> </> <0x32> <name> RTS </> <asm_nmo> `rts` </> <asm_comment> `` </> <ucs_nmo> `return rr` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <return/> <!--(ucdump calls this "retr") Same as RET except pushes the return registeronto the stack before returning.EXULT NOTE: unlike ret, it doesn't show any remaining text in the stringbuffer. Bug? --> </> <0x33> <name> SAY </> <asm_nmo> `say` </> <asm_comment> `` </> <ucs_nmo> `UcSay` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!--Displays the string register to the screen (as appropriate talk, sign, scroll,book, whatever). Has the side effect of clearing the string register. --> </> <0x38> <name> CALLIS </> <asm_nmo> `callis\t%i1@%b2` </> <asm_comment> `\t\t; %1` </> <ucs_nmo> `UI_%i1(%p,)` </> <num_bytes> 3 </> <param_types> {short,byte} </> <num_pop> 0xFE </> <num_push> 1 </> <call_effect> 0 </> <!--Calls the intrinsic {short} with {byte} number of parameters popped from thestack passed to it. Eg: if you were calling intrinsic 23 (short) with 3 (byte)parameters, and the stack looked like this: {4, 3, 2, 1} (4 was the firstelement pushed upon the stack), the intrinsic function call in a c-like formwould look like: intrinsic23( 1, 2, 3);The intrinsic called will return a value on the stack.The intrinsic called also has the same "event" flag as the caller function. --> </> <0x39> <name> CALLI </> <asm_nmo> `calli\t%i1@%b2` </> <asm_comment> `\t\t; %1, %d2` </> <ucs_nmo> `UI_%i1(%p,)` </> <num_bytes> 3 </> <param_types> {short,byte} </> <num_pop> 0xFE </> <num_push> 0 </> <call_effect> 0 </> <!--Same as opcode CALLIS (0x38), except no return value. --> </> <0x3E> <name> PUSHITM </> <asm_nmo> `push\titemref` </> <asm_comment> `\t\t\t;` </> <ucs_nmo> `item` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 0 </> <num_push> 1 </> <call_effect> 0 </> <!--(ucdump & exult call this "push itemref") Pushes the identifier of the item(for which the usecode event handler is called) onto the stack. --> </> <0x3F> <name> ABRT </> <asm_nmo> `abrt` </> <asm_comment> `` </> <ucs_nmo> `abrt()` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!--(ucdump calles this "exit") (exult says this is "really like a throw") Showsany text in the string register, and exits the function immediatly.ABRT also exits all calling functions, effectively stopping the usecode interpreter. --> </> <0x40> <name> END_CONV </> <asm_nmo> `end_conv` </> <asm_comment> `` </> <ucs_nmo> `end_conv()` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!--Always seems to be called right before a "goodbye", so guessingit means 'end conversation'. --> </> <0x42> <name> PUSHF </> <asm_nmo> `pushf\tflag:[%1]` </> <asm_comment> `\t\t\t;` </> <ucs_nmo> `gflags[%1]` </> <num_bytes> 2 </> <param_types> {flag} </> <num_pop> 0 </> <num_push> 1 </> <call_effect> 0 </> <!-- TODO: document --> </> <0x43> <name> POPF </> <asm_nmo> `popf\tflag:[%1]` </> <asm_comment> `\t\t;` </> <ucs_nmo> `gflags[%1] = %p1` </> <num_bytes> 2 </> <param_types> {flag} </> <num_pop> 1 </> <num_push> 0 </> <call_effect> 0 </> <!-- TODO: document --> </> <0x44> <name> PUSHB </> <asm_nmo> `pushb\t%b1H` </> <asm_comment> `\t\t\t; %d1` </> <ucs_nmo> `0x%b1` </> <num_bytes> 1 </> <param_types> {byte} </> <num_pop> 0 </> <num_push> 1 </> <call_effect> 0 </> <!--(ucdump calls this "pushbi")TODO: document --> </> <0x46> <name> APUT </> <asm_nmo> `aput\t[%1]` </> <asm_comment> `\t\t\t;` </> <ucs_nmo> `var%1[%p1] = %p2` </> <num_bytes> 2 </> <param_types> {varoffset} </> <num_pop> 2 </> <num_push> 0 </> <call_effect> 0 </> <!-- TODO: document --> </> <0x47> <name> CALLE </> <asm_nmo> `calle\t%1H` </> <asm_comment> `\t\t\t;` </> <ucs_nmo> `calle()` </> <num_bytes> 2 </> <param_types> {short} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </>A <!--# TODO: Needs more documenting, need to find the pop/push numbers.{short} == usecode function number to callTODO: document --> </> <0x48> <name> PUSHEID </> <asm_nmo> `push\teventid` </> <asm_comment> `` </> <ucs_nmo> `event` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 0 </> <num_push> 1 </> <call_effect> 0 </> <!--(ucdump & exult calles this "push eventid")TODO: document --> </> <0x4A> <name> ARRA </> <asm_nmo> `arra` </> <asm_comment> `\t\t\t\t;` </> <ucs_nmo> `%p2 & %p1` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 2 </> <num_push> 1 </> <call_effect> 0 </> <paren/> <!--Appends second param. to the list in first param. --> </> <0x4B> <name> POPEID </> <asm_nmo> `pop\teventid` </> <asm_comment> `` </> <ucs_nmo> `event = %p1` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 1 </> <num_push> 0 </> <call_effect> 0 </> <!--(ucdump & exult calls this "pop eventid")TODO: document --> </> <0x4C> <name> DBGLINE </> <asm_nmo> `dbgline %1` </> <asm_comment> `` </> <ucs_nmo> `// Line: %1` </> <num_bytes> 2 </> <param_types> {short} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!--Debug opcode -- currently only found in the .es version of SI --> </> <0x4D> <name> DBGFUNC </> <asm_nmo> `dbgfunc %1 %2 ` </> <asm_comment> `; %t1` </> <ucs_nmo> `// Function: %t1 %2` </> <num_bytes> 4 </> <param_types> {short,dataoffset} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!--Debug opcode -- currently only found in the .es version of SI --> </> <0x82> <name> LOOP </> <asm_nmo> `next32\t[%1], [%2], [%3], [%4], %5` </> <asm_comment> `\t\t\t;` </> <ucs_nmo> `for (var%3 in var%4 with var%1 to var%2 atend label%f*_%n5)` </> <num_bytes> 12 </> <param_types> {short,short,short,varoffset,offset32} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!-- The 32bit version of 0x02 - LOOP --> </> <0x84> <name> CONV32 </> <asm_nmo> `ask32\t%1` </> <asm_comment> `` </> <ucs_nmo> `UcAsk32` </> <num_bytes> 4 </> <param_types> {offset32} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!-- The 32bit version of 0x04 - ASK --> </> <0x85> <name> JNE32 </> <asm_nmo> `jne32\t%1` </> <asm_comment> `` </> <ucs_nmo> `if(!%p1) goto label%f*_%n1` </> <num_bytes> 4 </> <param_types> {offset32} </> <num_pop> 1 </> <num_push> 0 </> <call_effect> 0 </> <!-- The 32bit version of 0x05 - JNE --> </> <0x86> <name> JMP32 </> <asm_nmo> `jmp32\t%1` </> <asm_comment> `` </> <ucs_nmo> `goto label%f*_%n1` </> <num_bytes> 4 </> <param_types> {offset32} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!-- The 32bit version of 0x06 - JMP --> </> <0x87> <name> CMPS32 </> <asm_nmo> `cmps32\t%1H, %n2` </> <asm_comment> `\t\t;` </> <ucs_nmo> `cmps32(%p,)` </> <num_bytes> 6 </> <param_types> {short,offset32} </> <num_pop> 0xFF </> <num_push> 0 </> <call_effect> 0 </> <!-- The 32bit version of 0x07 - CMPS --> </> <0x9C> <name> ADDSI32 </> <asm_nmo> `addsi32\t%n1H` </> <asm_comment> `\t\t\t; %tc1` </> <ucs_nmo> `UcMessage(\"%t1\")` </> <num_bytes> 4 </> <param_types> {dataoffset32} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!-- The 32bit version of 0x1C - ADDSI --> </> <0x9D> <name> PUSHS32 </> <asm_nmo> `pushs32\t%n1H` </> <asm_comment> `\t\t\t; %tc1` </> <ucs_nmo> `\"%t1\"` </> <num_bytes> 4 </> <param_types> {dataoffset32} </> <num_pop> 0 </> <num_push> 1 </> <call_effect> 0 </> <!-- The 32bit version of 0x1D - PUSHS --> </> <0x9F> <name> PUSHI32 </> <asm_nmo> `pushi32\t%n1H` </> <asm_comment> `\t\t\t; %d1` </> <ucs_nmo> `0x%1` </> <num_bytes> 4 </> <param_types> {long} </> <num_pop> 0 </> <num_push> 1 </> <call_effect> 0 </> <!-- The 32bit version of 0x1F - PUSHI --> </> <0xAE> <name> ENUM32 </> <asm_nmo> `enum32` </> <asm_comment> `` </> <ucs_nmo> `enum32()` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <!-- The 32bit version of 0x2E - ENUM --> </> <0xB2> <name> RTS32 </> <asm_nmo> `rts32` </> <asm_comment> `` </> <ucs_nmo> `return rr` </> <num_bytes> 0 </> <param_types> {} </> <num_pop> 0 </> <num_push> 0 </> <call_effect> 0 </> <return/> <!-- The 32bit version of 0x32 - RTS --> </> <0x101> <name> LABEL </> <asm_nmo> `(invalid)` </> <asm_comment> `` </> <ucs_nmo> `label%f*_%1` </> <num_bytes> 2 </> <param_types> {offset} </> <num_pop> 1 </> <num_push> 0 </> <call_effect> 0 </> <indent_tmpdec/> <!--Fake opcode -- for use with optimisations within ucxt --> </></>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?