Hallo zusammen, ich muss eine größere Menüstruktur auf einen Atmega in Assembler abbilden. Habe dabei statische Menüeinträge, teilweise aber auch dynamische Einträge ( weitere Punkte können angefügt oder gelöscht werden ). Dummerweise haben genau diese dynamischen Einträge auch nochmal 2 Ebenen Untermenüs... Mein erster Gedanke war eine "Case"-Lösung. Da tippe ich mir aber die Finger wund bei der vorgegebenen Struktur. Habe schon einiges durchsucht. Bin aber bisher noch nicht auf eine "universelle Bibliothek" gestossen. Kann mir hier vielleicht jemand helfen ? Danke, Pepe.
in ASM nicht ... aber ein array von strukturen die menüpunkte darstellen und bei aktionen auf eine funktion zeigen man kann dann einträge ins das array schreiben und schon fertig
nimm c++ fürs menu....und den rest...ggf inline asm für zeitkritische dinge...
mein Problem ist, dass wir mittlerweile ca. 30 verschiedene Schaltungen mit den unterschiedlichsten Anwendung auf Atmega's haben. Wir haben mittlerweile richtig viele einzelne "Teillösungen" für unsere täglichen Programmieraufgaben, aber alles in Assembler. Somit kann ich aus der Ecke nicht wirklich raus...
Pepe schrieb: > Wir haben mittlerweile richtig viele einzelne "Teillösungen" > für unsere täglichen Programmieraufgaben, aber alles in Assembler. Es ist gar nicht sooo unüblich, Teile des Codes in Assembler zu haben und andere Teile in C. Gerade wenn C für den entsprechenden Zweck besser geeignet ist, sehe ich eher wenig Sinn darin, hart auf Assembler zu bestehen? Siehe auch: Tinykon
Geb ich Dir vollkommen recht. Da wäre C sicherlich der bessere Ansatz. Nur haben wir in dem aktuellen Projekt knappe 17000 Zeilen in Assembler. Wie kann ich eigentlich außer als inline ASM Assembler in ein C Projekt einbinden ?
In C ganz einfach. Du lässt die Assembler-Dateien ganz normal in Objektcode übersetzen, erzeugst eine Headerdatei mit den Funktionsdeklarationen und gibst die Objektdatei als Quelle beim Linken mit an. Bei C++ packst du den Header in ein 'extern "C" {}' ein. (Damit der Linker die Funktionen findet und nicht nach den verkleideten C++ Namen sucht) So kannst du aber auch andersherum C Code in ein Object-File compilieren und anschliessend in ein Assemblerprojekt beim Linken als weiteres Objekt angeben um die darin enthaltenen Funktionen aus dem Assemblercode nutzen zu können.
Hi! >Habe dabei statische Menüeinträge, teilweise aber auch >dynamische Einträge ( weitere Punkte können angefügt oder >gelöscht werden ). Dummerweise haben genau diese dynamischen >Einträge auch nochmal 2 Ebenen Untermenüs... Ich denke das ist kein Problem der Prog.sprache sondern ein Konzeptproblem. Statische Menüs sind ja kein Probl., dynamische schon. Wenn die max. Anzahl dyn. feststeht geht das Ganze auch noch über einfache Statusbits und Adresszeiger(Menueintrag) die zum jeweiligen Menue gehören. Wenn aber absolut dynamisch, dann ist richtig Hirnschmalz gefragt, weil du ja alle möglichen Grenzen austesten musst. Ich will jetzt nicht ketzerisch sein, aber es könnte durchaus sein das das in C sogar sehr speicherfressend wird. Du kommst aber aus der ASM-Ecke und kannst vermutlich gut beurteilen wie das von dir gewollte umgesetzt wird. Viel Erfolg, Uwe
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.