Различие в опкодах add, or и т. п.
Вопрос, наверное, бесполезный, но просто интересно стало: чем отличаются опкоды 82h и 83h? Например (82/83),c0,c0 – это add eax, 0, и нет разницы, какой вариант используется.
add eax, 0 - опкод 83C0 00
or eax, 0 - опкод 83С8 00
а действии которое они делают разницы нет. в принципе без разницы что использовать, всё равно на практике тебе никогда не пригодится прибавлять 0 к EAX или производить бесполезное логическое сложение с этим регистром
Цитата: ahilles
разница в опкодах есть:
add eax, 0 - опкод 83C0 00
or eax, 0 - опкод 83С8 00
Я спрашивал не про "add eax, 0" и "or eax, 0"?, а про то, что первый байт всех этих add, or, adc и т. п. в случае "xxx reg, imm" может быть как 82h, так и 83h.
Например опкод 82C0 00 – это тоже add eax, 0.
Есть ли какие-нибудь различия между 82h и 83h (документировано-недокументировано или ещё что-то)?
в принципе какая разница, всё равно это ничего не делающая инструкция..........
82C0 05 - это add eax, 5
83C0 05 - это тоже add eax, 5
82C8 05 - это or eax, 5
83C8 05 - это тоже or eax, 5
Для всех таких инструкций первый байт может быть и 82h, и 83h. И мне хотелось бы знать: оба ли опкода документированы и отличаются ли чем-нибудь эти инструкции (кроме первого байта).
В книге ассемблер-справочник в инструкциях add, or опкода 82 нет...
в официальных мануалах от Intel и AMD опкода 82 тоже нет!
"immediate to register 1000 00sw : 11 000 reg : immediate data" после заголовочка "ADD – Add" раздела "GENERAL-PURPOSE INSTRUCTION FORMATS AND ENCODINGS" в томике "Intel® IA-32 Architecture Software Developer’s Manual Volume 2B"?
Если сие продолжит оставаться кому то интересным, то вы знаете что делать, по крайней мере должны знать.