I am currently looking through the intel x86 instruction manual (https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html), specifically volume 2, to get an understanding of the features of x86_64 (since I didn't program extensibly in that ISA assembly), and I was confused at the description of ADD and ADC respectively. It states that "15 iw" is "ADC AX, imm16" and "15 id" is "ADC EAX, imm32", and the same thing with "05 iw" and "05 id". My basic question is here: If the CPU encouters the instructions:
15 aa bb 15 cc ...
how does the CPU know you wanted to do "ADC EAX, imm32" with imm32=aabb15cc or "ADC AX, imm16" with imm16 = aabb and then another ADC instruction (with whatever comes after cc)?
I looked at the relevant passages of the manual at the beginning of book 2 and couldn't find it. I was expecting to be explained there and would like to know where I should look instead.
Comparing with How does the CPU distinguish 'CALL rel16' (E8 cw) and 'CALL rel32' (E8 cd)?, I would expect an attribute to be listed, but neither the manual nor https://c9x.me/x86/html/file_module_x86_id_26.html lists this. Is there a reason why it would be explicitly listed for CALL but not for ADC, if it is done that way, and where would the general rule be explained then, or is there a different mechanism (only saw this on the suggestions page before submission, but I don't think it answers the question, it actually makes it more confusing)
With regards, Hypatia of Sva.