[BACK]Return to openxm-stackmachines.tex CVS log [TXT][DIR] Up to [local] / OpenXM / doc / issac2000

Diff for /OpenXM/doc/issac2000/openxm-stackmachines.tex between version 1.2 and 1.9

version 1.2, 2000/01/02 07:32:12 version 1.9, 2000/01/15 12:18:42
Line 1 
Line 1 
 % $OpenXM: OpenXM/doc/issac2000/openxm-stackmachines.tex,v 1.1 1999/12/23 10:25:09 takayama Exp $  % $OpenXM: OpenXM/doc/issac2000/openxm-stackmachines.tex,v 1.8 2000/01/15 03:46:27 noro Exp $
   
 \section{OpenXM Stackmachines}   (Tamura)  \section{OpenXM Stack machines}\label{sec:ox-stackmachines}
   
 In OpenXM specification, all servers are stackmachines.  In OpenXM specification, all servers are stack machines.
 These are called OpenXM stachmachines.  %These are called OpenXM stack machines.
 When a server ox\_xyz gets a OX data message,  When a server ox\_xyz gets an OX data message,
 it translates the data into its own object and push the object  it translates the data into a local object of ox\_xyz
 on the stack.  and pushes the object onto the stack.
 The translation scheme together with mathematical operation definitions  According to the OpenMath specification,
 of the system ox\_xyz is called the {\it phrase dictionary} of  the translation scheme together with definitions of mathematical operations
 ox\_xyz following the idea of OpenMath.  of the system ox\_xyz is called the {\it PhraseBook} of ox\_xyz.
   
 OX command message starts with the int32 tag OX\_COMMAND.  Any OX command message starts with the int32 tag OX\_COMMAND.
 The body is OpenXM stackmachine operation code expressed by int32.  The body is an OpenXM stack machine operation code expressed by int32.
 The codes are listed below.  The codes are listed below.
 \begin{verbatim}  \begin{verbatim}
 #define SM_popSerializedLocalObject               258  #define SM_popSerializedLocalObject               258
Line 31  The codes are listed below.
Line 31  The codes are listed below.
 #define SM_executeStringByLocalParserInBatchMode  274  #define SM_executeStringByLocalParserInBatchMode  274
 #define SM_getsp                                  275  #define SM_getsp                                  275
 #define SM_dupErrors                              276  #define SM_dupErrors                              276
 #define SM_DUMMY_sendcmo                          280  
 #define SM_sync_ball                              281  
 #define SM_control_kill                          1024  #define SM_control_kill                          1024
 #define SM_control_to_debug_mode                 1025  #define SM_control_to_debug_mode                 1025
 #define SM_control_exit_debug_mode               1026  #define SM_control_exit_debug_mode               1026
Line 40  The codes are listed below.
Line 38  The codes are listed below.
 \end{verbatim}  \end{verbatim}
   
 OpenXM does not have a standard for mathematical operation sets  OpenXM does not have a standard for mathematical operation sets
 while it is one of the main future projects of \cite{gap}.  while it is a work in progress in the GAP group \cite{gap}.
 Each OpenXM server has its own mathematical operation set.  Each OpenXM server has its own set of mathematical operations,
 Mathematical operator name, such as fctr (asir factorization command),  which are performed as follows.
 is pushed as a string,  First, arguments for a mathematical operation
 SM\_executeFunction pops the operator name, the number of arguments  and the number of the arguments are pushed.
 and arguments,  Second,
 evaluates the operator, and pushes the result on the stack.  the mathematical operator name,
   such as {\tt fctr} (asir factorization command),
   is pushed as a string.
   Finally, the stack machine command
   {\tt SM\_executeFunction} (269) evaluates the operator and
   pushes the result onto the stack
   after poping the operator name, the number of arguments
   and arguments.
 For example, the following code factorizes $x^{100}-1$ by calling  For example, the following code factorizes $x^{100}-1$ by calling
 ox\_asir.  {\tt ox\_asir} from asir.
 \begin{verbatim}  \begin{verbatim}
 P = ox_launch();  P = ox_launch();
 ox_push_cmo(P,x^100-1); ox_push_cmo(P,ox_int32(1));  ox_push_cmo(P,x^100-1); ox_push_cmo(P,ntoint32(1));
 ox_push_cmd(P,269);  ox_push_cmd(P,269);
 Ans = ox_pop_cmo(P);  Ans = ox_pop_cmo(P);
 \end{verbatim}  \end{verbatim}
Line 66  which caused the error, and an error message.
Line 71  which caused the error, and an error message.
 error([8,fctr : invalid argument])  error([8,fctr : invalid argument])
 \end{verbatim}  \end{verbatim}
   
 Errors are not sent to the client except a SM\_pop* command is received.  OpenXM server won't send error messages to the client
 Open XM stackmachines works in the asynchoronous mode which is similar  except when it receives a {\tt SM\_pop*} command.
   OX stackmachines work in the asynchronous mode which is similar
 to X servers.  to X servers.
 For servers of graphic applications, it is an advantageous feature.  For servers for graphic and sound applications, it is an advantageous feature.
 It is also easy to emulate RPC and a web server for MCP \cite{iamc}  It is also easy to emulate RPC and a web server for MCP \cite{iamc}
 on our OpenXM stackmachines.  on our asynchronous OX stackmachines.
   
   
   

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.9

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>