[archimedes] Re: Fragen zum C-Programm Uhrzeit

  • From: Carlos Michael Santillan <ml-archimedes@xxxxxxxxxx>
  • To: archimedes@xxxxxxxxxxxxx
  • Date: Sat, 04 Mar 2017 18:01:30 +0100

On 4 Mar 2017  Alexander Ausserstorfer <bavariasound@xxxxxxxxxxxxxxx>
wrote:

Du musst halt das, was eigentlich ein Compiler macht, selbst im Kopf
durchführen. Hat man ja früher auch getan. Irgendwann ist man dann aber
hergegangen und hat statt dessen eine "Sprache" erfunden, die für
Menschen besser lesbar sein soll: Assembler. Der Compiler nudelt das
dann halt wieder in Maschinensprache um. Das heißt aber noch lange
nicht, dass man es deshalb nicht gleich selbst in Maschinensprache
machen kann. Ich hatte mal einen Computer da, der ließ sich gar nicht
anders programmieren als direkt in Maschinensprache.

Irgend jemand muss das auch machen. Weil irgend jemand ja die
Chip-Befehlsätze designen muss.

Viel Spass beim Programmieren und dann bitte auch für die zukünftigen
ARM Generationen vorbereiten. Gutes Beispiel ist Impression das in
Assembler geschrieben wurde und seit Jahren auf 32 Bit portiert wird.
Hätte man es in C geschrieben hätte man es nur durch den
richtigen Compiler jagen müssen. So wird es noch ein paar Jahr dauern
bis es dann auf den Risc PC, Titanium usw. ohne Emulator läuft.

Ja, 8 Bit CPUs waren sehr übersichtlich beim Programmieren in
Maschinensprache und man hat da erstaunliches mit 64 kByte RAM
vollbracht. Aber wenn ich mir die Bildqualität der Schrift auf den
Bildschirm anschaue (8 x 8 Pixel?), den Sound anhöre usw. usw. Dann
benutzer ich lieber meinen Raspberry Pi mit 512 MByte (die Hälfte ist
RAM Disc), habe Messenger Pro, NetSurf, StrongED usw. gerade offen und
das geht nicht mit einen 6510er. Das läuft noch unter ARM mit noch
übersichtlichen Assemblerbefehlen. Bei Intel, und anderen
"Hochleistungs-CPU" sehe ich nicht das man das optimal in Assembler oder
gar Maschinencode schreiben kann als Mensch. Sicher gibt es Menschen die
das können, aber um die zu zählen brauch es nicht viele Hände.


10 FOR a = 49192 TO ...
20 READ d
30 POKE 49192 + a

Das sollte wohl nur a stehen. :-)

30 POKE 49192 + a, d

sollte da stehen.

Also ab der Adresse 98.384 wird der Speicher beschrieben. Bei einen
8-Biter geht das schief. :-) Ist aber vielleicht ein kleines Bespiel um
den Speicher falsch zu beschreiben. Ergibt das ein Absturz beim 64 oder
wird das dann in die Adresse 32.848 geschrieben.


In BASIC kann ich das Programm mittels

RUN

Schön und dann wird jede Zeile bei Ablaufen in Maschinensprache
übersetzt. Auch in Schleifen wird das dann immer und immer wieder
übersetzt. Bei Compilersprachen ist die Übersetzung schon abgeschlossen
und damit prinzipel schneller. Als Alternative gibt es Skriptsprachen
wie Perl, Python oder Lua. Programmtext speichern und Programm starten.
Dann wird der Code zuerst übersetzt und ausgeführt. Aber Du willst
umbedingt Bytes in den Speicher schreiben und ausführen. Dein Problem.


Dafür müssen aber entsprechende Schnittstellen vorhanden sein. Und die
kenne ich für BBC BASIC eben nicht.

Die Schnittstellen bei RISC OS heißen SWIs. C Module in BASIC zu
benutzen ist natürlich eine andere Geschichte, wenn das überhaupt geht.
Bei RModules sind es dann wieder SWIs. Lua Skripte können wohl in C
eingebunden werden und umgekehrt kann man in C Programmen Lua Skripte
eingebunden werden. Ob das auch für RiscLua gilt weiß ich aber nicht.


Worum ging es eignetlich? RModule schreiben? Das muss doch irgendwo
dokumentiert sein.



Carlos Michael Santillán

--
http://www.arcsite.de/
http://www.risc-os.de/

Ein Staat, in dem alle verdächtig sind, ist selbst verdächtig
A state that suspects everyone is itself suspicious

Other related posts: