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