Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

BrowserBox/xcc

Repository files navigation

XCC

Action Status Open in Gitpod

C compiler running on Linux or MacOS.

  • Supporting architecture: x86-64, aarch64 (arm64), riscv64, wasm
  • Binary format: ELF64

Requirements

  • Linux (or MacOS)
  • C compiler (gcc or clang)
  • make

Build

$ make

Generated files:

  • xcc: Compiler entry
  • cpp: Preprocessor
  • cc1: C compiler
  • as: Assembler
  • ld: Linker

Usage

$ ./xcc -o hello examples/hello.c
$ ./hello
Hello, world!

Command line options

  • -o <filename>: Set output filename (default: a.out)
  • -I <path>: Add include path
  • -D <label>(=value): Define macro
  • -S: Output assembly code
  • -E: Preprocess only
  • -c: Output object file
  • -nodefaultlibs: Ignore libc
  • -nostdlib: Ignore libc and crt0

TODO

  • Optimization
  • Archiver

Reference


WebAssembly

Compile C to WebAssembly/WASI binary.

Online demo

Requirements

  • node.js, npm
  • llvm-ar

Set up

$ npm ci

Build

$ make wcc

Generated files:

  • wcc: C compiler (including preprocessor, and output .wasm directly)

Usage

Compile:

$ ./wcc -o hello.wasm examples/hello.c

Command line options:

  • -o <filename>: Set output filename (default: a.wasm)
  • -I <path>: Add include path
  • -D <label>(=value): Define macro
  • -E: Preprocess only
  • -c: Output object file
  • --entry-point=func_name: Specify entry point (default: _start)
  • -e func_name,...: Export function names (comma separated)
  • --stack-size=<size>: Set stack size (default: 8192)
  • -nodefaultlibs: Ignore libc
  • -nostdlib: Ignore libc and crt0
  • --verbose: Output debug information

Run

$ ./tool/runwasi hello.wasm
Hello, world!

You can also use WASM/WASI runtime (Wasmtime, Wasmer, etc.), too.

Missing features

  • goto statement

About

Standalone C compiler/assembler/linker/libc for x86-64/aarch64/riscv64/wasm

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 90.2%
  • TypeScript 5.1%
  • Shell 2.1%
  • Makefile 1.1%
  • JavaScript 0.8%
  • HTML 0.3%
  • Other 0.4%

AltStyle によって変換されたページ (->オリジナル) /