Forum: Offtopic Assembler wieder auf dem Weg nach vorn


von Moby A. (moby-project) Benutzerseite


Lesenswert?

Johann L. schrieb:
> Ein nicht unwesentlicher Teil des Codes besteht aus der Initialisierung

Darin könnte ein Grund liegen, warum in diesem Fall Asm nicht viel 
rausholt.
Auch das zweite Progrämmchen ist viel zu kurz dafür. Das sind allerdings 
nur grobe Vermutungen. Genauso wie ich glaube: Das eine oder andere 
Byte'chen wird man dennoch aus dem Flash und dem SRAM (!) erübrigen 
können.

Nutz doch die Zeit besser, um das bischen Funktionalität meines Projekts 
zu codieren. Das kann ich sofort vergleichen...

Frank M. schrieb:
> Moby A. schrieb:
>> Da ist noch laaaange kein Ende ;-)
>
> Nur eine Behauptung.

Du meine Güte, sitze gerade an einem Projektchen welches wieder mal die 
1K Grenze gesprengt hat- was ist das bloß für ein Unsinn, die sinnvolle 
Möglichkeit dessen in Frage zu stellen ;-(

Wenn hier schon niemand fähig ist, einen 200 Byte Code ein für alle Mal 
vergleichbar und Diskussions-beendend in C zu schreiben, was werde ich 
dann erst bei einem fünfmal so großen Projekt erwarten dürfen?

Da werden dann schlußendlich wieder nur "Experten" sein, die ihr 
Expertentum in erster Linie mit Lächerlichmachen, Hohn und Spott 
beweisen ;-)

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Markus M. schrieb:
> DU prahlst mit deinen 200Byte Gefrickel was von
> Überlegenheit.

Hier prahlt niemand, sondern da zeigt jemand die Schwächen von C auf. 
;-)

> Verstehe diese Wortanhäufung nicht.

Ich verstehe die Notwendigkeit häufiger Architekturwechsel auch nicht 
;-)

> Und ich behaupte jetzt, dass auch alle deine 200Byte Projektchen in C
> effektiver zu programmieren sind.

Na ja, ich kann warten. Hoffentlich warte ich nicht umsonst ;-)

von Robert L. (lrlr)


Lesenswert?

Was genau willst du eigentlich?

Die Frage ist Ernst gemeint (also kein ;-) )!

Ich persönlich mag C ja auch nicht (überhaupt nicht).
Schreibe normalerweise in Pascal.
(hab C64, Amiga500 und 80x86 in ASM Programmiert.. aber nur 
"Kinderkram",..)

Grundsätzlich wäre ich der ERSTE der lieber nicht in C schreiben würde..
Aber man nimmt dann eben das geringste übel..

Mich konntest bisher noch nicht davon überzeugen dass ich irgend eine 
Vorteil durch ASM am AVR hätte. Vorallem nicht ASM-Only..
Du bist also zumindest mal ein schlechter "Lehrer"/Verkäufer..

Ich Persönlich glaub aber auch, dass es hier garnicht um ASM vs. C
oder ASM vs. Hochsprache. geht.

Sondern um "Code von anderen Wiederverwenden"  vs. alles "Selber 
schreiben wollen"..

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> Du meine Güte, sitze gerade an einem Projektchen welches wieder mal die
> 1K Grenze gesprengt hat- was ist das bloß für ein Unsinn, die sinnvolle
> Möglichkeit dessen in Frage zu stellen ;-(

Natürlich glaube ich, dass Du ASM-Code von 1KB Größe zusammentackern 
kannst. Aber wie kommst Du auf den abstrusen Gedanken, ein adäquates 
C-Programm wäre hier schlechter? Du hast weder ein entsprechendes 
C-Programm vorzuweisen noch kannst Du in C programmieren. Ich nenne das 
anmaßend.

Nur Behauptungen, nichts dahinter.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Nur Behauptungen, nichts dahinter.
Das war schon vor 1248 Posts vorher der Fall.


PS: Ist mir klar, dass dieser Post sinnlos ist, ich wollte nur unbedingt 
den 1250. Post hier schreiben. Zum Glück hat sich dadurch das Niveau 
nicht nenneswert geändert...

: Bearbeitet durch Moderator
von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Lothar M. schrieb:
> Ist mir klar, dass dieser Post sinnlos ist, ich wollte nur unbedingt
> den 1250. Post hier schreiben.

Sieh lieber zu das du die Kiddis wieder zum schlafen bekommst, die haben 
schon wieder die Verdunkelungsvorhänge runter gerissen und politisieren 
laut nebendrann.

Namaste

von Gu. F. (mitleser)


Lesenswert?

Lothar M. schrieb:
> Zum Glück hat sich dadurch das Niveau
> nicht nenneswert geändert...

Nun ja, den Beitrag würde ich als vergleichsweise hoch einordnen.

von Thomas E. (thomase)


Lesenswert?

Moby A. schrieb:
> Hier prahlt niemand, sondern da zeigt jemand die Schwächen von C auf.

Und baut genau diese oft kritisierten Schwächen in seinen Asm-Code ein. 
Diesen nennt er dann auch noch einen Leckerbissen. Da würde nicht einmal 
der Hund rangehen.

Moby A. schrieb:
> Na ja, ich kann warten. Hoffentlich warte ich nicht umsonst

Du hast doch schon lange ein C-Programm bekommen. Auf ein weiteres wirst 
du ewig warten.

mfg.

von Michael K. (Gast)


Lesenswert?

Moby A. schrieb:
>> DU prahlst mit deinen 200Byte Gefrickel was von
>> Überlegenheit.
> Hier prahlt niemand, sondern da zeigt jemand die Schwächen von C auf.
Die Schwäche von C ist also kein 200Byte ASM Programm toppen zu können 
das ganz ohne RAM auskommt ? (Lassen wir das mal als Hypothese so 
stehen)
Also ist die Schwäche von C bei einer MCU die extra für Hochsprachen 
optimiert wurde diese dafür vorgesehenen Ressourcen auch tatsächlich zu 
benutzen ?

Moby A. schrieb:
>> Und ich behaupte jetzt, dass auch alle deine 200Byte Projektchen in C
>> effektiver zu programmieren sind.
> Na ja, ich kann warten. Hoffentlich warte ich nicht umsonst ;-)

Ich denke schon.
Sobald das C Konstrukt nur ein byte braucht das Dein ASM nicht braucht 
wirst Du das als Niederlage werten.
Selbst wenn das C Programm in 50% der Zeit geschrieben ist und nichts 
und niemand je diese Ressourcen nutzen wird die Du frei lässt.
Dann wirst Du behaupten das diese 'klare Überlegenheit' von ASM 
natürlich auch für Programme gilt die 1000 mal so groß sind.

Selbst wenn das C Konstrukt in allen Belangen kleiner, schneller und 
sparsamer ist als Dein ASM wirst Du eine Argumentation finden das dieses 
ein 'untypischer' Sonderfall ist oder sinnloserweise irgendwelche 
Verrenkungen unternommen werden müssen nur weil Du das in ASM auch so 
machst, der C Compiler aber keinen Sinn darin sieht.
Z.B. wirst Du argumentieren das ein hochoptimierender Keil / IAR o.ä. im 
Gegensatz zu ASM viel Geld kostet.

Entweder das oder Du ignorierst einfach alles was da an Beweisen 
rüberkommt und machst an irgendeinem Nebenschauplatz weiter als wäre 
nichts gewesen.

Mal nebenbei:
Mir ist aus Deinen Threads klar geworden das Du eine Zermürbetaktik 
fährst.
Es kommen so lange die gleichen Plattitüden bis endlich alle aufgegeben 
haben mit jemanden diskutieren zu wollen dem es vollauf reicht das letze 
Wort zu haben und dem nichts zu platt ist dafür.
Es würde mich diebisch freuen wenn wir diesmal den längeren Atem 
beweisen und Du irgendwann einfach keine Lust mehr hast.
Ehrlich gesagt reche ich uns da keine großen Chancen aus denn Du bist 
was das angeht wirklich so eine Art Gesamtkunstwerk.
Einen Versuch ist es allemal wert.

So, nur um den Wertbewerb 'meiste Smileys pro Thread' aufzunehmen:
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)

Dir auch noch einen schönen Tag.
Michael

von Stefan K. (stefan64)


Lesenswert?

Moby A. schrieb:
> Du meine Güte, sitze gerade an einem Projektchen welches wieder mal die
> 1K Grenze gesprengt hat- was ist das bloß für ein Unsinn, die sinnvolle
> Möglichkeit dessen in Frage zu stellen ;-(

Wow, welchen mc benutzt Du? Je nachdem sind also schon wertvolle 25% / 
12% ... 3% Flash belegt. Höchste Zeit, sich dringend Gedanken um den 
nächsten Optimierungslevel zu machen.

Wo ist überhaupt die Sammelstelle für all das unbenutzte Flash? Ich 
hätte auch noch ne ganze Menge davon abzugeben.

von Gu. F. (mitleser)


Lesenswert?

Glaubt eig. irgend jemand an diese ominösen "Projektchen"?
Geschrieben von jemand, dessen einziges "Projektchen" das die Welt kennt 
aus 20 Zeilen Micky Maus besteht?

von Thomas E. (thomase)


Lesenswert?

Stefan K. schrieb:
> Wo ist überhaupt die Sammelstelle für all das unbenutzte Flash?

Da werden ein paar Ready-To-Use Ethernetmodule angeflanscht. Dann kann 
er das als Home-Cloud benutzen, um weniger Resourcen auf der Festplatte 
in seinem PC zu verschwenden.

mfg.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Gu. F. schrieb:
> Glaubt eig. irgend jemand an diese ominösen "Projektchen"?

Warum nicht?  Er hat uns doch weiter oben erklärt, wie das abläuft:
sowie irgendwas seine Möglichkeiten übersteigt (wie eben eine
IP-Anbindung), wird das dazugekauft.

Ansonsten muss man doch nur hinreichend viel Masochismus mitbringen,
um größere Mengen Assemblercode zusammenzuhacken.  Dass dieser dann
noch „optimal“ ist, das glaubt allerdings wirklich nur Moby selbst.

von Gu. F. (mitleser)


Lesenswert?

Jörg W. schrieb:
> Warum nicht?  Er hat uns doch weiter oben erklärt, wie das abläuft:
> sowie irgendwas seine Möglichkeiten übersteigt (wie eben eine
> IP-Anbindung), wird das dazugekauft.

Auch diese hat noch keiner gesehen. Nur Behauptungen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Gu. F. schrieb:
> Auch diese hat noch keiner gesehen.

Dich hat hier auch noch keiner gesehen, trotzdem existierst du
offensichtlich.

von Gu. F. (mitleser)


Lesenswert?

Jörg W. schrieb:
> Gu. F. schrieb:
>> Auch diese hat noch keiner gesehen.
>
> Dich hat hier auch noch keiner gesehen, trotzdem existierst du
> offensichtlich.

Was willst du mir denn damit sagen?
Ich reise hier nicht die Klappe auf und gebe seit 1200 Beiträgen mit 
meinen tollen >10k ASM Projektchen an. Das tut nur Moby. Also ist er in 
der Pflicht das auch zu belegen sonst ist er unglaubwürdig.
Ich muss nix beweisen.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Gu. F. schrieb:
> Was willst du mir denn damit sagen?

Dass du nicht jedes seiner Worte anzweifeln musst.  „in dubio pro reo“
darfst du auch gelten lassen, wenn du dein Gegenüber nicht sonderlich
leiden kannst.

von Robert L. (lrlr)


Lesenswert?

>in dubio pro reo

also für C

;-)

von Thomas E. (thomase)


Lesenswert?

Jörg W. schrieb:
> „in dubio pro reo“ darfst du auch gelten lassen

"quid pro quo" aber auch.

mfg.

von P. M. (o-o)


Lesenswert?

Moby A. schrieb:
> Manches ist jedenfalls trivialer als man denkt ;-)

Ich weiss sowieso nicht, wie man auf den absurden Gedanken kommen kann, 
der (sehr repetitive) Prozess der Compilierung/Assemblierung auf 
unterster Ebene könne von einem Menschen effizienter durchgeführt werden 
als von einem Computerprogramm.

Vermutlich liegt es daran, dass Moby mit seinem beschränkten Horizont 
diese Aufgabe als kreativ ansieht, während wir wissen, dass es rein 
mechanistisch ist.

von Stefan K. (stefan64)


Lesenswert?

P. M. schrieb:
> Ich weiss sowieso nicht, wie man auf den absurden Gedanken kommen kann,
> der (sehr repetitive) Prozess der Compilierung/Assemblierung auf
> unterster Ebene könne von einem Menschen effizienter durchgeführt werden
> als von einem Computerprogramm.

Den Output seiner Werkzeuge zu hinterfragen ist prinzipiell ja kein 
schlechter Gedanke. Ich kann mich erinnern, wie ich das erste Mal das 
Compiler-Ergebnis für den externen Speicherzugriff eines 8051 gesehen 
habe. Das war unendlich umständlich und hat sich vor allem für jedes 
externe Byte wiederholt.
Der gcc für AVR ist aber mittlerweile eine ganz andere Liga, dem macht 
man händisch kaum noch was vor, vor allem bei komplexeren Strukturen. 
Was nicht zuletzt an dem für C optimierten Hardwaredesign liegt.

Gruß, Stefan

von Moby A. (moby-project) Benutzerseite


Lesenswert?

P. M. schrieb:
> Vermutlich liegt es daran, dass Moby mit seinem beschränkten Horizont
> diese Aufgabe als kreativ ansieht, während wir wissen, dass es rein
> mechanistisch ist.

Vielleicht ist ja mit Deinem Horizont ja was nicht in Ordnung ;-)

Frank M. schrieb:
> Aber wie kommst Du auf den abstrusen Gedanken, ein adäquates
> C-Programm wäre hier schlechter? Du hast weder ein entsprechendes
> C-Programm vorzuweisen

Wie kommst Du auf den abstrusen Gedanken daß ich ein C-Programm 
vorweisen müsste? Wenn, dann kommt hier mal von mir ein optimiertes 1K 
Asm Programm... Doch wofür? Was dann von C-Seite folgt würde wieder nur 
gähnende Leere sein. Die Reaktionen kann ich hier schon jetzt wunderbar 
studieren.

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Stefan K. schrieb:
> Der gcc für AVR ist aber mittlerweile eine ganz andere Liga, dem macht
> man händisch kaum noch was vor

Köstlich. Das küre ich schon jetzt zum Witz des Tages und empfehle Dir, 
mal ein paar Problemthreads zum gcc durchzugehen und Dich an dessen 
Beschränktheiten zu laben. Besser soll ja der IAR sein- für ne Stange 
Geld natürlich.

von P. M. (o-o)


Lesenswert?

Moby A. schrieb:
> Vielleicht ist ja mit Deinem Horizont ja was nicht in Ordnung ;-)

Erfahrung in 10 Jahren Hobby/Studium/Beruf: Sehr viel C, viel C++, 
AVR-Assembler, MIPS-Assembler, VHDL, Softwareentwicklung für 
Supercomputer, Skriptsprachen fürs Web. Und du? Ein paar Hobby-Projekte 
in Assembler, Ende der Fahnenstange.

Moby A. schrieb:
> Wie kommst Du auf den abstrusen Gedanken daß ich ein C-Programm
> vorweisen müsste?

Weil DU derjenige bist, der eine Minderheiten-Meinung vertritt. Wer 
etwas behauptet, das vom grössten Teil der Diskussionsteilnehmer 
abgelehnt wird, der hat nunmal die Beweislast, ob er will oder nicht.

Wenn du auch nur ein kleines Interesse daran hättest, die Diskussion für 
dich zu entscheiden, dann hättest du den Beweis schon lange angetreten.

von Robert L. (lrlr)


Lesenswert?

>optimiertes 1K Asm Programm
hat du aber keines..

beantworte doch mal die Frage:
Beitrag "Re: Assembler wieder auf dem Weg nach vorn"
anstelle immer wieder das selbe zu wiederholen..

: Bearbeitet durch User
von Moby A. (moby-project) Benutzerseite


Lesenswert?

P. M. schrieb:
> Und du? Ein paar Hobby-Projekte
> in Assembler, Ende der Fahnenstange.

Die muß nicht da zu Ende sein wo Du meinst.
Deine Auflistung von Erfahrungen interessiert hier & mich wenig. Deine 
Mittel mich zu "überzeugen" waren bislang ziemlich arg auf diverse 
unredliche  Psychospielchen begrenzt. Du hättest besser Psychologe 
werden sollen, wobei es mir dann um die armen Patienten leid täte ;-)

von Matthias L. (Gast)


Lesenswert?

Moby A. schrieb:
> Deine Auflistung von Erfahrungen interessiert hier & mich wenig.


Siehst Du. Und Deine Definition von Effizienz (Ram/Flash-Verbrauch) 
interessiert ausser Dir eben "hier & alle wenig" bis garnicht.

Auch wenn Du es weiter ignorierst:

Wir verstehen unter Effizienz zu grossen Teilen die Entwicklungszeit. 
Danach kommt RAM und Flash.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> Wie kommst Du auf den abstrusen Gedanken daß ich ein C-Programm
> vorweisen müsste?

Wie kommst du auf den abstrusen Gedanken, dass hier irgendjemand
anders ein C-Programm vorweisen müsste?

Du stellst eine Behauptung auf, dann wäre es an dir, den Beweis dafür
zu liefern.  Bis zu irgendeinem Beweis bleibt es einfach nur eine
Behauptung.

von Gu. F. (mitleser)


Lesenswert?

Jörg W. schrieb:
> Bis zu irgendeinem Beweis bleibt es einfach nur eine
> Behauptung.

Ach ... Schön das von dir zu hören.
Könnte er doch im Geheimen alle seine Projektchen wirklich realisiert 
haben :-)

von Le X. (lex_91)


Lesenswert?

P. M. schrieb:
> Ich weiss sowieso nicht, wie man auf den absurden Gedanken kommen kann,
> der (sehr repetitive) Prozess der Compilierung/Assemblierung auf
> unterster Ebene könne von einem Menschen effizienter durchgeführt werden
> als von einem Computerprogramm.

Auf das ging er natürlich wieder garned ein...
Aber hier hat P.M. natürlich recht.

Das Groß der Entwicklungszeit bei ASM geht ja nicht für Kreatives 
Arbeiten (welchen Algorithmus muss ich anwenden? Welche Rechenoperation 
muss ich durchführen?) drauf sondern für stumpfe  Fleissarbeit (welche 
der mit der gegebenen Architektur verfügbaren Instruktionen muss ich auf 
welche Weise kombinieren, um eine 16-Bit-Signed Multiplikation 
durchzuführen.

Da kann man noch so viel ÜVS (Übung/Vorbereitung/System) haben, das ÜVS 
des Comlilers wird immer besser sein, in einem Bruchteil der Zeit.

Und mit jeder Codezeile die das Projekt wächst wird das ÜVS des 
Compilers übermächtiger, bis unser menschlicher Assembler irgendwann nur 
noch staunen kann, was da abgeht.
Spätestens mit Features wie LTO wird der Mensch sowas von abgehängt. 
Technologische Singularität im kleinen Rahmen, sozusagen ;-)

Der BreakEven wird aber schon viel eher erreicht. Ich würde, je nach 
Problemstellung, eine niedrihe 3-stellige Zahl als Codegröße (Flash) 
schätzen.
Ohne massive Handoptimierung und Tricksereien seitens des Menschen denk 
ich aber dass bei ~100 Byte der Compiler auch in 95% der Fälle gewinnt.

von Matthias L. (Gast)


Lesenswert?

le x. schrieb:
> um eine 16-Bit-Signed Multiplikation

Das ist doch aber keine typische 8bit MSR Anwendung.

von Michael K. (Gast)


Lesenswert?

Matthias L. schrieb:
> Siehst Du. Und Deine Definition von Effizienz (Ram/Flash-Verbrauch)
> interessiert ausser Dir eben "hier & alle wenig" bis garnicht.

Genau, deswegen diskutieren wir darüber seit >1200 Beiträgen.
Weil uns das überhaupt nicht kümmert !

Streng genommen hat Moby bereits ein 200Byte Programm 'geliefert'
Wenn es Dir sooo wichtig ist dann analysiere den Kram, mach eine 
Softwarespezifikation daraus und schreibe etwas in C das das gleiche 
tut.
Dann vergleichen wir den ASM Code und Moby lacht sich krumm weil bei 
200Byte wohl tatsächlich ASM gewinnen wird. Nicht das das ein Kriterium 
gegen C wäre, aber nach Mobys Maßstäben kann ASM bei dieser Größe fast 
nur gewinnen.
Damit hast Du Dich dann auf genau das Glatteis begeben von dem behauptet 
wurde das Moby regelmäßig darauf einbricht.

Sieh es ein, er ist Dir überlegen wenn es darum geht ein Falle 
auszulegen und dann geduldig darauf zu warten das jemand reintappt.

Um aus dieser Endlosschleife herauszukommen müsste man eine Aufgabe 
definieren die eine gegebene Hardware knackig ausnutzt.
Ringbuffer, gleitender Mittelwert, Berechnungen >8bit, sowas in der Art.
Es darf dann nur nicht die Begründung kommen das das ja keine typische 
Anwendung wäre.
Beide Parteien (oder mehr, wenn noch jemand Fortran, Cobol, Pascal, LUA 
etc. beisteuern will) setzen das dann um und vergleichen wie schnell sie 
fertig sind und was an Ressourcen verbraucht wird.
Wird keiner machen, weil, weil, weil ....
Damit bleibt das hier ein rein theoretischer Schlagabtausch von einigem 
Unterhaltungswert.

von (prx) A. K. (prx)


Lesenswert?

le x. schrieb:
> Spätestens mit Features wie LTO wird der Mensch sowas von abgehängt.

