實施SWAP我看到在interview with Chuck Moore,他說:在第四
操縱該堆棧的字是DUP,DROP和OVER時期。 有沒有,很好的SWAP非常方便,你想要它,但它不是 機器指令。
於是,我就在僅僅DUP
,DROP
和OVER
方面實現SWAP
,但無法弄清楚如何做到這一點,沒有至少增加堆棧。
這是怎麼回事?
實施SWAP我看到在interview with Chuck Moore,他說:在第四
操縱該堆棧的字是DUP,DROP和OVER時期。 有沒有,很好的SWAP非常方便,你想要它,但它不是 機器指令。
於是,我就在僅僅DUP
,DROP
和OVER
方面實現SWAP
,但無法弄清楚如何做到這一點,沒有至少增加堆棧。
這是怎麼回事?
你說得對,看起來很難或不可能,只是重複,放棄和結束。
我猜I21 可能也有某種返回堆棧操作,所以這會工作:
: swap over 2>r drop 2r> ;
編輯:在GA144,也沒有本地交換,它的實現如:
over push over or or pop
Push
和pop
指返回堆棧,or
實際上是XOR。見http://www.colorforth.com/inst.htm
標準第四是
: swap (a b -- b a) >r >r 2r> ;
或
: swap (a b -- b a) 0 rot nip ;
或
: swap (a b -- b a) 0 rot + ;
或
: swap (a b -- b a) 0 rot or ;
這不就是他的觀點嗎?也許我誤解了這個問題。 –
@AndréLaszlo他的觀點是,SWAP是通過其他指令來實現的,如DUP,DROP和OVER。但你怎麼做,而不增加堆棧? – sashoalm
「但是你怎麼做,不增加堆棧?」,甚至暫時? –