Skip to main content

The ppci (pure python compiler infrastructure) project is a compiler written entirely in python.

The project contains the following:

  • A Compiler, an assembler, a linker and a build system

  • Language front-ends: Brainfuck, c3

  • Backends: 6500, arm, avr, msp430, risc-v, x86_64

Api

Api example to compile c3 code:

>>> import io
>>> from ppci.api import c3c, link
>>> source_file = io.StringIO("""
... module main;
... function void print(string txt) {
... }
... function void main() {
...  print("Hello world");
... }""")
>>> obj = c3c([source_file], [], 'arm')
>>> obj = link([obj])

Example how to assemble some assembly code:

>>> import io
>>> from ppci.api import asm
>>> source_file = io.StringIO("""section code
... pop rbx
... push r10
... mov rdi, 42""")
>>> obj = asm(source_file, 'x86_64')
>>> obj.get_section('code').data
bytearray(b'[ARH\xbf*\x00\x00\x00\x00\x00\x00\x00')

Example of the low level api usage:

>>> from ppci.arch.x86_64 import instructions, registers
>>> i = instructions.Pop(registers.rbx)
>>> i.encode()
b'['

Documentation

Documentation can be found here:

dronestate appveyor codecov docstate

Metadata

Release files for ppci 0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ppci 0.5
File Size Uploaded
ppci-0.5.tar.gz 219.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ppci 0.5
File Interpreter ABI Platform
ppci-0.5-py3-none-any.whl Python 3 none any Details

Total release size: 457.0 kB

Release files / ppci-0.5.tar.gz

Download URL ppci-0.5.tar.gz
Size 219.8 kB
Tags Source
SHA-256 checksum
How to use checksums
520b5808a389b55d0da3ee72c9cd54fca3ac30d2d1c1540aa18ff384297fa201
BLAKE2b-256 checksum
How to use checksums
d23b01c1347764213efac407772c0f79ecac62416272846f3f25def63dbb201f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / ppci-0.5-py3-none-any.whl

Download URL ppci-0.5-py3-none-any.whl
Size 237.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6978b90b7529dfec888049f71268dad7f17bd37c2c3356f16eefd3612d118d72
BLAKE2b-256 checksum
How to use checksums
de9e10fb778a9fbf03a059b8e5fde560db2b8f4065a010ed82ee7da86a2f2299
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

3 release files

This release

0.5 This release

2 release files

0.4.0

2 release files

0.3.0

1 release file

0.2.0

0.1.0

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page