====== 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.