PIC18
Die von TK gegebene PIC18-Antwort führt zu den folgenden Anweisungen (binär):
overflow
PUSH
0000 0000 0000 0101
CALL overflow
1110 1100 0000 0000
0000 0000 0000 0000
CALL allein führt jedoch einen Stapelüberlauf durch:
CALL $
1110 1100 0000 0000
0000 0000 0000 0000
Kleinerer, schnellerer PIC18
RCALL (relativer Aufruf) ist jedoch noch kleiner (kein globaler Speicher, daher sind keine zusätzlichen 2 Bytes erforderlich):
RCALL $
1101 1000 0000 0000
Der kleinste auf dem PIC18 ist also ein einzelner Befehl, 16 Bit (zwei Bytes). Dies würde 2 Befehlszyklen pro Schleife dauern. Bei 4 Taktzyklen pro Befehlszyklus haben Sie 8 Taktzyklen. Der PIC18 verfügt über einen Stapel mit 31 Ebenen, sodass er nach der 32. Schleife den Stapel in 256 Taktzyklen überläuft. Bei 64 MHz würden Sie den Stapel in 4 Mikrosekunden und 2 Bytes überlaufen lassen .
PIC16F5x (noch kleiner und schneller)
Die PIC16F5x-Serie verwendet jedoch 12-Bit-Anweisungen:
CALL $
1001 0000 0000
Wieder zwei Befehlszyklen pro Schleife, 4 Takte pro Befehl, also 8 Taktzyklen pro Schleife.
Der PIC16F5x verfügt jedoch über einen zweistufigen Stapel, sodass er in der dritten Schleife in 24 Anweisungen überlaufen würde. Bei 20 MHz würde es in 1,2 Mikrosekunden und 1,5 Bytes überlaufen .
Intel 4004
Der Intel 4004 verfügt über eine 8-Bit-Aufruf-Subroutinenanweisung:
CALL $
0101 0000
Für Neugierige, die einem ASCII 'P' entsprechen. Mit einem 3-Level-Stack, der 24 Taktzyklen für insgesamt 32,4 Mikrosekunden und ein Byte benötigt . (Wenn Sie Ihren 4004 nicht übertakten - kommen Sie, Sie wissen, dass Sie wollen.)
Das ist so klein wie die befunge-Antwort, aber viel, viel schneller als der befunge-Code, der in aktuellen Interpreten ausgeführt wird.