• Stars
    star
    179
  • Rank 214,039 (Top 5 %)
  • Language
    C
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Yet another tiny tiny self-hosted C compiler, assembler, linker and standard C library.

AnQou C Compiler: aqcc

aqcc is yet another tiny self-hosted C compiler with an also tiny assembler, linker and standard C library.

To Build

Just make.

Usage

./aqcc [options] file...

options are:

  • -S: output an assembly file.
  • -c: output an object file.
  • -o: set the output file name.

To find the detail, try make selfself_test, which tells you all the things.

Note

  • aqcc is a product of Security Camp 2018. Special thanks to @rui314 san and @hikalium san.
  • Many features, functions and so on have not yet been implemented in aqcc that a C compiler generally has. Feel free to implement missing features and to send pull requests :)

AnQou C Compiler の使い方

aqcc をビルド

make としてください。生成物を削除したいときは、 make clean などとしてください。

aqcc の挙動をテスト

  • make test
    • 第一世代(gccなどによりコンパイルされたaqcc)をテスト
  • make self_test
    • 第二世代(第一世代によりコンパイルされたaqcc)をテスト
  • make selfself_test
    • 第三世代(第二世代によりコンパイルされたaqcc)をテスト
    • 第二世代と第三世代に違いがないことも確認されます。

一般のCファイルをコンパイル

./aqcc [options] file...

options には以下のようなものを使用できます。

  • -S アセンブリファイルを出力します。
  • -c オブジェクトファイルを出力します。
  • -o out 出力ファイル名を指定できます。

program.c を以下のようにしてコンパイルし、実行できます。 aqccprogram.c などは適宜読みかえてください。

$ ./aqcc program.c -o program
$ ./program

なお、#include <stdio.h> などとはできません。 program.c の中にこのような構文が含まれている場合は、取り除いて下さい。 その代わりに、自前で puts() 関数などの プロトタイプ宣言を program.c の冒頭に加えてください。 なお、カレントディレクトリ内のファイルはインクルードできますので、 #include "aqcc.h" などとインクルードして、 aqcc.h に記されているプロトタイプ宣言を流用できます。

また、標準ライブラリのうち提供されている機能はごく僅かです。 stdlib.c などを参照して下さい。aqccが自動でこれらをリンクすることはありません。明示的に指定してください。

謝辞

aqccはセキュリティキャンプ全国大会2018の成果物です。 講師の@rui314さんと@hikaliumさんに深く感謝申し上げます。

資料

More Repositories

1

aqaml

Yet another tiny tiny self-hosted OCaml compiler with an also tiny standard library.
OCaml
52
star
2

write-your-llvm-backend

手を動かせばできるLLVMバックエンド チュートリアル(WIP)
Ruby
45
star
3

constexpr-nn

constexpr is fun.
C++
13
star
4

damjiro

Yet another karaoke system w/ scoring
JavaScript
10
star
5

tinysixel

A tiny header-only C++ library for Sixel.
C
9
star
6

waq

Yet another ActivityPub server implementation written in OCaml
OCaml
8
star
7

simplinterp

A simple interpreter strongly inspired by https://youtu.be/JAtN0TGrNE4
C
8
star
8

aqtfhe3

@nindanaotoによる TFHEの解説に基づいたC++20によるTFHEライブラリ
C++
7
star
9

alqo

Yet another algo web app
Erlang
5
star
10

asynq_old

Yet another storage system running on client side with AWS S3 backend
Rust
5
star
11

aqtfhe2

A header-only library of TFHE in C++17
C++
5
star
12

mio

Intro Quiz App
JavaScript
4
star
13

daidoquer2

Discord用チャット読み上げ多機能ボット
C
4
star
14

daidoquer

F#
3
star
15

share-on-mastodon

JavaScript
3
star
16

alqo-fe

JavaScript
3
star
17

aquery

Yet another slow query analyzer for Go
Go
3
star
18

femtoyaml

Yet another tiny header-only YAML parser/serializer for C++17
C++
2
star
19

ndarray_hpp

All you need is type-safe ndarray in C++17.
C++
2
star
20

verified-tfhe

F*
2
star
21

miniyo

2
star
22

factorio-notify-bot2

Go
2
star
23

terminal-libretto

Go
2
star
24

yorkland-sapporo

Yorkland Sapporo is fun.
2
star
25

cables

C++
2
star
26

discordml

A Discord library written in OCaml, based on Eio
OCaml
2
star
27

daidoquer3

ddq3 is always with you
TypeScript
2
star
28

github-unwatcher

Unwatch watching repos of the organization
Go
2
star
29

faststat

Fast and small resource statistics tool for Linux
CMake
2
star
30

mp4_steganography

Rust
2
star
31

anqoubc

bc in anqou version.
C
2
star
32

yellow

The stongest twitter client
1
star
33

aq1

Yet another tiny tiny calculator.
C++
1
star
34

asynq

Go
1
star
35

dblp-fetcher

Go
1
star
36

aqTFHE

Yet another reimplementation of TFHE in C++17.
C++
1
star
37

zary-mastodon

Zary for Mastodon.
Ruby
1
star
38

aqboy

Yet another Game Boy emulator written in Go.
Go
1
star
39

hihiiro

Scala
1
star