Rustで「低レイヤを知りたい人のためのCコンパイラ作成入門」を少しやる

作成日: 2022-10-25
昔amdのocamlコンパイラは書いたけど、思い出しのために。

Dockerでx64-linuxを実行する

Dockerfile
FROM alpine:3.8
RUN apk add --no-cache gcc libc-dev
./run
docker run -i --rm $(docker build -q .) sh -c "cat > ./a.s; cc ./a.s -o ./a.out; ./a.out; echo \$?"
./test.sh
#!/bin/bash
assert() {
  expected="$1"
  input="$2"

  actual=$(cargo run --quiet <(echo $input) | ./run)

  if [ "$actual" = "$expected" ]; then
    echo "$input => $actual"
  else
    echo "$input => $expected expected, but got $actual"
    exit 1
  fi
}

assert 0 0
assert 42 42

echo OK
ちびちび進めれられて面白い。