2005-06-23 04:59:00 +00:00
|
|
|
stx(1) xpkit
|
|
|
|
|
|
|
|
NAME
|
|
|
|
stx - xpkit embeddable smalltalk system
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
stx [-f imageFile] MainClass
|
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
The virtual machine executes "MainClass main" on start-up.
|
|
|
|
|
|
|
|
|
|
|
|
method 1.
|
|
|
|
push lookup_class(#MainClass) -> receiver.
|
|
|
|
send a unary(no argument) message with the selector #main.
|
|
|
|
return the returned value from main and exits.
|
|
|
|
|
|
|
|
method 2. - take a command parameter
|
|
|
|
push lookup_class(#MainClass) -> receiver.
|
|
|
|
push argc as an argument.
|
|
|
|
push argv as an argument.
|
|
|
|
send a double-argument message the the selector #main:withArgv:.
|
|
|
|
return the returned value from #main:withArgv and exits.
|
|
|
|
|
|
|
|
|
|
|
|
AUTHOR(S)
|
|
|
|
Chung, Hyung-Hwan (bacon@piowave.com) is the sole designer and implementer of stx.
|
|
|
|
|
|
|
|
BUG REPORTS
|
|
|
|
Report bugs to bacon@piowave.com if you find any bugs. but make sure that it is really a bug before you report it.
|
|
|
|
|
|
|
|
COPYRIGHT
|
|
|
|
Copyright(c) 2005 bacon@piowave.com
|
|
|
|
|
|
|
|
SEE ALSO
|
|
|
|
xpkit(7)
|
|
|
|
|
|
|
|
|
|
|
|
-------------------
|
|
|
|
|
2005-06-23 04:55:44 +00:00
|
|
|
/*
|
|
|
|
&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
|
|
|
|
*/
|
|
|
|
|