I'm contacting you in reference to the "Intel® 64 and IA-32 Architectures Software Developer’s Manual" document volume 2B (#253667), appendix B.
I'm currently coding a disassembler, and while studying the instruction set opcode encoding I've noticed a resemblance of bits encoding between different, yet similar instructions.
For example, I found that in some of the 0x0? single byte instructions, when the sixth byte equals 1 and the fifth 0, a direct reference to AL/AX/EAX is being made.
Another repetitive pattern I noticed is that in the shift/rotate instructions: the seventh bit determines the usage of the CL register, I also noticed a relevance of the fourth bit - it determines, if equals 1, a pre-defined factor - cl register, 1 bit rotation, or, if equals 0, an imm8 data reference. Some of these, and more, also repeat in other instructions as well.
I wondered if there is a manual/resource/index that defines\lists these encodings that you could refer me to, as I'm interested in the listing for my project and general understanding. I also wish, if possible, a clarification for the reserved values in some of the bits in some ModRM bytes(usually reg1 - RCL for example, reserves 010b)