Forum: Mikrocontroller und Digitale Elektronik AVR-ASM: .def Cassensitive?


von QQQ (Gast)


Lesenswert?

Wenn ich per .def einen Aliasnamen für ein Register festlege, zb. leds, 
spielt es dann eine Reolle, ob ich im Code LEDS schreibe oder ist das 
egal?

MfG

von Gad Z. (gad)


Lesenswert?

Das ist egal. Groß oder Kleinschreibung spielt da keine Rolle.
Auch bei den ASM befejlen kannst es Dir aussuchen, ob Du sie groß oder 
klein schreibst.
Zumindest ist das beim AVR-Studio so. Falls du ein anderen Compiler 
benutzt, probiere es einfach aus. Wenn es nicht egal ist, dann wird 
schon eine Fehlermeldung beim compilieren bekommen...

von max power (Gast)


Lesenswert?

>Zumindest ist das beim AVR-Studio so.
ebenfalls bei avra für linux

von Mikki M. (mmerten)


Lesenswert?

In der aktuellen Version von AVR Studio 4.18 SP2 kann man mit -c aber 
auch Unterscheidung beim Assembler erzwingen.

von Hc Z. (mizch)


Lesenswert?

avr-as (der zur gcc-Toolchain gehörige Assembler) ist case-sensitiv. 
Der unterscheidet also zwischen led und LED.

von QQQ (Gast)


Lesenswert?

Da habe ich mal Glück gehabt, ich dachte schon, ich muss mein 251kB 
(kompiliert) großes Programm noch mal schreiben.

von Karl H. (kbuchegg)


Lesenswert?

QQQ schrieb:
> Da habe ich mal Glück gehabt, ich dachte schon, ich muss mein 251kB
> (kompiliert) großes Programm noch mal schreiben.


Nimm dir trotzdem einen Editor und bereinige das mittels 'Suchen & 
Ersetzen'. Auf lange Sicht ist das nämlich immer ein Stein der 
Verwirrung.

Und wer darauf baut, dass 'led' und 'LED' 2 unterschiedliche Labels 
sind, sollte
* am Obfuscated Assembler Code Contest teilnehmen
* mit dem nassen Fetzen erschlagen werden

von Peter D. (peda)


Lesenswert?

QQQ schrieb:
> Da habe ich mal Glück gehabt, ich dachte schon, ich muss mein 251kB
> (kompiliert) großes Programm noch mal schreiben.

Wer kommt denn nur auf so verrückte Ideen, 251kB in Assembler zu 
schreiben?

Meine Schmerzgrenze liegt bei 2kB, darüber ist C deutlich besser.

Irgendwann verliert man in Assembler den Überblick und pusht/popt sich 
zu Tode oder hat nen riesen Wust an Spaghetticode.


251kB Assembler-Monster in C umgeschrieben, würden höchstens halb so 
groß sein und doppelt so schnell laufen.
Von der besseren Fehlersuche, Wartbarkeit und Erweiterbarkeit ganz 
abgesehen.


Peter

von QQQ (Gast)


Lesenswert?

Peter Dannegger schrieb:
> 251kB Assembler-Monster in C umgeschrieben, würden höchstens halb so
> groß sein und doppelt so schnell laufen.
> Von der besseren Fehlersuche, Wartbarkeit und Erweiterbarkeit ganz
> abgesehen.

Glaube ich nicht, ausserdem würde es in C kaum funktionieren. Es handelt 
sich um ein automatisches Steuersystem für meine Jacht, mit GPS, Radar, 
Sonar, Mp3-Player und Fersteuerung fürs Funkgerät mit 
Packetradiodecoder. Dazu noch Grafikausgabe mit 800*600 auf einem VGA 
Monitor mit 1024 Farben und Maussterung. Das alles läuft auf einem 
Atmega256. Daher die Größe.

von Karl H. (kbuchegg)


Lesenswert?

QQQ schrieb:
> Peter Dannegger schrieb:
>> 251kB Assembler-Monster in C umgeschrieben, würden höchstens halb so
>> groß sein und doppelt so schnell laufen.
>> Von der besseren Fehlersuche, Wartbarkeit und Erweiterbarkeit ganz
>> abgesehen.
>
> Glaube ich nicht,

glaub ich schon.

> ausserdem würde es in C kaum funktionieren.

Wahrscheinlich besser, als das was du da hast.

> Es handelt
> sich um ein automatisches Steuersystem für meine Jacht, mit GPS, Radar,
> Sonar, Mp3-Player und Fersteuerung fürs Funkgerät mit
> Packetradiodecoder.

Das schreit geradezu danach in einer Hochsprache gemacht zu werden.

> Dazu noch Grafikausgabe mit 800*600 auf einem VGA
> Monitor mit 1024 Farben und Maussterung. Das alles läuft auf einem
> Atmega256. Daher die Größe.

Aha. Dein Programm ist also 256KB gross, weil das Flash deines Mega 256K 
gross ist. Alles klar

