| Zeile 1: | Zeile 1: | ||
{{Baustelle|SprinterSB}} | {{Baustelle|SprinterSB}} | ||
| + | |||
| + | <center> | ||
| + | {| {{Blauetabelle}} | ||
| + | |+ '''Tabelle: vordefinierte Bezeichner/Makros | ||
| + | |- {{Hintergrund1}} | ||
| + | ! Bezeichner || Bedeutung | ||
| + | |- | ||
| + | |<tt>__SP_L__</tt> || unteres Byte des Stack-Pointers, für <tt>in</tt> bzw. <tt>out</tt> | ||
| + | |- | ||
| + | |<tt>__SP_H__</tt> || oberes Byte des Stack-Pointers, für <tt>in</tt> bzw. <tt>out</tt> | ||
| + | |- | ||
| + | |<tt>__SREG__</tt> || Status-Register, für <tt>in</tt> bzw. <tt>out</tt> | ||
| + | |- | ||
| + | |<tt>__tmp_reg__</tt> || ein Register zur temporären Verwendung (<tt>r0</tt>) | ||
| + | |- | ||
| + | |<tt>__zero_reg__</tt> || ein Register, das 0 enthält (<tt>r1</tt>) | ||
| + | |- | ||
| + | |<tt>lo8(''const'')</tt> || die unteren 8 Bit der Konstanten <tt>''const''</tt> | ||
| + | |- | ||
| + | |<tt>hi8(''const'')</tt> || Bits 8...15 der Konstanten <tt>''const''</tt> | ||
| + | |- | ||
| + | |<tt>hlo8(''const'')</tt> || Bits 16...23 der Konstanten <tt>''const''</tt> | ||
| + | |- | ||
| + | |<tt>hhi8(''const'')</tt> || Bits 24...31 der Konstanten <tt>''const''</tt> | ||
| + | |} | ||
| + | </center> | ||
| + | <center> | ||
| + | {| {{Blauetabelle}} | ||
| + | |+ '''Tabelle: asm-Platzhalter und ihre Modifier, Sonderzeichen''' | ||
| + | |- {{Hintergrund1}} | ||
| + | ! Platzhalter || wird ersetzt durch | ||
| + | |- | ||
| + | |<tt>%''n''</tt> || Wird ersezt durch Argument <tt>''n''</tt> mit <tt>''n''</tt> = 0...9 | ||
| + | |- | ||
| + | |<tt>%A''n''</tt> || das erste (untere) Register des Arguments <tt>''n''</tt> (Bits 0...7) | ||
| + | |- | ||
| + | |<tt>%B''n''</tt> || das zweite Register des Arguments <tt>''n''</tt> (Bits 8...15) | ||
| + | |- | ||
| + | |<tt>%C''n''</tt> || das dritte Register des Arguments <tt>''n''</tt> (Bits 16...23) | ||
| + | |- | ||
| + | |<tt>%D''n''</tt> || das vierte Register des Arguments <tt>''n''</tt> (Bits 24...31) | ||
| + | |- | ||
| + | |<tt>%a''n''</tt> || Ausgabe des Arguments als Adress-Register,<br/>also als <tt>x</tt>, <tt>y</tt> bzw. <tt>z</tt>. Erlaubt zusammen mit Constraint <tt>b</tt>, <tt>e</tt>, <tt>x</tt>, <tt>y</tt>, <tt>z</tt> | ||
| + | |- | ||
| + | |<tt>%~</tt> || wird auf AVR mit Flash bis max. 8kByte durch ein <tt>r</tt> ersetzt, ansonsten bleibt es leer.<br/>Zum Aufbau von Sprungbefehlen, etwa "<tt>%~call foo</tt>" | ||
| + | |- | ||
| + | |<tt>%=</tt> || eine für dieses asm-Template und die Übersetzungseinheit eindeutige Zahl.<br/>Zum Aufbau lokaler Sprungmarken. | ||
| + | |- {{Hintergrund1}} | ||
| + | ! Sequenz || wird ersetzt durch Sonderzeichen | ||
| + | |- | ||
| + | |<tt>%%</tt> || das <tt>%</tt>-Zeichen selbst | ||
| + | |- | ||
| + | |<tt>\n</tt> || ein Zeilenumbruch<br/>zum Trennen mehrerer asm-Befehle/Zeilen | ||
| + | |- | ||
| + | |<tt>\t</tt> || ein TAB, zur Übersichtlichkeit im erzeugten asm | ||
| + | |- | ||
| + | |<tt>\"</tt> || ein <tt>"</tt> wird eingefügt | ||
| + | |- | ||
| + | |<tt>\\</tt> || das <tt>\</tt>-Zeichen selbst | ||
| + | |- {{Hintergrund1}} | ||
| + | ! Kommentar || Beschreibung | ||
| + | |- | ||
| + | |<tt>; ''Text''</tt> || einzeiliger Kommentar bis zum Ende des Templates bzw. nächsten Zeilenumbruch | ||
| + | |- | ||
| + | |<tt>/* ''Text'' */</tt> || mehrzeiliger Kommentar wie in C | ||
| + | |} | ||
| + | </center> | ||
<center> | <center> | ||
Version vom 1. März 2006, 12:23 Uhr
|
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. |
| 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 |
| 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 |
| Contraint | Erklärung | Wertebereich |
|---|---|---|
| a | einfache obere Register | r16...r23 |
| b | Pointer-Register | y, z |
| d | obere Register | r16...r31 |
| e | Pointer-Register | x, y, z |
| G | Floatingpoint-Konstante | 0.0 |
| i | Konstante | |
| I | positive 6-Bit-Konstante | 0...63 |
| J | negative 6-Bit Konstante | -63...0 |
| K | Konstante | 2 |
| L | Konstante | 0 |
| l | untere Register | r0...r15 |
| M | 8-Bit Konstante | 0...255 |
| N | Konstante | -1 |
| O | Konstante | 8, 16, 24 |
| P | Konstante | 1 |
| q | Stack-Pointer | SPH:SPL |
| r | ein Register | r0...r31 |
| t | Scratch-Register | r0 |
| w | Obere Register-Paare | r24, r26, r28, r30 |
| x | Pointer-Register X | x (r27:r26) |
| y | Pointer-Register Y | y (r29:r28) |
| z | Pointer-Register Z | z (r31:r30) |
| 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 | ||||||||||
