Skip to content

About

Toy interpreters for learning about the RPython Translation Toolchain

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

RPython Tutorial

Beginner References

Quick Start

Running a brainf*ck interpreter in CPython:

$ python tutorial_bf.py tutorial_99.b

Creating a C interpreter for brainf*ck using RPython (requires that pypy source is installed):

$ PYTHONPATH='/Users/dmlockhart/vc/hg-opensource/pypy' python \
  ~/vc/hg-opensource/pypy/rpython/translator/goal/translate.py \
  tutorial_bf.py

Running a brainf*ck interpreter translated to C via RPython:

$ ./tutorial_bf-c tutorial_99.b

Creating a C interpreter for brainf*ck with tracing-JIT compiler using RPython (requires that pypy source is installed):

$ PYTHONPATH='/Users/dmlockhart/vc/hg-opensource/pypy' python \
  ~/vc/hg-opensource/pypy/rpython/translator/goal/translate.py \
  --opt=jit tutorial_bf_jit.py

Running:

$ ./tutorial_bf_jit-c tutorial_99.b

A more optimized version:

$ PYTHONPATH='/Users/dmlockhart/vc/hg-opensource/pypy' python \
  ~/vc/hg-opensource/pypy/rpython/translator/goal/translate.py \
  --opt=jit tutorial_bf_jit_opt.py

ISA Sim

CPython:

$ PYTHONPATH='/Users/dmlockhart/vc/hg-opensource/pypy' python interp_asm.py asm_04.s

RPython:

$ PYTHONPATH='/Users/dmlockhart/vc/hg-opensource/pypy' python \
  ~/vc/hg-opensource/pypy/rpython/translator/goal/translate.py
  interp_asm.py
$ ./interp_asm-c asm_04.s

Advanced References

Untranslatable

Fails:
int( some_str, base=16 )
Translates, but fails during execution:
int( some_str, 16 )
Works:
rpython.rlib.rarithmetic.string_to_int( some_str, base=16 )
Fails:
line.split()
Works:
line.split(' ', 3)

About

Toy interpreters for learning about the RPython Translation Toolchain

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages