見出し画像

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してみたいと思います。


いいなと思ったら応援しよう!