DROP
: drop ( x1 --- ) sp@ 1 cells + \ Prinzip: Stackpointer inkrementieren. (Beispiel aus gForth) sp! ;
In diesem theoretischen Beispiel wächst der Stack physikalisch hin zu niedrigeren Adressen. Daher wird durch inkrementieren des Stackpointers um eine CELL-Breite das drop
realisiert. Die logische Richtung und die physikalische Richtung stimmen hier nicht überein. Gewöhnlich wird drop
in Maschinencode geschrieben und nicht in High-Level-Forth.
Als praktisches Beispiel in Assembler für den Maschinencode dient das MVP-forth für den 6502. Es ist ein 16-bit Forth implementiert auf einer 8-bit Maschine. 1 CELLS ist daher 2 in diesem System.
Das X-Register im 6502 wurde als Stackpointer benutzt. Der Stack wuchs physikalisch auch hier in Richtung niedrigerer Adressen. Daher konnte der Stackpointer durch zweimaliges inkrementieren des X-Registers eine Zelle höher gestellt werden - was logisch ein drop
ergibt.
DROP DA DROP+2 JMP POP ... POP INX INX JMP NEXT
Das Beispiel zeigt auch folgendes: Um eine zentrale Stelle für das Inkrement des Stackpointers zu haben wurde pop
angelegt. Und alle Code-Sequenzen, die zuletzt noch ein Datenwert vom Stack entfernen müssen, können dort hin springen.