• Check whether constants in an ARM program are valid • Resolve the addresses of branch labels • Use bitwise operations to build 32-bit encodings of instructions • Build an assembler for ARM