二进制翻译系统往往采用解释和翻译两种工作模式。解释模式下,二进制翻译系统依次从二进制文件中读入指令,对之进行译码,然后依据该指令操作码,通过软件手段来模拟执行该指令;翻译模式则是将二进制代码的全部或部分进行翻译,生成本地可执行代码并缓存起来,在执行过程中,直接执行缓存的代码。为了提升性能,翻译阶段还伴随着代码优化,以产生更高质量的本地可执行代码。从效率角度考虑,解释模式只适用于执行频度非常低的代码片段,而对于高执行频度高的代码片段来讲,翻译模式要远胜于解释模式。
按照翻译的时机,二进制翻译可分为静态翻译和动态翻译。静态翻译是在程序运行前,对二进制代码进行翻译,然后再运行。动态翻译则是在程序运行过程中,边进行翻译(或解释)边运行程序。静态翻译难以处理二进制代码中的间接跳转、间接调用,以及动态库,其适用范围严重受限,因而广为采用的是动态二进制翻译。为了降低动态翻译的开销,也有人利用静态翻译对二进制程序进行预处理,即在程序运行前,将程序中可翻译部分进行翻译和优化,并将所产生的代码缓存起来,供动态翻译使用,这种方式又被称为动静结合的二进制翻译。