version 1.2, 2000/01/20 09:22:01 |
version 1.12, 2020/03/14 01:21:56 |
|
|
%% $OpenXM: OpenXM/doc/OpenXM-specs/communication-model.tex,v 1.1.1.1 2000/01/20 08:52:46 noro Exp $ |
%% $OpenXM: OpenXM/doc/OpenXM-specs/communication-model.tex,v 1.11 2016/08/28 02:43:13 takayama Exp $ |
//&jp \section{ Open XM の通信モデル} |
//&jp \section{ OpenXM 篆<≪} |
//&eg \section{ Communication model of Open XM} (This part has not yet been translated) |
//&eg \section{ Communication model of OpenXM} |
|
|
/*&jp |
/*&jp |
われわれは, 数学プロセスがメッセージを |
, 医祉鴻<祉若吾 |
交換しながら計算が進行していくというモデルを想定して設計をすすめている. |
篋ゆ荐膊画≪喝荐荐. |
各プロセスはスタックマシンであり, これを OX スタックマシンとよぶ. |
祉鴻鴻帥激潟с, OX 鴻帥激潟. |
数学プロセスの間の通信路の確保の仕方としては以下のように |
医祉鴻篆∴君腆坂篁鴻篁ヤ |
いろいろな実現方法を想定している. |
絎憝号喝. |
\begin{enumerate} |
\begin{enumerate} |
\item ファイルを介して通信する. |
\item <ゃ篁篆<. |
\item Library として直接リンクして通信する. |
\item Library 贋・潟篆<. |
\item TCP/IP ソケットの利用. |
\item TCP/IP 純宴. |
\item Remote Procedure call の利用. |
\item Remote Procedure call . |
\item マルチスレッドの利用. |
\item JAVA RMI. |
\item PVM ライブラリの利用. |
\item 鴻. |
\item MPI ライブラリの利用. |
\item PVM ゃ. |
|
\item MPI ゃ. |
\end{enumerate} |
\end{enumerate} |
|
|
通信とはプロセス間のメッセージのやりとりである. |
篆<祉拷<祉若吾с. |
メッセージは論理的に次のような構造をもつ: |
<祉若吾茫罨<罕: |
*/ |
*/ |
/*&eg |
/*&eg |
In our model of comutation, mathematical processes proceed |
In our model of computation, mathematical processes proceed |
a computation by exchanging messages. Each process is a stack machine, |
a computation by exchanging messages. Each process is a stack machine, |
which is called an OX stack machine. |
which is called an OX stack machine. |
The following method are possible to realize communications between |
The following methods are possible to realize communications between |
mathematical processes. |
mathematical processes. |
\begin{enumerate} |
\begin{enumerate} |
\item Communication by files. |
\item Communication by files. |
\item Linking as a subroutine library. |
\item Linking as a subroutine library. |
\item TCP/IP streams. |
\item TCP/IP streams. |
\item Remote Procedure call. |
\item Remote Procedure call. |
\item Muitithread. |
\item JAVA RMI. |
|
\item Multi-thread. |
\item PVM library. |
\item PVM library. |
\item MPI library. |
\item MPI library. |
\end{enumerate} |
\end{enumerate} |
|
|
In OpenXM Communication is exechange of messages between processes. |
In OpenXM communication means exchange of messages between processes. |
A message has the following structure: |
A message has the following structure: |
*/ |
*/ |
/*&C |
/*&C |
Line 51 A message has the following structure: |
|
Line 53 A message has the following structure: |
|
\end{center} |
\end{center} |
*/ |
*/ |
/*&jp |
/*&jp |
このメッセージを, OX Message (Open XM message object) とよぶ. |
<祉若吾, OX message (OpenXM message object) . |
OX Message はトップレベルのメッセージ object であり, |
OX Message <祉若 object с, |
仕様書では, さまざまなグループに属する object が登場する. |
篁罕吾с, 障障違若絮 object 糸眼. |
グループ名は, たとえば, OX Message/TCPIP/Basic0 などと書く. |
違若, , OX Message/TCPIP/Primitive 吾. |
{\tt message\_body} の部分の仕様は, OX Message |
{\tt message\_body} 篁罕, OX Message |
の上位に位置する部分であり, SMobject または CMObject がくる. |
筝篏篏臀с, SMobject 障 CMObject . |
これらの object はタグをもち, そのタグ定数は {\tt SM\_} または |
object 帥違, 帥医違 {\tt SM\_} 障 |
{\tt CMO\_} ではじまる. |
{\tt CMO\_} с障. |
SMobject は, スタックマシンコマンドメッセージ object であり, |
SMobject , 鴻帥激潟潟潟<祉若 object с, |
やはり, グループ分けされている. |
, 違若. |
各グループ名は, |
違若, |
SMobject/Basic0, SMobject/Basic1 などと書く. |
SMobject/Primitive, SMobject/Basic 吾. |
SMobject の構造は |
SMobject 罕 |
サーバスタックマシンの節で詳しく説明する. |
泣若鴻帥激潟膀ц潟顄. |
CMObject についてはすでに Basic0 の CMObject の説明をしたが, |
CMObject ゃс Primitive CMObject 茯, |
あとで CMObject レベル 1の説明をする. |
CMObject 1茯. |
OX Message の |
OX Message |
{\tt ox message\_tag} の定数は {\tt OX\_} で始まる. |
{\tt ox message\_tag} 絎違 {\tt OX\_} у障. |
|
|
このメッセージを, OX Message (Open XM message object) とよぶ. |
|
OX Message はトップレベルのメッセージ object であり, |
|
仕様書では, さまざまなグループに属する object が登場する. |
|
グループ名は, たとえば, OX Message/TCPIP/Basic0 などと書く. |
|
{\tt message\_body} の部分の仕様は, OX Message |
|
の上位に位置する部分であり, SMobject または CMObject がくる. |
|
これらの object はタグをもち, そのタグ定数は {\tt SM\_} または |
|
{\tt CMO\_} ではじまる. |
|
SMobject は, スタックマシンコマンドメッセージ object であり, |
|
やはり, グループ分けされている. |
|
各グループ名は, |
|
SMobject/Basic0, SMobject/Basic1 などと書く. |
|
SMobject の構造は |
|
サーバスタックマシンの節で詳しく説明する. |
|
CMObject についてはすでに Basic0 の CMObject の説明をしたが, |
|
あとで CMObject レベル 1の説明をする. |
|
OX Message の |
|
{\tt ox message\_tag} の定数は {\tt OX\_} で始まる. |
|
*/ |
*/ |
/*&eg |
/*&eg |
We call it an OX message (OpenXM message object). |
We call it an OX message (OpenXM message object). |
OX Message is the top level message object. |
OX message is the top level message object. |
The OX messages are classified into three types: DATA, COMMAND, |
The OX messages are classified into three types: DATA, COMMAND, |
and SPECIAL. They are distinguished by {\tt ox message\_tag}. |
and SPECIAL. They are distinguished by {\tt ox message\_tag}. |
{\tt message\_body} depends on the {\tt ox message\_tag}. |
|
The name of an ox message tag begins with {\tt OX\_}. |
The name of an ox message tag begins with {\tt OX\_}. |
The following table shows the correspondence between |
Typical OX message tags are {\tt OX\_COMMAND} followed by |
an OX message tag and a message body. |
SMobject and {\tt OX\_DATA} followed by CMObject. |
|
|
\begin{center} |
|
\begin{tabular}{|c||c|c|} \hline |
|
ox message tag & message body & category \\ \hline |
|
{\tt OX\_DATA} & CMOobject & DATA \\ \hline |
|
{\tt OX\_COMMAND} & SMobject & COMMAND \\ \hline |
|
{\tt OX\_DATA\_OPENMATH\_XML} & OpenMath data & DATA \\ \hline |
|
\end{tabular} |
|
\end{center} |
|
|
|
Each message object also has its tag. For SMobject, the name |
Each message object also has its tag. For SMobject, the name |
of a tag begins with {\tt SM\_}. For CMOobject, the name of |
of a tag begins with {\tt SM\_}. For CMObject, the name of |
a tag begins with {\tt CMO\_}. |
a tag begins with {\tt CMO\_}. |
An SMobject represents a stack machine command and categorized |
An SMobject represents a stack machine command and categorized |
into several groups such as SMobject/Basic0, SMobject/Basic1. |
into several groups such as SMobject/Primitive, SMobject/Basic. |
The details of SMobjects will be explained in Section \ref{sec:stackmachine}. |
The details of SMobjects will be explained in Section \ref{sec:stackmachine}. |
We have already explained the Basic0 CMOobjects. |
We have already explained the Primitive CMObjects. |
We will describe the Basic1 CMOobjects later. |
We will describe the Basic CMObjects in Section \ref{sec:basic1}. |
*/ |
*/ |
//&jp \subsection{ OX Message の 表現方法 } |
//&jp \subsection{ OX Message 茵憝号 } |
//&eg \subsection{ OX Messages } |
//&eg \subsection{ OX Messages } |
|
|
/*&jp |
/*&jp |
Open XM で各プロセスは |
OpenXM у祉鴻 |
\begin{center} |
\begin{center} |
(OXexpression を理解するスタックマシン) $+$ (xxx 言語で動くエンジン) |
(OXexpression 茹c鴻帥激) $+$ (xxx 荐茯у潟吾) |
\end{center} |
\end{center} |
なるハイブリッド構成である. |
ゃ罕с. |
このプロセスを, OX スタックマシンと呼ぶ. |
祉鴻, OX 鴻帥激潟若. |
ここでは, OX スタックマシンとやりとりするメッセージである, |
с, OX 鴻帥激潟<祉若吾с, |
OX Message を表現するための OXexpression, および, |
OX Message 茵憗 OXexpression, , |
スタックマシンの operator に対応する, SMobject を表現するための SMexpression |
鴻帥激潟 operator 絲上, SMobject 茵憗 SMexpression |
を定義しよう. |
絎臂. |
OX Message を スタックマシンコマンド, |
OX Message 鴻帥激潟潟潟, |
SMobject を スタックマシンオペレータともよぶ. |
SMobject 鴻帥激潟若帥. |
*/ |
*/ |
|
|
/*&eg |
/*&eg |
In Open XM, each process may have a hybrid interface; |
In OpenXM, each process may have a hybrid interface; |
it may accept and execute not only stack machine commands, |
it may accept and execute not only stack machine commands, |
but also its original command sequences. |
but also its original command sequences. |
We call such a process an OX stack machine. |
We call such a process an OX stack machine. |
Line 144 Here we introduce OXexpression and SMexpression |
|
Line 116 Here we introduce OXexpression and SMexpression |
|
to express OX messages and SM objects respectively. |
to express OX messages and SM objects respectively. |
*/ |
*/ |
|
|
|
//&jp \subsubsection{ OX <祉若吾茵憝 (Lisp 蘂) } |
|
//&eg \subsubsection{ Expressions of OX messages (Lisp like) } |
/*&C |
/*&C |
\begin{eqnarray*} |
\begin{eqnarray*} |
\mbox{OXexpression} |
\mbox{OXexpression} |
Line 159 to express OX messages and SM objects respectively. |
|
Line 133 to express OX messages and SM objects respectively. |
|
\end{eqnarray*} |
\end{eqnarray*} |
*/ |
*/ |
/*&jp |
/*&jp |
expression の各要素を区切るために {\tt ,} (コンマ) を用いてもよい. |
expression 荀膣阪 {\tt ,} (潟潟) . |
{\tt OX\_tag} は {\tt OX\_} で始まる定数である. |
{\tt OX\_tag} {\tt OX\_} у障絎違с. |
{\tt SM\_tag} は {\tt SM\_} で始まるスタックマシンオペレータを識別する定数である. |
{\tt SM\_tag} {\tt SM\_} у障鴻帥激潟若帥茘ャ絎違с. |
発信元 AAA, 受信先 BBB を書く必要があるときは, |
坂拭 AAA, 篆≦ BBB 吾鏆荀, |
From AAA, To BBB, を OXexpression の前に書く. |
From AAA, To BBB, OXexpression 吾. |
必要なければ省略する. |
綽荀亥ャ. |
|
|
たとえば, あとで説明する, CMO string ``Hello'' を スタックにプッシュする |
, ц, CMO string ``Hello'' 鴻帥激ャ |
表現は次のように書く: |
茵憗罨<吾: |
*/ |
*/ |
|
|
/*&eg |
/*&eg |
A comman `{\tt ,}' may be used to separate elements in an expression. |
A comma `{\tt ,}' may be used to separate elements in an expression. |
{\tt OX\_tag} is a constant which denotes an OX message tag. |
{\tt OX\_tag} is a constant which denotes an OX message tag. |
{\tt SM\_tag} is a constant which denotes an SM command tag. |
{\tt SM\_tag} is a constant which denotes an SM command tag. |
If a sender AAA or a receiver BBB has to be specified, |
If a sender AAA or a receiver BBB has to be specified, |
Line 187 push a CMO string ``Hello''. |
|
Line 161 push a CMO string ``Hello''. |
|
*/ |
*/ |
|
|
|
|
/*&jp |
/*&eg |
The following expression means a request to execute |
The following expression means a request to execute |
a local function ``hoge''. |
a local function ``hoge''. |
*/ |
*/ |
|
|
/*&C |
/*&C |
\begin{center} |
\begin{center} |
(OX\_DATA, (CMO\_STRING, 5, "hoge")) |
(OX\_DATA, (CMO\_STRING, 4, "hoge")) |
\end{center} |
\end{center} |
\begin{center} |
\begin{center} |
(OX\_COMMAND, SM\_executeStringByLocalParser) |
(OX\_COMMAND, SM\_executeStringByLocalParser) |
Line 202 a local function ``hoge''. |
|
Line 176 a local function ``hoge''. |
|
*/ |
*/ |
|
|
/*&jp |
/*&jp |
|
罔羣潟潟若羈с, 帥違 32 bit (4 bytes) |
|
若ゃ若с贋違茵憗. |
|
*/ |
|
/*&eg |
In our standard encoding method, each tag is expressed as |
In our standard encoding method, each tag is expressed as |
a 32 bit (4 byte) integer with the network byte order. |
a 32 bit (4 bytes) integer with the network byte order. |
*/ |
*/ |
|
|
//&jp \subsection{OXexpression の 標準 encoding と TCP/IP ソケットによる実装法} |
/*&C |
//*eg \subsection{Standard enconding of OXexpressions and an implementation by TCP/IP sockets} |
|
|
*/ |
|
|
|
//&jp \subsubsection{ OX <祉若吾茵 (XML) } |
|
//&eg \subsubsection{ Expression of OX messages (XML) } |
|
|
/*&jp |
/*&jp |
通信の実現方法は通信路のとりかたによりかわるが, |
OX <祉若吾 XML ц;憗純с. 罨<箴腓冴. |
論理構造は統一的にあつかわないといけない. |
*/ |
OXexpression はその論理構造を記述している. |
/*&eg |
|
OX messages can be expressed by XML. The following is an example. |
|
*/ |
|
/*&C |
|
\begin{verbatim} |
|
<ox> |
|
<ox_data> |
|
<ox_serial> <int32> 0 </int32> </ox_serial> |
|
<cmo> <cmo_string> |
|
<int32 for="length"> 5 </int32> |
|
<string> "Hello" </string> |
|
</cmo_string> |
|
</cmo> |
|
</ox_data> |
|
<ox_command> |
|
<ox_serial> <int32> 1 </int32> </ox_serial> |
|
<sm_popCMO/> |
|
</ox_command> |
|
</ox> |
|
\end{verbatim} |
|
*/ |
|
|
ここでは OXexpression の標準 encoding の概略を説明する. |
//&jp \subsection{OXexpression 罔羣 encoding TCP/IP 純宴絎茖羈} |
この encoding 法はTCP/IP ソケット用の encoding 法として |
//&eg \subsection{Standard encoding of OXexpressions and an implementation by TCP/IP sockets} |
現在存在しているサーバに使用されている. |
/*&jp |
さらにOX スタックマシンの計算状態を制御するための, コントロールメッセージに |
篆<絎憝号篆∴君, |
ついても説明する. |
茫罕腟延ゃ. |
|
OXexpression 茫罕荐菴違. |
|
|
|
с OXexpression 罔羣 encoding 网ャ茯. |
|
encoding 羈TCP/IP 純宴 encoding 羈 |
|
憜絖泣若篏睡. |
|
OX 鴻帥激潟荐膊倶九勝, 潟潟若<祉若吾 |
|
ゃ茯. |
|
|
{\tt destination}, {\tt origin} の部分は, ソケットによる |
|
peer to peer の接続なので省略する. |
{\tt destination}, {\tt origin} , 純宴 |
{\tt extension} フィールドは |
peer to peer ・膓хャ. |
{\tt message\_tag} フィールドの次にくる. |
{\tt extension} c若 |
{\tt extension} フィールドは OX パケットのシリアル番号がはいる. |
{\tt message\_tag} c若罨<. |
シリアル番号は {\tt int32} である. |
{\tt extension} c若 OX 宴激≪垩. |
この番号は, サーバがエラーを起こした場合, エラーをおこした, |
激≪垩 {\tt int32} с. |
OX パケットの番号を戻すのに主に利用される. |
垩, 泣若若莎激翫, 若, |
以下 {\tt extension} フィールドは, {\tt message\_tag} の |
OX 宴垩祉筝祉. |
に含まれると理解し {\tt extension} フィールドは省略する. |
篁ヤ {\tt extension} c若, {\tt message\_tag} |
したがってパケットは |
障茹c {\tt extension} c若ャ. |
次のように記述する |
c宴 |
|
罨<荐菴違 |
*/ |
*/ |
|
|
/*&eg |
/*&eg |
The logical structure of OX messages are independent of implementations |
The logical structure of OX messages are independent of implementations |
of communication. |
of communication. The OXexpression represents the logical structure. |
通信の実現方法は通信路のとりかたによりかわるが, |
Here we explain an outline of the standard encoding scheme of OXexpression. |
論理構造は統一的にあつかわないといけない. |
This encoding scheme is used to implement OpenXM protocols on TCP/IP sockets. |
OXexpression はその論理構造を記述している. |
In addition, we also explain the control messages to control stack machines. |
|
|
ここでは OXexpression の標準 encoding の概略を説明する. |
As the socket connection is peer to peer, {\tt destination} and {\tt origin} |
この encoding 法はTCP/IP ソケット用の encoding 法として |
are omitted. |
現在存在しているサーバに使用されている. |
The {\tt extension} field is placed after the {\tt message\_tag} field. |
さらにOX スタックマシンの計算状態を制御するための, コントロールメッセージに |
The {\tt extension} field consists of the serial number for OX message, |
ついても説明する. |
which is {\tt int32}. |
|
The serial number is used to identify an OX message which caused |
|
an error on a server. |
{\tt destination}, {\tt origin} の部分は, ソケットによる |
In the following we regard the {\tt extension} as a component of |
peer to peer の接続なので省略する. |
the {\tt message\_tag} field and omit the {\tt extension} field. |
{\tt extension} フィールドは |
Thus OX messages are represented as follows. |
{\tt message\_tag} フィールドの次にくる. |
|
{\tt extension} フィールドは OX パケットのシリアル番号がはいる. |
|
シリアル番号は {\tt int32} である. |
|
この番号は, サーバがエラーを起こした場合, エラーをおこした, |
|
OX パケットの番号を戻すのに主に利用される. |
|
以下 {\tt extension} フィールドは, {\tt message\_tag} の |
|
に含まれると理解し {\tt extension} フィールドは省略する. |
|
したがってパケットは |
|
次のように記述する |
|
*/ |
*/ |
/*&C |
/*&C |
\begin{center} |
\begin{center} |
Line 270 OX パケットの番号を戻すのに主に利用される. |
|
Line 271 OX パケットの番号を戻すのに主に利用される. |
|
\end{tabular} |
\end{tabular} |
\end{center} |
\end{center} |
*/ |
*/ |
//&jp が, もっとこまかく見ると, |
//&jp \noindent , c障頳, |
|
//&eg \noindent More precisely it has the following representation. |
/*&C |
/*&C |
\begin{center} |
\begin{center} |
\begin{tabular}{|c|c|} |
\begin{tabular}{|c|c|} |
\hline |
\hline |
{\tt ox message\_tag}, \ {\tt packet number}&{\tt message\_body} \\ |
{\tt ox message\_tag}, \ {\tt serial number}&{\tt message\_body} \\ |
\hline |
\hline |
\end{tabular} |
\end{tabular} |
\end{center} |
\end{center} |
*/ |
*/ |
/*&jp |
/*&jp |
となっている. |
\noindent |
|
c. |
|
|
グループ OX Message/TCPIP/Basic0 の |
違若 OX Message/TCPIP/Primitive |
{\tt ox message\_tag} としては次のものが用意されている. |
{\tt ox message\_tag} 罨<. |
*/ |
*/ |
|
//&eg \noindent As {\tt ox message\_tag} the following are provided. |
|
|
/*&C |
/*&C |
@plugin/oxMessageTag.h |
@plugin/oxMessageTag.h |
Line 299 OX パケットの番号を戻すのに主に利用される. |
|
Line 303 OX パケットの番号を戻すのに主に利用される. |
|
#define OX_DATA_MP 525 |
#define OX_DATA_MP 525 |
|
|
#define OX_SYNC_BALL 515 |
#define OX_SYNC_BALL 515 |
|
#define OX_NOTIFY 516 |
\end{verbatim} |
\end{verbatim} |
*/ |
*/ |
|
|
/*&jp |
/*&jp |
通信路は 2 つ用意する. |
篆∴君 2 ょ. |
1番目の通信路は |
1篆∴君 |
\verb+ OX_COMMAND + |
\verb+ OX_COMMAND + |
および |
|
\verb+ OX_DATA + |
\verb+ OX_DATA + |
がながれる. |
. |
2番目の通信路 ({\tt control}と呼ぶ) には, |
2篆∴君 ({\tt control}若) , |
\verb+ OX_COMMAND + およびそれに続くコントロールコマンド |
\verb+ OX_COMMAND + 潟膓潟潟若潟潟 |
\verb+ SM_control_* + |
\verb+ SM_control_* + |
またはコントロール関係のデータ, つまり header |
障潟潟若≫若, ゃ障 header |
\verb+ OX_DATA + ではじまりそれに続く CMO データ |
\verb+ OX_DATA + с障膓 CMO 若 |
がながれる. |
. |
これらをコントロールメッセージおよびコントロールメッセージの結果 |
潟潟若<祉若吾潟潟潟若<祉若吾腟 |
メッセージと呼ぶ. |
<祉若吾若. |
サンプルサーバでは, この 2 つの通信路を, 2 つのポートを用いて |
泣潟泣若с, 2 ゃ篆∴君, 2 ゃ若 |
実現している. |
絎憗. |
|
|
|
|
\verb+ OX_COMMAND + メッセージは次の形のパケット: \\ |
\verb+ OX_COMMAND + <祉若吾罨<綵≪宴ц;憗: \\ |
*/ |
*/ |
|
/*&eg |
|
Two streams are provided for communication between a client and a server. |
|
One is the stream to exchange data and to send stack machine commands. |
|
The other is the stream to control stack machines. |
|
Messages on the latter stream are called control messages and |
|
results of control messages. The sample server implements |
|
the above two streams by using two ports on TCP/IP. |
|
|
|
The stack machine command message has the following forms: \\ |
|
*/ |
/*&C |
/*&C |
|
\noindent |
\begin{tabular}{|c|c|} |
\begin{tabular}{|c|c|} |
\hline |
\hline |
{\tt OX\_COMMAND} & {\tt int32 function\_id} \\ \hline |
{\tt OX\_COMMAND} & {\tt int32 function\_id} \\ \hline |
Line 334 OX パケットの番号を戻すのに主に利用される. |
|
Line 350 OX パケットの番号を戻すのに主に利用される. |
|
\\ |
\\ |
*/ |
*/ |
|
|
//&jp \verb+ OX_DATA + メッセージは次の形のパケット: \\ |
//&jp \verb+ OX_DATA + <祉若吾罨<綵≪宴ц;憗: \\ |
|
//&eg CMO data message has the following form:\\ |
/*&C |
/*&C |
\begin{tabular}{|c|c|} |
\begin{tabular}{|c|c|} |
\hline |
\hline |
Line 344 OX パケットの番号を戻すのに主に利用される. |
|
Line 361 OX パケットの番号を戻すのに主に利用される. |
|
({\tt OX\_DATA}, {\sl CMObject} data) |
({\tt OX\_DATA}, {\sl CMObject} data) |
\\ |
\\ |
*/ |
*/ |
/*&jp |
//&jp 潟潟若<祉若吾罨<綵≪宴ц;憗: \\ |
データは CMO を用いて表現する. |
//&eg The control message has the following form:\\ |
|
|
コントロールメッセージは次の形のパケット: \\ |
|
*/ |
|
/*&C |
/*&C |
\begin{tabular}{|c|c|} |
\begin{tabular}{|c|c|} |
\hline |
\hline |
Line 358 OX パケットの番号を戻すのに主に利用される. |
|
Line 372 OX パケットの番号を戻すのに主に利用される. |
|
\\ |
\\ |
*/ |
*/ |
/*&jp |
/*&jp |
コントロールメッセージは, 計算を中断したい, debug 用の スレッドを起動する, |
潟潟若<祉若吾, 荐膊筝, debug 鴻莎桁, |
debug モードを抜けたい, などの用途に利用する. |
debug ≪若, . |
|
|
コントロールメッセージの結果メッセージは次の形のパケット: \\ |
|
*/ |
*/ |
|
/*&eg |
|
The control message is used to interrupt a computation, to invoke |
|
debugging threads, or to exit form the debugging mode. |
|
*/ |
|
|
|
//&jp 潟潟若<祉若吾腟<祉若吾罨<綵≪宴ц;憗: \\ |
|
//&eg The result of a control message has the following form:\\ |
/*&C |
/*&C |
\begin{tabular}{|c|c|l|} |
\begin{tabular}{|c|c|l|} |
\hline |
\hline |
Line 375 debug モードを抜けたい, などの用途に利用する. |
|
Line 394 debug モードを抜けたい, などの用途に利用する. |
|
|
|
/*&jp |
/*&jp |
{\tt int32 function\_id} |
{\tt int32 function\_id} |
の部分に, サーバスタックマシン の operator に対応する番号がはいる. |
, 泣若鴻帥激 operator 絲上垩. |
グループ SMobject/Basic0 および SMobject/Basic1 に属する |
違若 SMobject/Primitive SMobject/Basic 絮 |
タグとして以下のものがある. |
帥違篁ヤ. |
*/ |
*/ |
|
/*&eg |
|
{\tt int32 function\_id} is the value of a stack machine command. |
|
SM tags in SMobject/Primitive and SMobject/Basic and corresponding |
|
values are as follows. |
|
*/ |
/*&C |
/*&C |
@plugin/oxFunctionId.h |
@plugin/oxFunctionId.h |
\begin{verbatim} |
\begin{verbatim} |
Line 400 debug モードを抜けたい, などの用途に利用する. |
|
Line 424 debug モードを抜けたい, などの用途に利用する. |
|
#define SM_getsp 275 |
#define SM_getsp 275 |
#define SM_dupErrors 276 |
#define SM_dupErrors 276 |
|
|
|
#define SM_nop 300 /* do nothing */ |
|
|
#define SM_control_kill 1024 |
#define SM_control_kill 1024 |
#define SM_control_reset_connection 1030 |
#define SM_control_reset_connection 1030 |
\end{verbatim} |
\end{verbatim} |
*/ |
*/ |
|
|
//&jp たとえば, |
//&jp \noindent , |
/*C |
//&eg \noindent For example |
|
/*&C |
\begin{center} |
\begin{center} |
(OX\_COMMAND, SM\_pops) |
(OX\_COMMAND, SM\_pops) |
\end{center} |
\end{center} |
*/ |
*/ |
//&jp は |
//&jp \noindent |
/*C |
//&eg \noindent is encoded as follows. |
|
/*&C |
\begin{center} |
\begin{center} |
\begin{tabular}{|c|c|} |
\begin{tabular}{|c|c|} |
\hline |
\hline |
Line 422 debug モードを抜けたい, などの用途に利用する. |
|
Line 449 debug モードを抜けたい, などの用途に利用する. |
|
\end{tabular} |
\end{tabular} |
\end{center} |
\end{center} |
*/ |
*/ |
/*&jp |
//&jp 潟潟若. |
とエンコードされる. |
|
|
|
operator の詳細は次の節で説明する. |
/*&jp |
これらの定数の名前はインプリメントのとき短縮形で表現してもよい. |
operator 荅括完罨<膀ц. |
|
絎違ゃ潟<潟膰綵≪ц;憗. |
|
*/ |
|
/*&eg |
|
The details of the operators are described in Section \ref{sec:stackmachine}. |
|
Names of these constants may be represented by abbreviated forms. |
*/ |
*/ |
|
|