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 version devstate pyimpls pyversions license downloads

Metadata

Release files for ppci 0.4.0

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.4.0
File Size Uploaded
ppci-0.4.0.tar.gz 196.6 kB Details

Built distribution (wheel)

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

Total release size: 406.6 kB

Release files / ppci-0.4.0.tar.gz

Download URL ppci-0.4.0.tar.gz
Size 196.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c55cd8f3ecc2bb535b602d500e6923d5b4602e3d5f731ba374afb9b2880bd4f4
BLAKE2b-256 checksum
How to use checksums
67ad7069d90ef8bb22fbe61fce849b57d76f022c99285afd42ec9758c254a745
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL ppci-0.4.0-py3-none-any.whl
Size 210.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bcc7fbd6fd9a7a989dc69b81c2718a876ce0423c952fa2b63e472bd67cef46ab
BLAKE2b-256 checksum
How to use checksums
10a4d17d8c45c3515f834e811446065a97194fc884167000e3bf8a7a2ceff1f4
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

0.5

2 release files

This release

0.4.0 This release

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