Moby braucht keine LTO, da er keinen Linker verwendet und immer alles 
zusammen übersetzt. Und da seine Programme klein genug sind hat er den 
vollen Durchblick und macht ETO.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael K. schrieb:
> Wenn es Dir sooo wichtig ist dann analysiere den Kram, mach eine
> Softwarespezifikation daraus und schreibe etwas in C das das gleiche
> tut.

Haben wir doch schon versucht: sowie du etwas findest, was man besser
machen könnte, verstößt es doch sofort automatisch gegen seine
Bedingungen, denn die Bedingungen sind einfach so gestaltet, dass sie
nur von exakt seiner Assembler-Implementierung erfüllt werden.
Jegliche Abweichung davon ist nicht etwa dann der „Gewinner“, sondern
wird zum Fehler deklariert.

Aus genau diesem Grunde gibt es auch niemanden, der dieses Spiel jetzt
noch mitspielen würde.

von Werner P. (Gast)


Lesenswert?

Michael K. schrieb:
> Streng genommen hat Moby bereits ein 200Byte Programm 'geliefert'
> Wenn es Dir sooo wichtig ist dann analysiere den Kram, mach eine
> Softwarespezifikation daraus und schreibe etwas in C das das gleiche
> tut.

jo, das ist richtig. Aber da erwarte ich die Spec von Moby. Es soll ja 
sein ASM Programm in C geschrieben werden.

Also Moby; schreib doch mal. Aber jetzt bitte keine Verweise auf 
irgendwelche, nicht zusammenhängende, Thread Beiträge.

Hier und jetzt. Kann ja nicht so schwer sein.

von Robert L. (lrlr)


Lesenswert?

ja, man müsste eine neue Aufgabe definieren
eine die auch moby "braucht"

wenn er jetzt zufällig in nächster Zeit ein größeres Projekt vor hat (so 
in die richtug 1kByte) könnte das doch Vorstellen (also die geplante 
hardware und die Ziele des "Projektes"

;-)

von Michael K. (Gast)


Lesenswert?

Jörg W. schrieb:
> Aus genau diesem Grunde gibt es auch niemanden, der dieses Spiel jetzt
> noch mitspielen würde.

Finde ich aber ganz schön clever für jemanden der ständig für blöd 
gehalten wird.
Ich kann mich nur wiederholen (wie wir alle):
Moby hat nicht vor sich schlagen zu lassen und deswegen sind die 
Rahmenbedingungen so definiert das das auch nicht passiert.

Trotzdem könnte 'man mal' seine 200 Byte in C nachstellen so das man 
tatsächlich über beide ASM Codes vergleichen kann.

Klar, das wird garnichts ändern, das wissen wir beide.
Es wäre aber unterhaltsam und darum geht es doch hier eigentlich, oder ?

von Michael K. (Gast)


Lesenswert?

Werner P. schrieb:
> jo, das ist richtig. Aber da erwarte ich die Spec von Moby. Es soll ja
> sein ASM Programm in C geschrieben werden.

Hatten wir auch schon mehrfach.
Lehnt er ab mit der Begründung die paar Zeilen solten doch für einen 
gestandenen Programmierer kein Thema sein.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael K. schrieb:
> Moby hat nicht vor sich schlagen zu lassen und deswegen sind die
> Rahmenbedingungen so definiert das das auch nicht passiert.

So ist es.

von P. M. (o-o)


Lesenswert?

Moby A. schrieb:
> Deine Auflistung von Erfahrungen interessiert hier & mich wenig.

Fakt ist einfach, dass ich und die meisten anderen Diskussionsteilnehmer 
ihre Aussagen auf jahrelange Erfahrung mit verschiedensten Sprachen und 
Plattformen stützen, während du gerademal hobbymässig etwas Assembler 
betreibst. Versetz dich mal von aussen in die Situation: Zehn Profis 
sind sich einig, bloss ein Hobbyist hat eine andere Meinung, wer hat da 
in den allermeisten Fällen wohl recht?


P. M. schrieb:
> Moby A. schrieb:
>> Manches ist jedenfalls trivialer als man denkt ;-)
>
> Ich weiss sowieso nicht, wie man auf den absurden Gedanken kommen kann,
> der (sehr repetitive) Prozess der Compilierung/Assemblierung auf
> unterster Ebene könne von einem Menschen effizienter durchgeführt werden
> als von einem Computerprogramm.

...aber nimm doch dazu mal Stellung, anstatt zu persönlichen Angriffen 
überzugehen.

von Stefan K. (stefan64)


Lesenswert?

Moby A. schrieb:
>> Der gcc für AVR ist aber mittlerweile eine ganz andere Liga, dem macht
>> man händisch kaum noch was vor
>
> Köstlich. Das küre ich schon jetzt zum Witz des Tages und empfehle Dir,
> mal ein paar Problemthreads zum gcc durchzugehen und Dich an dessen
> Beschränktheiten zu laben. Besser soll ja der IAR sein- für ne Stange
> Geld natürlich.

Ja, mach das. Machen ja alle anderen mit jedem Deiner Beiträge auch so.

Welche Probleme meinst Du bitte konkret? Kannst Du auch nur eines davon 
nachvollziehen? Hast Du dafür das nötige C-Wissen? Gerade beim 
Programmieren ist es eine gute Idee, die Beschränktheit zuallererst bei 
sich selbst zu suchen.

Stefan

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

Michael K. schrieb:
> Genau, deswegen diskutieren wir darüber seit >1200 Beiträgen.
> Weil uns das überhaupt nicht kümmert !

Du hattest doch schon ganz richtig geschrieben, worum es geht:

Michael K. schrieb:
> Es kommen so lange die gleichen Plattitüden bis endlich alle aufgegeben
> haben mit jemanden diskutieren zu wollen dem es vollauf reicht das letze
> Wort zu haben und dem nichts zu platt ist dafür.
> Es würde mich diebisch freuen wenn wir diesmal den längeren Atem
> beweisen und Du irgendwann einfach keine Lust mehr hast.
> Ehrlich gesagt reche ich uns da keine großen Chancen aus denn Du bist
> was das angeht wirklich so eine Art Gesamtkunstwerk.
> Einen Versuch ist es allemal wert.

Und natürlich auch darum:

Michael K. schrieb:
> So, nur um den Wertbewerb 'meiste Smileys pro Thread' aufzunehmen:
> ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)

Ich nehme jetzt mal den Wettbewerb "meiste 'nicht lesenswert' pro 
Beitrag" auf und bitte für diesen Beitrag um freundliche Unterstützung.

mfg.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Michael K. schrieb:
> Trotzdem könnte 'man mal' seine 200 Byte in C nachstellen so das man
> tatsächlich über beide ASM Codes vergleichen kann.

nönö, zu einfach darf das Programm auch nicht sein, damit Assembler 
vorteilhaft sein könnte, wie uns Moby unlängst gelehrt hat (es geht um 2 
knokrete Mini-Projekte in C, die bereits lange vor dieser Diskussion 
fertig waren):

Moby A. schrieb:
> Johann L. schrieb:
>> Ein nicht unwesentlicher Teil des Codes besteht aus der Initialisierung
>
> Darin könnte ein Grund liegen, warum in diesem Fall Asm nicht viel
> rausholt.
> Auch das zweite Progrämmchen ist viel zu kurz dafür. Das sind allerdings
> nur grobe Vermutungen. Genauso wie ich glaube: Das eine oder andere
> Byte'chen wird man dennoch aus dem Flash und dem SRAM (!) erübrigen
> können.

Warum um alles in der Welt sollt es einen VORTEIL bringen, da ein 
"Bytechen" einzusparen?  Bereits vor der Implementierung hätte ich dir 
sagen könne, dass mit Assembler einige "Bytechen" hätten gespart werden 
können.  Aber was ist der MEHRWERT davon?

Ne handvoll Byte einsparen und dafür irgende blöde Registernummer falsch 
zu schreiben, weil die Division inline auszuführen 12 Byte Flash spart?

Und dann die Röhrenheizung durchzuschmoren und der Röhre auf den 
Grabstein meisseln "Aber der mobysierte Code war 12 Bytes kürzer!"?

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Johann L. schrieb:
> nönö, zu einfach darf das Programm auch nicht sein, damit Assembler
> vorteilhaft sein könnte, wie uns Moby unlängst gelehrt hat

Nein, nicht unlängst. Das Thema hatten wir schon mal. Da ging es 
ausgehend von einer Instruktion um die Entwicklung des Einsparpotentials 
mit zunehmender Codesize...

Johann L. schrieb:
> Warum um alles in der Welt sollt es einen VORTEIL bringen, da ein
> "Bytechen" einzusparen?  Bereits vor der Implementierung hätte ich dir
> sagen könne, dass mit Assembler einige "Bytechen" hätten gespart werden
> können.  Aber was ist der MEHRWERT davon?

Bei den beiden Mickymaus Programmen von Dir?
Wenig Einsparung bedeutet resourcenmäßig wenig Vorteile.
Da könnte ich nur noch die allgemeine Bürokratie von C-.Programmierung 
ins Feld führen. Schau Dir aber Art und Größenklasse meines 200er Codes 
an. Da sieht die Welt schon anders aus. Und meine Prognose bis mal bis 
mindestens 10K wäre, daß diese für C nicht besser wird ;-)

Johann L. schrieb:
> dafür irgende blöde Registernummer falsch
> zu schreiben,

Was bitte? Eine Registernummer bei einem gegebenen, durchdachten 
Registersystem falsch schreiben? Lächerlich. Da sind Fehler in 
C-Ausdrücken ja tausendmal wahrscheinlicher ;-)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> Wenig Einsparung bedeutet resourcenmäßig wenig Vorteile.

Und was bringt Dir die Einsparung des restlichen 80% Flashs Deines 
Tiny13? Meinst Du, der verbraucht dadurch jetzt nur noch 20% des Stroms? 
Du hast den Tiny für 100% eingekauft und Du zahlst auch 100% davon - 
egal, wie groß oder wie klein Dein Programm ist. Du tust auch nix für 
die Umwelt, wenn Du ein Byte einsparst... also warum geilst Du Dich 
daran so auf?

> Da könnte ich nur noch die allgemeine Bürokratie von C-.Programmierung
> ins Feld führen. Schau Dir aber Art und Größenklasse meines 200er Codes
> an.

Dein 200er Code hat keine Klasse, sondern ist und bleibt ein 
Micky-Maus-Programm, welches andere in einer ruhigen Minute mal so 
nebenbei zusammenhacken - wenn sie es denn brauchen.

Aber sie brauchen es nicht. Du bist der einzige.

> Da sieht die Welt schon anders aus. Und meine Prognose bis mal bis
> mindestens 10K wäre, daß diese für C nicht besser wird ;-)

Deine Prognose ist und bleibt falsch.

: Bearbeitet durch Moderator
von Moby A. (moby-project) Benutzerseite


Lesenswert?

P. M. schrieb:
> ...aber nimm doch dazu mal Stellung, anstatt zu persönlichen Angriffen
> überzugehen.

Da beschwert sich genau der Richtige.

Stefan K. schrieb:
> Allerdings darfst Du
> auch sicher sein, daß mein geschriebener Asm-Codeumfang der letzten 3
> Jahrzehnte um ein Vielfaches größer ist als Deiner.

w.z.b.w.

> Und genau dieses System bringt bei großen Programmen gravierende
> Nachteile bzgl. Codesize und Effizienz.

Reden wir mal nicht von "großen" Programmen. Nämlich solchen, die 
Codegrößen von 1-100K nur vom Hörensagen kennen. Die sind mal auf jeden 
Fall Domäne von Asm. Ich meine für den, der entsprechend Übung, 
Vorbereitung, System mitbringt. Die allermeiste Sensor/Aktor-Knoten 
Software benötigt (in Asm) gar noch weniger!

> ... weil Du sie für jeden UART mit neuen Registeradressen kopierst. In C
> schreibst Du die Funktion einmal und übergibst bei Bedarf den Ptr auf
> die UART-Register. Wenn Du 5 UARTs im System brauchst, dann ist in C die
> Funktion nur 1* im Flash, und nicht 5 fast identische Asm-Kopien.

Papperlapapp. Vielleicht soll ja die UART-Funktion mehr und 
spezifischeres tun als nur einen Standardbuffer einlesen. Da ist C Null 
im Vorteil, bringt statt dessen aber seine Ressourcen-Nachteile mit.

> ATmega ist in der End-of-live-Phase, der Preis geht eher wieder hoch, es
> sind mittlerweile viel performantere 32-Bitter für deutlich weniger Geld
> zu bekommen.

Mit dem Thema hast Du jetzt den Richtigen erwischt.
Ich predige seit Jahren das ewige Leben der einfachen 8-Bitter. Die 
sollten nach den Prognosen gewisser Künstler hier längst verschwunden 
sein.
Deine 32-Bit Performance kannst Du Dir sonstwohin schmieren, wenn der 
8-Bitter die konkrete App locker mit seiner 8-Bit Power viel einfacher 
löst.
Sollte der AVR nicht mehr erhältlich und die Vorräte aufgebraucht sein 
gehts halt mit einem anderen einfachen 8-Bitter weiter. Angeln kommt für 
mich nicht in Frage, vor allem nicht im kompliziert-dickflüssigen 32-Bit 
Teich ;-)

: Bearbeitet durch User
von Matthias L. (Gast)


Lesenswert?

Selten soviel Blödsinn am Stück gelesen

von Klaus W. (mfgkw)


Lesenswert?


von Werner P. (Gast)


Lesenswert?

Moby A. schrieb:
> 1-100K
mal sind es 1K mal 10K und jetzt 100K

Moby A. schrieb:
> Übung, Vorbereitung, System
ich kanns nicht mehr hören!


ich habe hier z.B. ein Programm (eines von vielen) für einen Atmega328. 
UART, RFM22B, ADC und ein paar Taster sowie Leds, Relais und OLED 
Display.

Locker unter 32K. Komplett in C. Das möchte ich mal in ASM sehen.

von Gu. F. (mitleser)


Lesenswert?

Moby A. schrieb:
> Reden wir mal nicht von "großen" Programmen. Nämlich solchen, die
> Codegrößen von 1-100K nur vom Hörensagen kennen. Die sind mal auf jeden
> Fall Domäne von Asm.

Prust ....
Mist alles voller Bier.

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Robert L. schrieb:
> Was genau willst du eigentlich?

Daß mich jemand von den C-Vorteilen überzeugt ;-)

> Du bist also zumindest mal ein schlechter "Lehrer"/Verkäufer..

Um Himmels Willen. Den Anspruch hab ich sicher nicht. Schau Dir den 
Tiobe-Index und die Position von Hochsprachen wie C darin an. 
Allerdings, hier gehen sämtliche Rechnerklassen ein. Für 8-Bit MSR 
behaupte ich aber aus eigener Erfahrung, daß direktes Asm hier 
sinnvoller ist als irgendwelche abstrakten Träumereien wie etwa C++. C 
selber steht auf diesem unheilvollen Weg weg vom Hardware-Verständnis 
und damit der Chance auf hochoptimierten Code irgendwo in der Mitte...

> Sondern um "Code von anderen Wiederverwenden"  vs. alles "Selber
> schreiben wollen"..

Klar. Das Library-Konzept von C insbesondere mit der Riesen-Code Auswahl 
könnte neidisch machen, vor allem wenn eine Lib komplexe Funktionalität 
mitbringt die man just gerade selber braucht. Der Vorteil wird 
allerdings erkauft mit oft langwieriger Suche nach dem Richtigen, der 
Inkaufnahme evt. enthaltener Fehler und sowieso der ganzen C-Bürokratie. 
Bei Asm könnte ich aber genauso (zumindest beim AVR) Massen fertigen 
Asm-Codes nutzen. Wenn der ASM'ler das Meiste dennoch selber schreibt 
dann wegen der Code-Effizienz und der bestmöglichen Anpassbarkeit an die 
Situation. SimplyAVR machts möglich.
Oft gilt auch: Ehe ich den Fremdcode verstehe mach ichs lieber gleich 
selber.

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Werner P. schrieb:
> Moby A. schrieb:
>> 1-100K
> mal sind es 1K mal 10K und jetzt 100K

Wenn mir nicht bald jemand beweist warum effizientes Asm in den 
genannten Größenordnungen schlechter als C abschneiden muß sinds bald 
1M ;-)

> ich kanns nicht mehr hören!

Das ist aber der Schlüssel für die Asm-Effizienz in diesen 
Programmgrößen.

> ich habe hier z.B. ein Programm (eines von vielen) für einen Atmega328.
> UART, RFM22B, ADC und ein paar Taster sowie Leds, Relais und OLED
> Display.
>
> Locker unter 32K. Komplett in C. Das möchte ich mal in ASM sehen.

Locker unter 32K? Da muß ich schon schmunzeln, obwohl ich jetzt nur die 
genannten Stichworte kenne...

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Matthias L. schrieb:
> Selten soviel Blödsinn am Stück gelesen

Ist auch selten, daß solche Sätze viel Überzeugungskraft mitbringen ;-)

Frank M. schrieb:
> Und was bringt Dir die Einsparung des restlichen 80% Flashs Deines
> Tiny13? Meinst Du, der verbraucht dadurch jetzt nur noch 20% des Stroms?
> Du hast den Tiny für 100% eingekauft und Du zahlst auch 100% davon -
> egal, wie groß oder wie klein Dein Programm ist. Du tust auch nix für
> die Umwelt, wenn Du ein Byte einsparst... also warum geilst Du Dich
> daran so auf?

Unterschlägst Du gerade wieder mein Erweiterbarkeits-Argument oder kommt 
mir das nur so vor? Achso, Du meinst ja der Code/ das Projekt wär mit 
nichts und garnichts erweiterbar und für niemand brauchbar ;-)

Jörg W. schrieb:
> Wie kommst du auf den abstrusen Gedanken, dass hier irgendjemand
> anders ein C-Programm vorweisen müsste?

Wer behauptet, daß C soviel effizienter wäre kann das anhand meiner 
fertigen  Projekt Vorlage nachweisen- so einfach ist das.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:

> Wenn mir nicht bald jemand beweist warum effizientes Asm in den
> genannten Größenordnungen schlechter als C abschneiden muß sinds bald
> 1M ;-)

Du stellst doch Behauptungen auf, also musst du das schon beweisen,
was du da erzählst.

>> Locker unter 32K. Komplett in C. Das möchte ich mal in ASM sehen.
>
> Locker unter 32K? Da muß ich schon schmunzeln, obwohl ich jetzt nur die
> genannten Stichworte kenne...

Weil nicht sein kann, was nicht sein darf?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> Jörg W. schrieb:
>> Wie kommst du auf den abstrusen Gedanken, dass hier irgendjemand
>> anders ein C-Programm vorweisen müsste?
>
> Wer behauptet, daß C soviel effizienter wäre kann das anhand meiner
> fertigen  Projekt Vorlage nachweisen- so einfach ist das.

Moment mal: du behauptest hier die ganze Zeit alles Mögliche und
glaubst nun, irgendjemand wäre dir einen Gegenbeweis schuldig.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> Unterschlägst Du gerade wieder mein Erweiterbarkeits-Argument oder kommt
> mir das nur so vor? Achso, Du meinst ja der Code/ das Projekt wär mit
> nichts und garnichts erweiterbar und für niemand brauchbar ;-)

Ich unterschlage gar nichts. Du hast noch keine Erweiterung gezeigt. 
Also gibt es auch keine.

von Thomas E. (thomase)


Angehängte Dateien:

Lesenswert?

Moby A. schrieb:
> Wer behauptet, daß C soviel effizienter wäre kann das anhand meiner
> fertigen  Projekt Vorlage nachweisen- so einfach ist das.

Jörg W. schrieb:
> Du stellst doch Behauptungen auf, also musst du das schon beweisen,
> was du da erzählst.

von Moby A. (moby-project) Benutzerseite


Angehängte Dateien:

Lesenswert?

Stefan K. schrieb:
> Hast Du dafür das nötige C-Wissen?

Nö. Zuweilen kann man sich aber durchaus auf die Kompetenz anderer 
Forums-Teilnehmer verlassen. Wenn sich deren Erfahrung manchmal noch mit 
der eigenen deckt umso mehr.

Jörg W. schrieb:
> Er will sie uns aber nicht zeigen.  Er wird schon wissen, warum.

Hatte gerade das Vergnügen kurz was im Code meines drittgrößten 
Asm-Projekts zu ändern und häng mal ein Bild vom Assembliervorgang an, 
um redlichen Zweiflern an 10K Asm-Codesize zumindest etwas Wind aus den 
Segeln zu nehmen. Ich gebe aber zu bedenken, die Grafik könnte vom 
betrügerischen Moby manipuliert sein ;-)

Frank M. schrieb:
> Ich unterschlage gar nichts. Du hast noch keine Erweiterung gezeigt.
> Also gibt es auch keine.

Nun mal Klartext Frank: Du hast auch behauptet, das Projekt wäre nicht 
und für niemand erweiterungsfähig. Was natürlich blanker Unsinn ist. Ein 
paar Anregungen hatte ich schon gegeben. Die Logik "es gibt keine 
Erweiterung, also ist es nicht erweiterbar" ist schon selten dämlich und 
eigentlich keiner Erwiederung wert.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> und häng mal ein Bild vom Assembliervorgang an, um redlichen Zweiflern
> an 10K Asm-Codesize zumindest etwas Wind aus den Segeln zu nehmen.

Bildformate nicht gelesen?

Dass du 10 K Code zusammenbekommst, hatte ich nicht angezweifelt.

Was wir allerdings anzweifeln ist, dass dieser noch die gleiche
Codedichte aufweist wie dein Mini-Beispiel.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> Nun mal Klartext Frank: Du hast auch behauptet, das Projekt wäre nicht
> und für niemand erweiterungsfähig. Was natürlich blanker Unsinn ist.

Karl Heinz hat es Dir im anderen Thread bewiesen, dass Du keinen 
weiteren Sensor anhängen kannst, ohne den Code komplett neu zu 
schreiben. Das reicht mir vollkommen: Der Code ist nicht erweiterbar.

Jörg W. schrieb:
> Was wir allerdings anzweifeln ist, dass dieser noch die gleiche
> Codedichte aufweist wie dein Mini-Beispiel.

Eben. Wie oft muss man das noch wiederholen? Moby stellt sich hier 
offenbar bewusst dämlich.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Moby A. schrieb:
> Johann L. schrieb:
>> Warum um alles in der Welt sollt es einen VORTEIL bringen, da ein
>> "Bytechen" einzusparen?  Bereits vor der Implementierung hätte ich dir
>> sagen könne, dass mit Assembler einige "Bytechen" hätten gespart werden
>> können.  Aber was ist der MEHRWERT davon?
>
> Bei den beiden Mickymaus Programmen von Dir?

Jetzt muss ich doch wieder grinsen:

Nachdem du dich bei deinem 200-Byte-Progrämmchen vehement gegen die
Aussage gewehrt hast, es sei ein Mickymausprogramm, bezeichnest du jetzt
deinerseits die Programme von Johann so.

Im ersten von Johanns Programmen steckt aber mindestens doppelt so viel
Funktionalität wie in deinem Programm. Wenn Johanns Programm eine
Mickymaus ist, dann ist dein Programm ein Mickymäuschen. Es wird dir
auch nie und nimmer gelingen, Johanns Programm mit nur 200 Byte in
Assembler umzuschreiben.

Offensichtlich hast du dich von dem kompakten, übersichtlichen Quellcode
des C-Programms täuschen lassen, der natürlich deutlich kürzer und
einfacher als dein langatmiger, unstrukturierter Assemblerrattenschwanz
ist.

Was du hier endlich einmal selber erfahren durftest:

In höheren Programmiersprachen lassen sich im Gegensatz zu Assembler
auch komplexere Berechnungen und Abläufe einfach und übersichtlich
darstellen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Frank M. schrieb:
> dass Du keinen weiteren Sensor anhängen kannst, ohne den Code komplett
> neu zu schreiben

Auch mit anderen Erweiterungen sieht es dürftig aus: es ist gerade mal
noch ein freier Pin da, über den man vielleicht einen Aktor bedienen
könnte.  Und für diese ominösen Erweiterungen muss dann extra der
komplette RAM (abzüglich Stack) frei gehalten werden?

Eigentlich wäre ein AT90S1200 für Moby das geeignetste Bauteil gewesen.
Wo kein RAM ist, kann man auch keinen verschwenden. :-)

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Karl Heinz hat es Dir im anderen Thread bewiesen, dass Du keinen
> weiteren Sensor anhängen kannst, ohne den Code komplett neu zu
> schreiben. Das reicht mir vollkommen: Der Code ist nicht erweiterbar.

Es hätte keines Beweises bedurft daß die Hardware nur für die 
entsprechende Sensorbestückung ausgelegt ist. Entsprechend ist der Code 
ausgelegt und entsprechend wurde er optimiert. Hör doch auf mit dem 
Quatsch. Erweiterbarkeit umfasst doch nicht nur die Anzahl der Sensoren 
;-(

Jörg W. schrieb:
> Und für diese ominösen Erweiterungen muss dann extra der
> komplette RAM (abzüglich Stack) frei gehalten werden?

Unsinn. Diese Effizienz soll C mal nachmachen. Ansonsten bietet der RAM 
noch genügend Einsatzmöglichkeiten die von zusätzlicher Funktionalität 
genutzt werden können. Du stellst Dich ja jetzt fast genauso dumm wie 
Frank M. ;-(

Jörg W. schrieb:
> Was wir allerdings anzweifeln ist, dass dieser noch die gleiche
> Codedichte aufweist wie dein Mini-Beispiel.

Daran ist jetzt leider nichts zu ändern.

Ich denke, die Codedichte läßt bei größeren Programmen auf jeden Fall 
etwas nach. Ich hatte ja schon vom Zusammenstöpseln verschiedener 
fertiger Funktionsbausteine gesprochen. Das geht, auch im Interesse zu 
wahrender Übersicht, nur mit gewissen Verlusten. Die Bausteine selber 
sind in ihrer Vielzahl aber sehr kompakt- in Summe dürfte das trotzdem 
die C-Effizienz in den Schatten stellen, da bin ich sicher. Egal was ich 
hier aber veröffentlichen würde- wenn auf C-Seite keiner in der Lage und 
willens ist, selbst einen 200-Byte Code nachzuprogrammieren fehlt ein 
C-Äquivalent zum Vergleich. Das letzte (natürlich wohlbehütete!) 
Schlupfloch für die C-Protagonisten, weil es dann tatsächlich bei 
Aussage gegen Aussage bleibt ;-)
Das ist mir aber wurscht und wird mich nicht davon abbringen, meine 
Überzeugung solange zu vertreten, solange ein Gegenbeweis von C-Seite 
(wohlweislich) ausbleibt- es könnte ja zum Desaster ausarten (siehe 
Sheeva Plug).

Ok, morgen kanns weiter gehen wenn immer noch Klärungsbedarf besteht ;-)

: Bearbeitet durch User
von Matthias L. (Gast)


Lesenswert?

Moby A. schrieb:
> Die Bausteine selber
> sind in ihrer Vielzahl aber sehr kompakt- in Summe dürfte das trotzdem
> die C-Effizienz in den Schatten stellen, da bin ich sicher.

Eben nicht. Du kannst per Hand/Kopf maximal über diesen Baustein 
optimieren. Der Compiler kann immer über das gesamte Programm 
optimieren. Da kommt keiner per Hand/Kopf mehr mit.


>Egal was ich
> hier aber veröffentlichen würde- wenn auf C-Seite keiner in der Lage und
> willens ist, selbst einen 200-Byte Code nachzuprogrammieren fehlt ein
> C-Äquivalent zum Vergleich.

Du hast ein paar Zeilen ASM veröffentlich. Aber keine Beschreibung was 
getan werden soll. Wir werden das ASM nicht ausnanderfriemeln um zu 
sehen, welches Bit wohin geschubst wird. Das sollte vorher feststehen. 
Aber diese Beschreibung deines Programmes, was es aus Sicht des 
Anwenders tut, lieferst Du nicht.
=> Einzige Erklärung, Du hast Angst, das es dann besser geht. Bisher ist 
ja nur die von Dir gepostete ASM-COde-Reihenfolge "optimal".

Alternative neue Aufgaben, wo sich einige beteiligen würden, scheitert 
ja bei Dir an der Annahme/Mitdiskussion zu einer in Text beschriebenen 
Aufgabenstellung.. Auch davon gab es viele. Die nimmst Du nicht an, 
weil:
- es angeblich kein "typsches 8bit MSR" ist
- Du Angst hast, das C besser wird
- Du nicht soviel Zeit hast/willst, während in C einfach for/while/..
  hingeschrieben wird

von Yalu X. (yalu) (Moderator)


Lesenswert?

Moby A. schrieb:
> Hatte gerade das Vergnügen kurz was im Code meines drittgrößten
> Asm-Projekts zu ändern und häng mal ein Bild vom Assembliervorgang an,

Hmm, du hast für das Projekt einen ATxmega128A4U genommen, weil der
nächstkleinere ATxmega64A4U zu wenig RAM hat. Von der Flash-Größe hätte
sogar ein ATxmega16A4U locker gereicht (sogar mit etlichen freien KB für
Erweiterungen ;-)).

Vom dem riesigen Flash-Speicher des ATxmega128A4U sind laut Screenshot
gerade einmal 7,8% belegt. Da will es mir irgendwie nicht so richtig
einleuchten, warum du auf Teufel-komm-raus versuchst, Flash-Bytes
einzusparen.

Moby A. schrieb:
> Ich denke, die Codedichte läßt bei größeren Programmen auf jeden Fall
> etwas nach.

Siehst du, und bei C bleibt die Codedichte auch bei größeren Programmen
konstant.

Moby A. schrieb:
> in Summe dürfte das trotzdem die C-Effizienz in den Schatten stellen,
> da bin ich sicher.

Ich nicht.

Da du aber einen öffentlichen Vergleich strikt ablehnst, muss das wohl
jeder für sich selbst heraus finden. Ich für meinen Teil habe es schon
getan, mit dem Ergebnis, dass bei Programmen dieser Größenordnung C ganz
klar im Vorteil ist.

von (prx) A. K. (prx)


Lesenswert?

Werner P. schrieb:
> Locker unter 32K. Komplett in C. Das möchte ich mal in ASM sehen.

Kein Problem. Musst nur gcc -Os -S laufen lassen. ;-)

: Bearbeitet durch User
von Carl D. (jcw2)


Lesenswert?

> Ich denke, die Codedichte läßt bei größeren Programmen auf jeden Fall
> etwas nach. Ich hatte ja schon vom Zusammenstöpseln verschiedener
> fertiger Funktionsbausteine gesprochen. Das geht, auch im Interesse zu
> wahrender Übersicht, nur mit gewissen Verlusten.

Genau so ein stupides Zusammenstöpsel kann man auch bei so Compilern wie 
BASCOM, LunaXYZ, ... beobachten. Wenn da eine Variable nicht zweimal 
hintereinander in ein Register geladen wird, dann nennt sich das 
"Optimizer". (BTW, deshalb haben die auch kein "volatile")
Man mag sich das nicht vorstellen können, aber man darf es doch mal 
ausprobieren, aber ein moderner Compiler ist von einer solchen 
"Macro-Textverarbeitung" meilenweit weg.
Nur man muß eben anschauen.
 Bei M.'s Assembler-Code hatten wir ja schon das Vergnügen und das war 
weder lesbar noch hochoptimiert. Und vom geprießenen "Baukastensystem" 
war auch nichts zu sehen.
 Ist aber eh egal, denn die Anforderung des Miniprogramms war ja, den 
exakten Bytestream der ASM-Lösung per gcc zu erzeugen. Entsprechende 
PROGMEM Konstanten sowie ein adaptiertes Linkerscript sollten das 
möglich machen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:

> Es hätte keines Beweises bedurft daß die Hardware nur für die
> entsprechende Sensorbestückung ausgelegt ist. Entsprechend ist der Code
> ausgelegt und entsprechend wurde er optimiert.

Ah ja, aber dafür muss der komplette RAM dann freigehalten werden
(und sogar noch ausgenullt, was nichtmal ein C-Compiler fabrizieren
würde – der initialisiert nämlich nur das, was gebraucht wird)?

> Quatsch.

> Unsinn.

> Du stellst Dich ja jetzt fast genauso dumm

Aha.

Lassen wir's.

von Werner P. (Gast)


Lesenswert?

A. K. schrieb:
> Kein Problem. Musst nur gcc -Os -S laufen lassen. ;-)

ich war zu faul nachzusehen. Der Atmega328 hat 32K Flash. Von daher 
meine Aussage "locker unter 32K"

Es sind ca. 12K

Grüße

von P. M. (o-o)


Lesenswert?

Moby A. schrieb:
> Für 8-Bit MSR
> behaupte ich aber aus eigener Erfahrung, daß direktes Asm hier
> sinnvoller ist als irgendwelche abstrakten Träumereien wie etwa C++.

Jaja, das behauptest du gerne, das wissen wir. Aber aufgrund welcher 
Erfahrung? Ein paar Hobby-Projekte in Assembler, aber noch nie C/C++ 
programmiert? Und du konntest bisher auch noch nie zeigen, wie Assembler 
effizienter oder einfacher sein soll, du behauptest es einfach.

Ich habe dich vor einigen Beiträgen gefragt, wie du auf die Idee kommst, 
der Mensch könne die mechanistische Arbeit des 
Assemblierens/Compilierens besser ausführen, als ein Computerprogramm. 
Leider kriegt man von dir auf solche fachlichen Fragen prinzipiell keine 
Antworten.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Werner P. schrieb:

> Es sind ca. 12K

;-)

Ich habe gerade mal bei mir das größte zufällig noch herumliegende
ELF-File in meinen AVR-Projekten gesucht.

Ist ein BASIC-Interpreter für einen ATmega128 (plus externen RAM,
schließlich soll der Nutzer ja auch ein bisschen BASIC eingeben
können), den ich vor 8 Jahren mal als Fingerübung gezimmert habe.
In erster Linie war die Motivation, die Portierungen von byacc und
flex auf den AVR auf diese Weise zu testen, d. h. die komplette
lexikalische Analyse ist als lex-Code geschrieben, der Parser als
yacc-Code.  Gleitkomma-Arithmetik ist auch mit dabei.

Das ELF-File bringt es auf weniger als 30 K Flash und 730 Byte
statischen RAM-Verbrauch.

Beruflich habe ich durchaus auch deutlich größeres gebaut, aber ich
denke, dass ist schon ein nettes Beispiel von Hobby-Programmierung.

: Bearbeitet durch Moderator
von (prx) A. K. (prx)


Lesenswert?

Naja, haarscharf die Kante des Mega32 kratzend kann ich schon bieten. 
Mehr als 32K gab es damals nur in Form des Mega128er und wenn ich zu 
viel Debugging einschaltete passte es nicht mehr.

Eigentlich eine typische Moby-Aufgabe, weil Heizungssteuerung. In C++ 
programmiert, mit einem kleine RTOS mit drin, einem RS485 Master, 
etlichen Sensoren verschiedenen Typs, Tastatur, LCD-Anzeige, RTC, DCF77, 
I2C-EEPROM, ... Und eher auf Struktur und Flexibilität als auf Platz 
geschrieben.

Was Moby freuen wird: Das RTOS ist komplett in Assembler (nicht von mir) 
und der RS485-Slave ein Tiny2313 auch in Asm (von mir).

: Bearbeitet durch User
von Matthias L. (Gast)


Lesenswert?

A. K. schrieb:
> Mehr als 32K gab es ....
> ... in C++ programmiert

Hättest Du statt dem bürokratischem C++ das einfach mit 
Übung/System/Vorbereitung (TM) komplett in ASM gemacht, hätte ein Tiny 
gereicht.

Allerdings wärst Du wohl eher in Rente, als das es fertig wäre.

von (prx) A. K. (prx)


Lesenswert?

Matthias L. schrieb:
> Allerdings wärst Du wohl eher in Rente, als das es fertig wäre.

Nö, das wär schon gegangen. Nicht so schnell und weniger leicht 
adaptierbar, aber ich habe auch ganz gut Übung in Assembler, wenngleich 
damals nicht AVR. Klar, länger gedauert hätte es schon und es wäre nicht 
in gleicher Weise aufgebaut gewesen. Aber so war es mein erstes AVR 
Projekt und neben dem eigentlichen Zweck auch Experimentierfeld, um zu 
sehen, was damit geht, und wie. Ist seither aber durchaus produktiv. Mit 
IoT-Erweiterung.

Ist halt schön, wenn das Interface eines Temperatursensors davon 
unabhängig ist, ob es sich um einen DS18x20 oder einen LM335 handelt. In 
C++ trivial. Und wenn man in 0.1° Schritten rechnen oder 32-Bit 
Date/Time-Werte vergleichen kann ohne sich einen abzubrechen. ;-)

Wo ich schon ein RTOS drin hatte, hatte ich da auch mit 
Software-Strukturen experimentiert. So gibt es eine Task, die nur dazu 
da ist, die Konsistenz des Zustands zu überprüfen, also ob die Werte und 
Zustände zueinander passen, Sensorwerte nicht zu alt sind etc.

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

A. K. schrieb:
> RS485-Slave ein Tiny2313 auch in Asm (von mir

Super. Und wieviel RAM und Flash hast du gespart?

mfg.

von (prx) A. K. (prx)


Angehängte Dateien:

Lesenswert?

Thomas E. schrieb:
> Super. Und wieviel RAM und Flash hast du gespart?

Keine Ahnung, weil es beim Slave nie eine C Version gab. Das war, wie 
schon geschrieben, mein erstes AVR Projekt und ich wollte beides 
ausprobieren. High-Level im Master und Asm im Slave.

Dieser Teil des Projekts wäre in C vermutlich nicht so sehr viel 
schneller fertig gewesen, wenn man davon absieht, dass es dann 
gemeinsamen Code mit dem Master gegeben hätte. Alles recht einfach 
aufgebaut und geradeaus.

Das Programm vom Slave:

ATtiny2313 memory use summary [bytes]:
Segment   Begin    End      Code   Data   Used    Size   Use%
---------------------------------------------------------------
[.cseg] 0x000000 0x00053c   1258     82   1340    2048  65.4%
[.dseg] 0x000060 0x0000c0      0     96     96     128  75.0%
[.eseg] 0x000000 0x000000      0      0      0     128   0.0%

Wenns interessiert siehe Anhang. Drin ist der RS485-Slave, ein DS18x20, 
ein serielles Interface zu einer damals schon alten Conrad Funkuhr, ein 
LCD-Display, paar Schalter. Das RAM dient nur als UART-Puffer und 
Stackspace.

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

A. K. schrieb:
> Keine Ahnung, weil es beim Slave nie eine C Version gab.

Was? Das erkennt man doch auch so. Das ist Effizienz, wie sie nur mit 
Assembler möglich ist.

Ich denke, mit dem dicken C-Compiler mit seiner ganzen 
Resourcenverschwendung wäre die Küche kalt, weil du immer noch auf den 
8313 warten würdest.

mfg.

von Karl H. (kbuchegg)


Lesenswert?

Moby A. schrieb:
> Werner P. schrieb:
>> Moby A. schrieb:
>>> 1-100K
>> mal sind es 1K mal 10K und jetzt 100K
>
> Wenn mir nicht bald jemand beweist warum effizientes Asm in den
> genannten Größenordnungen schlechter als C abschneiden muß sinds bald
> 1M ;-)

Das würden wir sogar gerne. Alleine es scheitert an dir, weil du dich 
standhaft weigerst, einmal ein etwas größeres Programm in Assembler zu 
formulieren, während wir dir hier die C Version auf die Schnelle 
zusammenkloppen.
Angebote gabs genug. Einzig und alleine du weigerst dich, den Beweis 
anzutreten, dass du auch das noch kürzer und vor allen Dingen mit 
weniger Fehlern hinkriegst.

von (prx) A. K. (prx)


Lesenswert?

Thomas E. schrieb:
> Was? Das erkennt man doch auch so. Das ist Effizienz, wie sie nur mit
> Assembler möglich ist.

Wäre in C mit Sicherheit grösser gewesen, allzumal im RAM. Aber ob im 
RAM nun 96 Bytes UART-Puffer liegen weil halt genug da ist, oder 64 
Bytes, das wäre egal gewesen.

Ich hätte mich damals aber nicht getraut, von vorneherein davon 
auszugehen, dass der Code in C in 2KB passt. Dass er deutlich länger 
wäre ist sicher, denn die Beschränkung auf Register als Speicher ist dem 
Compiler nicht gegeben, und das kostet recht viel.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Moby A. schrieb:

> etwas nach. Ich hatte ja schon vom Zusammenstöpseln verschiedener
> fertiger Funktionsbausteine gesprochen. Das geht, auch im Interesse zu
> wahrender Übersicht, nur mit gewissen Verlusten. Die Bausteine selber
> sind in ihrer Vielzahl aber sehr kompakt-


Nichts anderes macht der Compiler.
NUr dass er sich dann den ganzen Abschnitt noch einmal vornimmt und eine 
entsprechende Optimierung drüber laufen lässt. Und das schneller und 
zuverlässiger und mit weniger logischen Fehlern, als du als Mensch das 
jemals könntest.

> in Summe dürfte das trotzdem
> die C-Effizienz in den Schatten stellen, da bin ich sicher.

Deine Sicherheit trügt. Die Praxis sagt nämlich etwas anderes. Sie sagt 
unter anderem auch, dass die Diskrepanz immer größer wird, je größer der 
Code wird. Bei winzigsten Programmen hat man mit Assembler je nach 
konkreter Aufgabenstellung einen Vorteil. Aber das relativiert sich sehr 
schnell und die Hochsprachen setzen zum Überholvorgang an. Ab da wird 
dann der Abstand rasch immer größer und ist selbst von geübtem Assembler 
Programmierern nicht mehr zu schliessen.

von Gu. F. (mitleser)


Lesenswert?

Karl H. schrieb:
> Die Praxis sagt nämlich etwas anderes. Sie sagt
> unter anderem auch, dass die Diskrepanz immer größer wird, je größer der
> Code wird. Bei winzigsten Programmen hat man mit Assembler je nach
> konkreter Aufgabenstellung einen Vorteil. Aber das relativiert sich sehr
> schnell und die Hochsprachen setzen zum Überholvorgang an.

Ich hab echt Respekt vor eurer Engelsgedult, aber ist euch wirklich 
nicht klar dass das schon gefühlte 300 mal angeführt wurde?
Glaubt ihr wirklich eine echte Diskussion zu führen?

von Carl D. (jcw2)


Lesenswert?

@A.K.
Du Ast ja auch richtig viel gespart, denn nach der Befehlsstatistik am 
Ende des Listings werden viele Befehle garnicht benutzt. Die zu ihrer 
Ausführung notwendigen Schaltelemente werden somit für eine spätere 
Verwendung in einen Programm mit komplementärem Befehlspektrum geschont. 
Dank ASM hat man volle Kontrolle darüber, welch Befehle benutzt werden. 
Auch werden die Register R20..23 als Notfallreserve aufgespart. 
Vorbildlich! Dafür gibt es den goldenen Wal am Bande!

 Leider suggeriert aber die Verwendung von 5x! EOR, daß es sich hier um 
keine typische MSR-Anwendung handelt.
 Nein, MSR hat nichts mit Messen oder Steuern oder Regeln zu tun. Das 
