Forum: Mikrocontroller und Digitale Elektronik Wieviel Platz braucht ein Befehl ?


von Evert D. (evertd)


Lesenswert?

Hallo Leute,

der Titel sagt leider nicht viel, 'tschuldige.

In GREAT COW BASIC, (für PICs) gibt es Befehle
wie "WAIT xx h" wodurch xx Stunden gewartet wird.
Ähnlich mit s für Sekunden... usw.

Aber, wie ich es vor langer Zeit erlebt habe,
daß in Assembler eine ziemliche Software gebraucht
wird um eine kleine Wartezeit zu produzieren.

Na, dann wird es etwas, wenn's um 'ne Stunde geht.

Und dann frage ich mich, wo bleibt so ein Befehl
in die paar Bytes die man in ein PIC hat ?
Es funktioniert, aber wie ?

Liebe Grüßen,

Evert

von 50c (Gast)


Lesenswert?

...der ist nicht schlecht...

von platzda (Gast)


Lesenswert?

Evert D. schrieb:
> Aber, wie ich es vor langer Zeit erlebt habe,
> daß in Assembler eine ziemliche Software gebraucht
> wird um eine kleine Wartezeit zu produzieren.

Kann man so nicht sagen, aber im Schnitt braucht er ca. 42.

platzda

von Christian M. (Gast)


Lesenswert?

Compiler doch mal und schau das asm File an...

Gruss Chregu

von Evert D. (evertd)


Lesenswert?

Noch ein kleine Verdeutlichung:
Diesem Basicbefehl wird natürlich kompiliert
nach Assembler, und dann braucht es den nötigen
Platz.

von Evert D. (evertd)


Lesenswert?

Christian M. schrieb:
> Compiler doch mal und schau das asm File an...
>
> Gruss Chregu

Naja, inzwischen verstehe ich nichts mehr von Assembler...

von Christian M. (Gast)


Lesenswert?

Ich auch nicht mehr, lohnt sich aber trotzdem dort reinzuschauen! Mach 
ich immer mal wieder.

Gruss Chregu

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Evert D. schrieb:
> Aber, wie ich es vor langer Zeit erlebt habe,
> daß in Assembler eine ziemliche Software gebraucht
> wird um eine kleine Wartezeit zu produzieren.

 Und wo soll das genau gewesen sein?

> Und dann frage ich mich, wo bleibt so ein Befehl
> in die paar Bytes die man in ein PIC hat ?
> Es funktioniert, aber wie ?

 Einfach.
 Es wird 60 Mal 1 Minute Delay aufgerufen, das ergibt eine Stunde
 Wartezeit. Dieses wird dann xx Mal aufgerufen.

 xx Stunden Delay sollte in etwa 10-15 Assembler Befehle passen.

von Evert D. (evertd)


Lesenswert?

Marc V. schrieb:
> Evert D. schrieb:
>> Aber, wie ich es vor langer Zeit erlebt habe,
>> daß in Assembler eine ziemliche Software gebraucht
>> wird um eine kleine Wartezeit zu produzieren.
>
>  Und wo soll das genau gewesen sein?
>
>> Und dann frage ich mich, wo bleibt so ein Befehl
>> in die paar Bytes die man in ein PIC hat ?
>> Es funktioniert, aber wie ?
>
>  Einfach.
>  Es wird 60 Mal 1 Minute Delay aufgerufen, das ergibt eine Stunde
>  Wartezeit. Dieses wird dann xx Mal aufgerufen.
>
>  xx Stunden Delay sollte in etwa 10-15 Assembler Befehle passen.

Ohjee... haha
15 Assemblerbefehle ?.... ja klar, dann paßt es!

DANKE !
Ich fand Assebler immer sehr umständlich.

LG,

Evert

von c-hater (Gast)


Lesenswert?

Evert D. schrieb:

> Naja, inzwischen verstehe ich nichts mehr von Assembler...

Dann lerne es wieder. Brauchst du nicht mehr so dämliche Fragen zu 
stellen...

von Wolfgang (Gast)


Lesenswert?

Evert D. schrieb:
> Es funktioniert, aber wie ?

Mit Schleifen

von Axel S. (a-za-z0-9)


Lesenswert?

Evert D. schrieb:
> Diesem Basicbefehl wird natürlich kompiliert

Das ist überhaupt nicht natürlich. BASIC Programme wurden immer schon 
tokenisiert abgelegt (jeder BASIC Befehl braucht dann nur 1 Byte). Und 
dann wurde das von einem Interpreter abgearbeitet. So einen BASIC 
Interpreter kriegt man in ca. 2KB Machinencode implementiert. Dein 
"Programm" oben braucht dann 1 Byte für WAIT, N Bytes für die Zahl und 1 
Byte für das "h". Dann noch ein Byte für das Zeilenende und ca. 4 Bytes 
für Zeilennummer und Linkpointer. Und natürlich einmalig 2KB für den 
Interpreter.

Evert D. schrieb:
> wie ich es vor langer Zeit erlebt habe,
> daß in Assembler eine ziemliche Software gebraucht
> wird um eine kleine Wartezeit zu produzieren.

Bahnhof. Zwar kann man für eine (sehr) kurze Wartezeit einen NOP Befehl 
verwenden. Aber wenn man längere Zeiten braucht, dann schreibt man 
nicht einfach nur sehr viele solche NOPs hintereinander. Schon gar 
nicht, wenn man mehrere Stunden warten will. Hast du schon mal von 
Schleifen gehört? Und davon, daß man solche Schleifen auch verschachteln 
kann?

von Ralph S. (jjflash)


Lesenswert?

Axel S. schrieb:
> Das ist überhaupt nicht natürlich. BASIC Programme wurden immer schon
> tokenisiert abgelegt (jeder BASIC Befehl braucht dann nur 1 Byte). Und
> dann wurde das von einem Interpreter abgearbeitet.

... irgendwo habe ich gelesen, dass es sogar schon Basic-Compiler geben 
soll :-)

von oszi40 (Gast)


Lesenswert?

> Bahnhof.

Schleifenzeiten ändern sich mit der CPU-Taktfrequenz.
"Gerüchten zu Folge" gab es schon seit Z80-Zeiten
einen CTC-Schaltkreis für diesen Zweck.

von John Doe (Gast)


Lesenswert?

Axel S. schrieb:
> Das ist überhaupt nicht natürlich. BASIC Programme wurden immer schon
> tokenisiert abgelegt (jeder BASIC Befehl braucht dann nur 1 Byte).

Schon der gute alte C128 hatte 2Byte-Token...

von Sinus T. (micha_micha)


Lesenswert?

John Doe schrieb:
> Schon der gute alte C128 hatte 2Byte-Token...

Wenn du weniger als 128 Token brauchst, wäre das Overkill

von S. R. (svenska)


Lesenswert?

Ralph S. schrieb:
> ... irgendwo habe ich gelesen, dass es sogar
> schon Basic-Compiler geben soll :-)

Es gibt sogar Basic-Compiler, die einfach das tokenisierte Programm mit 
der Runtime zusammenkleben und dann fertig sind. :-)

von Axel S. (a-za-z0-9)


Lesenswert?

Ralph S. schrieb:
> Axel S. schrieb:
>> Das ist überhaupt nicht natürlich. BASIC Programme wurden immer schon
>> tokenisiert abgelegt (jeder BASIC Befehl braucht dann nur 1 Byte). Und
>> dann wurde das von einem Interpreter abgearbeitet.
>
> ... irgendwo habe ich gelesen, dass es sogar schon Basic-Compiler geben
> soll :-)

Ich habe nichts Gegenteiliges behauptet.

Aber gerade im Kontext von BASIC sind Compiler eine recht späte 
Entwicklung. Und auf 8-Bittern waren sie verhältnismäßig wenig 
verbreitet. Was damit zusammenhängen könnte, daß sie damals nicht sehr 
gut waren. Ich weiß noch, daß ich mal mit einem BASIC Compiler für den 
C64 herumgespielt habe. Die Binaries waren riesig groß und auch nicht 
sonderlich schnell.

Auf Amiga und PC sah das anders aus. Und BASCOM ist nur von der Form her 
noch mit den BASIC Dialekten der Urzeit vergleichbar. Zumal das ja auch 
strikt ein Cross-Compiler ist. Das hat auf dem Host Unmengen an CPU-Zeit 
und Speicher verfügbar, um das Programm zu optimieren. Wenn der Compiler 
auf den Zielsystem laufen müßte, könnte er das gar nicht.

Ich war jetzt zu faul, nachzusehen was für ein PIC BASIC der TE da hat. 
Kann gut sein, daß das ähnlich wie BASCOM eine jüngere Entwicklung ist.

von Route_66 H. (route_66)


Lesenswert?

