flat assembler
Message board for the users of flat assembler.
  
       
      Index
      > Main > Disassembly question. | 
  
| Author | 
  | 
              
| 
                  
                   Teehee 22 Jan 2010, 20:38 
                  I was doing some tests in Ollydbg and i have a question.
 
                  The instruction ADD EAX, 0 is translated to 83 C0 00. And the instruction ADD AX, 0 is translated to 66 83 C0 00 My question is: why that '66'? what it mean? (how that things work?) and i was looking at http://ref.x86asm.net/coder32.html but I didn't find a reference to it. _________________ Sorry if bad english.  | 
              |||
                  
  | 
              
| 
                  
                   Teehee 22 Jan 2010, 21:07 
                  baldr wrote: Didn't you miss 66 in pf column? there is no 66 prefix in that collum There is in ADDPD instruction. Thanks baldr, i will take a look at Intel SDM prefix topic. _________________ Sorry if bad english.  | 
              |||
                  
  | 
              
| 
                  
                   baldr 22 Jan 2010, 21:23 
                  Teehee,
 
                  
                Follow the "63" link in one-byte opcodes index and voilà!  | 
              |||
                  
  | 
              
| 
                  
                   Teehee 22 Jan 2010, 21:25 
                  oh.. i see  
                  
                 | 
              |||
                  
  | 
              
| 
                  
                   MazeGen 23 Jan 2010, 20:53 
                  Teehee, I can't add another definition with 0x66 prefix to every primary opcode that depends on it, it would make the reference so huuuuge  
                  
                 | 
              |||
                  
  | 
              
| 
                  
                   Borsuc 24 Jan 2010, 20:45 
                  In 32-bit mode, 0x66 simply switches from 32-bit to 16-bit operands on the instructions. 
                  
                 | 
              |||
                  
  | 
              
| 
                  
                   revolution 24 Jan 2010, 23:45 
                  Borsuc wrote: In 32-bit mode, 0x66 simply switches from 32-bit to 16-bit operands on the instructions.  | 
              |||
                  
  | 
              
| 
                  
                   edfed 25 Jan 2010, 02:44 
                  in 16bit mode, 66 make it 32 bit
 
                  
                in 32bit mode, it is the oposite. something like a xor inside CPU internal mode switch.  | 
              |||
                  
  | 
              
| 
                  
                   Tyler 25 Jan 2010, 11:04 
                  revolution wrote: Not true for SSE instructions. What does it do to SSE instructions?  | 
              |||
                  
  | 
              
| 
                  
                   Fanael 25 Jan 2010, 11:44 
                  Tyler wrote: 
  | 
              |||
                  
  | 
              
| 
                  
                   hopcode 25 Jan 2010, 11:52 
                  Teehee wrote: ...tests in Ollydbg... using use32/use16 to test it in your test app, for example Code: use16 add eax,0 add ax,0 use32 add eax,0 add ax,0 ;... I have drawn a simple skema to opcode functionalities orienting here (for a better organizing purpouse) http://board.flatassembler.net/topic.php?p=108824#108824 Cheers, hopcode  | 
              |||
                  
  | 
              
| 
                  
                   Borsuc 25 Jan 2010, 20:07 
                  revolution wrote: 
 _________________ Previously known as The_Grey_Beast  | 
              |||
                  
  | 
              
| 
                  
                   asmmsa 09 Feb 2010, 20:51 
                  0x66 is a prefix.
 
                  
                it normally swap default operand size. when first opcode byte is 0x0F meaning of 0x66 is changed.  | 
              |||
                  
  | 
              
| 
                  
                   baldr 10 Feb 2010, 00:45 
                  asmmsa,
 
                  
                PS suffix changed to PD and likewise? How this is different from 32/16 (for 0Fs, literally)?  | 
              |||
                  
  | 
              
| 
                  
                   revolution 10 Feb 2010, 01:44 
                  baldr wrote: PS suffix changed to PD and likewise? How this is different from 32/16 (for 0Fs, literally)? ROUNDPS XMM and ROUNDPD XMM: Both have 0x66 byte. PSHUFB MM and PSHUFB XMM: Only XMM version has 0x66 byte. This is why Intel explicitly state that 0x66 is not a prefix byte when used with SIMD encoding.  | 
              |||
                  
  | 
              
< Last Thread | Next Thread >  | 
    
Forum Rules: 
  | 
    
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.