Guten Tag! Könnt ihr mir bitte auf eine Anleitung für Assembler Hinweis geben? Das Problem: wenn ich mit C zusammen Assembler als *.S File benutzen möchte, geht dort vieles nicht, was in AVR-Assembler von AVR Studio geht. Und ich finde nirgendwo eine Anleitung genau für diesen Fall. Mit Assembler in AVR Studio kein Problem: dort gibt es Help. Wenn ich aber Assembler-Anleitung für GCC suche, komme ich nur auf Inline-Assembler. Ich möchte aber besser jetzt Assembler von GCC für AVR kennenlernen. Beispiel auf http://www.nongnu.org/avr-libc/user-manual/assembler.html ist leider rudimentär. Als Beispiel, was mit Assembler von GCC für AVR nicht klappt: byte3(@0) in Macro #define byte8(x) (x>>56)&0xff - keine Wirkung. usw. Also, Anleitung für Assembler, welche als *.S mit C-Compiler funktioniert. Was ist dort möglich und was nicht. Vielen Dank im voraus!
Maxim B. schrieb: > #define byte8(x) (x>>56)&0xff - keine Wirkung. was soll den deiner meinung nach passieren bei einem 8Bit AVR
Maxim B. schrieb: > Assembler in AVR Studio kein Problem: dort gibt es Help. Wenn ich aber > Assembler-Anleitung für GCC suche, komme ich nur auf Inline-Assembler. Dann suchst du falsch.. Der Assembler nennt sich Gas (für Gnu Assembler), und ist natürlich komplett dokumentiert. https://sourceware.org/binutils/docs/as/ Die Eigenheiten, die beim Zugriff auf AVR-Register zu beachten sind, findest du dann in der Doku zur avrlibc. Oliver
Maxim B. schrieb: > Guten Tag! > Könnt ihr mir bitte auf eine Anleitung für Assembler Hinweis geben? > Das Problem: wenn ich mit C zusammen Assembler als *.S File benutzen > möchte, geht dort vieles nicht, was in AVR-Assembler von AVR Studio > geht. Stimmt nicht. > Und ich finde nirgendwo eine Anleitung genau für diesen Fall. https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Assembler_und_Inline-Assembler https://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en591235 Mehr braucht es nicht. Man muss aber beachten, daß man dann mit dem gcc Assembler arbeitet, der hat teilweise leicht andere Syntax! > byte3(@0) in Macro > #define byte8(x) (x>>56)&0xff - keine Wirkung. > usw. Beitrag "Re: Frage zu IR-Remote+LED-Strips an AVR" Dort ist ein Makro drin, vielleicht hilft es für den Anfang.
Falk B. schrieb: > https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Assembler_und_Inline-Assembler Das ist gerade was ich "rudimentär" nenne. Ein paar Beeispiele ohne systematisch zu gehen.
Thomas Z. schrieb: > was soll den deiner meinung nach passieren bei einem 8Bit AVR Mit Assembler aus AVR Studio funktioniert das wunderschön:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
Oliver S. schrieb: > Der Assembler nennt sich Gas (für Gnu Assembler), und ist natürlich > komplett dokumentiert. > > https://sourceware.org/binutils/docs/as/ Danke! Nun lese ich das alles.
Maxim B. schrieb: > Das ist gerade was ich "rudimentär" nenne. Ein paar Beeispiele ohne > systematisch zu gehen. Warum machst Du Dich dann nicht an eine umfassende Beschreibung? Suche Dir halt alle Teile zusammen und baue etwas für die Nachwelt :-). Man wird es Dir sicher danken.
Hugo H. schrieb: > Suche > Dir halt alle Teile zusammen und baue etwas für die Nachwelt :-). Das ist aber nicht mein Job. Ich bin ein Profi für andere Sachen. Wenn du mal eine Orgelfuge brauchst... Was aber Assembler und C betrifft, frage ich lieber bei klugen Menschen :) Bisher habe ich z.B. nicht gefunden, wie ich byte3 und byte4 aus einer Konstante heraushole. Nur lo8(x)und hi8(x).
Gast
#6688078
Hi >Bisher habe ich z.B. nicht gefunden, wie ich byte3 und byte4 aus einer >Konstante heraushole. Nur lo8(x)und hi8(x). Im AVR-Assembler gibt es nur low(expression) oder byte0(expression) high(expression) oder byte1(expression) byte2(expression) byte3(expression) MfG spess
Spess53 schrieb: > Hi > >>Bisher habe ich z.B. nicht gefunden, wie ich byte3 und byte4 aus einer >>Konstante heraushole. Nur lo8(x)und hi8(x). > > Im AVR-Assembler gibt es nur > > low(expression) oder byte0(expression) > high(expression) oder byte1(expression) > byte2(expression) > byte3(expression) > > MfG spess Und mit "Assembler von C" arbeitet byte3(expression) nicht. Auch Versuch, mit #define fehlende Möglichkeit zu schaffen, scheitert, während mit AVR-Assembler problemlos bis 8 bytes arbeitet, mehr leider nicht. Dank Oliver S. schon einiges gefunden: Äquivalente für byte3() und byte4() sind hh8 und hhi8. D.h. AVR Assembler C Assembler low lo8 high hi8 byte3 hh8 byte4 hhi8
Maxim B. schrieb: > Bisher habe ich z.B. nicht gefunden, wie ich byte3 und byte4 aus einer > Konstante heraushole. Nur lo8(x)und hi8(x). https://sourceware.org/binutils/docs/as/AVR_002dModifiers.html
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.