oszi40 schrieb:
> Schleifenzeiten ändern sich mit der CPU-Taktfrequenz.
> "Gerüchten zu Folge" gab es schon seit Z80-Zeiten
> einen CTC-Schaltkreis für diesen Zweck.

Der CTC-Schaltkreis hat niemals die CPU-Taktfrequenz des 
Z80-Prozessors geändert!

von Evert D. (evertd)


Lesenswert?

Einige von euch können nicht lesen.
Es geht nicht um Heimcomputern, sondern PIC-controllern.
Und dann gibts noch freche Typen auch....

von Johannes R. (oa625)


Lesenswert?

Um dem TE mal eine Antwort auf seine eigentliche Frage zu geben:
Hab's mal kurz getestet:

1 Stunde Wartezeit, PIC12F683 @4MHz, Compiler: MikroBasic 7.6:

delay_ms(3600000) -> 17 Maschinenbefehle:

;test.mbas,23 ::                 delay_ms(3600000)
        MOVLW      72
        MOVWF      R10+0
        MOVLW      87
        MOVWF      R11+0
        MOVLW      206
        MOVWF      R12+0
        MOVLW      10
        MOVWF      R13+0
L__main1:
        DECFSZ     R13+0, 1
        GOTO       L__main1
        DECFSZ     R12+0, 1
        GOTO       L__main1
        DECFSZ     R11+0, 1
        GOTO       L__main1
        DECFSZ     R10+0, 1
        GOTO       L__main1
        NOP

Guß
Johannes

von Evert D. (evertd)


Lesenswert?

Hallo Johannes,

vielen Dank für die Info.

Schön gemacht !

Schönes Wochende schonmal !

Evert

von Percy N. (vox_bovi)


Lesenswert?

Axel S. schrieb:



>
> Aber gerade im Kontext von BASIC sind Compiler eine recht späte
> Entwicklung. Und auf 8-Bittern waren sie verhältnismäßig wenig
> verbreitet. Was damit zusammenhängen könnte, daß sie damals nicht sehr
> gut waren. Ich weiß noch, daß ich mal mit einem BASIC Compiler für den
> C64 herumgespielt habe. Die Binaries waren riesig groß und auch nicht
> sonderlich schnell.
>
Da gab es schon vorher Besseres.

> Auf Amiga und PC sah das anders aus. Und BASCOM ist nur von der Form her
> noch mit den BASIC Dialekten der Urzeit vergleichbar.

Was das BASIC von 1964 angeht, hast Du recht. Ansonsten war BASCOM halt 
der Hausstandard von Microsoft, der spätestens seit Anfang derx80er 
Jahre kanonisch war.

> Zumal das ja auch
> strikt ein Cross-Compiler ist.

Nö. Der lief auf einen 8080 unter CP/M und produzierte ausführbar 
Objektdateien für 8080 unter CP/M.

Das hat auf dem Host Unmengen an CPU-Zeit
> und Speicher verfügbar, um das Programm zu optimieren.

Nun, auf dem ZX80 lief das nicht einmal mit der 4k-Speicherweiterung. 
Das könnte aber such an CP/M gelegen haben...

Wenn der Compiler
> auf den Zielsystem laufen müßte, könnte er das gar nicht.
>
Und da heißt es immer, Prognosen seien dann besonders unzuverlässig, 
wenn sie sich auf die Zukunft bezögen!

> Ich war jetzt zu faul, nachzusehen was für ein PIC BASIC der TE da hat.
> Kann gut sein, daß das ähnlich wie BASCOM eine jüngere Entwicklung ist.

Was ist denn bitte an BASIC-80 so furchtbar jung?

von Axel S. (a-za-z0-9)


Lesenswert?

Percy N. schrieb:
>
> Was das BASIC von 1964 angeht, hast Du recht. Ansonsten war BASCOM halt
> der Hausstandard von Microsoft, der spätestens seit Anfang derx80er
> Jahre kanonisch war.

Ich rede von https://de.wikipedia.org/wiki/BASCOM [1], nicht von 
irgendwelchem Microsoft-Krempel aus den 80ern.

[1] falls Wikipedia dich wider Erwarten auf das falsche führt; ich meine 
dieses hier: https://www.mcselec.com/

von Percy N. (vox_bovi)


Lesenswert?

Axel S. schrieb:
> Percy N. schrieb:
>>
>> Was das BASIC von 1964 angeht, hast Du recht. Ansonsten war BASCOM halt
>> der Hausstandard von Microsoft, der spätestens seit Anfang derx80er
>> Jahre kanonisch war.
>
> Ich rede von https://de.wikipedia.org/wiki/BASCOM [1], nicht von
> irgendwelchem Microsoft-Krempel aus den 80ern.
>
> [1] falls Wikipedia dich wider Erwarten auf das falsche führt; ich meine
> dieses hier: https://www.mcselec.com/

Es bedarf wohl schon einer besonderen Form von Ignoranz, um das 
MS-BASCOM von 1981 als irgendwelchen Krempel zu bezeichnen, insbesondere 
dann, wenn zugleich diese ulkige Maker-IDE als Maßstab herangezogen 
wird.

Halte es doch einfach mit Wittgenstein und schweige von Dingen, die Du 
nicht verstehst. Das wäre vorliegend allerdings nicht nur BASIC-80, 
sondern BASCOM insgesamt anzuraten.

von c-hater (Gast)


Lesenswert?

Axel S. schrieb:

> Ich rede von https://de.wikipedia.org/wiki/BASCOM [1], nicht von
> irgendwelchem Microsoft-Krempel aus den 80ern.

Dieser Compiler ist aber ziemlich Scheiße. Wenn ich zu C-Compilern schon 
immer sage, dass das nur maßlos aufgedonnerte Makro-Assembler sind, dann 
gilt das aber in sehr viel höherem Masse auch für BASCOM.

Da ist mehr Redundanz im Compilat als z.B. einem GCC, der auf Codegröße 
optimiert. Und sogar sehr viel mehr als bei einem GCC der auf Vmax 
optimiert.

Wer wirklich Assembler kann, sieht die BASCOM-Pattern im Code mit links 
und 40° Fieber. Bei auf Geschwindigkeit optimierten GCC-Compilaten ist 
das schon längst nicht mehr so einfach zu erkennen.

Sprich: der BASCOM-Compiler ist wohl sicher besser als ein Interpreter, 
aber nicht annähernd so gut, wie ein Compiler sein könnte...

von Axel S. (a-za-z0-9)


Lesenswert?

c-hater schrieb:
> Axel S. schrieb:
>
>> Ich rede von https://de.wikipedia.org/wiki/BASCOM [1], nicht von
>> irgendwelchem Microsoft-Krempel aus den 80ern.
>
> Dieser Compiler ist aber ziemlich Scheiße.

Kann sein, kann nicht sein. Ist auch eigentlich egal. Es wird ja niemand 
gezwungen, das zu benutzen. Ein paar Leuten scheint es zu gefallen. Aber 
über Geschmack kann man nicht streiten...

> Wenn ich zu C-Compilern schon
> immer sage, dass das nur maßlos aufgedonnerte Makro-Assembler sind, dann
> gilt das aber in sehr viel höherem Masse auch für BASCOM.

Just for the record: es war der TE, der hier mit BASIC angefangen hat. 
Für mich hat sich das Thema seit ca. Ende der 80er erledigt.

Und was sein "Große Kuh BASIC" angeht: das fährt tatsächlich auf der 
gleichen Schiene wie BASCOM. Es ist ein Cross-Compiler, der einen 
proprietären (aber immerhin auf µC-Anwendungen bezogenen) BASIC-Dialekt 
in PIC und AVR (ja!) Binaries übersetzt:

http://gcbasic.sourceforge.net/Typesetter/index.php/Home

Ob es was taugt? Keine Ahnung. Interessiert mich nicht die Bohne. Wenn 
ich mal auf dem Retro-Trip sein sollte, würde ich mir eher Forth 
ansehen, als den N-ten BASIC Dialekt.

von S. R. (svenska)


Lesenswert?

Percy N. schrieb:
> Es bedarf wohl schon einer besonderen Form von Ignoranz, um das
> MS-BASCOM von 1981 als irgendwelchen Krempel zu bezeichnen,

Hier im Forum taucht das verlinkte BASCOM regelmäßig auf, im Gegensatz 
zu einem fast 40-jährigen Microsoft-Produkt. Daher darf man davon 
ausgehen, dass die Stimme des Viechs das auch versteht.

von Axel S. (a-za-z0-9)


Lesenswert?

Percy N. schrieb:
> Axel S. schrieb:

>> Ich rede von https://de.wikipedia.org/wiki/BASCOM [1], nicht von
>> irgendwelchem Microsoft-Krempel aus den 80ern.

> Es bedarf wohl schon einer besonderen Form von Ignoranz, um das
> MS-BASCOM von 1981 als irgendwelchen Krempel zu bezeichnen