bedeutet Moby-Spart-Register. Damit ist auch klar, warum kein anderer zu 
etwas Kompatiblem imstande wäre.

{$Scherz.off}

Wenn man erst sieht mit welchen fiesen ASM-Tricks ein Compiler die 
Mehrfachnutzung von Code machen kann, z.B. bei -mcall-prologues. Sowas 
get auch per Hand, aber wer kann da schon den Überblick behalten.


> Glaubt ihr wirklich eine echte Diskussion zu führen?

Nö, aber solange es Spaß macht. Wenn's mich anödet, dann lass ich's 
sein, aber solange der Herausforderer immer wieder zappelt ...

: Bearbeitet durch User
von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> Moby A. schrieb:
>> Johann L. schrieb:
>>> Warum um alles in der Welt sollt es einen VORTEIL bringen, da ein
>>> "Bytechen" einzusparen?  Bereits vor der Implementierung hätte ich dir
>>> sagen könne, dass mit Assembler einige "Bytechen" hätten gespart werden
>>> können.  Aber was ist der MEHRWERT davon?
>>
>> Bei den beiden Mickymaus Programmen von Dir?
>
> Jetzt muss ich doch wieder grinsen:
>
> Nachdem du dich bei deinem 200-Byte-Progrämmchen vehement gegen die
> Aussage gewehrt hast, es sei ein Mickymausprogramm, bezeichnest du jetzt
> deinerseits die Programme von Johann so.

Na diese beiden Programme sind ja auch vom MiMo-Typ — eben weil sie 
die einzigen sind, die (annähernd) das Moby-Kriterium erfüllen.

Alle anderen meiner Programme für 2KiB AVR (und drüber eh) wollte ich 
echt nicht in Assembler tippseln weils eben NIX bringt.

> Im ersten von Johanns Programmen steckt aber mindestens doppelt so viel
> Funktionalität wie in deinem Programm. Wenn Johanns Programm eine
> Mickymaus ist, dann ist dein Programm ein Mickymäuschen. Es wird dir
> auch nie und nimmer gelingen, Johanns Programm mit nur 200 Byte in
> Assembler umzuschreiben.

Das erste Programm erzeugt ca. 500 Bytes Binärcode (bei netto 100 LOC), 
ist eben viel SFR-Geraffel und auch 32-Bit Arithmetik.  Und ja, das 
ginge in Assembler kleiner, aber keinesfalls in 200 Bytes.  Und die 
32-Bit Division inline zu kopieren, um ein paar grottige Bytes Code zu 
sparen, das macht Moby bestimmt Spaß...

> Offensichtlich hast du dich von dem kompakten, übersichtlichen Quellcode
> des C-Programms täuschen lassen, der natürlich deutlich kürzer und
> einfacher als dein langatmiger, unstrukturierter Assemblerrattenschwanz
> ist.
>
> Was du hier endlich einmal selber erfahren durftest:
>
> In höheren Programmiersprachen lassen sich im Gegensatz zu Assembler
> auch komplexere Berechnungen und Abläufe einfach und übersichtlich
> darstellen.

von Gu. F. (mitleser)


Lesenswert?

A. K. schrieb:
> Thomas E. schrieb:
>> Super. Und wieviel RAM und Flash hast du gespart?
>
> Wenns interessiert siehe Anhang. Drin ist der RS485-Slave, ein DS18x20,
> ein serielles Interface zu einer damals schon alten Conrad Funkuhr, ein
> LCD-Display, paar Schalter. Das RAM dient nur als UART-Puffer und
> Stackspace.

Du meine Güte, was hast du alleine mit deinen überflüssigen Kommentaren 
an Resourcen verschwendet. Weist du nicht dass man für evtl. 
Erweiterungen die Tastatur schonen muß?

von Sheeva P. (sheevaplug)


Lesenswert?

Michael K. schrieb:
> Streng genommen hat Moby bereits ein 200Byte Programm 'geliefert'

Bitte entschuldige, aber welches der beidem "Programme" meinst Du denn?

Jenes, das Yalu nach Mobys eigenen Kriterien so viel besser gelöst hat?

Oder meinst Du seine offensichtlich böswillig konstruierte Falle?

Ist aber auch wirklich blöd für den armen Moby. Erst bricht er sich 
einen ab um eine Falle zu konstruieren, die den Compiler möglichst alt 
aussehen läßt. Dann scheint einer hinein zu tappen, und dessen Kompilat 
sieht viel kleiner aus als seine ausgeklügelte Falle... sapperlot! >>Und 
er kommt zu dem Ergebnis: "Nur ein Traum war das Erlebnis. Weil", so 
schließt er messerscharf, "nicht sein kann, was nicht sein darf.<< 
(Christian Morgenstern, "Die unmögliche Tatsache") Also gerät der arme 
Moby in Panik und erfindet neue Anforderungen, von denen er nun aber 
ganz sicher ist, daß sie vom Compiler nicht erfüllt werden können. 
Menno!

Nun reitet er bis zum Wundbrand auf seiner Falle herum -- aber was 
bleibt ihm auch anderes übrig? Und gleichzeitig versucht er sich an 
meinem Code abzuarbeiten, weil er trotz meiner ausdrücklichen Hinweise 
offensichtlich immer noch nicht kapiert hat, daß er nur ein 
Honigtöpfchen war, in das er mit großer Geste hineingefallen ist. 
Menno!!

Die Moral von der Geschicht': je mehr Aufwand man treibt, um anderen 
eine Falle zu stellen, desto blöder ist es, selbst hinein zu fallen. 
Menno!!1!

Gehuldigt sei dem Gewinner des Smileywettbewerbs: *ROFLMAO!*

von Sheeva P. (sheevaplug)


Lesenswert?

Moby A. schrieb:
> Reden wir mal nicht von "großen" Programmen. Nämlich solchen, die
> Codegrößen von 1-100K nur vom Hörensagen kennen. Die sind mal auf jeden
> Fall Domäne von Asm. Ich meine für den, der entsprechend Übung,
> Vorbereitung, System mitbringt.

Sind "Übung" und "Vorbereitung" nicht genau jener 
ressourcenverschwendende Overhead, den Du C immer vorwirfst? Für winzige 
Miniaturprogrämmchens, von denen Du hier faselst, brauch ich in C weder 
Übung, noch Vorbereitung. Das hack' ich einfach 'runter und hab' dann 
mehr Zeit zum Knutschen.

von Michael K. (Gast)


Lesenswert?

Gu. F. schrieb:
> Glaubt ihr wirklich eine echte Diskussion zu führen?

Nein, aber hast du mal versucht die Zeugen Jehovas an der Haustür zu 
überzeugten Satanisten zu bequatschen ?
Das muß man als sportlichen Wettkampf sehen.
Natürlich macht das überhaupt keinen Sinn, das ist so eine Art 
Brainjogging.

Sheeva P. schrieb:
> Also gerät der arme
> Moby in Panik und erfindet neue Anforderungen

Ich denke Du täuscht Dich.
Moby hat vor langer Zeit jegliche Diskussions-Konventionen über Board 
geworfen. Er muß nicht in Panik geraten, er muß nichts beweisen, er 
behauptet einfach was er will, wann er will und ignoriert alles was 
seine Kreise stört.
Ob er das wirklich alles glaubt, uns nur veräppelt, im realen Leben 
Bankensoftware in Cobol programmiert oder eine übergewichtige Friseuse 
aus Castrop Rauxel mit einem Hang zu Kreuzworträtseln und ASM ist werden 
wir wohl nie herausfinden.

Ich finde das alles hochgradig lustig.
Tschuldigung, aber auch Deine / Eure Verbissenheit finde ich recht 
erheiternd. Es macht wirklich keinen Sinn mit ihm zu diskutieren, nicht 
bei diesem Thema.
Da kann man jetzt vor Wut die Tapeten von der Wand kratzen oder in sich 
hineinlächeln wie viele bunte Vögel diese Welt doch zu bieten hat.

Stellenweise hat dieser Thread wirklich lehrreiche Dinge zu Tage 
gefördert, wozu ich unter anderem auch teilweise Deine Beiträge zähle.
Die ganze Aufregung das er das einfach nicht einsieht ist aber 
verschwendete Energie.
Diese Wut führt nur dazu das man sich selbst zu Äusserungen hinreissen 
läßt die nicht ganz sauber sind.

Vor allem glaube ich eines.
Wenn man mit einem Typen wie Moby beim Bier zusammensitzen würde währe 
man wahrscheinlich baff erstaunt wie vielschichtig und reflektiert der 
über unterscheidlichste Dinge reden kann.

Die Forenfigur Moby ist eine Kreation des Menschen der dahinter 
verborgen bleibt. Dazu dient diese Figur und sie folgt einem Drehbuch.
Sich darüber aufzuregen ist als würde ich Gerd Fröbe persönlich 
übelnehmen das er als Goldfinger 007 töten wollte.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael K. schrieb:
> Wenn man mit einem Typen wie Moby beim Bier zusammensitzen würde währe
> man wahrscheinlich baff erstaunt wie vielschichtig und reflektiert der
> über unterscheidlichste Dinge reden kann.

Das könnte ich mir auch gut vorstellen.

von Sheeva P. (sheevaplug)


Lesenswert?

Michael K. schrieb:
> Sheeva P. schrieb:
>> Also gerät der arme
>> Moby in Panik und erfindet neue Anforderungen
>
> Ich denke Du täuscht Dich.
> Moby hat vor langer Zeit jegliche Diskussions-Konventionen über Board
> geworfen. Er muß nicht in Panik geraten, er muß nichts beweisen, er
> behauptet einfach was er will, wann er will und ignoriert alles was
> seine Kreise stört.

Diese These hast Du wiederholt geäußert, und einerseits bin ich durchaus 
geneigt, Dir darin zuzustimmen. Andererseits paßt es aber nicht ganz ins 
Bild, daß er so reagiert hat wie geschehen.

Er hätte meinen Code zuerst testen und dann danach reagieren können. 
Dann wäre ihm sofort aufgefallen, daß der Code nicht funktionierte. Das 
hat er aber nicht getan, sondern sich stattdessen die Blöße gegeben, 
sofort und zuerst die neue Anforderung aus dem Hütchen zu zaubern 
und danach erst auszuprobieren, ob mein Code wirklich tut, was er denn 
tun sollte. Sicher hätte er das auch getan, wenn mein Honigtöpfchen im 
Vergleich nicht gar so klein gewesen wäre, oder wenn er gleich hätte 
sehen können, daß es nicht funktioniert. Daß mein Code so unlesbar ist 
und so viele ungebräuchliche Konstrukte nutzt, ist ja nun kein Zufall. 
g

Obendrein scheint mir die Tatsache, daß er manchmal ziemlich wild um 
sich beißt, wenn er sich in die Enge getrieben sieht, darauf 
hinzuweisen, daß ihm durchaus etwas an der Sache liegt. Jedoch vermute 
ich, daß er C ganz passabel beherrscht und recht gut weiß, was so ein 
C-Compiler kann, denn sonst hätte er seine Falle nicht so ausgefeilt 
konstruiert.

Insofern bin ich hinsichtlich Deiner These etwas unschlüssig -- aber das 
gehört ja zu dem, was die Geschichte so unterhaltsam macht. g

> Stellenweise hat dieser Thread wirklich lehrreiche Dinge zu Tage
> gefördert, wozu ich unter anderem auch teilweise Deine Beiträge zähle.

Danke -- ich hoffe, nicht nur als Sozialstudie! g

von Bernhard M. (boregard)


Lesenswert?

Hmm, so einmal am Tag über die neuen Posts in diesem Thread gehen ist 
schon amüsant.

Auf der einen Seite Moby, der davon überzeugt ist, das man mit 
Lochkarten näher an der Maschine ist und deswegen immer effizienter 
arbeiten kann gegen den Rest, der weiß, daß man mit mit Tastatur und 
Bildschirm praktisch immer im Vorteil ist....

: Bearbeitet durch User
von Gu. F. (mitleser)


Lesenswert?

Michael K. schrieb:
> Vor allem glaube ich eines.
> Wenn man mit einem Typen wie Moby beim Bier zusammensitzen würde währe
> man wahrscheinlich baff erstaunt wie vielschichtig und reflektiert der
> über unterscheidlichste Dinge reden kann.

Brrr die Vorstelltung find ich grad gruselig.
Der wird sicher nicht auf Knopfdruck zum besten Kumpel. Wer sich mit 
Lügen und derart arrogant (wenn auch sehr unterschwellig) solche 
Garbenkämpfe liefert ist am Abend in der Kneipe immer noch der selbe Typ 
Mensch.

von Robert L. (lrlr)


Lesenswert?

A. K. schrieb:
> ein DS18x20,
> ein serielles Interface zu einer damals schon alten Conrad Funkuhr, ein
> LCD-Display,

lol
alles was du nicht selber kannst, hast du also in externe Hardware 
ausgelagert...
;-)



ps. warum braucht C eigentlich (per se?) mehr speicher?
sollte es nicht (durch "lokale variablen", bessere ausnützen der 
register usw) für C viel einfacher sein, speicher mehrfach (stack usw.) 
zu verwenden.. (und eben nur so kurz wie möglich zu reservieren)

von Karl H. (kbuchegg)


Lesenswert?

Robert L. schrieb:

> ps. warum braucht C eigentlich (per se?) mehr speicher?

Weil einer von Mobys 'Tricks' darin besteht, sich nur Aufgaben zu 
suchen, für die man komplett und ausschlieslich mit den Registern der 
CPU durchkommt. Speicher braucht er dann nur für den Returnstack.

Das ist in C ein bisschen schwer zu realisieren. Man könnte zwar mittels 
'register' den Compiler auffordern, bestimmte Variablen in bestimmte 
Register zu legen, aber das ist ein 2-schneidiges Schwert, sobald 
irgendwelche System Library Aufrufe dazukommen, die von dieser 
Reservierung nichts wissen.

von (prx) A. K. (prx)


Lesenswert?

Robert L. schrieb:
> alles was du nicht selber kannst, hast du also in externe Hardware
> ausgelagert...

Stimmt. ;-)

> ps. warum braucht C eigentlich (per se?) mehr speicher?

Tut es nicht. Nur zeigt grad das Beispiel meines gestern geposteten 
Asm-Codes die Grenzen der üblichen Compiler. Der Compiler wird Variablen 
nicht über die Grenzen von Funktionen hinaus in Registern platzieren. 
Grad bei Prozessoren mit vielen Registern, wie AVR, kann das einen 
erheblichen Unterschied ausmachen.

Da aber die Anzahl Register begrenzt ist, ist es auch die Anzahl darin 
platzierbarer Variablen. Bei kleinen Programmen ist das kein Problem. 
Bei grossen und bei oft signifikant veränderten Programmen eignet sich 
diese Programmiertechnik weniger.

Man könnte natürlich auch einen optimierenden Compiler bauen, der 
globale Registerplatzierung effizient nutzt, wenn ihm das sinnvoll 
erscheint. Ein solcher Compiler könnte auch bei kleinen Programmen 
locker mithalten.

Nur müsste man dann immer alles zusammen übersetzen, sämtliche Libraries 
eingeschlossen. Das ist bei kleinen Programmen nur problemlos möglich, 
wenn der Quellcode der Libraries vorliegt, und bei grossen Programmen 
nicht praktikabel.

: Bearbeitet durch User
von Robert L. (lrlr)


Lesenswert?

A. K. schrieb:
> Der Compiler wird Variablen
> nicht über die Grenzen von Funktionen hinaus in Registern platzieren.

ok,
ich dachte mir es gibt vielleicht sowas wie "fastcall"

https://de.wikipedia.org/wiki/Aufrufkonvention#Register_.28FastCall.29

gerade bei einer CPU mit so viel (pseudo-?) Registern wäre es doch 
hilfreich..

von (prx) A. K. (prx)


Lesenswert?

Robert L. schrieb:
> ich dachte mir es gibt vielleicht sowas wie "fastcall"

Bei Architekturen mit ausreichender Anzahl Register werden Parameter 
üblicherweise in Registern übergeben, soweit möglich. Bei AVR ebenfalls. 
Diese fastcall Methode ist also Stand der Technik.

Das x86 ABI, aus dem man fastcall kennt, geht allerdings auf Zeiten vor 
ANSI-C zurück, und ohne Parameterdeklaration gibts bei der 
routinemässigen Übergabe in Registern kleine Probleme.

Bei dem was ich grad schrieb geht es aber nicht um die Übergabe von 
Parametern, sondern um statische/globale Variablen.

: Bearbeitet durch User
von Matthias L. (Gast)


Lesenswert?

Karl H. schrieb:
> Weil einer von Mobys 'Tricks' darin besteht, sich nur Aufgaben zu
> suchen, für die man komplett und ausschlieslich mit den Registern der
> CPU durchkommt. Speicher braucht er dann nur für den Returnstack.

Ja. Und andere Aufgaben sind keine typischen 8bit MSR Anwendungen und 
werden per externem IC beigefügt.

von Witkatz :. (wit)


Lesenswert?

Bernhard M. schrieb:
> Hmm, so einmal am Tag über die neuen Posts in diesem Thread gehen ist
> schon amüsant.
Ja, es sind ein paar gute Kolumnisten dabei.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Karl H. schrieb:
> Robert L. schrieb:
>
>> ps. warum braucht C eigentlich (per se?) mehr speicher?
>
> Weil einer von Mobys 'Tricks' darin besteht, sich nur Aufgaben zu
> suchen, für die man komplett und ausschlieslich mit den Registern der
> CPU durchkommt. Speicher braucht er dann nur für den Returnstack.

So ist es, weswegen er ja auch nur solche Mickymausanwendungen für einem
Vergleich zur Verfügung stellt.

Wenn man sich nämlich einmal die etwas größere Applikation von Moby
anschaut (für deren Programmierung Assembler seiner Ansicht nach ja
ebenfalls nur Vorteile bringen soll), stellt man fest, diese sehr wohl
RAM benutzt und davon nicht einmal wenig, nämlich 5415 Byte, s. dieser
Beitrag:

Moby A. schrieb:
> 10K Asm-Codesize

Eine solch intensive Speichernutzung entsteht meist dadurch, dass man
größere Arrays von Datenstrukturen benötigt. Diese sind zunächst einmal
in Assembler gleich groß wie in C, weswegen in diesem Punkt Assembler
keine Vorteile bietet. Anders als in Assembler hat man aber in C die
Möglichkeit, Datenstrukturen ohne großen Aufwand mittels Bitfields enger
zu packen, wenn die einzelnen Elemente nicht den vollen Wertebereich von
8- oder 16-Bit-Variablen ausfüllen. Dadurch können auch 4-, 10- oder
12-Bit-Werte mit minimalem Overhead im Speicher abgelegt werden.

Wenn man wie Moby darauf erpicht ist, immer den jeweils kleinstmöglichen
Controller einzusetzen, sehe ich hier gute Chancen, mit der Verwendung
von C-Bitfields den ATxmega128A4U durch einen ATxmega64A4U mit halb
soviel Speicher (4096 Byte RAM) zu ersetzen. Dadurch wird das Binary des
Programms zwar etwas länger und langsamer, aber Flash-Speicher steht bei
diesen Controllern sowieso im Überfluss zur Verfügung, und auch die
Laufzeiteffizienz dürfte bei dieser Anwendung nicht die entscheidende
Rolle spielen.

Natürlich könnte man dasselbe auch in Assembler tun, allerdings
erfordert das viel zusätzlichen Programmieraufwand, zudem wird das
Programm durch die komplizierteren Elementzugriffe unübersichtlich und
schlecht wartbar. In C hingegen hat man durch die Verwendung von
Bitfields praktisch überhaupt keinen zusätzlichen Entwicklungsaufwand,
da man im Wesentlichen nur die Datenstruktur(en) etwas anders
deklarieren muss. Die Zugriffe auf Elemente mit "krummen" Bitzahlen
werden vom Compiler automatisch erzeugt und unterscheiden sich im
Quellcode überhaupt nicht von gewöhnlichen Elementzugriffen.

Deswegen würde ich sagen, dass bei datenintensiven Anwendungen wie Mobys
Haussteuerung C nicht nur bzgl. der Entwicklungszeit sondern auch des
RAM-Verbrauchs klare Vorteile bietet.

von Klaus W. (mfgkw)


Lesenswert?

Naja, prinzipiell geht das alles in ASM ja auch, insofern kann man nicht 
sagen daß C weniger Speicher braucht.

Nur ist der Programmieraufwand inklusive Fehleranfälligkeit in ASM 
natürlich drastisch höher, wenn man so geizig programmiert.
Per Definition ist es dann aber keine typische Anwendung mehr :-)

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> Hmm, du hast für das Projekt einen ATxmega128A4U genommen, weil der
> nächstkleinere ATxmega64A4U zu wenig RAM hat. Von der Flash-Größe hätte
> sogar ein ATxmega16A4U locker gereicht (sogar mit etlichen freien KB für
> Erweiterungen ;-)).

Was ist denn das für ein altkluger Vorwurf...
Da handelt es sich um Code für meine SmartHome-Zentrale.
Da wird ständig erweitert, die ist niemals fertig.
Wie dumm, bei solch absehbarer Zukunft am falschen Ende zu sparen.

Ganz anders sieht das z.B. bei Sensor-Aktor Knoten und kleinen 
dezentralen Steuerungen aus. Halt weiteren Millionen 8-Bit MSR 
Anwendungen.

Yalu X. schrieb:
> Siehst du, und bei C bleibt die Codedichte auch bei größeren Programmen
> konstant.

Ändert aber nix dran daß der C-Ressourcenverbrauch deutlich schlechter 
bleibt. Die etwas nachlassende Codedichte geht im Wesentlichen auf die 
notwendige Gliederung des Codes zurück, um bei größeren Projekten den 
Überblick zu behalten. In einem finalen Schritt könnte man das 
freilich vieles zusammenlegen.

