words:kernel_embedded:stack:over
OVER
Das Beispiel in high-level-forth soll das Prinzip zeigen. over
wird in der Regel in Maschinencode geschrieben. Vergleiche auch DROP
.
: over ( x1 x2 -- x1 x2 x1 ) sp@ 1 cells + @ ;
Hier ein praktisches Beispiel in Assembler für den 6502; siehe auch unter DROP
.
OVER DA OVER+2 LDA $2,X PHA LDA $3,X JMP PuSH ... PUSH DEX DEX PUT STA 1,x PLA STA 0,X JMP NEXT
In diesem Beispiel wird der zweite Wert vom Stack geholt, der Stackpointer dann um eine Zelle raufgesetzt, um dort den Wert wieder abzulegen. In der 8-bit-Maschine des 6502 wird der 16-bit-Wert vom Stack in zwei Schritten über das Accumulator-Register A transportiert. Das Register A ist indiziert adressierbar. Bei dem Vorgang muss ein Wert auf dem Returnstack der Maschine zwischengelagert werden. Die Routine PUSH wird im System von vielen Code-Definitions benutzt.
words/kernel_embedded/stack/over.txt · Zuletzt geändert: 2010-12-29 18:12 von 127.0.0.1