Du meinst, MS-BASIC war eins der besseren Produkte dieser Firma? Hmm, da 
könntest du sogar Recht haben. Ich persönlich empfand BASIC auf dem PC 
immer schon als Anachronismus. Mir ist klar, daß William Henry Gates III 
als Student seine ersten Fußabdrücke in der Software-Geschichte in Form 
des Apple-BASIC hinterlassen hat. Dennoch würde ich annehmen, daß er das 
mit dem Beginn der PC-Ära als Jugendsünde verbucht hat ("ich war jung 
und brauchte das Geld"). Auf dem PC gab es richtige Programmiersprachen 
wie PASCAL, C oder FORTRAN. Was wollte man da mit dem archaischen BASIC?

> insbesondere dann, wenn zugleich diese ulkige Maker-IDE als
> Maßstab herangezogen wird.

Es würde mir nicht im Traum einfallen, die beiden zu vergleichen.

> Halte es doch einfach mit Wittgenstein und schweige ...

LOL. Das Kompliment gebe ich dir gern zurück. Wenn du in Nostalgie 
schwelgen willst, setz dich mit einem Glas Rotwein vor den Kamin.

von S. R. (svenska)


Lesenswert?

Axel S. schrieb:
> Was wollte man da mit dem archaischen BASIC?

Microsoft ist ein gutes Stück älter als der PC, und großes Produkt vor 
MS-DOS war eben BASIC - für diverse 8 Bit-Maschinen. Und wer BASIC auf 
den Kisten gelernt hatte, konnte damit auf dem PC direkt 
weiterarbeiten...

Und zumindest die ersten PCs waren jetzt nicht wirklich viel besser als 
die Heimcomputer vor ihnen.

von Percy N. (vox_bovi)


Lesenswert?

S. R. schrieb:
> Percy N. schrieb:
>> Es bedarf wohl schon einer besonderen Form von Ignoranz, um das
>> MS-BASCOM von 1981 als irgendwelchen Krempel zu bezeichnen,
>
> Hier im Forum taucht das verlinkte BASCOM regelmäßig auf, im Gegensatz
> zu einem fast 40-jährigen Microsoft-Produkt. Daher darf man davon
> ausgehen, dass die Stimme des Viechs das auch versteht.

Reduziert auf diesen einzigen Aspekt mag das zutreffen, nur wurde zuvor 
behauptet, Compiler für BASIC seien allgemein eine recht späte 
Erscheinung; speziell 8-bitter wurden in Bezug genommen und dann auch 
noch ein C-64 als Messlatte genommen. Dazu dann noch die Behauptung, 
BASIC-Compiler seien Cross-Compiler  ...

Nun, je nachdem, wie weit man sich unter den Tellerrand duckt, mag das 
ja alles zutreffen.

Dass die 8-bit BASIC-Compiler von MS nichts getaugt haben, war dann wohl 
der Grund für den durchschlagenden Markterfolg - zur Zeit des erwähnten 
C 64 immerhin schon Versionen 6.0 bis 7.1 PDS für DOS. Gut, das war dann 
schon 16 bit, aber merkbar das gleiche Produkt. Halt der Krempel, der MS 
massenhaft Geld für eigene Entwicklungen eingebracht hat.

Ob es überhaupt sinnvoll ist, BASIC zu kompilieren, ist eine andere 
Frage.  Insoweit war damals wohl wieder mal das goldene Näschen des 
Herrn Gates beteiligt. Es hat sich für ihn gelohnt.

von P.Loetmichel (Gast)


Lesenswert?

Profis programmieren ihre AVR mit Bascom!

von Jedzia D. (Firma: Rast und Ruh) (jedzia)


Lesenswert?

Ralph S. schrieb:
> Axel S. schrieb:
>> Das ist überhaupt nicht natürlich. BASIC Programme wurden immer schon
>> tokenisiert abgelegt (jeder BASIC Befehl braucht dann nur 1 Byte). Und
>> dann wurde das von einem Interpreter abgearbeitet.
>
> ... irgendwo habe ich gelesen, dass es sogar schon Basic-Compiler geben
> soll :-)

Bestimmt ein Flashback von "damals" zu Zeiten von Basic-Briefmarke und 
C-Control. Hach, waren das Zeiten (ohne Basic-Compiler, obwohl der sich 
so nannte **g**).
Heutzutage muss man nicht mehr diese Interpreter-Last mit sich(im Code) 
herum schleppen. Oder gar das Basic, was meine persönliche Meinung ist:P
Basic ist natürlich schön für Einsteiger.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.