PIC18
La respuesta PIC18 dada por TK da como resultado las siguientes instrucciones (binarias):
overflow
PUSH
0000 0000 0000 0101
CALL overflow
1110 1100 0000 0000
0000 0000 0000 0000
Sin embargo, CALL solo realizará un desbordamiento de pila:
CALL $
1110 1100 0000 0000
0000 0000 0000 0000
PIC18 más pequeño y más rápido
Pero RCALL (llamada relativa) es aún más pequeña (no es memoria global, por lo que no es necesario los 2 bytes adicionales):
RCALL $
1101 1000 0000 0000
Entonces, el más pequeño en el PIC18 es una sola instrucción, 16 bits (dos bytes). Esto tomaría 2 ciclos de instrucción por ciclo. Con 4 ciclos de reloj por ciclo de instrucción, tiene 8 ciclos de reloj. El PIC18 tiene una pila de 31 niveles, por lo que después del ciclo 32 desbordará la pila, en 256 ciclos de reloj. A 64MHz, desbordaría la pila en 4 microsegundos y 2 bytes .
PIC16F5x (incluso más pequeño y más rápido)
Sin embargo, la serie PIC16F5x utiliza instrucciones de 12 bits:
CALL $
1001 0000 0000
Nuevamente, dos ciclos de instrucción por ciclo, 4 relojes por instrucción, entonces 8 ciclos de reloj por ciclo.
Sin embargo, el PIC16F5x tiene una pila de dos niveles, por lo que en el tercer bucle se desbordaría, en 24 instrucciones. A 20MHz, se desbordaría en 1.2 microsegundos y 1.5 bytes .
Intel 4004
El Intel 4004 tiene una instrucción de subrutina de llamada de 8 bits:
CALL $
0101 0000
Para los curiosos que corresponde a una ascii 'P'. Con una pila de 3 niveles que toma 24 ciclos de reloj para un total de 32.4 microsegundos y un byte . (A menos que overclockees tu 4004, vamos, sabes que quieres).
Que es tan pequeño como la respuesta inicial, pero mucho, mucho más rápido que el código inicial que se ejecuta en los intérpretes actuales.