refactor asm compiler