compilation techniques