В некоторых эмуляторах вместо непосредственного выполнения арифметических операций сложения и вычитания, с выставлением флагов-признаков переноса и прочего (бывает ещё полуперенос, признак необходимости двоично-десятичной коррекции), используются заранее один раз вычисленные таблицы результатов этих операций с признаками переноса. Можно пойти подобным путём.
Если показать на упрощенном примере, то вместо того чтобы выполнять сложение с учетом возможного выхода за сетку и расстановкой необходимых признаков, надо посчитать следующее:
offset = value1 + value2;
и выбрать по этому смещению результат:
result = таблица[offset];
Если процессор 8-разрядный, то таблицы получаются небольшими, в пределах килобайта на каждую операцию.