compiler basics