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

スタックの操作

スタック操作用のコマンド (表 4-3で説明) では、スタック上の項目の追加、削除、並べ替えができます。

表 4-3 スタック操作コマンド

コマンド 

スタックダイアグラム 

説明 

clear

( ??? -- ) 

スタックを空にします。 

depth

( ... -- ... u ) 

スタック上の項目数を返します。 

drop

( x -- ) 

一番上のスタック項目を削除します。 

2drop

( x1 x2 -- ) 

スタックから 2 つの項目を削除します。 

3drop

( x1 x2 x3 -- ) 

スタックから 3 つの項目を削除します。 

dup

( x -- x x )  

一番上のスタック項目を複製します。 

2dup

( x1 x2 -- x1 x2 x1 x2 ) 

2 つのスタック項目を複製します。 

3dup

( x1 x2 x3 -- x1 x2 x3 x1 x2 x3 ) 

3 つのスタック項目を複製します。 

?dup

( x -- x x | 0 ) 

一番上のスタック項目がゼロ以外の場合、複製します。 

nip

( x1 x2 -- x2 ) 

2番目のスタック項目を削除します。 

over

( x1 x2 -- x1 x2 x1 ) 

2 番目のスタック項目をスタックの一番上にコピーします。 

2over

( x1 x2 x3 x4 -- x1 x2 x3 x4 x1 x2 ) 

初めから 2 つのスタック項目をコピーします。 

pick

( xu ... x1 x0 u -- xu ... x1 x0 xu ) 

u 番目のスタック項目をコピーします (1 pick = over)。

>r

( x -- ) (R: -- x ) 

スタック項目を復帰スタックに転送します。 

r>

( -- x ) ( R: x -- ) 

復帰スタック項目をスタックに転送します。 

r@

( -- x ) ( R: x -- x ) 

復帰スタックの一番上をスタックにコピーします。  

roll

( xu ... x1 x0 u -- xu-1 ... x1 x0 xu ) 

u 箇のスタック項目を回転します (2 roll = rot)。

rot

( x1 x2 x3 -- x2 x3 x1 ) 

3 つのスタック項目を逆方向に回転します。 

-rot

( x1 x2 x3 -- x3 x1 x2 ) 

3 つのスタック項目を逆方向に回転します。 

2rot

( x1 x2 x3 x4 x5 x6 -- x3 x4 x5 x6 x1 x2 ) 

3 対のスタック項目を回転します。 

swap

( x1 x2 -- x2 x1 ) 

一番上の 2 つのスタック項目を入れ換えます。 

2swap

( x1 x2 x3 x4 -- x3 x4 x1 x2 ) 

2 対のスタック項目を入れ換えます。 

tuck

( x1 x2 -- x2 x1 x2 ) 

一番上のスタック項目を 2 番目の項目の下にコピーします。 

代表的なスタック操作の用途は、次の例に示すように、すべてのスタック項目を保持しておきながら、一番上のスタック項目を表示することです。


5 77 ok dup     (一番上のスタック項目を複製) 
5 77 77 ok .    (一番上のスタック項目を削除し、表示) 
77 
5 77 ok