Frank M. schrieb:
> Moby A. schrieb:
>> Frank M. schrieb:
>>>    Ab 1KB Codegröße ist ASM mit C IMMER schlagbar
>>
>> Das halte ich für falsch. Und wir wollen gleich nochmal klarstellen,
>> daß nichts als der Ressourcen-Verbrauch gemeint ist.
>
> Genau dafür hast Du keinen Beleg.

Hast Du denn einen Beleg für Deine Behauptung ?
Wie man schön sieht handelt es sich bei mangelnden 
Vergleichsmöglichkeiten hier um ein Totschlagargument, mit dem kein 
Blumentopf zu gewinnen ist. Um da weiterzukommen und mal einen Anfang zu 
machen habe ich mich für meine Behauptung um eine simple, aber 
vollständige Asm-App zum Vergleich bemüht:
Beitrag "Kleines Tiny13 Sensorboard"

Wie zu erwarten kam natürlich nichts besseres. Die meisten werden hier 
trotz anderslautender Heuchelei wissen, daß man sich mit dem Versuch nur 
in die Nesseln setzen kann. Denn wenn manche Profis hier nur halb so 
viel C-Experte sind wie sie tun wär das längst fertig ;-)

@Mod: Die Beantwortung von Beiträgen wird ohne funktionierende 
Aufteilung bei langen Threads immer zäher. Ist das Absicht? ;-)

: Bearbeitet durch User
von Klaus W. (mfgkw)


Lesenswert?

Moby A. schrieb:
> Die Beantwortung von Beiträgen wird ohne funktionierende
> Aufteilung bei langen Threads immer zäher.

Nach welchen Kriterien willst du aufteilen?
"Sinnvoll" und "nicht sinnvoll"?

: Bearbeitet durch User
von Moby A. (moby-project) Benutzerseite


Lesenswert?

Klaus W. schrieb:
> Nach welchen Kriterien willst du aufteilen?
> "Sinnvoll" und "nicht sinnvoll"?

Du meinst "Sinnvoll" so wie Dein Beitrag gerade?
Immer wieder beeindruckend, was manche "Profis" hier so draufhaben ;-(

: Bearbeitet durch User
von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Moby A. schrieb:
> Hast Du denn einen Beleg für Deine Behauptung ?
> Wie man schön sieht handelt es sich bei mangelnden
> Vergleichsmöglichkeiten hier um ein Totschlagargument, mit dem kein
> Blumentopf zu gewinnen ist.

Moby FALSCH!!!
Der Beweis wurde schon vor einigen MONATEN erbracht, also halte dich 
zurück mit Falschaussagen

Beitrag "Re: C versus Assembler->Performance"

von Robert L. (lrlr)


Lesenswert?

also wenn man als ASM Programmierer etwas lernt, dann offensichtlich c&p

von Yalu X. (yalu) (Moderator)


Lesenswert?

Moby A. schrieb:
> Ändert aber nix dran daß der C-Ressourcenverbrauch deutlich schlechter
> bleibt. Die etwas nachlassende Codedichte geht im Wesentlichen auf die
> notwendige Gliederung des Codes zurück, um bei größeren Projekten den
> Überblick zu behalten.

Und eben deswegen ist die Code auch nicht dichter als in C. Ganz im
Gegenteil: Der vom C-Compiler erzeugte Assemblercode braucht nicht
übersichtlich zu sein, deswegen darf der Compiler gerne etwas mehr
optimieren (und tut das auch) als du es mit Rücksicht auf die
Übersichtlichkeit tun würdest.

> In einem finalen Schritt könnte man das freilich vieles zusammenlegen.

Was aber rein hypothetisch ist, da der finale Schritt nie stattfinden
wird, wie du ja selbst schreibst:

Moby A. schrieb:
> Da handelt es sich um Code für meine SmartHome-Zentrale.
> Da wird ständig erweitert, die ist niemals fertig.

In C muss man für so etwas nicht bis zum finalen Schritt warten, weil
mit der Optimierung der Datenstrukturen so gut wie kein zusätzlicher
Aufwand und überhaupt keine Einschränkung der Übersichtlichkeit
verbunden ist.

von Witkatz :. (wit)


Lesenswert?

>>>>    Ab 1KB Codegröße ist ASM mit C IMMER schlagbar
>>> Das halte ich für falsch.
>> Genau dafür hast Du keinen Beleg.
> Hast Du denn einen Beleg für Deine Behauptung ?
> ...
> Beitrag "Kleines Tiny13 Sensorboard"

Zurück auf los!

Yalu X. schrieb:
> In C muss man

Dafür muss man erst C lernen.
Oder als Workaround sich ASM schön reden.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Yalu X. schrieb:

> größere Arrays von Datenstrukturen benötigt. Diese sind zunächst einmal
> in Assembler gleich groß wie in C, weswegen in diesem Punkt Assembler
> keine Vorteile bietet. Anders als in Assembler hat man aber in C die
> Möglichkeit, Datenstrukturen ohne großen Aufwand mittels Bitfields enger
> zu packen, wenn die einzelnen Elemente nicht den vollen Wertebereich von
> 8- oder 16-Bit-Variablen ausfüllen. Dadurch können auch 4-, 10- oder
> 12-Bit-Werte mit minimalem Overhead im Speicher abgelegt werden.

Nicht nur das. Ich habe auch die Möglichkeit, schnell und einfach die 
komplette Datenorganisation zu ändern, wenn sich im Laufe der Zeit die 
Anforderungen ändern oder erweitert werden muss. In Assembler artet so 
ein Unterfangen regelmässig in einen mittleren Albtraum aus. Und ja, ich 
weiss durchaus wovon ich da spreche, hab ich schon gemacht - würde ich 
nie wieder tun.

von Matthias L. (Gast)


Lesenswert?

Karl H. schrieb:
> wenn sich im Laufe der Zeit die
> Anforderungen ändern oder erweitert werden

Du hast vorher nur nicht genügend Vorbereitung Planung und Übung 
gemacht.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> Egal was ich
> hier aber veröffentlichen würde- wenn auf C-Seite keiner in der Lage und
> willens ist, selbst einen 200-Byte Code nachzuprogrammieren fehlt ein
> C-Äquivalent zum Vergleich.

Ich werde Dir jetzt mal vorführen, warum Deine Argumentation Schwachsinn 
ist.

Situation A
===========

  - Moby legt ein 200Byte-Programm vor

  - Moby sagt: "Solange kein C-Programmierer ein äquivalentes
    C-Programm vorlegt, ist mein Programm in ASM das optimalste
    Programm der Welt!"

  - Keiner hat Lust, Mobys Programm in allen Einzelheiten zu verstehen
    (weils Zeit kostet) und alle verlieren auch sämtliche Lust,
    weil Moby plötzlich nachschiebt, als er seine Felle schwimmen
    sieht: "Das Programm darf KEIN RAM nutzen!". Auch hat keiner
    Lust, da Arbeit reinzustecken, weil keiner es braucht

  - Moby schreit: "Aha, ihr könnt es nicht! ASM ist also BESSER!"

Soweit so gut.

Jetzt drehe ich den Spieß rum:

Situation B
===========

  - N.N. legt ein C-Programm vor mit 1KB Binärgröße

  - N.N. sagt: "Solange kein ASM-Programmierer ein äquivalentes
    ASM-Programm vorlegt, ist mein Programm in C das optimalste
    Programm der Welt!"

  - Moby sagt: "Nee, habe ich keine Lust, weil ichs nicht brauche".

  - N.N. schreit: "Aha, Du kannst es nicht! C ist also BESSER!"

Würdest du so einen Scheiß akzeptieren?

Ich kann Dir hunderte von C-Programmen hier präsentieren, wo Du 
überhaupt nicht in der Lage wärest, diese in ASM nachzugrogrammieren. 
Aber nur um zu sagen: "C ist besser als ASM"? Bestimmt nicht. Weil diese 
Argumentation Schwachsinn ist.

: Bearbeitet durch Moderator
von Karl H. (kbuchegg)


Lesenswert?

Frank M. schrieb:
>   - Keiner hat Lust, Mobys Programm in allen Einzelheiten zu verstehen
>     (weils Zeit kostet)

Eigentlich nicht. Yalu hat mich da wieder auf ein paar Ideen gebracht, 
wie man den Compiler für seine Sensorboard Aufgabenstellung mit dem 
kruden Übertragungformat zu seinem Nutzen einspannen könnte. Und auch 
die Sache mit den Register-Variablen würde man IMHO in den Griff kriegen 
(avr-gcc unterstützt ja noch das 'register' Schlüsselwort und Library 
Aufrufe sind nicht notwendig)
Nur hab ich deswegen keine Lust dazu, weil sich Moby konsequent in der 
umgekehrten Richtung weigert, aus einer etwas umfangreicheren Vorgabe in 
absehbarer Zeit ein entsprechendes ASM-Programm zu schreiben. Also genau 
dein Szenario B, nur das ich etwas größer angesetzt hätte als lediglich 
1K, damit die Diskrepanz so richtig schön zum tragen kommt :-) Ich 
versteh natürlich, dass er da nicht 3 Wochen jeden Tag 3 bis 4 Stunden 
über dem Code brüten will, um den Flash Verbrauch wieder um 3 Bytes zu 
drücken. Aber auf der anderen Seite ist genau das die Lektion, um die es 
geht: Erstens interessiert das keinen, ob das Programm 3 Bytes kürzer 
ist oder nicht, solange es in den Flash passt und zweitens ist genau das 
Argument, das Moby immer wieder bringt ("Ich hab mit meiner Zeit 
besseres zu tun") genau eines der Argumente, warum Hochsprachen meistens 
die bessere Wahl sind - eben weil wir mit unserer Zeit besseres zu tun 
haben, als 3 Bytes im Flash nachzujagen.

: Bearbeitet durch User
von P. M. (o-o)


Lesenswert?

Moby A. schrieb:
> Ändert aber nix dran daß der C-Ressourcenverbrauch deutlich schlechter
> bleibt.

Hör jetzt bitte mal auf mit dem Unsinn, das ist wirklich nur noch 
lächerlich und keiner Diskussion mehr würdig. Sollte man nach dermassen 
viel Widerspruch von deutlich erfahreneren Leuten ja irgendwann 
kapieren, findest du nicht?


Markus M. schrieb:
> Der Beweis wurde schon vor einigen MONATEN erbracht, also halte dich
> zurück mit Falschaussagen

Am Anfang war Moby einfach stur und uneinsichtig, dann begann er, 
Argumente und Fakten ganz zu ignorieren und mittlerweile ist er sogar zu 
Lügen und Falschaussagen übergegangen.

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Markus M. schrieb:
> Der Beweis wurde schon vor einigen MONATEN erbracht, also halte dich
> zurück mit Falschaussagen

Nichts wurde erbracht. Optimierter Asm-Code wie in meinem Projekt 
gezeigt wurde nicht geschlagen und ist nicht zu schlagen. Höchstens in 
gewissen Wunschfantasien ;-) Speziell Dein Beitrag dazu war bislang 
überschaubar und fachlich: nicht vorhanden.

Yalu X. schrieb:
> In C muss man für so etwas nicht bis zum finalen Schritt warten, weil
> mit der Optimierung der Datenstrukturen so gut wie kein zusätzlicher
> Aufwand und überhaupt keine Einschränkung der Übersichtlichkeit
> verbunden ist.

Auch ohne "finale Schritte" bleibt Asm Code effizienter.
Wenn großartige Datenstrukturen zu optimieren, also mit umfangreichen, 
verschiedenen Datenmengen umzugehen wäre dann mag die Welt anders 
ausschauen.

Karl H. schrieb:
> Yalu X. schrieb:
>
> größere Arrays von Datenstrukturen benötigt. Diese sind zunächst einmal
> in Assembler gleich groß wie in C, weswegen in diesem Punkt Assembler
> keine Vorteile bietet. Anders als in Assembler hat man aber in C die
> Möglichkeit, Datenstrukturen ohne großen Aufwand mittels Bitfields enger
> zu packen, wenn die einzelnen Elemente nicht den vollen Wertebereich von
> 8- oder 16-Bit-Variablen ausfüllen. Dadurch können auch 4-, 10- oder
> 12-Bit-Werte mit minimalem Overhead im Speicher abgelegt werden.
>
> Nicht nur das. Ich habe auch die Möglichkeit, schnell und einfach die
> komplette Datenorganisation zu ändern, wenn sich im Laufe der Zeit die
> Anforderungen ändern oder erweitert werden muss. In Assembler artet so
> ein Unterfangen regelmässig in einen mittleren Albtraum aus. Und ja, ich
> weiss durchaus wovon ich da spreche, hab ich schon gemacht - würde ich
> nie wieder tun.

Diese Möglichkeiten sind ja schön und gut- aber s.o.

von P. M. (o-o)


Lesenswert?

Moby A. schrieb:
> Markus M. schrieb:
>> Der Beweis wurde schon vor einigen MONATEN erbracht, also halte dich
>> zurück mit Falschaussagen
>
> Nichts wurde erbracht. Optimierter Asm-Code wie in meinem Projekt
> gezeigt wurde nicht geschlagen und ist nicht zu schlagen.

Das ist wieder eine glatte Lüge/Falschaussage:
1
                    Mobys Asm-Code   Yalus C-Code
2
—————————————————————————————————————————————————
3
Flash-Verbrauch          266             256
4
RAM-Verbrauch¹          6 + 1 GPIOR       9
5
Stack-Verbrauch           2               4
6
Quellcodezeilen²         143              91
7
Quellcodezeichen³       1614             1707
8
—————————————————————————————————————————————————
9
¹) ohne Stack
10
²) ohne Leer- und Kommentarzeilen
11
³) ohne Kommentare, Leerraum und Zeilenvorschübe
12
13
Compiler:             GCC 4.7.4
14
Assembler/Linker:     Binutils 2.25.1
15
C-Standardbibliothek: AVR-Libc 1.8.1

Yalus Code braucht weniger Flash und weniger Codezeilen, dein Code 
braucht weniger RAM und weniger Codezeichen.

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Matthias L. schrieb:
> Karl H. schrieb:
> wenn sich im Laufe der Zeit die
> Anforderungen ändern oder erweitert werden
>
> Du hast vorher nur nicht genügend Vorbereitung Planung und Übung
> gemacht.

Da ist was dran. Zumindest bei Projekten < 10K ;-)

Frank M. schrieb:
>   - Moby sagt: "Nee, habe ich keine Lust, weil ichs nicht brauche".

Genau da liegt der Fehler in Deinem Szenario: Wenn Moby wie die 
C-Sturköpfe hier darauf besteht, daß sein Code sparender wär und für 
sich ein KnowHow wie manche hier in Anspruch nimmt wird er sich 
gefälligst auf den Hosenboden setzen und es beweisen. Ansonsten sieht 
er seine Thesen selbstverständlich  nicht für bewiesen an. Genauso 
schauts hier aus: Aussage gegen Aussage.

Frank M. schrieb:
> Ich kann Dir hunderte von C-Programmen hier präsentieren, wo Du
> überhaupt nicht in der Lage wärest, diese in ASM nachzugrogrammieren.

Programme aus dem hinlänglich umrissenen Einsatzbereich lassen sich 
jederzeit besser in Asm coden. Umgekehrt könnte ich Dir viele 
Asm-Programme präsentieren. Aber Du scheiterst ja mit Deinem Anspruch 
auch schon an meinen kleinsten "Projektchen" ;-)

> Aber nur um zu sagen: "C ist besser als ASM"? Bestimmt nicht. Weil diese
> Argumentation Schwachsinn ist.

Stimmt. Allgemein "C ist besser als Asm" wäre Schwachsinn. Bei 8-Bit MSR 
(ohne große Berechnungen und Datenmengen) ist Asm besser. Dabei bleibt 
es. Wer anderes behauptet darf das tun, wer mich aber wiederlegen will 
kommt an der C-Codierung meiner entsprechend optimierten Beispiele 
nicht vorbei!

von Moby A. (moby-project) Benutzerseite


Lesenswert?

P. M. schrieb:
> Yalus Code braucht weniger Flash und weniger Codezeilen, dein Code
> braucht weniger RAM und weniger Codezeichen.

Darauf darfst auch Du gerne weiter herumreiten- zu dem was davon zu 
halten ist hatte ich weiter oben bereits das Nötige gesagt.

Karl H. schrieb:
> Eigentlich nicht. Yalu hat mich da wieder auf ein paar Ideen gebracht,
> wie man den Compiler für seine Sensorboard Aufgabenstellung mit dem
> kruden Übertragungformat zu seinem Nutzen einspannen könnte.

Na dann mal los. Mal sehen was für ein leichtverständlicher Code dabei 
rauskommt ;-)

> Nur hab ich deswegen keine Lust dazu

Ach sooo... Wird nun wohl doch nix ;-(
Na ja so ein Vollzeit-Forumsmensch hat auch wenig Zeit. Verstehe ich. 
Dann sollte man sich mit kruden Thesen zur C-Überlegenheit aber 
zumindest etwas zurückhalten bzw. sie nicht für bewiesen erklären.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> Genau da liegt der Fehler in Deinem Szenario: Wenn Moby wie die
> C-Sturköpfe hier darauf besteht, daß sein Code sparender wär und für
> sich ein KnowHow wie manche hier in Anspruch nimmt wird er sich
> gefälligst auf den Hosenboden setzen und es beweisen. Ansonsten sieht
> er seine Thesen selbstverständlich  nicht für bewiesen an. Genauso
> schauts hier aus: Aussage gegen Aussage.

Ich brauche also hier nur ein C-Programm zu posten mit 1KB Binärcode und 
dann darf ich behaupten, dass C besser ist als ASM und Du würdest dann 
versuchen, es in ASM besser zu schaffen?

Habe ich das richtig verstanden? Klasse!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> Darauf darfst auch Du gerne weiter herumreiten- zu dem was davon zu
> halten ist hatte ich weiter oben bereits das Nötige gesagt.

Genau: du hast im Anschluss die von Yalu vorgelegte Lösung mal wieder
als irrelevant wegdiskutiert und irgendwelche Details deiner
Implementierung nachträglich zum unbedingt vorhanden sein müssenden
Feature erklärt.

Damit kannst du dir deine Welt natürlich irgendwie schönreden, nur
glaubt dir das mittlerweile keiner mehr.  Yalus Code war nun für
genau die Klasse Mickymausprogramme, in denen du sonst noch deine
Domäne siehst (die du gleich mal großzügig auf 10 K und mehr an Code
ausdehnst), und selbst dort hat er dich in weiten Teilen (wenn auch
nicht in allen) nach deinen Maßstäben schlagen können (weniger Flash,
mehr RAM).

Lass mal, ist ein unterhaltsamer Thread, wir wissen, dass du von deiner
Meinung nicht abzubringen bist, nicht einmal durch Beweise.

: Bearbeitet durch Moderator
von P. M. (o-o)


Lesenswert?

Moby A. schrieb:
> Bei 8-Bit MSR
> (ohne große Berechnungen und Datenmengen) ist Asm besser. Dabei bleibt
> es.

Nein, das ist schon für sich falsch, wie Yalu gezeigt hat - nochmals, 
weils so schön ist:
1
                    Mobys Asm-Code   Yalus C-Code
2
—————————————————————————————————————————————————
3
Flash-Verbrauch          266             256
4
RAM-Verbrauch¹          6 + 1 GPIOR       9
5
Stack-Verbrauch           2               4
6
Quellcodezeilen²         143              91
7
Quellcodezeichen³       1614             1707
8
—————————————————————————————————————————————————
9
¹) ohne Stack
10
²) ohne Leer- und Kommentarzeilen
11
³) ohne Kommentare, Leerraum und Zeilenvorschübe
12
13
Compiler:             GCC 4.7.4
14
Assembler/Linker:     Binutils 2.25.1
15
C-Standardbibliothek: AVR-Libc 1.8.1


Moby A. schrieb:
> P. M. schrieb:
>> Yalus Code braucht weniger Flash und weniger Codezeilen, dein Code
>> braucht weniger RAM und weniger Codezeichen.
>
> Darauf darfst auch Du gerne weiter herumreiten- zu dem was davon zu
> halten ist hatte ich weiter oben bereits das Nötige gesagt.

Ja, du hast viel dazu gesagt und zeigst damit gleich selbst, dass 
Assembler nur unter vielen, vielen Bedingungen besser ist als C. Selbst 
im 8-Bit-MSR-Bereich.

von Michael K. (Gast)


Lesenswert?

Moby A. schrieb:
> Da handelt es sich um Code für meine SmartHome-Zentrale.
> Da wird ständig erweitert, die ist niemals fertig.

Ich sehe schon wie nach Ende der AVR Lebensdauer 10 Jahre ASM Smarthome 
Entwicklung in die Tonne fliegen weil die nächste in Frage kommende MCU 
leider nicht Codekompatibel ist.

Als Workaround kann man dann auch was richtig großes nehmen und den AVR 
darauf komplett emulieren.
Wie das dann wohl mit dem Ressourcenverbrauch aussieht im Vergleich zu C 
?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

P. M. schrieb:
> Nein, das ist schon für sich falsch, wie Yalu gezeigt hat - nochmals,
> weils so schön ist:

Bitte jeden Tag neu posten, vielleicht liest es Moby ja mal :-)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Moby A. schrieb:
> Yalu X. schrieb:
>> In C muss man für so etwas nicht bis zum finalen Schritt warten, weil
>> mit der Optimierung der Datenstrukturen so gut wie kein zusätzlicher
>> Aufwand und überhaupt keine Einschränkung der Übersichtlichkeit
>> verbunden ist.
>
> Auch ohne "finale Schritte" bleibt Asm Code effizienter.

Nein.

Vielleicht bei einigen von dir ausgewählten Mickymausprogrammen mit
speziell dafür von dir hin"optimierten" Anforderungen.

