CC500: a tiny self-hosting C compiler