PIC18
TK によって与えられた PIC18 の回答は、次の命令 (バイナリ) になります。
overflow
PUSH
0000 0000 0000 0101
CALL overflow
1110 1100 0000 0000
0000 0000 0000 0000
ただし、CALL だけではスタック オーバーフローが発生します。
CALL $
1110 1100 0000 0000
0000 0000 0000 0000
より小さく、より高速な PIC18
ただし、RCALL (相対呼び出し) はさらに小さくなります (グローバル メモリではないため、余分な 2 バイトは必要ありません)。
RCALL $
1101 1000 0000 0000
したがって、PIC18 で最小の命令は 16 ビット (2 バイト) の 1 つの命令です。これには、ループごとに 2 命令サイクルが必要です。命令サイクルあたり 4 クロック サイクルでは、8 クロック サイクルになります。PIC18 には 31 レベルのスタックがあるため、32 番目のループの後、256 クロック サイクルでスタックがオーバーフローします。64MHz では、4 マイクロ秒と 2 バイトでスタックがオーバーフローします。
PIC16F5x (さらに小型で高速)
ただし、PIC16F5x シリーズは 12 ビット命令を使用します。
CALL $
1001 0000 0000
繰り返しますが、ループごとに 2 命令サイクル、命令ごとに 4 クロックなので、ループごとに 8 クロック サイクルです。
ただし、PIC16F5x には 2 レベルのスタックがあるため、3 番目のループで 24 命令でオーバーフローします。20MHz では、1.2 マイクロ秒と 1.5 バイトでオーバーフローします。
インテル 4004
Intel 4004には、8 ビットの呼び出しサブルーチン命令があります。
CALL $
0101 0000
アスキー「P」に対応する好奇心のために。合計32.4 マイクロ秒と 1 バイトに 24 クロック サイクルかかる 3 レベル スタックを使用します。(4004 をオーバークロックしない限り、やりたいことはわかっています。)
これは befunge の回答と同じくらい小さいですが、現在のインタープリターで実行されている befunge コードよりもはるかに高速です。