На странице в Документы Intel «Введение в сборку x64» вы можете увидеть этот код
Label: ; this is a label in assembly
INX EAX ; increment eax
LOOP Label ; decrement ECX, loop if not 0
Почему говорят INX
, а не INC
?
В наборе команд x86 нет инструкции INX. Здесь предполагается использовать инструкцию INC. Так как клавиша X находится рядом с клавишей C на большинстве клавиатур, это простая ошибка.
Не тратя много времени на его чтение, мне пришлось бы подвергнуть сомнению ценность любого вводного документа сортировки, в котором в примере используется инструкция LOOP. Редко есть веская причина для написания инструкции LOOP в коде сегодня или в любое время за последние 25 лет.
Примеры с использованием loop
и xchg
- одна из немногих плохих частей этого руководства. Когда я недавно просмотрел его (на самом деле, версия HTML, а не PDF), он выглядел достаточно хорошо, чтобы добавить его в вики-теги x86 с оговоркой про сосание loop
. Опечатку не заметил: P
я был на 97% уверен, что это опечатка, но знание более чем 2000 инструкций не вселяло во мне особой уверенности.
Может быть опечатка ?!