Aber definitiv nicht bei deinem 10K-Programm, auf das ich mich bezog.

Glaub's mir, es ist so, und jeder der schon einmal sowohl ein Assembler-
als auch ein C-Programm mit deutlich mehr als 200 Bytes geschrieben hat
(und davon gibt es hier im Forum viele), wird dies bestätigen.

Da du selbst aber nicht zu dieser Personengruppe gehörst, bleibt deine
Behauptung einfach nur eine Behauptung, die du ohne jegliche Grundlage
in die Welt hinausposaunst. Die Vehemenz und die Ausdauer, mit der du
dies tust, ändert an dieser Tatsache nicht das geringste.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Michael K. schrieb:
> Ich sehe schon wie nach Ende der AVR Lebensdauer 10 Jahre ASM Smarthome
> Entwicklung in die Tonne fliegen weil die nächste in Frage kommende MCU
> leider nicht Codekompatibel ist.

Ja eben. Absolute Sackgasse. Ich persönlich freue mich dass es noch 
etwas anderes als AVR gibt und es macht mir außerordentlichen Spaß, zu 
sehen, wie einfach doch (portabel geschriebene) C-Programme auf komplett 
andere Prozessorfamilien angepasst werden können.

Mobys ASM Smarthome-Projekt ist dann einfach nur noch für die Tonne.

> Als Workaround kann man dann auch was richtig großes nehmen und den AVR
> darauf komplett emulieren.

Ja klar, schon heutzutage kann man komplette Sinclair Spectrum Computer 
von 1982 mittlerweile auf einem STM32F429 Discovery für ein paar Euro 
emulieren. Sogar die Spiele laufen 1:1. :-)

Aber da Moby ja für jedes kleine MickyMaus-Problem auch einen eigenen µC 
einsetzt, muss er wahrscheinlich erst Tausende von ATTinys emulieren, 
bis er das Licht im Wohnzimmer anschalten kann ;-)

> Wie das dann wohl mit dem Ressourcenverbrauch aussieht im Vergleich zu C
> ?

Den kann sich Moby dann verkneifen.

von Carl D. (jcw2)


Lesenswert?

Michael K. schrieb:
> Ich sehe schon wie nach Ende der AVR Lebensdauer 10 Jahre ASM Smarthome
> Entwicklung in die Tonne fliegen weil die nächste in Frage kommende MCU
> leider nicht Codekompatibel ist.

Ist doch kein Problem.
 Aus dem Thread "CP/M auf AVR" machen wir "AVR auf ARM" oder "AVR auf 
JS" und die Assenbler-Sause kann weiter gehen.

Aber eigentlich sollte man die Diskussion mit einem so unfairen Typen 
lassen:
- M.: ASM ist besser, weil man so Codeblöcke aus dem Fundus aneinander
  pappen kann.
- -> das ist doch der Vorwurf an Compiler.
- M.: man muß am Ende eben optimieren.
- M.:(2 Posts später) auch ohne Optimierung ist ASM schneller
Wie er's braucht und ohne jede Scham beim Lügen.
Jeman mit dem man eben nicht ein Bier trinken gehen will.

von P. M. (o-o)


Lesenswert?

Carl D. schrieb:
> Aber eigentlich sollte man die Diskussion mit einem so unfairen Typen
> lassen:
> - M.: ASM ist besser, weil man so Codeblöcke aus dem Fundus aneinander
>   pappen kann.
> - -> das ist doch der Vorwurf an Compiler.
> - M.: man muß am Ende eben optimieren.
> - M.:(2 Posts später) auch ohne Optimierung ist ASM schneller

Japp, genau das macht er schon den ganzen Thread hindurch. Er wechselt 
ständig von einem (Schein-)Argument zum nächsten. Dass diese in keinster 
Weise zusammen passen, hat er entweder nicht gemerkt, oder es ist ihm 
egal.

von Gu. F. (mitleser)


Lesenswert?

Yalu X. schrieb:
> Vielleicht bei einigen von dir ausgewählten Mickymausprogrammen

Ich schlage vor nutzlose Programme die kein RAM benutzen, keiner braucht 
und max. 200 bytes groß sind zu Ehren unseres AVR Spar Königs künftig 
MobyMausProgramme zu nennen.

von Thomas E. (thomase)


Lesenswert?

Jetzt ist Schluss mit diesem unsäglichen hin und her.

Jetzt kommt der Beweis:

Damit nicht nur ausgwiesene Assembler-Koryphäen und C-Experten diese 
Codes verstehen, sondern auch Anfänger etwas mitnehmen können, habe ich 
ein sehr einfaches <10K-Beispiel gewählt:

Eine blinkende LED, Blinkfrequenz ca. 2Hz.

Die vorgegebene Hardware:
Atmega88
LED
sowie das übliche Vogelfutter

Das C-Programm:

Takt: 1MHz, intern
1
#ifndef F_CPU
2
  #error F_CPU not defined.
3
#endif
4
5
#include <avr/io.h>
6
#include <avr/interrupt.h>   
7
8
volatile char jobflag;
9
10
int main(void)
11
{
12
   char count = 0;
13
   TCCR0A = (1 << WGM01);
14
   TCCR0B = (1 << CS02) | (1 << CS00);
15
   TIMSK0 = (1 << OCIE0A);
16
   OCR0A = 60;
17
   DDRB = (1 << 1);
18
   sei();
19
   while(1)
20
   {
21
     if(jobflag)    
22
     {
23
       jobflag = 0;
24
       count++;
25
       count %= 4;
26
       if(!count) PINB |= (1 << 1);
27
      }    
28
    }
29
}
30
31
ISR(TIMER0_COMPA_vect)
32
{
33
  jobflag = 1;
34
}

Statistik:

Resourcenverbrauch:
Flash:       164 Bytes
RAM:         1 Byte + Stack
E²PROM       0
Register:    einige

Fortgeschrittene oder besser:

Entwicklungszeit: <= 10 Min.
Frustfaktor:  keiner
Kenntnisvoraussetzungen: hoch

Anfänger:

Entwicklungszeit: Mit Karl-Heinz' geduldiger Hilfe in einem Thread mit 
93 Beiträgen(davon 17 gelöscht) und hilfreichen Tips wie "Kauf dir ein 
C-Buch" oder Hinweisen in Form rhetorischer Fragen wie " Hast du kein 
Google", dreimal der Antwort "42", einem deftigen Anschiss von c-hater 
und einem aufmunternden Gedicht von Paul: 1 Woche

Frustfaktor zu Anfang keiner, voller Elan
Freundin: stinksauer
Frustfaktor: hoch
Freundin: Schluss gemacht
Frustfaktor: noch höher
Frustfaktor: nach dem Anschiss von c-hater stark suizidgefährdet
Frustfaktor: nach dem Gedicht von Paul ging das dann wieder

Lernnotwendigkeit: sehr hoch


Das Assembler-Programm:

Takt: 16KHz, ja Kilohertz!
Taktflankenschonende und stromsparende 16KHz
128KHz intern, Clockprescaler 8

1
sbi $04,1
2
sbi $03,1
Statistik:

Resourcenverbrauch:
Flash:       4 Bytes
RAM:         0, kein Stack
E²PROM       0
Register:    0

Fortgeschrittene:

Entwicklungszeit < 1 Min.
Frustfaktor  keiner
Kenntnisvoraussetzungen: egal

Anfänger:

Entwicklungszeit <= 1 Min.
Frustfaktor: keiner
Freundin: hat sie gar nicht mitgekriegt
Frustfaktor: 0
Lernnotwendigkeit: sehr gering, da aus dem Instruction Set nur eine 
einzige Anweisung verwendet wird. Alle anderen Anweisungen des Atmega88 
werden geschont und können später gelernt werden. Also dann, wenn man 
sie braucht.

Resultat:

Resourcenverbrauch, also das einzige, was wirklich zählt:

Flash: 164 Bytes / 4 Bytes = Faktor 41 oder 4100%
RAM und Register werden vom Assembler-Programm gar nicht verwendet.
Das einzige, wo der C-Compiler mithalten kann, ist der E²PROM-Verbrauch.

Im C-Programm steckt sicher noch Optimierungspotenzial. Das 
Assembler-Programm dagegen ist unoptimierbar.

Das C-Programm muss für jeden anderen Controller neu kompiliert werden. 
Der Opcode des Asm-Programms kann auf alle Atmega und Attiny einfach so 
draufgeflasht werden. Einzige Voraussetzung ist, dass sie Pin-Toggle mit 
den PIN-Registern können. Manchmal blinken sie etwas schneller oder 
langsamer. Aber das läst sich hervorragend als RAM-Größen-Indikator 
verwenden.

Das sind die Fakten.

mfg.

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Habe ich das richtig verstanden? Klasse!

Das hast Du natürlich so verstanden wie Du es brauchst. Hab ich aber 
nicht anders erwartet ;-)

Jörg W. schrieb:
> Genau: du hast im Anschluss die von Yalu vorgelegte Lösung mal wieder
> als irrelevant wegdiskutiert und irgendwelche Details deiner
> Implementierung nachträglich zum unbedingt vorhanden sein müssenden
> Feature erklärt.

Nimm einfach das zur Kenntnis was ich dazu weiter oben schon gesagt 
habe. Ansonsten: Warte auf den entsprechenden Projektthread. Das Thema 
ist nicht abgeschlossen.

> Lass mal, ist ein unterhaltsamer Thread, wir wissen, dass du von deiner
> Meinung nicht abzubringen bist, nicht einmal durch Beweise.

Doch: Mit einer besseren Lösung als mein entsprechend optimiertes 
Asm-Projekt.

Michael K. schrieb:
> Ich sehe schon wie nach Ende der AVR Lebensdauer 10 Jahre ASM Smarthome
> Entwicklung in die Tonne fliegen weil die nächste in Frage kommende MCU
> leider nicht Codekompatibel ist.

Meinst Du?
Das bestreite ich. Mein älteres, immer noch in Betrieb befindliches 
Home-Control System läuft ja schon mit einem Mega128, in verschiedenen 
Ausbauphasen seit 10 Jahren. Von den AVRs hab ich genügend auf Lager. 
Und, schonmal in den ersten 2016er Reichelt Katalog geschaut? Da gibts 
noch den Z80 ;-)

> Wie das dann wohl mit dem Ressourcenverbrauch aussieht im Vergleich zu C
> ?

Blöd. Aber der Fall wird nicht eintreten.

Yalu X. schrieb:
> Glaub's mir, es ist so, und jeder der schon einmal sowohl ein Assembler-
> als auch ein C-Programm mit deutlich mehr als 200 Bytes geschrieben hat
> (und davon gibt es hier im Forum viele), wird dies bestätigen.

Wer den gleichen Funktionsumfang tatsächlich zweimal kodiert (wer 
würde das tun?) und den Asm-Code mit Übung, Vorbereitung und System zu 
optimieren weiß würde das nicht bestätigen.
Die meisten aber programmieren ohnehin nur in C.

Frank M. schrieb:
> muss er wahrscheinlich erst Tausende von ATTinys emulieren,
> bis er das Licht im Wohnzimmer anschalten kann ;-)

Tatsächlich sind es drei Controller:
Die M128 Hauptsteuerung kontrolliert die Stromzuführung, ein alter 
Xmega32 schaltet vorort zwischen Licht/Beamer Betrieb um und in der 
eigentlichen Lampe steckt noch ein helligkeitsgesteuerter Tiny ;-)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Moby A. schrieb:
> Yalu X. schrieb:
>> Glaub's mir, es ist so, und jeder der schon einmal sowohl ein Assembler-
>> als auch ein C-Programm mit deutlich mehr als 200 Bytes geschrieben hat
>> (und davon gibt es hier im Forum viele), wird dies bestätigen.
>
> Wer den gleichen Funktionsumfang tatsächlich zweimal kodiert (wer
> würde das tun?) und den Asm-Code mit Übung, Vorbereitung und System zu
> optimieren weiß würde das nicht bestätigen.

Doch.

von Karl H. (kbuchegg)


Lesenswert?

Thomas E. schrieb:
> Jetzt ist Schluss mit diesem unsäglichen hin und her.
>
> Jetzt kommt der Beweis:
> ....

Mist.
Ausgerechnet heute ist die weiße Fahne in der Wäsche.

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Thomas E. schrieb:
> Jetzt kommt der Beweis:
> ...
> Das sind die Fakten.

Ja ganz nett wie Du Dich den Vorteilen von Asm annäherst, wenn auch ein 
ganz klein wenig übertrieben ;-)

Carl D. schrieb:
> Aber eigentlich sollte man die Diskussion mit einem so unfairen Typen
> lassen:

Was Du unfair nennst ist in Wirklichkeit nur Dein Mangel an 
Argumenten. Im übrigen, warum lässt Du die Diskussion nicht einfach?

> - M.: ASM ist besser, weil man so Codeblöcke aus dem Fundus aneinander
> pappen kann. - -> das ist doch der Vorwurf an Compiler.

Quatsch.

> - M.: man muß am Ende eben optimieren.

Hat niemand behauptet.

> Wie er's braucht und ohne jede Scham beim Lügen.

Die fehlt mir zum Beispiel bei Dir. Du wirst mich aber selbst damit 
nicht beirren. Kein Wunder, daß Du so keine Punkte machst und 
rumjammerst.

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> Doch.

Nö.

So ein Mist: Wieder Aussage gegen Aussage.

Probiers nochmal mit dem überlegenen Erfahrungsschatz, einer Portion 
Lächerlichmachen oder auf die harte Tour: Der Vorwurf der Lüge kommt 
immer gut ;-(

von Yalu X. (yalu) (Moderator)


Lesenswert?

@Moby:

Mist, weil du deine letzten zwei Beiträge so schnell hintereinander
gepostet hast, habe ich dein Jubiläum verpasst.

Trotzdem nachträglich herzlichen Glückwunsch zu deinem

1
     333   000   000 
2
    3   3 0   0 0   0
3
        3 0   0 0   0
4
      33  0   0 0   0
5
        3 0   0 0   0
6
    3   3 0   0 0   0 
7
     333   000   000  -sten Beitrag

in diesem Thread :)

Das muss dir erst mal jemand nachmachen.

(Inzwischen sind es sogar schon 301).

Spätestens bei 500 hast du ganz sicher alle hier von ASM überzeugt.

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> Trotzdem nachträglich herzlichen Glückwunsch.

Du überrascht mich.
Mit einem Glückwunsch zu irgendwelchen Beitragszahlen hab ich nicht 
gerechnet. Mir tuts bloß um die armen Minuspunktbewerter leid die hier 
soviel zu tun haben :-)

Ich will Dich aber auch mal überraschen:
Nämlich damit daß mir Beitragszahlen relativ schnuppe sind. Mich 
interessiert doch tatsächlich das Thema und ich hatte so gehofft, daß 
ich mir mit einer neuen Sprache zukünftig Bürokratie spare und an 
Effizienz gewinne... Ich geb die Hoffnung aber nicht auf ;-)

von Thomas E. (thomase)


Lesenswert?

Moby A. schrieb:
> wenn auch ein ganz klein wenig übertrieben

Was ist denn daran übertrieben?
Willst du etwa von der mangelnden Effienz in deinem Code ablenken?
Ich benutze nicht einmal die Register!
Und schummele auch nicht beim RAM!

Und ich habe den C-Code zum Vergleich zum beigefügt!

Das sind Fakten, denen nicht widersprochen werden kann.

mfg.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> daß ich mir mit einer neuen Sprache zukünftig Bürokratie spare und an
> Effizienz gewinne.

Das könntest du, wenn du es nur wölltest – allerdings wahrscheinlich
nicht so sehr in deinem Sinne.  Du würdest deine Entwicklungszeit
nämlich schätzungsweise zehnteln können, und dennoch passt das
alles noch ins gleiche Device rein.  Davon abgesehen, mit nur wenigen
Cent mehr (ATtiny25 oder 45 statt 13) bekämst du eine in vielerlei
Hinsicht schönere Hardware zusätzlich zu mehr Platz geboten (wir
hatten gerade erst das Thema Messung der Batteriespannung mit dem
ADC ohne zusätzliche äußere Beschaltung, das geht mit dem 13 nicht,
mit dem 25 schon).  Da du ja dann massig Zeit gewonnen hättest,
könntest du den nun gewonnenen Platz sogar mit weiteren Features
beleben. :-)

Aber wie gesagt, das müsstest du schon wollen.  Wir wären hier ganz
gewiss die letzten, die dir bei entsprechenden Fragen dann nicht
genauso zur Seite stehen würden, wie wir das mit jedem anderen tun.
Schau' dir mal an, mit welcher Engelsgeduld ein Karl Heinz jedem, der
gewillt ist, was zu lernen, die Sachen erklärt.

von Thomas E. (thomase)


Lesenswert?

Moby A. schrieb:
> ein helligkeitsgesteuerter Tiny

Du hast einen helligkeitsgesteuerten Tiny?

Wow! Meine sind überhaupt nicht beleuchtet.

mfg.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ich kenne nur diese „helligkeitsgesteurten“ alten sowjetischen ICs. :)

von Gerhard O. (gerhard_)


Lesenswert?

Kinder, streitet Euch doch nimmer... Mir kommt das vor wie der Streit um 
den Bart des Kaisers.

Wie man zum Ziel kommt kann an sich ganz interessant sein, aber, mir ist 
es ehrlich gesagt bei normalen, im Ablauf nicht superkritischen 
Kriterien konformen Applikationen eigentlich ziemlich wurscht wieviel 
Resourcen innerhalb eines vernünftigen Rahmens verbraucht werden solange 
allen Erfordernissen Geltung gegeben wurde und das uC Programm die 
gestellten Anforderungen einwandfrei erfüllt. Bei den modernen uC 
braucht man doch mit den Resourcen wirklich nicht mehr soo knausrig 
sein. Die Computersprache wurde ja nur für den Menschen erfunden und für 
den Mikroprozessor sind alles was über Maschinensprache hinaus geht, 
sowieso nur Hieroglyphen.

Es ist ja beeindruckend wenn man alles mit den internen Register 
erledigen kann. Aber, does anybody really care very much? Ohne Moby hier 
auf die Füße steigen zu wollen. Wenn dem uC von seinem Erzeuger RAM 
gegeben worden ist, dann soll man es ruhig verwenden.

Da ich oft nur wenig Zeit habe möchte ich möglichst schnell ans Ziel 
kommen. In C kann ich das viel besser wie in ASM, weil ich dort eben 
erschreckend rostig bin und es nur in Extremfällen in inline einsetze. 
Um ganz ehrlich zu sein, mir liegt ASM überhaupt nicht. Abgesehen davon 
ist für mich die Wiederverwendung von funktionierenden Funktionen in C 
einfacher und die Portierung von funktionierenden Code auf andere uC 
viel einfacher.

Trotz aller (zu Tode diskutierten) nachgesagten Mängel der Sprache kommt 
man doch in C praktisch meist trotzdem ganz gut zurecht. Was ist schon 
perfekt in dieser Welt? In C fühlt man sich immer nahe genug an der 
Hardware und das reicht mir. Für wirklich komplizierte Anwendungen 
(Stacks) müssen natürlich andere Maßstäbe angelegt werden und ist der 
Domain für wirkliche Experten.

Letzten Endes zählt nur die Erfüllung aller gesetzten Aufgaben mit 
vernünftigen Aufwand.

Ehrlich gesagt finde ich man sollte diesen Thread hier ganz sanft und 
leise einschlafen lassen.

Aber wie bei uns das Sprichwort sagt: "Opinions are like as...les, 
everybody's got one". So belassen wir es besser bei dem gesagten...


Grüße aus dem verschneiten Alberta,
Gerhard

von Carl D. (jcw2)


Lesenswert?

M.:
> Hat niemand behauptet.

Das werden aber die gefùhlt 50 Zeugen ganz anders sehen, Herr Miemand!

M.:
> Mich interessiert doch tatsächlich das Thema

Und von der Sorte gibt's hier viele.
 Nur wenn man sich ernsthaft für den Vergleich interessiert, dann 
braucht man zwei Dinge zum vergleichen. Wer sich nur über das 
Funktionieren der ASM-Version freut, dem fehlt die Vergleichsgrundlage.
 In C ist das einfacher. Da hat man nämlich auch die ASM-Version 
vorliegen (ja, oh Wunder, der Compiler erzeugt ASM-Code, den dann ein 
Assembler verlautbar für den kleinen AVR macht) und kann schnell 
feststellen, ob man da händisch noch viel rausholen kann. Setzt aber 
Mehrsprachigkeit voraus.

von Thomas E. (thomase)


Lesenswert?

Jörg W. schrieb:
> Ich kenne nur diese „helligkeitsgesteurten“ alten sowjetischen ICs.

Wenn man ein EPROM falsch herum in den Programmiersockel steckt und das 
Programmiergerät genügend Puste hat, leuchten die auch. Erst weiss, dann 
rot, dann schwarz. Aber ein Tiny hat ja ga kein EPROM und beheizt wird 
er auch nicht.

mfg.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Thomas E. schrieb:
> leuchten die auch

Das ist ja aber das Gegenteil von „helligkeitsgesteuert“.

von Karl H. (kbuchegg)


Lesenswert?

Jörg W. schrieb:

> Aber wie gesagt, das müsstest du schon wollen.  Wir wären hier ganz
> gewiss die letzten, die dir bei entsprechenden Fragen dann nicht
> genauso zur Seite stehen würden, wie wir das mit jedem anderen tun.
> Schau' dir mal an, mit welcher Engelsgeduld ein Karl Heinz jedem, der
> gewillt ist, was zu lernen, die Sachen erklärt.

Zumal man ihm ja eigentlich gar nicht mehr so viel erklären müsste. Die 
AVR Hardware kennt er ja in und auswendig.

Und Hand aufs Herz. So schwer ist ein
1
   DDRD = 0xFF
