Editing VSMX
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
= Description = | =Description= | ||
Virtual Script Machine Instructions (VSMX) | Virtual Script Machine Instructions (VSMX) file layout (naming should be wikifyed): | ||
<pre> | |||
VSMX header | |||
Compiled code/instructions | |||
Data/String constants | |||
(method) name table/Object property | |||
global symbols/Variable/function names | |||
</pre> | |||
= Header = | |||
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
|- | |- | ||
| | | style="background-color:#56534D58; color:#000FFF;" |'''Offset''' | ||
| style="background-color:#56534D58; color:#000FFF;" |'''Size''' | |||
| style="background-color:#56534D58; color:#000FFF;" |'''Example (h)''' | |||
| style="background-color:#56534D58; color:#000FFF;" |'''Value (conversion)''' | |||
| style="background-color:#56534D58; color:#000FFF;" |'''Notes''' | |||
= | |||
|- | |- | ||
| 0x00 || 0x04 || 0x56534D58 || "VSMX" || Magic | |||
|- | |- | ||
| 0x04 || 0x04 || 0x00000200 || 0002.0000 || Version? | |||
*v1.0 on PSP RCO RCOs (from video/music UMDs and two lftv RCOs in the PSP's flash0/vsh/ressource/.)? | |||
*V2.0 on PS3 PSJS (.jsx) | |||
|- | |- | ||
| | | 0x08 || 0x04 || 0x34000000 || 0x34 (52) || header length | ||
|- | |- | ||
| | | 0x0C || 0x04 || - || || length of compiled code/instructions section | ||
|- | |- | ||
| 0x10 || 0x04 || - || || offset of data section | |||
|- | |- | ||
| | | 0x14 || 0x04 || - || || length of data | ||
|- | |- | ||
| | | 0x18 || 0x04 || - || || number of data(seen: 1 or 2) | ||
|- | |- | ||
| | | 0x1C || 0x04 || - || || offset of name table | ||
|- | |- | ||
| | | 0x20 || 0x04 || - || || length of name | ||
|- | |- | ||
| | | 0x24 || 0x04 || - || || number of name | ||
|- | |- | ||
| | | 0x28 || 0x04 || - || || offset of global symbols | ||
|- | |- | ||
| | | 0x2C || 0x04 || - || || length of global symbols | ||
|- | |- | ||
| | | 0x30 || 0x04 || - || || number of global symbols | ||
|- | |- | ||
| | |} | ||
= Compiled instructions = | |||
*Instructions length: 8 bytes | |||
HEX code format should be wikifyed, may be table moved to (later). | |||
{| class="wikitable sortable" | |||
|- | |- | ||
! '''ByteCode (short)''' | |||
! '''Instruction Name''' | |||
! '''Note1''' | |||
! '''Note2''' | |||
|- | |- | ||
| | | 0x00 || NOP || - || - | ||
|- | |- | ||
| | | 0x01 || ASSGN || - || - | ||
|- | |- | ||
| | | 0x02 || ADD || - || - | ||
|- | |- | ||
| 0x03 || SUB || - || - | |||
|- | |- | ||
| | | 0x04 || MUL || - || - | ||
|- | |- | ||
| | | 0x05 || DIV || - || - | ||
|- | |- | ||
| | | 0x06 || MOD || - || - | ||
|- | |- | ||
| 0x07 || TO_NUMBER || - || - | |||
|- | |- | ||
| | | 0x08 || CSIGN || - || - | ||
|- | |- | ||
| | | 0x09 || NOT || - || - | ||
|- | |- | ||
| | | 0x0A || INC || - || - | ||
|- | |- | ||
| | | 0x0B || DEC || - || - | ||
|- | |- | ||
| | | 0x0C || POST_INC || - || - | ||
|- | |- | ||
| | | 0x0D || POST_DEC || - || - | ||
|- | |- | ||
| 0x0E || CMPEQ || Compare Operators || - | |||
|- | |- | ||
| | | 0x0F || CMPNEQ || Compare Operators || - | ||
|- | |- | ||
| | | 0x10 || CMPSEQ || Compare Operators || - | ||
|- | |- | ||
| | | 0x11 || CMPSNEQ || Compare Operators || - | ||
|- | |- | ||
| | | 0x12 || CMPLT || Compare Operators || - | ||
|- | |- | ||
| | | 0x13 || CMPLE || Compare Operators || - | ||
|- | |- | ||
| | | 0x14 || CMPGE || Compare Operators || - | ||
|- | |- | ||
| 0x15 || CMPGT || Compare Operators || - | |||
|- | |- | ||
| | | 0x16 || INSTANCEOF || - || - | ||
|- | |- | ||
| | | 0x17 || IN || - || - | ||
|- | |- | ||
| | | 0x18 || TYPEOF || - || - | ||
|- | |- | ||
| | | 0x19 || BIT_AND || - || - | ||
|- | |- | ||
| | | 0x1A || BIT_XOR || - || - | ||
|- | |- | ||
| 0x1B || BIT_OR || - || - | |||
|- | |- | ||
| | | 0x1C || BIT_NOT || - || - | ||
|- | |- | ||
| | | 0x1D || LSHIFT || - || - | ||
|- | |- | ||
| | | 0x1E || S_RSHIFT || - || - | ||
|- | |- | ||
| | | 0x1F || U_RSHIFT || - || - | ||
|- | |- | ||
| | | 0x20 || COPY || - || - | ||
|- | |- | ||
| 0x21 || SWAP || - || - | |||
|- | |- | ||
| | | 0x22 || REMOVE || - || - | ||
|- | |- | ||
| | | 0x23 || PUSH_UNDEFINED || - || - | ||
|- | |- | ||
| | | 0x24 || PUSH_NULL || - || - | ||
|- | |- | ||
| 0x25 || PUSH_BOOL || - || - | |||
|- | |- | ||
| | | 0x26 || PUSH_INT || - || - | ||
|- | |- | ||
| | | 0x27 || PUSH_FLOAT || - || - | ||
|- | |- | ||
| | | 0x28 || PUSH_STRING || - || - | ||
|- | |- | ||
| 0x29 || PUSH_OBJECT || - || - | |||
|- | |- | ||
| | | 0x2A || PUSH_FUNC || - || - | ||
|- | |- | ||
| | | 0x2B || PUSH_ARRAY || - || - | ||
|- | |- | ||
| 0x2C || PUSH_THIS || - || - | |||
|- | |- | ||
| | | 0x2D || PUSH_LOCAL || - || - | ||
|- | |- | ||
| | | 0x2E || PUSH_GLOBAL || - || - | ||
|- | |- | ||
| | | 0x2F || GETATTR || - || - | ||
|- | |- | ||
| | | 0x30 || GETATTR_KEEPOBJ || - || - | ||
|- | |- | ||
| 0x31 || SETATTR || - || - | |||
|- | |- | ||
| | | 0x32 || DELATTR || - || - | ||
|- | |- | ||
| 0x33 || APPEND_ATTR || - || - | |||
|- | |- | ||
| | | 0x34 || GETITEM || - || - | ||
|- | |- | ||
| | | 0x35 || GETITEM_KEEPOBJ || - || - | ||
|- | |- | ||
| 0x36 || SETITEM || - || - | |||
|- | |- | ||
| | | 0x37 || DELITEM || - || - | ||
|- | |- | ||
| | | 0x38 || APPEND_ITEM || - || - | ||
|- | |- | ||
| | | 0x39 || JUMP || - || - | ||
|- | |- | ||
| | | 0x3A || JUMPT || - || - | ||
|- | |- | ||
| | | 0x3B || JUMPF || - || - | ||
|- | |- | ||
| | | 0x3C || CALL_FUNC || - || - | ||
|- | |- | ||
| | | 0x3D || CALL_METHOD || - || - | ||
|- | |- | ||
| | | 0x3E || CALL_CONSTRUCTOR || - || - | ||
|- | |- | ||
| 0x3F || RET || - || - | |||
|- | |- | ||
| | | 0x40 || THROW || - || - | ||
|- | |- | ||
| | | 0x41 || TRYBLK_IN || - || - | ||
|- | |- | ||
| | | 0x42 || TRYBLK_OUT || - || - | ||
|- | |- | ||
| | | 0x43 || CATCH_FINALLYBLK_IN || - || - | ||
|- | |- | ||
| | | 0x44 || CATCH_FINALLYBLK_OUT || - || - | ||
|- | |- | ||
| | | 0x45 || HALT || - || - | ||
|- | |- | ||
| | | 0x46 || DEBUG_FILE || - || - | ||
|- | |- | ||
| | | 0x47 || DEBUG_LINE || - || - | ||
|- | |- | ||
| | | 0x48 || GETITEM_KEEPOBJNAME || - || - | ||
|- | |- | ||
| | | 0x49 || PUSH_VECTOR || - || - | ||
| | |||
|- | |||
|- | |- | ||
| | | 0x4A || GET_VECTOR_ELEMENT || - || - | ||
|- | |- | ||
| | | 0x4B || GET_VECTOR_ELEMENT_KEEPVECTOR || - || - | ||
|- | |- | ||
| | | 0x4C || ASSGN_VECTOR_ELEMENT || - || - | ||
|- | |- | ||
| | | 0x4D || SETATTR_VECTOR_ELEMENT || - || - | ||
|- | |- | ||
| | | 0x4E || SETITEM_VECTOR_ELEMENT || - || - | ||
|- | |- | ||
|} | |} | ||
== | == '''C'''o'''mp'''are Operators == | ||
Comparison and Logical operators are used to test for true or false. | Comparison and Logical operators are used to test for true or false. | ||
*http://www.w3schools.com/js/js_comparisons.asp | *http://www.w3schools.com/js/js_comparisons.asp | ||
Line 329: | Line 229: | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
! | ! Compare For: | ||
! | ! Operators | ||
! Syntax ( | ! Bytecode ([[PlayStation_JavaScript|PSJS]]) | ||
! Syntax (JS) | |||
|- | |- | ||
| | | Equality || cmpeq || 0x0E || == | ||
|- | |- | ||
| | | Strict Equal value and equal type || cmpseq || 0x10 || === | ||
|- | |- | ||
| | | Inequality || cmpneq || 0x0F || != | ||
|- | |- | ||
| Strict not equal value or not equal type || cmpsneq || 0x11 || !== | |||
|- | |- | ||
| | | Greater Than || cmpgt || 0x15 || > | ||
|- | |- | ||
| | | Greater Than or Equal To || cmpge || 0x14 || >= | ||
|- | |- | ||
| | | Less Than || cmplt || 0x12 || < | ||
|- | |- | ||
| | | Less Than or Equal To || cmple || 0x13 || <= | ||
|- | |- | ||
|} | |} | ||
Line 355: | Line 255: | ||
*http://es5.github.io/#x11.9.6 The Strict Equality Comparison Algorithm | *http://es5.github.io/#x11.9.6 The Strict Equality Comparison Algorithm | ||
{{File Formats}}<noinclude>[[Category:Main]]</noinclude> | {{File Formats}}<noinclude>[[Category:Main]]</noinclude> |