Condition codes (CCs) are special architected bits that characterize instruction results. Reducing the overhead of emulating condition codes is a critical performance issue in binary translation. In this paper, we propose a two-phase optimization approach for condition codes, which has been implemented in Crossbit—a machine adaptable dynamic binary translator (DBT). First, redundant flag computing code in a basic block is reduced based on the information collected by Crossbit when the block is identified. Then, lazy evaluation technique is used inter basic blocks, which make the condition codes emulation more efficient. Experimental results show that this method works much better than the straightforward emulation method—it eliminate the code size more than 20% and have a performance gain nearly 40% in Crossbit. The data proves that the approach is effective to remove the redundant code and to increase the performance of the translated code.