42 lines
1.3 KiB
Plaintext
42 lines
1.3 KiB
Plaintext
|
/*
|
||
|
&unsupportedByte, //--- 00
|
||
|
&bytePushInstance, //--- 01
|
||
|
&bytePushArgument, //--- 02
|
||
|
&bytePushTemporary, //--- 03
|
||
|
&bytePushLiteral, //--- 04
|
||
|
&bytePushConstant, //--- 05
|
||
|
&byteAssignInstance, //--- 06
|
||
|
&byteAssignTemporary, //--- 07
|
||
|
&byteMarkArguments, //--- 08
|
||
|
&byteSendMessage, //--- 09
|
||
|
&byteSendUnary, //--- 10
|
||
|
&byteSendBinary, //--- 11
|
||
|
&unsupportedByte, //--- 12
|
||
|
&byteDoPrimitive, //--- 13
|
||
|
&unsupportedByte, //--- 14
|
||
|
&byteDoSpecial //--- 15
|
||
|
|
||
|
|
||
|
* Directly access by byte codes
|
||
|
> the receiver and arguments of the invoking message
|
||
|
> the values of the receiver's instance variables
|
||
|
> the values of any temporary variables required by the method
|
||
|
> seven special constants (true, false, nil, -1, 0, 1, and 2)
|
||
|
> 32 special message selectors
|
||
|
|
||
|
* contained in literal frame.
|
||
|
> shared variables (global, class, and pool)
|
||
|
> most literal constants (numbers, characters, strings, arrays, and symbols)
|
||
|
> most message selectors (those that are not special)
|
||
|
|
||
|
PushInstance
|
||
|
PushArgument -> normal arguments plus self/super(0)
|
||
|
PushTemporary
|
||
|
PushConstant -> nil, true, false, etc....
|
||
|
PushLiteral -> global variables, literal constants... -> access literal frame
|
||
|
|
||
|
AssignInstance
|
||
|
AssignTemporary
|
||
|
*/
|
||
|
|