dann auch wieder nicht zu verstehen. Links steht das Ziel, rechts was in 
dieses Ziel hinein soll. Was rechts stehen muss, weiss er ja. Das kennt 
er zur Genüge. Welches Register links stehen muss, die kennt er auch 
alle. Nur sollte man sich von der direkten Angabe von Hex-werten gerade 
bei der Konfiguration von Registern trennen, auch wenn man das in C 
selbstverständlich genausogut machen kann.
Und trennen sollte man sich auch davon, die genau Kontrolle über diese 
Operation auf Registerebene zu verlangen. 0xFF landet im Register DDRD. 
Punkt. Wie das genau funktioniert ist Sache des Compilers. Will ich gar 
nicht wissen. Genausowenig wie ich wissen will, ob ich dafür einen OUT 
oder einen STS brauche. Das der Compiler da nicht übertreibt, und aus 
dem ein Monster macht, sondern genau dasselbe erzeugt, was auch 
Assembler Programmierer benutzen würde, davon kann man sich natürlich im 
Listing überzeugen. Aber nach dem 20 mal überzeugen, gibt man das 
einfach auf. weil der Compiler immer die vernünftigste Lösung generiert 
hat.

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

Jörg W. schrieb:
> Das ist ja aber das Gegenteil von „helligkeitsgesteuert“.

Ja sicher. Das ist das Steuerelement.

mfg.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Thomas E. schrieb:
> Das ist das Steuerelement.

Nur schade, dass man es nach jedem Steuervorgang ersetzen muss. :-)

von Gerhard O. (gerhard_)


Lesenswert?

Jörg W. schrieb:
> Thomas E. schrieb:
>> Das ist das Steuerelement.
>
> Nur schade, dass man es nach jedem Steuervorgang ersetzen muss. :-)

Oh, und ich dachte schon, man stellt so OTP Speicher her...

von Thomas E. (thomase)


Lesenswert?

Jörg W. schrieb:
> Nur schade, dass man es nach jedem Steuervorgang ersetzen muss.

Ja, das ist richtig. Das hat man aber hauptsächlich als Bombenzünder 
benutzt. Da relativiert sich der Nachteil.

mfg.

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

Gerhard O. schrieb:
> Oh, und ich dachte schon, man stellt so OTP Speicher her...

Nein. Aber auf diese Weise kann man OTPs löschen: OTE.

mfg.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Thomas E. schrieb:
> Das hat man aber hauptsächlich als Bombenzünder benutzt.

Mensch, jetzt hast du diesen friedlichen Thread bei allein
Drei-Buchstaben-Agenturen auftauchen lassen!

von Gerhard O. (gerhard_)


Lesenswert?

Thomas,

War die Geschichte von Dir mit dem EPROM vielleicht nur ein 
Ablenkungsmanöver?

von Thomas E. (thomase)


Lesenswert?

Jörg W. schrieb:
> Mensch, jetzt hast du diesen friedlichen Thread bei allein
> Drei-Buchstaben-Agenturen auftauchen lassen!

Ich meinte Arschbomben.

mfg.

Hoffentlich kam das jetzt noch rechtzeitig.

von Sheeva P. (sheevaplug)


Lesenswert?

Thomas E. schrieb:
> Moby A. schrieb:
>> ein helligkeitsgesteuerter Tiny
>
> Du hast einen helligkeitsgesteuerten Tiny?

Da hab' ich doch glatt was vom "heiligkeitsgesteuerten Shiny" gelesen.

von P. M. (o-o)


Lesenswert?

Moby A. schrieb:
>> Wie er's braucht und ohne jede Scham beim Lügen.
>
> Die fehlt mir zum Beispiel bei Dir.

Hör jetzt einfach mal auf mit dem Blödsinn. Du hast keine Argumente, du 
gehst nicht auf Gegenargumente ein, du verdrehst Aussagen, du tischst 
Lügen auf. Du bist zwar mittlerweile dazu über gegangen, deinen Gegnern 
das selbe zu unterstellen, aber das ist einfach Quatsch. Oder hast du 
das Gefühl, die Diskussionsteilnehmer würden sich das gegenseitig 
einfach so durchgehen lassen? Warum ist hier wohl alle-gegen-einen? Weil 
die Sache umstritten ist? Oder doch eher, weil wir aus welchen Gründen 
auch immer einfach Spass an einem Fast-Troll wie dir haben?

von Thomas E. (thomase)


Lesenswert?

1400!
Yeah!

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Langsam frage ich mich wie viele flames notwendig sind diesen war den 
politischen gleichzusetzen und ihn zu sperren sowie Fortsetzungen zu 
untersagen.

an Sinnlosigkeit stellt und Resuorcenverschwendung sowie Beleidigungen 
hält er locker mit jedem Politthread mit.

Namamste

: Bearbeitet durch User
von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Wir brauchen einen Ersatz für den gesperrten Witz Thread ;-)

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Thomas E. schrieb:
> Das sind Fakten, denen nicht widersprochen werden kann

Sagen wir mal so: Dein Asm Code wirkt etwas unflexibel ;-)

Jörg W. schrieb:
> Du würdest deine Entwicklungszeit
> nämlich schätzungsweise zehnteln können, und dennoch passt das
> alles noch ins gleiche Device rein.

Sicher. Siichchcher. Sagte schon Hausmeister Krause!

> Aber wie gesagt, das müsstest du schon wollen.  Wir wären hier ganz
> gewiss die letzten, die dir bei entsprechenden Fragen dann nicht
> genauso zur Seite stehen würden, wie wir das mit jedem anderen tun.
> Schau' dir mal an, mit welcher Engelsgeduld ein Karl Heinz jedem, der
> gewillt ist, was zu lernen, die Sachen erklärt.

Ganz hervorragend! Bitte weiter so! Kann man nicht hoch genug 
einschätzen! Ich selbst bin allerdings mit dem AVR, programmiert in Asm 
rundumst zufrieden und muß Problemstellungen nicht unbedingt 
komplizierter lösen als nötig.

Gerhard O. schrieb:
> Letzten Endes zählt nur die Erfüllung aller gesetzten Aufgaben mit
> vernünftigen Aufwand.

Das sehe ich auch so (mit AVR/ASM gegeben).

Carl D. schrieb:
> Nur wenn man sich ernsthaft für den Vergleich interessiert, dann
> braucht man zwei Dinge zum vergleichen.

Tatsächlich? Waren wir nicht schon soweit? Warum reite ich dann so auf 
der Notwendigkeit entsprechenden Vergleichsmaterials für meinen 
Projektcode herum? Der nicht kommt? Von den vielen großen C Experten 
hier für die das ein Leichtes sein könnte?

> Wer sich nur über das
> Funktionieren der ASM-Version freut, dem fehlt die Vergleichsgrundlage.

Manchmal hat man, hab ich, auch Tomaten auf den Augen. Das betrifft aber 
weniger die Asm-Implementierung als vielmehr die grundsätzliche 
Herangehensweise an ein Problem, da wär kein Unterschied zu C.

>  In C ist das einfacher. Da hat man nämlich auch die ASM-Version
> vorliegen (ja, oh Wunder, der Compiler erzeugt ASM-Code, den dann ein
> Assembler verlautbar für den kleinen AVR macht) und kann schnell
> feststellen, ob man da händisch noch viel rausholen kann. Setzt aber
> Mehrsprachigkeit voraus.

Wieviel Prozent der C-Programmierer dem resultierenden Asm-Code wohl 
noch Beachtung schenken?

von Moby A. (moby-project) Benutzerseite


Lesenswert?

Thomas E. schrieb:
> Wenn man ein EPROM falsch herum in den Programmiersockel steckt und das
> Programmiergerät genügend Puste hat, leuchten die auch. Erst weiss, dann
> rot, dann schwarz. Aber ein Tiny hat ja ga kein EPROM und beheizt wird
> er auch nicht.

Logischer Fehler. Setzen. Sechs.
Von Selbst-Leuchten war ja hier schon mal gar nicht die Rede ;-)

Karl H. schrieb:
> Und Hand aufs Herz. So schwer ist ein   DDRD = 0xFF
> dann auch wieder nicht zu verstehen.

Das ist ja zuckersüß...
Jo mei, wenn die C-Zeilen Welt immer so schön simpel wär ;-)

> Genausowenig wie ich wissen will, ob ich dafür einen OUT
> oder einen STS brauche.

DAS will ich auch nicht. Entweder (meistens) weiß ich das sowieso und 
wenn nicht probiert man einfach erstmal OUT. Der Assembler meckert 
schon...

Aber vielen Dank K.H. für Deine Hilfsbereitschaft. Ich meine, den 
Charakterzug weiß ich ja durchaus zu schätzen. Allein, Du würdest mir 
mit einem besseren Vergleichscode zu meinem Projekt wesentlich mehr 
helfen...

Winfried J. schrieb:
> an ... Beleidigungen
> hält er locker mit jedem Politthread mit.

Meintest Du die Tausend Beleidigungen mir gegenüber oder meine 
Beleidigung der C-Fraktion, daß Asm-Code manchmal besser wär?
Erstere sollte man nicht so in die Goldwaage legen.
Die sind immer ein Ausdruck des 'Nicht mehr weiter Wissens' ;-)

Ok, allzu ergiebig war die fachliche (Gegenargument-)Ausbeute über Nacht 
ja nicht. Ich hoffe das bessert sich wieder!

von Michael K. (Gast)


Lesenswert?

Moby A. schrieb:
> Wieviel Prozent der C-Programmierer dem resultierenden Asm-Code wohl
> noch Beachtung schenken?
Oh, den schau ich mir immer an wenn die Performance zu wünschen übrig 
lässt, mir die Ressourcen ausgehen oder trotz korrektem C das Kompilat 
einen Fehler enthält.

Also eigentlich nie.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> Aber vielen Dank K.H. für Deine Hilfsbereitschaft. Ich meine, den
> Charakterzug weiß ich ja durchaus zu schätzen. Allein, Du würdest mir
> mit einem besseren Vergleichscode zu meinem Projekt wesentlich mehr
> helfen...

"Helfen"? Habe ich gerade "helfen" gelesen? Warum sollen wir Dir denn 
helfen? Hilfst Du irgend jemandem im Forum, wenn er ein ASM-Problem 
hat?

Ich lese hier nur selbstdarstellende Beiträge von Dir.

P.S.
Dir ist sowieso nicht zu helfen.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

@ Moby

wir beide haben zumindest gemein die Verachtung Anderer auf uns zu 
ziehen weil wir unseren jeweiligen Standpunkt konsequent vertreten. 
Deinen Standpunkt volle Programmablaufkontrolle auch die zeitliche durch 
direkte ASM Programmierung zu erreiche teile ich im übrigen auch.

dies hat jedoch seinen Preis:

Maschinennahe Programmierung erschwert die Übersichtlichkeit. Das lässt 
sich mit Macros zwar verbessern. Trotzdem bleibt es aufwendig.

Die Effizienz des erzeugten Codes hängt im hohen Maße vom komplex 
logischen vermögen des Programmierers mit gleichzeitig hohem 
Abstraktionsvermögen  ab. Hier bieten Hochsprachen 
Arbeitserleichterungen für den Programmierer. Zum Preis des Verstehens 
des vom Compiler erzeugten ASM durch den Hochsprachen Programmierer.

Die Codeeffizienz eines lausigen Hochsprachenprogrammierers ist sicher 
noch größer als die eines mittelmäßigen ASM Fetischisten

Nachdem HW heute billiger als SW-Entwicklungszeit (Programmiererlohn) 
ist
ist ausgereizte ASM Programmierung schlicht zu teuer.

Im Übrigen empfinde ich Hochsprachen bequemer und nutze sie im 
Bewusstsein,
dass ich nicht jedes Byte kenne, welches der Compiler daraus bastelt, 
oder den genauen Ablauf einer Interpreterfunktion nicht kenne.

Einen Blick in den erzeugten Compiler-Code oder eine Interpreterroutine 
ist allemal lehrreich.

Namaste

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Moby A. schrieb:
> Ich selbst bin allerdings mit dem AVR, programmiert in Asm rundumst
> zufrieden

Moby A. schrieb:
> Mich interessiert doch tatsächlich das Thema und ich hatte so gehofft,
> daß ich mir mit einer neuen Sprache zukünftig Bürokratie spare und an
> Effizienz gewinne...

Aha.

von Michael K. (Gast)


Lesenswert?

Moby A. schrieb:
> Mich interessiert doch tatsächlich das Thema und ich hatte so gehofft,
> daß ich mir mit einer neuen Sprache zukünftig Bürokratie spare und an
> Effizienz gewinne...

Moby, da hilft nur Übung, Vorbereitung, System.

von Thomas E. (thomase)


Lesenswert?

Moby A. schrieb:
> Sagen wir mal so: Dein Asm Code wirkt etwas unflexibel

Was wird das jetzt? Willt du von deiner Resourcenverschwendung ablenken?

Ich benutzte 0 RAM und 0 Register und schone den Befehlssatz, indem ich 
aus diesem nur einen einzigen Befehl verwende. Von der Kompaktheit des 
Codes und dem flankenschonenden und stromsparenden Takt ganz zu 
schweigen.

Das Programm ist in jeder erdenklicher Weise höchstoptimiert und stellt 
somit Krone der Programmierkunst dar.

Das ist die ideale Effizienz. Das sind die unwidersprochenen Fakten!

mfg.

von P. M. (o-o)


Lesenswert?

Und Moby macht einfach weiter, als wäre nichts gewesen. Obwohl Yalu in 
einem Beispiel nun wirklich UNZWEIFELHAFT nachgewiesen hat, dass man 
Assembler sogar bei Mini-Programmen mit C schlagen kann.

Einfach nochmals, für die Nachwelt, damit nie jemand auf die Idee kommen 
wird, Moby's Theorien hätten auch nur ein Quäntchen Bedeutung:
1
                    Mobys Asm-Code   Yalus C-Code
2
—————————————————————————————————————————————————
3
Flash-Verbrauch          266             256
4
RAM-Verbrauch¹          6 + 1 GPIOR       9
5
Stack-Verbrauch           2               4
6
Quellcodezeilen²         143              91
7
Quellcodezeichen³       1614             1707
8
—————————————————————————————————————————————————
9
¹) ohne Stack
10
²) ohne Leer- und Kommentarzeilen
11
³) ohne Kommentare, Leerraum und Zeilenvorschübe
12
13
Compiler:             GCC 4.7.4
14
Assembler/Linker:     Binutils 2.25.1
15
C-Standardbibliothek: AVR-Libc 1.8.1

von Stefan K. (stefan64)


Lesenswert?

Moby A. schrieb:
> Ok, allzu ergiebig war die fachliche (Gegenargument-)Ausbeute über Nacht
> ja nicht.

Wozu Gegenargumente?
Haben wir hier in den letzten Tagen ein einziges Argument von Dir 
gesehen?

von P. M. (o-o)


Lesenswert?

Moby A. schrieb:
> Ok, allzu ergiebig war die fachliche (Gegenargument-)Ausbeute über Nacht
> ja nicht. Ich hoffe das bessert sich wieder!

- Obwohl du als Hobbyist gegen eine ganze Horde an erfahrenen Profis 
antrittst,
- obwohl ein halbes Forum deiner Einzelmeinung geschlossen widerspricht,
- obwohl du keine deiner Behauptungen belegen konntest,
- obwohl klare Gegenbeweise gegen deine Thesen bestehen,
- obwohl du einen Teil des Diskussionsgegenstands (Programmiersprache C) 
nicht mal kennst,
=> benimmst du dich immer noch so, als wärst du im Recht und die anderen 
auf dem Holzweg.

von Le X. (lex_91)


Lesenswert?

P. M. schrieb:
—————————————————————————————————————————————————
> Flash-Verbrauch          266             256
> RAM-Verbrauch¹          6 + 1 GPIOR       9
> Stack-Verbrauch           2               4
> Quellcodezeilen²         143              91
> Quellcodezeichen³       1614             1707
> —————————————————————————————————————————————————
> ¹) ohne Stack
> ²) ohne Leer- und Kommentarzeilen
> ³) ohne Kommentare, Leerraum und Zeilenvorschübe
>
> Compiler:             GCC 4.7.4
> Assembler/Linker:     Binutils 2.25.1
> C-Standardbibliothek: AVR-Libc 1.8.1

Man sollte vielleicht noch erwähnen dass Yalu's Lösung mehr Features 
bietet, wirklich erweiterbar ist und besser lesbar/dokumentiert.

von Michael K. (Gast)


Lesenswert?

le x. schrieb:
> Man sollte vielleicht noch erwähnen dass Yalu's Lösung mehr Features
> bietet, wirklich erweiterbar ist und besser lesbar/dokumentiert.

Ein echter Nachteil von C.
Durch die bessere Lesbarkeit können auch untalentierte Programmierer nun 
guten Code schreiben was langfristig zu schlechteren Programmierern 
führt.
(Im Sinne von ASM Verständniss)
Zudem werden die Produktzyken kürzer weil gute Produkte schneller 
entwickelt sind.
Die Menschen gewöhnen sich daran das fette Features schnell und 
zahlreich zu etabieren sind und schrauben ihre Erwartungshaltung ständig 
höher.
Das wiederum ist ein echtes Ressourcen / Umweltproblem.

Nur durch kurzlebige Modeerscheinungen wie Hochsprachen ist es überhaupt 
möglich geworden ständig neue MCUs auf den Markt zu werfen.
Hardcore ASM Götter würden freiwillig nicht so schnell wechseln.
Dadurch das nun viele etwas können was vorher wenigen vorbehalten war 
wird auch die Bezahlung schlechter.

Hochsprachen sind ausserdem eine Bedrohung für Frieden und Freiheit.
Weder flächendeckende Kommunikationsüberwachung, noch Gesichtserkennung, 
Drohnen, Marschflugkörper oder sonstiges moderne militärische Fluggerät 
wäre in der Form denkbar.

Hochsprachenprogrammierer sind Diener des Bösen.
Zwangsläufig wird die Gesellschaft sich davon befreien müssen indem 
selbige nach nordkoreanischem Vorbild umerzogen werden.
Innovative deutsche Unternehmen haben das bereits erkannt und gerade 
noch rechtzeitig ihren Betrieb eingestellt (Addison Wessley, Data 
Becker)
[Die heutige Bücherverbrennung wird Ihnen präsentiert von: O'Reilly)

von Jan H. (janhenrik)


Lesenswert?

Michael K. schrieb:
> le x. schrieb:
> Ein echter Nachteil von C.
> Durch die bessere Lesbarkeit können auch untalentierte Programmierer nun
> guten Code schreiben was langfristig zu schlechteren Programmierern
> führt.
> [...]
> Das wiederum ist ein echtes Ressourcen / Umweltproblem.
> [...]
> Hochsprachen sind ausserdem eine Bedrohung für Frieden und Freiheit.
> Weder flächendeckende Kommunikationsüberwachung, noch Gesichtserkennung,
> Drohnen, Marschflugkörper oder sonstiges moderne militärische Fluggerät
> wäre in der Form denkbar.
> [...]

Rettet die Welt, Programmiert ASM :^)

von Stefan K. (stefan64)


Lesenswert?

Michael K. schrieb:
> Dadurch das nun viele etwas können was vorher wenigen vorbehalten war
> wird auch die Bezahlung schlechter.

Zum Glück trifft das nicht auf die echten ASM-only-Programmierer zu. 
Diese Helden, die sich ihren Fokus nicht durch die Verlockungen der 
Hochsprachen-Sirenen haben verwässern lassen, sind heute in der 
Industrie gefragte Experten, die locker mit dem Doppelten eines 
Durchschnittsgehalts rechnen dürfen.

Gruß, Stefan

von (prx) A. K. (prx)


Lesenswert?

Michael K. schrieb:
> Zudem werden die Produktzyken kürzer weil gute Produkte schneller
> entwickelt sind.

Eben. In Assembler programmiert würde Microsoft nicht immer wieder die 
Benutzeroberfläche auf den Kopf stellen und die Hälfte aller Knöpfe neu 
verteilen. Es wäre eine Wohltat für viele Anwender. ;-)

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

Stefan K. schrieb:
> sind heute in der
> Industrie gefragte Experten, die locker mit dem Doppelten eines
> Durchschnittsgehalts rechnen dürfen.

Dafür aber die 10-fache Entwicklungszeit benötigen und somit locker das 
zwanzigfache pro Programm verdienen.

Asm-Effizienz in höchster Vollendung.

mfg.

von Michael K. (Gast)


Lesenswert?

A. K. schrieb:
> Eben. In Assembler programmiert würde Microsoft nicht immer wieder die
> Benutzeroberfläche auf den Kopf stellen und die Hälfte aller Knöpfe neu
> verteilen. Es wäre eine Wohltat für viele Anwender. ;-)

Womit wir uns auch mal um den Blödsinn der hochauflösenden Farbmonitore 
kümmern sollten.
Eingabefelder und Schieberegler sind seit Win 10 bei meinem billigst 
Notebook fast nicht zu erkennen.
So ein Problem hatte ich auf meinem C64 mit dem Bernsteinmonitor nie.

Dieser ganze neumodische Schnickschnack hat doch mit diesem Tesla 
angefangen und seiner Schnapsidee alle Haushalte zu bestromen.
Seit dem nur noch Hektik, Zeitdruck und arbeiten bis spät in die Nacht.
Probleme lösen die wir ohne Computer garnicht hätten.

Vorher:
Rentervorsorge? Ich bitte Dich, bei der Lebenserwartung ?
Schlafen wenn die Sonne untergeht, aufstehn wenn der Hahn kräht.

Moby hat das zugrunde liegende Problem gut erkannt, er setzt nur viel zu 
spät an.
Die Kontrolle hätten wir behalten wenn wir nie von den Bäumen 
runtergekommen wären. Ach was sage ich da, der Molch war doch in unserer 
Evolution die glücklichste aller Daseinsformen.
Kein Stress und zu blöd sich Sorgen darum zu machen das man gefressen 
werden könnte.

