Быстрый Google для 8086 instructions timings size
обнаружил http://8086.tk/, который, кажется, имеет все время и размеры для 8086 (и более) наборов инструкций.
Без сомнения, вы можете найти официальный документ Intel в Интернете с аналогичной информацией.
По вашему конкретному вопросу:
xor ax,ax
inc ax
занимает 3 + 3 = 6 тактов и 2 + 1 = 3 байта, тогда как
mov ax,1
занимает 4 такта и 3 байта.
Так что последнее лучше в этом случае.
Но вам нужно поговорить с вашим учебным заведением об этом парне. 10% за такую простую вещь не верят.
Вы должны спросить, что следует делать в случае, когда у вас есть две возможности: одна быстрее, а другая короче.
Затем, когда они признали, что существуют разные способы кодирования, в зависимости от того, чего вы пытаетесь достичь, скажите им, что вы пытаетесь достичь читабельности и удобства обслуживания и серьезно не можете сделать скачок. о потерянном цикле или байте здесь или там * a .
Оптимизация - это то, что вы обычно делаете, если и когда у вас есть проблемы с производительностью, после того, как кусок кода находится в почти завершенном состоянии - это почти всегда напрасная трата усилий, когда код все еще подвержен незначительной вероятности изменения .
Что бы это ни стоило, sub ax,ax
, кажется, находится на одном уровне с xor ax,ax
в плане тактов и байтов, так что, возможно, вы могли бы добавить это в микс в следующий раз, чтобы заставить его еще немного поработать.
* a) Нет, на самом деле нет, но время от времени бывает интересно выпустить: -)