Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter fuer schwierige und grosse Gaerten im Test

Baustelle.gif An diesem Artikel arbeitet gerade Mitglied SprinterSB.

Am besten momentan noch keine gravierenden Ergänzungen / Änderungen vornehmen.

Dieser Hinweis verschwindet wenn der Autor soweit ist. Sollte dieser Hinweis länger als drei Tage auf einer Seite sein, bitte beim Autor SprinterSB per PM / Mail oder Forum nachfragen ob er vergessen wurde.

Tabelle: vordefinierte Bezeichner/Makros
Bezeichner Bedeutung
__SP_L__ unteres Byte des Stack-Pointers, für in bzw. out
__SP_H__ oberes Byte des Stack-Pointers, für in bzw. out
__SREG__ Status-Register, für in bzw. out
__tmp_reg__ ein Register zur temporären Verwendung (r0)
__zero_reg__ ein Register, das 0 enthält (r1)
lo8(const) die unteren 8 Bit der Konstanten const
hi8(const) Bits 8...15 der Konstanten const
hlo8(const) Bits 16...23 der Konstanten const
hhi8(const) Bits 24...31 der Konstanten const
Tabelle: asm-Platzhalter und ihre Modifier, Sonderzeichen
Platzhalter wird ersetzt durch
%n Wird ersezt durch Argument n mit n = 0...9
%An das erste (untere) Register des Arguments n (Bits 0...7)
%Bn das zweite Register des Arguments n (Bits 8...15)
%Cn das dritte Register des Arguments n (Bits 16...23)
%Dn das vierte Register des Arguments n (Bits 24...31)
%an Ausgabe des Arguments als Adress-Register,
also als x, y bzw. z. Erlaubt zusammen mit Constraint b, e, x, y, z
%~ wird auf AVR mit Flash bis max. 8kByte durch ein r ersetzt, ansonsten bleibt es leer.
Zum Aufbau von Sprungbefehlen, etwa "%~call foo"
%= eine für dieses asm-Template und die Übersetzungseinheit eindeutige Zahl.
Zum Aufbau lokaler Sprungmarken.
Sequenz wird ersetzt durch Sonderzeichen
%% das %-Zeichen selbst
\n ein Zeilenumbruch
zum Trennen mehrerer asm-Befehle/Zeilen
\t ein TAB, zur Übersichtlichkeit im erzeugten asm
\" ein " wird eingefügt
\\ das \-Zeichen selbst
Kommentar Beschreibung
; Text einzeiliger Kommentar bis zum Ende des Templates bzw. nächsten Zeilenumbruch
/* Text */ mehrzeiliger Kommentar wie in C
Tabelle: Constraints und ihre Bedeutung
Contraint Register Wertebereich   Contraint Konstante Wertebereich
a einfache obere Register r16...r23 G Floatingpoint-Konstante 0.0
b Pointer-Register y, z i Konstante  
d obere Register r16...r31 I positive 6-Bit-Konstante 0...63
e Pointer-Register x, y, z J negative 6-Bit Konstante -63...0
l untere Register r0...r15 K Konstante 2
q Stack-Pointer SPH:SPL L Konstante 0
r ein Register r0...r31 M 8-Bit Konstante 0...255
t Scratch-Register r0 N Konstante -1
w Obere Register-Paare r24, r26, r28, r30 O Konstante 8, 16, 24
x Pointer-Register X x (r27:r26) P Konstante 1
y Pointer-Register Y y (r29:r28)  
z Pointer-Register Z z (r31:r30)  
Tabelle: Übersicht AVR-Instruktionen und passende Constraints
Mnemonic Constraint   Mnemonic Constraint   Mnemonic Constraint   Mnemonic Constraint  
adc r,r add r,r adiw w,I and r,r
andi d,M asr r bclr I bld r,I
brbc I,label brbs I,label bset I bst r,I
cbi I,I cbr d,I com r cp r,r
cpc r,r cpi d,M cpse r,r dec r
elpm t,z eor r,r in r,I inc r
ld r,e ldd r,b ldi d,M lds r,label
lpm t,z lsl r lsr r mov r,r
movw r,r mul r,r neg r or r,r
ori d,M out I,r pop r push r
rol r ror r sbc r,r sbci d,M
sbi I,I sbic I,I sbiw w,I sbr d,M
sbrc r,I sbrs r,I ser d st e,r
std b,r sts label,r sub r,r subi d,M
swap r  

LiFePO4 Speicher Test