Cypress M8C

Grundlagen

Es handelt sich um einen 8-bit-Prozessorkern, den es offenbar nur bei Cypress in ihren PSoC-Schaltkreisen gibt.
Das interessante an diesen Schaltkreisen ist natürlich nicht die mal wieder andere Prozessorarchitektur, sondern die konfigurierbaren Analog- und Digital-Schaltungsblöcke.

Der Prozessor bietet keine berauschende Performance wie die ATmegas; er ist eher vergleichbar mit den schnelleren PICs oder 8051ern. Seine Stärke liegt ausschließlich in seiner Peripherie. Dort befindet sich auch ein sehr schneller Multiplizierer+Addierer, wie man ihn zur Realisierung digitaler Filter braucht.

Anschlüsse und Peripherie

Noch zu schreiben!

Register und Speicher

Der Prozessor in klarer Harvard-Architektur besitzt:

Eigentliche Register gibt es nur fünf:

Diese fünf Register haben keine (Alias-)Adresse und müssen über spezielle Befehle angesprochen werden. So lässt sich SP nur mittels »SWAP A,SP« setzen.
Der Zugriff auf Spezialregister erfolgt ebenfalls über gesonderte Befehle; allerdings werden diese im Operandenteil mit dem Schlüsselwort »reg« generiert. (Also nicht mit »IN« und »OUT« gängiger Prozessoren.)
Hingegen zum Zugriff auf den Programmspeicher gibt es andere Mnemonics mit kuriosem Namen, nämlich »INDEX« und »ROMX«.
Beim »System Supervisor Call« (SCC, vergleichbar mit einem Softwareinterrupt beim 80x86) braucht man nur zu wissen, wie die 8 RAM-Speicherplätze am Ende des RAM zu füttern sind, damit dieser Befehl das tut, was man beabsichtigt. Es erscheint klar, dass sich »hinter« dem Flash-Speicher noch ein fest programmierter ROM befindet, der den Kode für den SCC-Aufruf enthält. Der, und das Supervisor-Bit im Flag-Register interessieren nur denjenigen (Cypress-Mitarbeiter), der Zugang zu jenem ROM hat.

Um bei der überwältigenden Menge der Spezialregister (hierüber werden auch der Analog- und Digitalteil konfiguriert wie bei einem FPGA) nicht gleich die Nerven zu verlieren, gibt es von Cypress ein Werkzeug namens »PSoC Designer«, welches den konfigurierenden Startup-Kode ausspuckt. (Ungetestet).

Befehlssatz und Pseudobefehle

Noch zu schreiben!

Programmiergerät

Noch zu schreiben!