PIC18
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 цикла инструкций на цикл. При 4 тактах на цикл инструкций вы получаете 8 тактов. PIC18 имеет 31 уровень стека, поэтому после 32-го цикла он переполняет стек за 256 тактов. На 64 МГц вы переполните стек за 4 микросекунды и 2 байта .
PIC16F5x (еще меньше и быстрее)
Тем не менее, серия PIC16F5x использует 12-битные инструкции:
CALL $
1001 0000 0000
Опять же, два цикла команд на цикл, 4 такта на инструкцию, поэтому 8 тактов на цикл.
Однако PIC16F5x имеет двухуровневый стек, поэтому в третьем цикле он будет переполнен в 24 инструкциях. При 20 МГц он будет переполнен за 1,2 микросекунды и 1,5 байта .
Intel 4004
Intel 4004 имеет 8 разрядную команду вызова подпрограммы:
CALL $
0101 0000
Для любопытных, которые соответствуют ascii 'P'. С 3-уровневым стеком, который занимает 24 такта в общей сложности 32,4 микросекунды и один байт . (Если вы не разгоните свой 4004 - давай, ты знаешь, что хочешь.)
Это так же мало, как ответ befunge, но намного, намного быстрее, чем код befunge, работающий в современных интерпретаторах.