von QQQ (Gast)


Lesenswert?

236kB nach Optimierungen
Und nun bitte schließen, das eigentliche Problem ist gelöst, daher 
möchte ich nicht, dass hier ein Krieg über ASM und C ausbricht.

von Karl H. (kbuchegg)


Lesenswert?

Das will niemand.

Eines muss ich noch los werden:
Wer 250 K Assembler programmiert und vor allen Dingen debuggt, hat 
meinen Respekt verdient. Also: Respekt

von Falk B. (falk)


Lesenswert?

@   Karl heinz Buchegger (kbuchegg) (Moderator)

>Eines muss ich noch los werden:
>Wer 250 K Assembler programmiert und vor allen Dingen debuggt, hat
>meinen Respekt verdient. Also: Respekt

Du lässt dich wohl auch von großen Zahlen beeindrucken, was?
250K sagt nicht viel.

Ausserdem ist scheinbar dein Ironiedetektor kaputt.

>Glaube ich nicht, ausserdem würde es in C kaum funktionieren. Es handelt
>sich um ein automatisches Steuersystem für meine Jacht, mit GPS, Radar,
>Sonar, Mp3-Player und Fersteuerung fürs Funkgerät mit
>Packetradiodecoder. Dazu noch Grafikausgabe mit 800*600 auf einem VGA
>Monitor mit 1024 Farben und Maussterung. Das alles läuft auf einem
>Atmega256. Daher die Größe.

Hier will uns mal wieder jemand ordentlich veräppeln. Mal abgesehen 
davon, dass so ein Wust an Funktion auch locker in C zu machen ist, 
glaub ich kaum, dass jemand das programmiert und DANCH fragt, ob der 
Assembler case sensitive ist . .  .
Von der Sinnhaftigkeit dieses Wundergeräts mal ganz zu schweigen. Ich 
ordne das mal unter Seemansgarn ein ;-)

Ahoi
Falk

von QQQ (Gast)


Lesenswert?

Falk Brunner schrieb:
> Von der Sinnhaftigkeit dieses Wundergeräts mal ganz zu schweigen.

Ein einfaches All-in-one Display, welches (hoffentlich) wesentlich 
weniger störanfällig ist, als würde man das alles auf einem PC machen.

von Karl H. (kbuchegg)


Lesenswert?

QQQ schrieb:
> Falk Brunner schrieb:
>> Von der Sinnhaftigkeit dieses Wundergeräts mal ganz zu schweigen.
>
> Ein einfaches All-in-one Display, welches (hoffentlich) wesentlich
> weniger störanfällig ist, als würde man das alles auf einem PC machen.

Das stellt wohl niemand in Frage.
Alleine das "(hoffentlich)" macht mich stutzig.
Aber das ist deine Sache, dein Leben hängt davon ab. Genau aus zb diesem 
Grund sieht PeDa das genauso wie ich. Bei derartigen Codegrößen ist es 
schon extrem schwer in Assembler noch den Überblick über 
Registerbenutzung, was liegt wo am Stack etc. zu behalten. Wir 
überlassen solche Dinge dann lieber einem Compiler. Der macht das 
zuverlässiger als wir das je könnten.

von Peter D. (peda)


Lesenswert?

QQQ schrieb:
> Glaube ich nicht, ausserdem würde es in C kaum funktionieren. Es handelt
> sich um ein automatisches Steuersystem für meine Jacht, mit GPS, Radar,
> Sonar, Mp3-Player und Fersteuerung fürs Funkgerät mit
> Packetradiodecoder. Dazu noch Grafikausgabe mit 800*600 auf einem VGA
> Monitor mit 1024 Farben und Maussterung. Das alles läuft auf einem
> Atmega256. Daher die Größe.

Warum diese paar Aufgaben einen so großen Code benötigen sollen, kann 
ich nicht nachvollziehen.

Und solange der AVR nicht die MP3-Dekodierung macht, sieht das auch 
nicht sonderlich CPU-lastig aus.
Daten von einer SD-Karte zum MP3-Chip zu schaufeln, macht man üblicher 
Weise in C, weil die FAT-Libs alle schon in C geschrieben sind. Wenn ich 
mich recht erinnere, gibts MP3-Player Beispiele mit ATmega8.

Eventuell könnte es Sinn machen, das Timing für die Grafiksteuerung in 
Assembler zu schreiben, wenn der AVR es selber machen muß und kein 
Grafikchip benutzt wird.
Aber das sind dann nur wenige Assemblerzeilen im Interrupthandler.


Es sei denn, von den 236kB sind >200kB nur Bitmaps, dann ist die Größe 
nachvollziehbar.


Peter

von Falk B. (falk)


Lesenswert?

@  Peter Dannegger (peda)

>Es sei denn, von den 236kB sind >200kB nur Bitmaps, dann ist die Größe
>nachvollziehbar.

Du bist aber auch ein Schelm ;-)

MfG
Falk

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
Noch kein Account? Hier anmelden.