OpenBoot 2.x コマンド・リファレンスマニュアル

演算機能の使用方法

表 4-4 に示すコマンドは、データスタック上の項目に対する基本演算コマンドです。

表 4-4 演算機能

コマンド 

スタックダイアグラム 

説明 

+

( nu1 nu2 -- sum ) 

nu1 + nu2の加算を行います。

-

( nu1 nu2 -- diff ) 

nu1 - nu2の減算を行います。

*

( nu1 nu2 -- prod ) 

nu1 * nu2の乗算を行います。

/

( n1 n2 -- quot ) 

n1n2 で割ります。剰余は捨てられます。

/mod

( n1 n2 -- rem quot ) 

n1 / n2の剰余と商。

<<

( x1 u -- x2 ) 

lshiftの同義語。

>>

( x1 u -- x2 ) 

rshiftの同義語。

>>a

( x1 u -- x2 ) 

x1u ビット 右に算術シフトします。

*/

( n1 n2 n3 -- quot ) 

n1 * n2 / n3

*/mod

( n1 n2 n3 -- rem quot ) 

n1 * n2 / n3の剰余と商。

1+

( nu1 -- nu2 ) 

1を足します。 

1-

( nu1 -- nu2 ) 

1を引きます。 

2*

( nu1 -- nu2 ) 

2 を掛けます。 

2+

( nu1 -- nu2 ) 

2 を足します。 

2-

( nu1 -- nu2 )  

2 を引きます。 

2/

( nu1 -- nu2 ) 

2 で割ります。 

abs

( n -- u ) 

絶対値。 

aligned

( n1 -- n1 | a-addr) 

n1 を次の 4 の整数倍に切り上げます。

and

( n1 n2 -- n3 ) 

ビット単位の論理積。

bounds

( startaddr len -- endaddr startaddr ) 

do ループ用に startaddr lenendaddr startaddr に変換します。

bljoin

( b.low b2 b3 b.hi -- quad ) 

4 バイトを結合して 32 ビットの 4 バイトワードを作ります。 

bwjoin

( b.low b.hi -- word ) 

2 バイトを結合して 16 ビットのワードを作ります。 

d+

(d1 d2 -- d.sum ) 

2 つの 64 ビット数値の加算を行います。 

d-

(d1 d2 --d.diff ) 

2 つの 64 ビット数値の減算を行います。 

even

( n -- n | n+1 ) 

最も近い偶数の整数 >= n に丸めます。

fm/mod

( d n -- rem quot ) 

d を n で割ります。

invert

( x1 -- x2 ) 

x1の全ビットを反転します。

lbflip

( quad1 -- quad2 ) 

32 ビットの 4 バイトワード内のバイトをスワップします。 

lbsplit

( quad -- b.low b2 b3 b.hi ) 

32 ビットの 4 バイトワードを 4 バイトに分割します。 

lwflip

( quad1 -- quad2 ) 

32 ビットの 4 バイトワードの半分をスワップします。  

lwsplit

( quad -- w.low w.hi ) 

32 ビットの 4 バイトワードを 2 つの 16 ビットワードに分割します。 

lshift

( x1 u -- x2 ) 

x1u ビット左シフトし、下位ビットにゼロを埋め込みます。

max

( n1 n2 -- n3 ) 

n1n2 の大きいほうの値を n3 とします。

min

( n1 n2 -- n3 ) 

n1n2 の小さいほうの値を n3 とします。

mod

( n1 n2 -- rem ) 

n1 / n2 の剰余を計算します。

negate

( n1 -- n2 ) 

n1 の符号を変更します。

not

( x1 -- x2 ) 

invert の同義語。

or

( n1 n2 -- n3 ) 

ビット単位の論理和。 

rshift

( x1 u -- x2 ) 

x1u ビット右シフトし、上位ビットにゼロを埋め込みます。

s>d

( n1 -- d1 ) 

数値を倍精度数に変換します。 

sm/rem

( d n -- rem quot ) 

d を n で割ります。対称除算。

u2/

( x1 -- x2 ) 

1 ビット右へ論理シフトし、上位ビットにゼロをシフトします。 

u*

(u1 u2 -- uprod ) 

符号なしの 2 つの数値を乗算し、符号なしの積を生じます。 

u/mod

( u1 u2 -- urem uquot ) 

符号なし 32 ビット数値を符号なし 32 ビット数値で割り、32 ビットの剰余と商を生じます。 

um*

( u1 u2 -- ud ) 

符号なしの 2 つの 32 ビット数値を乗算し、符号なし倍精度数の積を生じます。 

um/mod

( ud u -- urem uprod ) 

ud を u で割ります。

wbflip

( word1 -- word2 ) 

16 ビットワード内のバイトをスワップします。 

wbsplit

( word -- b.low b.hi ) 

16 ビットワードを 2 バイトに分割します。 

wljoin

( w.low w.hi -- quad ) 

2 ワードを結合して 4 バイトワードを作ります。 

xorxor

( x1 x2 --x3 ) 

ビット単位排他的の論理和。