Benutzer-Werkzeuge

Webseiten-Werkzeuge


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