Portable C Compiler その2
makeしてみる
ダウンロードしたファイルの山の中から発掘した、おそらく最直近のPCCのソースコードを置いておきます。2023/12/10のCVSスナップショットで、Internet Archiveではなく、本家から以前にダウンロードしたものだったと思います。現在本家サイトは停止しているため、ダウンロードできなくなっています。
まずはセルフコンパイラーをmakeしてみます。私はWSLにUbuntuをインストールした環境で実行しています。
ソースコードを展開したディレクトリで以下のコマンドを実行します。
$ ./configure
$ make
$ sudo make install
makeされたPCCは、/usr/localにインストールされます。
$ ls /usr/local/bin
p++ pcc pcpp
$ ls /usr/local/libexec
ccom cpp cxxcom
/usr/local/binのpccがCのコンパイラドライバーで、p++はC++のコンパイラドライバです。pcppはCプリプロセッサ-のドラバー?のようです。
Cコンパイラ本体は、/usr/local/libexexにあるccomです。cppはCプリプロセッサ-です。
簡単なCのコードをコンパイルしてみます。整数の引数a, bを足し算して返すだけの関数です。
$ cat add.c
int add(a, b) int a; int b;
{
return a + b;
}
簡単なCのコードをコンパイルしてみます。整数の引数a, bを足し算して返すだけの関数です。
pccに-Sオプションをつけてコンパイルし、アセンブリコードを出して確認してみます。
$ pcc -S add.c
$ cat add.s
.file "add.c"
.section .text
.align 4
.globl add
.type add,@function
add:
pushq %rbp
movq %rsp,%rbp
subq $16,%rsp
.L275:
movl %edi,-4(%rbp)
movl %esi,-8(%rbp)
.L279:
movl -4(%rbp),%eax
addl -8(%rbp),%eax
movl %eax,-12(%rbp)
jmp .L277
.L277:
movl -12(%rbp),%eax
leave
ret
.size add,.-add
.ident "PCC: Portable C Compiler 1.2.0.DEVEL 20231021 for x86_64-pc-linux-gnu"
.end
下から2行目に書かれているように、x86_64のコードができています。
次回は、MC68000用にmakeしてみたいと思います。