www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik µC mit assembler u. c++ befüllen


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moinsen

eine newbie-frage: macht es sinn einen µC teilweise mit assembler und 
teilweise mit c++ zu programmieren? z.b. würde ich gerne die ganze 
datenabwicklung (geschaufel von a nach b etc.) mit assembler schaukeln 
wollen und mit c++ einen tollen webbrowser programmieren?

da peter

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus meiner Sicht nicht !!!

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das interfacing zw. ASM und C++ ist wegen der Calling Convention etwas 
frickelig...
Einfacher: alles als C++ machen, ASM-Code als inline-asm einbinden...

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu braucht man Klassen, Mehrfachvererbung, Polymorphie usw auf einem 
µC???
Reicht da nicht auch reines C mit Inline ASM?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"tollen Webbrowser programmieren"

Ein Device mti Webbrowser in c++ programmieren und die Datenschauffelei 
mit ASM...interessant.Im Allgemeinenen stehen aktuelle Compiler in dem 
Ruf durchaus recht gut optimierten Code zu prodzieren. Deiner Frage nach 
zu urteilen bist du wohl noch Anfänger? Da wird der Compilercode 
wahrscheinlich nicht viel schlechter als dein ASM werden.

Vielleicht kannst du ja alles in c++ machen, dann sparst du dir das 
Koppeln.

Autor: payce (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lese Dir das hier mal durch und schaue dann, ob Du wirklich als Newbie 
den Einstieg als C + ASM Variante gestalten willst:

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

... glaub ich nicht. ;)

Erstmal bei C oder ASM bleiben. Bei einfachen Sachen bevorzuge ich nach 
wie vor ASM (weil man dann wenigstens 100% weiß, was passiert). Bei 
größeren Sachen - und ein Webbrowser (falls das ernst gemeint war) IST 
groß - lieber C. Ab einer bestimmten Größe von Proggis (meinetwegen 4 
kByte) finde ich stellen sich die Optimierungsalgorithmen von AVR-GCC zu 
99% schlauer an als man es als Normalsterblicher 
Hobbyisten-ASM-Programmierer je könnte.

Können solltest Du irgendwann beides. Manche Probleme in GCC lassen sich 
nur mit ASM Kenntnissen bewältigen. Größere Geschichten (Finite state 
machines bspw.) sind in C viiiiihiiiiel übersichtlicher und damit 
bug-unanfälliger zu programmieren.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für den link... newbie bin ich was die sache mit µC angeht, daher 
auch meine frage.

Gibt es sowas für reinen c++ - Code auch?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andere Alternative: Erstmal alles in C++ programmieren, und wenn dann 
was zu langsam ist, das gezielt in inline-ASM umsetzen. Ggf kannst du 
dir auch den vom Compiler erzeugten ASM-Code ansehen und von Hand 
optimieren, wenn da wirklich noch signifikant was rauszuholen sein 
sollte.

@Christian R.:

> Wozu braucht man Klassen, Mehrfachvererbung, Polymorphie usw auf einem
> µC???

Man kann C++ auch sinnvoll einsetzen, ohne jedes einzelne mögliche 
Feature verwendet zu haben. Auf vielen µCs gibt's kein Dateisystem. Darf 
ich dann C nicht einsetzen, weil man ja fopen nicht braucht?

> Reicht da nicht auch reines C mit Inline ASM?

Welchen Vorteil hat C denn deiner Meinung nach gegenüber C++?

Autor: Sajuuk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Lese Dir das hier mal durch und schaue dann, ob Du wirklich als Newbie
>den Einstieg als C + ASM Variante gestalten willst:

Also ich bin auch Newbie und hab mit C + ASM angefangen. Sehe da kein 
großes Problem.Allerdings hatte ich die Variante bevorzugt da ich 
anfangs kein Plan von C hatte.Mittlerweile (ca 3 Wochen später) mach ich 
fast alles in C und hab fast den gesamten ASM code ersetzt.Nun bin ich 
dabei meinen C Code zu verbessern also mehr mit Arrys, Zeigern, Switch 
usw. zu arbeiten(mein Code war sehr if verseucht :-) ).Also zum lernen 
find ich C + ASM super, da ich anfangs so mein Programm zum laufen 
bekommen habe was ich mit reinem C vermutlich nicht geschafft hätte.Aber 
ich denke wenn man von C/C++ mehr Ahnung als von ASM hat macht es wenig 
Sinn bei größer Sachen ASM zu verwenden, das ständige push..push..push 
und pop...pop..pop ist lästig und irgendwann verliert man total den 
Überblick.

Autor: Patrick Kaplan (kaplan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab mal versucht einfach die zeile
while (!(SPSR & (1<<SPIF)));  //warte auf SPIF

durch folgenden assembler code zu ersetzen.
asm volatile ("loop1:  \n\t"
                  "sbis spsr,spif \n\t"
                  "rjmp loop1      \n\t"
      ::);    


natuerlich klappt das nicht. aber warum?
laut AVr-LibC:
"You can use the same assembler instruction mnemonics as you'd use with 
any other AVR assembler."

und ATMELs source code:
Wait_transmit:
sbis spsr,spif
rjmp Wait_transmit

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.