Я знаю, что вы указали код C, но вы можете рассмотреть эмуляцию JavaScript более простого языка. В частности, пожалуйста, рассмотрите FORTH.
FORTH работает на очень простой виртуальной машине. В FORTH есть два стека, стек данных и стек потока управления (называемый стеком возврата); плюс немного глобальной памяти. Первоначально FORTH был 16-битным языком, но сейчас существует множество 32-битных реализаций FORTH.
Поскольку FORTH-код вроде «близок к машине», легко понять, как все это работает, когда вы видите, как он работает. Я выучил FORTH до того, как выучил C, и обнаружил, что это ценный опыт обучения.
В JavaScript уже есть несколько интерпретаторов FORTH. Виртуальная машина FORTH настолько проста, что ее реализация не займет много времени!
Вы могли бы даже тогда получить переводчик C-to-FORTH и позволить ученикам смотреть, как виртуальная машина FORTH интерпретирует скомпилированный код C.
Я считаю этот ответ долгожданным для вас, поэтому я перестану писать здесь. Если вы на самом деле заинтересованы в идее, прокомментируйте ниже и попросите более подробную информацию, и я буду рад поделиться ими. Прошло много времени с тех пор, как я написал любой код FORTH, но я до сих пор помню его с любовью, и я был бы рад рассказать больше о FORTH.
РЕДАКТИРОВАТЬ: Несмотря на то, что этот ответ был отрицательно оценен, я собираюсь оставить его здесь. Имитация для образовательных целей ИМХО более ценна, если симуляция проста и понятна. Простая виртуальная машина на основе стека для FORTH очень проста, но вы можете скомпилировать код C для запуска на ней. (В 80-х был даже изготовлен чип процессора, в котором инструкции FORTH были в качестве собственного машинного кода.) И, как я уже сказал, я лично изучал FORTH, когда я был новичком, и это помогло мне понять язык ассемблера и C.
На вопрос нет принятого ответа, сейчас прошло более двух лет с момента его постановки. Возможно, Лоик Февриер не нашел подходящего интерпретатора JavaScript. Как я уже сказал, уже существует несколько интерпретаторов JavaScript для виртуальной машины FORTH. Поэтому этот ответ является практическим.