Ressourcenverbrauch ?
Da schneidet der Molch aber um Welten besser ab.
Wenn ich sehe was wir mit unserm ach so tollen Gehirn anstellen das weit 
überdurchschnittlich viel Energie verbraucht, so ist dieser Thread das 
beste Beispiel dafür das der Molch uns da klar überlegen ist.

von Karl H. (kbuchegg)


Lesenswert?

Frank M. schrieb:
> Moby A. schrieb:
>> Aber vielen Dank K.H. für Deine Hilfsbereitschaft. Ich meine, den
>> Charakterzug weiß ich ja durchaus zu schätzen. Allein, Du würdest mir
>> mit einem besseren Vergleichscode zu meinem Projekt wesentlich mehr
>> helfen...
>
> "Helfen"? Habe ich gerade "helfen" gelesen? Warum sollen wir Dir denn
> helfen? Hilfst Du irgend jemandem im Forum, wenn er ein ASM-Problem
> hat?

Das wiederrum ist interessanterweise eine Eigenschaft, die er mit den 
restlichen Assembler-über-alles Verfechtern teilt. Wenn es um ein 
Assembler Problem geht, glänzen sie so gut wie fast immer .... durch 
Abwesenheit.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

le x. schrieb:
> Man sollte vielleicht noch erwähnen dass Yalu's Lösung mehr Features
> bietet, wirklich erweiterbar ist und besser lesbar/dokumentiert.

@P.M.: Kannst du das bitte in das täglich zu wiederholende Posting 
(Murmeltier) mit aufnehmen? Danke.

von (prx) A. K. (prx)


Lesenswert?

Michael K. schrieb:
> Drohnen, Marschflugkörper oder sonstiges moderne militärische Fluggerät
> wäre in der Form denkbar.

Der erste Marschflugkörper kam völlig ohne Programm aus. Der hatte 
keinen einzigen Transistor drin, vielleicht nicht einmal Röhren.

: Bearbeitet durch User
von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

A. K. schrieb:
> vielleicht nicht einmal Röhren.

oh doch der wurde über einen Funkleitstrahl analog auf Kurs gehalten



https://de.wikipedia.org/wiki/Präzisionsgelenkte_Munition#Flugbahnlenkung
besser noch hier
https://de.wikipedia.org/wiki/Fieseler_Fi_103#Zielf.C3.BChrung

auch interessant in diesem zusammenhang
https://de.wikipedia.org/wiki/Fritz_X

Namaste

: Bearbeitet durch User
von Michael K. (Gast)


Lesenswert?

Ich muß einen schnöden Verrat an unseren C Prinzipien vermelden.
A.K. ist vom Glauben abgefallen:

Beitrag "Re: Eigenes Dev. Board für vintage CPU bauen"
A. K. schrieb:
> Ausserdem kann man beim 1802 leichter als irgendwo sonst auf total
> überflüssige Hochsprachen wie Makro-Assembler verzichten und direkt in
> Hex programmieren. Liest sich in kurzer Zeit fast genauso gut wie
> normaler Assembler.

A.K. es ist noch nicht zu spät.
Kehre zurück auf den Pfad der Tugend und schwöre ab den falschen 
Propheten.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Michael K. schrieb:
> Ich muß einen schnöden Verrat an unseren C Prinzipien vermelden.
> A.K. ist vom Glauben abgefallen:

Wieso? Ich hab in den 80ern auch Z80-Programme direkt durch Eingabe der 
Opcodes als Hex-Zahlen erstellt. Mit ein wenig Übung geht das recht 
flüssig. Assembler? Quatsch, Luxus, den man nicht braucht :-)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Frank M. schrieb:
> Wieso? Ich hab in den 80ern auch Z80-Programme direkt durch Eingabe der
> Opcodes als Hex-Zahlen erstellt. Mit ein wenig Übung geht das recht
> flüssig. Assembler? Quatsch, Luxus, den man nicht braucht :-)

Ging mir ähnlich beim 6502: Der Apple hatte in seinem Monitor-ROM zwar
einen einfachen Disassembler, aber keinen Assembler. Bei typischen
8-Bit-Anwendungen tippte man deswegen das Programm einfach als Hexcodes
ein und überprüfte anschließend deren Richtigkeit mit dem Disassembler.
Innerhalb kurzer Zeit kannte ich die Hexcodes für 90% der Befehle
auswendig, den selten genutzten Rest¹ musste ich halt nachschlagen.

Da ich irgendwann aber auch nichttypische 8-Bit-Anwendungen (d.h. mit
mehr als 200 Bytes) programmieren wollte, kaufte mir dann aber doch
einen Assembler.

Selbst die komplizierteren 16-Bit-Opcodes des 68000 konnte man sich gut
merken, da sie größtenteils nach einem einheitlichen Schema aufgebaut
sind. Da die Quell- und Zieladdressierungsart und -register von rechts
her jeweils als 3-Bit-Gruppen kodiert sind, nutzte man statt der
hexadezimalen die oktale Schreibweise.

Auch damit hatte ich einige Progrämmchen geschrieben, die ich aber nicht
als "typische 16-Bit- Anwendungen" bezeichnen würde ;-)

————————————
¹) Nein, Moby, der EOR-Befehl zählte nicht zu diesem Rest, der war unter
   den 90% häufig genutzten Befehlen ;-)

von (prx) A. K. (prx)


Lesenswert?

Frank M. schrieb:
> Wieso? Ich hab in den 80ern auch Z80-Programme direkt durch Eingabe der
> Opcodes als Hex-Zahlen erstellt. Mit ein wenig Übung geht das recht
> flüssig. Assembler? Quatsch, Luxus, den man nicht braucht :-)

Ist aber bei 8080-Code einfacher als bei optimiertem Z80-Code. Die 
Rechnerei der relativen Sprünge ist ziemlich umständlich. Das ist das 
schöne am 1802, der hat zwar kurze Sprünge, aber ohne umständliche 
Rechnung. Da wird bloss das untere Byte der Programmadresse ersetzt.

Gegenüber der Oktalcodierung von 8080 besteht zudem der Vorteil, dass 
etliche Befehle hexcodiert aufgebaut sind. Also 4-Bit Opcode und 4-Bit 
Registernummer. Einfacher gehts nicht.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

A. K. schrieb:
> Die Rechnerei der relativen Sprünge ist ziemlich umständlich.

Das stimmt, aber die absoluten des 8080 gab's ja trotzdem noch,
insofern erstmal kein Nachteil.

Habe aber inzwischen fast alle vergessen.  Kann mich nur noch an AF
und 21 xx xx erinnern. ;)

von (prx) A. K. (prx)


Lesenswert?

Einen kleinen Nachteil der Hex-Programmierung des 1802 muss ich aber 
noch erwähnen: Nirgends hat man so viel Sex wie in 1802 Assembler 
Programmierung. In Hex verschwindet der völlig aus den Augen.
http://www.atarimagazines.com/computeii/issue3/page52.php

: Bearbeitet durch User
von Gu. F. (mitleser)


Lesenswert?

Karl H. schrieb:
> Und Hand aufs Herz. So schwer ist ein   DDRD = 0xFF
> dann auch wieder nicht zu verstehen.

Hmmm lass mal überlegen...

Moby A. schrieb:
> Das ist kryptischer Kauderwelsch für Eingeweihte.
> Dessen Studium ist für 8-Bit MSR überflüssig ;-)

von Gu. F. (mitleser)


Lesenswert?

le x. schrieb:
> P. M. schrieb:
> —————————————————————————————————————————————————
>> Flash-Verbrauch          266             256
>> RAM-Verbrauch¹          6 + 1 GPIOR       9
>> Stack-Verbrauch           2               4
>> Quellcodezeilen²         143              91
>> Quellcodezeichen³       1614             1707
>> —————————————————————————————————————————————————
>
> Man sollte vielleicht noch erwähnen dass Yalu's Lösung mehr Features
> bietet, wirklich erweiterbar ist und besser lesbar/dokumentiert.

Schon erstaunlich was man aus -10 Bytes alles herausholen kann ;-)

von Michael K. (Gast)


Lesenswert?

Frank M. schrieb:
> Wieso? Ich hab in den 80ern auch Z80-Programme direkt durch Eingabe der
> Opcodes als Hex-Zahlen erstellt.

Na gut, dann muß ich beichten das ich das beim 8085 ebenso gemacht habe.
Man hatte ja keinen Vergleich und hat sich deswegen über jeden Befehl 
gefreut der ausgeführt wurde.
Aus heutiger Sicht so spannend wie Lack beim trocknen zuzusehen.

Der 8031 war dagegen wie Balsam auf meine wunde Seele.
Timer, Ram, Uart alles in einem Chip.
Nur noch Eprom und A/D Latch ran und es lief (naja + ein paar Bauteile)
Das war so schön, ich hätte weinen können.
Der 8751 war mein größter Schatz und sein Gewicht in Gold wert.
4K on Chip ! Der brutale Wahnsinn.
Der 8085 endete quasi sofort als Türstopper.

Heute empfinde ich das als Zumutung wenn ich mehr als 30Cent ausgeben 
muß für so eine kleine Gurke und dann auch noch mehr brauche als zwei 
Kerkos um damit was zu machen.
Flash, ISP, OCD sind so selbstverständlich das ich erst solche Threads 
brauche um mich an all die Klimmzüge und Leiden zu erinnern die damals 
selbstverständlich waren.
Warum man die Hardwaresegnungen der 'neuen Zeit' mitnimmt aber sich 
softwaremäßig (ASM) nicht weiterentwickelt kann ich persönlich nicht 
nachvollziehen.

von Karl H. (kbuchegg)


Lesenswert?

Frank M. schrieb:
> Michael K. schrieb:
>> Ich muß einen schnöden Verrat an unseren C Prinzipien vermelden.
>> A.K. ist vom Glauben abgefallen:
>
> Wieso? Ich hab in den 80ern auch Z80-Programme direkt durch Eingabe der
> Opcodes als Hex-Zahlen erstellt.

Was seid ihr denn für Wappler? :-)
Mein erster Z80 Eigenbau bekam sein erstes Programm
1
0xxxxx  0x76   HALT
indem ich mit Drahtbrücken im EEPROM Sockel den Befehl direkt am 
Datenbus gesteckt habe. Der Chip Select Adressdecoder war noch nicht 
fertig :-) Ich war stolz wie nachbars Lumpi, als das (geschenkte) 
Phillips Voltmeter am Halt Pin den Zeiger nicht bewegte, während es bei 
einem gesteckten
1
0xxxxx 0x00    NOP
brav mit einem Ausschlag die 5V vermeldete.


> Mit ein wenig Übung geht das recht
> flüssig. Assembler? Quatsch, Luxus, den man nicht braucht :-)

Ja doch das ging schon. Das einzige bei dem ich am Anfang immer Probleme 
hatte, war mir zu merken: Welcher Befehl verändert welche Flags wie?

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Michael K. schrieb:

> Heute empfinde ich das als Zumutung wenn ich mehr als 30Cent ausgeben
> muß für so eine kleine Gurke und dann auch noch mehr brauche als zwei
> Kerkos um damit was zu machen.

Vor allen Dingen kein potentes Netzteil mehr :-)
Mit einem nackten Z80, bisschen Kleinkram rundum und eben das übliche 
(EPROM, RAM, 8255, 8251), war man mit einem 1A Netzteil auf der 5V 
Schiene nicht wirklich krass überdimensioniert. :-)

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karl H. schrieb:
> 0x0000  0x76   HALT

Muss das nicht
1
0000H 076H  HALT

heißen? ;-)

Nein, einen EPROM hatte ich schon zu Anfang.  Allerdings natürlich
keinen LA, mit dem man die Verdrahtungsfehler hätte suchen können,
nur einen einfachen Busanalysator (7-Segment-Anzeigen für Daten- und
Adressbus).  Zum schrittweisen Durchschalten hab' ich mir dann eine
kleine Hardwaremimik gezimmert, die nach je einem Befehl immer wieder
/WAIT gezogen hat.  Nach ein oder zwei Stunden war dann der Kurzschluss
auf einem der Busse gefunden.

Das Lösen des Henne-und-Ei-Problems für die ersten EPROMs benötigte
allerdings einen in Hardware gezimmerten Eprommer.  Wehe dem, man
hatte sich bei einem der Bytes beim Eingeben vertan, dann musste
man von vorn anfangen.  Computergesteuerten Eprommer habe ich dann
erst später gebaut.  Passend zum Thema des Threads: dessen
Bediensoftware wurde in Turbo-Pascal geschrieben.  Dadurch ließ sich
doch einiges an Bedien-Komfort mit vertretbarem Aufwand erreichen,
was ich mir hätte bei reiner Assemblerprogrammierung nicht antun
wollen. Nur die innerste Schleife habe ich nach dem initialen
Funktionstest dann in Inline-Assembler nachprogrammiert, damit er
schnell genug wurde.

von Michael K. (Gast)


Lesenswert?

Karl H. schrieb:
> Was seid ihr denn für Wappler? :-)
Moment .....
https://de.wiktionary.org/wiki/Wappler
Aha !

Karl H. schrieb:
> Das einzige bei dem ich am Anfang immer Probleme
> hatte, war mir zu merken: Welcher Befehl verändert welche Flags wie?
Da hilft nur: Übung, Vorbereitung, System

von Karl H. (kbuchegg)


Lesenswert?

Jörg W. schrieb:
> Karl H. schrieb:
>> 0x0000  0x76   HALT
>
> Muss das nicht
>
>
1
0000H 076H  HALT
>
> heißen? ;-)

Mea Culpa. Da hat wohl die C-Bürokratie die Oberhand gewonnen.

> Nein, einen EPROM hatte ich schon zu Anfang.  Allerdings natürlich
> keinen LA,

War ja auch unbezahlbar für einen Studenten.
Die 100 Mark wurden lieber in ein paar kB Speicher investiert.

> mit dem man die Verdrahtungsfehler hätte suchen können,
> nur einen einfachen Busanalysator (7-Segment-Anzeigen für Daten- und
> Adressbus).

Nobel.
Ich hatte Glück. Meinen Z80 konnte ich mit einer LED (und einem 
Durchgangsprüfer, gebaut aus einem alten Texas Instruments Akkufach + 
LED + 220 Ohm + Draht) in Betrieb nehmen und verifizieren, dass er 
funktioniert.


> Das Lösen des Henne-und-Ei-Problems für die ersten EPROMs benötigte
> allerdings einen in Hardware gezimmerten Eprommer.

:-)
Das war ein echtes Problem.
In der mc gab es einen Eprommer, der im Prinzip nur ein Schieberegister 
war. An sich super. Nur, wie ansteuern, wenn der Rechner noch nicht 
läuft. Ein Kumpel mit einem TRS80 hat mir dann aus der Patsche geholfen.

> erst später gebaut.  Passend zum Thema des Threads: dessen
> Bediensoftware wurde in Turbo-Pascal geschrieben.

Das hatte wohl jeder. D.h. sofern er sich ein Floppy Laufwerk leisten 
konnte und unter der Hand ein CP/M irgendwo herbekam :-)

von Thomas E. (thomase)


Lesenswert?

Karl H. schrieb:
> D.h. sofern er sich ein Floppy Laufwerk leisten konnte

Welch ein Luxus.

Dump über die serielle Schnittstelle auf ein 1200er Modem und die 
frequenzmodulierten Daten mit einem Kassettenrekorder aufgezeichnet.
Das war cool.

mfg.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karl H. schrieb:

> Mea Culpa. Da hat wohl die C-Bürokratie die Oberhand gewonnen.

Ja, da kannst du sehen, wohin diese Bürokratie noch führt!

>> nur einen einfachen Busanalysator (7-Segment-Anzeigen für Daten- und
>> Adressbus).
>
> Nobel.

Die Anzeigebaugruppe wurde auch am Primitiv-Eprommer genutzt.  Sie
bestand aus einer VQD30:

http://www.pollin.de/shop/dt/MDY3OTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LED_Display_VQD30.html

einem BCD-7-Segment-Decoder (U40511, der hat auch die Hex-Zahlen
korrekt angezeigt) und Multiplexern, mit denen reihum die Busse
abgefragt wurden.

>> erst später gebaut.  Passend zum Thema des Threads: dessen
>> Bediensoftware wurde in Turbo-Pascal geschrieben.
>
> Das hatte wohl jeder. D.h. sofern er sich ein Floppy Laufwerk leisten
> konnte und unter der Hand ein CP/M irgendwo herbekam :-)

Naja, Software war in der DDR kein Problem :), die wurde ja auch
ganz offiziell von robotron als Clone vertrieben.  Beliebt war die
CP/A genannte Version des Instituts für Informatik an der Akademie
der Wissenschaften.  Irgendwoher bekam man da auch ein Turbo-Pasal,
auf welchen Wegen die genau von Diskette zu Diskette gefunden haben,
hat damals hier keinen interessiert …

Diskettenlaufwerk hatte ich erst sehr spät, aber massig RAM (384 KiB),
sodass ich zwei „RAM-Floppies“ von 120 und 200 KB hatte.

von Karl H. (kbuchegg)


Lesenswert?

Jörg W. schrieb:

> Diskettenlaufwerk hatte ich erst sehr spät, aber massig RAM (384 KiB),
> sodass ich zwei „RAM-Floppies“ von 120 und 200 KB hatte.

Krösus :-)

Ich hatte mir als Österreicher in München 2 Floppy Laufwerke erstanden. 
Haben ein Schweine-Geld gekostet. Da kriegst heute einen ganzen PC drum, 
und dann bleibt noch was übrig.
Mann war ich sauer, als mir beim Basteln das Krokoklemmenkabel 
abgeschnippt ist. Blöderweise war es die GND-Leitung und das freie Ende 
fiel auf die 230V Phase. Und vorbei wars mit den Laufwerken ... und dem 
VT100 ... und überhaupt dem meisten in der als Gehäuse benutzen 
Holzkiste. Eines der Laufwerke konnte ich noch retten, in dem ich auf 
einem defekten IC (war irgendeine Gatter-Sache) einen weiteren IC 
huckepack aufgeklebt und mit Fädeldraht angeschlossen habe. Aber das 
2.te machte keinen Mucks mehr.

:-)
Und ich brings trotzdem nicht übers Herz, den 30 Jahre alten Krempel zu 
entsorgen.
:-)

: Bearbeitet durch User
von Michael K. (Gast)


Lesenswert?

Karl H. schrieb:
> Und ich brings trotzdem nicht übers Herz, den 30 Jahre alten Krempel zu
> entsorgen.

Moby auch nicht ;-)

von Karl H. (kbuchegg)


Lesenswert?

Thomas E. schrieb:
> Karl H. schrieb:
>> D.h. sofern er sich ein Floppy Laufwerk leisten konnte
>
> Welch ein Luxus.
>
> Dump über die serielle Schnittstelle auf ein 1200er Modem und die
> frequenzmodulierten Daten mit einem Kassettenrekorder aufgezeichnet.
> Das war cool.

Das war auch schon so ziemlich das einzige, was ich nie gemacht habe. 
Hätte mit meinem 300 Baud Eigenbau Akustikkoppler auch nicht so 
wahnsinnig toll funktioniert. Obwohl - wieso hab ich das eigentlich nie 
ausprobiert?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karl H. schrieb:
>> Diskettenlaufwerk hatte ich erst sehr spät, aber massig RAM (384 KiB),
>> sodass ich zwei „RAM-Floppies“ von 120 und 200 KB hatte.
>
> Krösus :-)

Zusammengestoppelt.  Schließlich kamen die Dinger initial aus dem
ZMD in Dresden ;), es sind noch welche dabei, die nicht mit dem später
offiziellen Etikett „U2164“ versehen sind, sondern „U264“.  Es sind
aber auch auf der zweiten Platine offizielle Erfurter ICs drauf, die
es dann später preiswert als so genannte Bastlerware (2. Wahl) gab.

Aufgrund der vielen völlig verschiedenen Bauteile funktionierten
allerdings die „gängigen“ RAS-CAS-Ansteuerschaltungen auf der Basis
irgendwelcher Gatterlaufzeiten nicht bei diesem Mix.  Ich bin erst
glücklich geworden, als ich einen definierten RAS-CAS-Versatz mit
dem vierfachen CPU-Takt (der zugleich Videotakt war) und einem
Schieberegister eingebaut hatte.  Danach liefen die dRAMs stabil.

Das Desaster mit dem runtergefallen Kabel ist natürlich tragisch. In
solch trauriger Dimension ist es mir zum Glück erspart geblieben.

von Sheeva P. (sheevaplug)


Lesenswert?

Thomas E. schrieb:
> Was wird das jetzt? Willt du von deiner Resourcenverschwendung ablenken?
>
> Ich benutzte 0 RAM und 0 Register und schone den Befehlssatz, indem ich
> aus diesem nur einen einzigen Befehl verwende. Von der Kompaktheit des
> Codes und dem flankenschonenden und stromsparenden Takt ganz zu
> schweigen.
>
> Das Programm ist in jeder erdenklicher Weise höchstoptimiert und stellt
> somit Krone der Programmierkunst dar.
>
> Das ist die ideale Effizienz. Das sind die unwidersprochenen Fakten!

Da muß ich widersprechen! Deinen Blinker hätte man problemlos mit vier 
Widerständen, zwei Kondensatoren und zwei Transistoren aufbauen können. 
Damit hättest Du sogar den Mikrocontroller gespart!

von Werner P. (Gast)


Lesenswert?

Sheeva P. schrieb:
> Da muß ich widersprechen! Deinen Blinker hätte man problemlos mit vier
> Widerständen, zwei Kondensatoren und zwei Transistoren aufbauen können.
> Damit hättest Du sogar den Mikrocontroller gespart!

ist aber nicht 8Bit MSR konform.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.