What is 'mov (%r11,%rax,1),%dl'?

Jeffrey Walton noloader@gmail.com
Sat Jan 2 15:01:00 GMT 2016


I'm examining a crash on Cygwin-x64 (2.3.1) with GCC 5.2 (5.2.0). The
crash is on a move instruction I am not familiar with. The instruction
is ' mov (%r11,%rax,1),%dl'.

Can anyone explain the instruction to me?

My apologies for the request, and thanks in advance.

=========

(gdb) disass
   ...
   0x000000010048d85a <+141>:   callq  0x1004afd30
<CryptoPP::IsAlignedOn(void const*, unsigned int)>
   0x000000010048d85f <+146>:   test   %al,%al
   0x000000010048d861 <+148>:   jne    0x10048d895
<CryptoPP::xorbuf(unsigned char*, unsigned char const*, unsigned char
const*, unsigned long)+200>
   0x000000010048d863 <+150>:   jmp    0x10048d87b
<CryptoPP::xorbuf(unsigned char*, unsigned char const*, unsigned char
const*, unsigned long)+174>
   0x000000010048d865 <+152>:   shl    $0x2,%rax
   0x000000010048d869 <+156>:   sub    %rax,%r9
   0x000000010048d86c <+159>:   je     0x10048d91b
<CryptoPP::xorbuf(unsigned char*, unsigned char const*, unsigned char
const*, unsigned long)+334>
   0x000000010048d872 <+165>:   add    %rax,%r10
   0x000000010048d875 <+168>:   add    %rax,%r11
   0x000000010048d878 <+171>:   add    %rax,%rbx
   0x000000010048d87b <+174>:   xor    %eax,%eax
=> 0x000000010048d87d <+176>:   mov    (%r11,%rax,1),%dl

And:

(gdb) info registers
rax            0x9b7a   0x9b7a
rbx            0x600061810      0x600061810
rcx            0x4      0x4
rdx            0x61     0x61
rsi            0x6000623c8      0x6000623c8
rdi            0x600062d70      0x600062d70
rbp            0x23a486 0x23a486
rsp            0x23a190 0x23a190
r8             0x600061810      0x600061810
r9             0x23a486 0x23a486
r10            0x600062d70      0x600062d70
r11            0x23a486 0x23a486
r12            0x20     0x20
r13            0x1      0x1
r14            0x600062d70      0x600062d70
r15            0x23a320 0x23a320



More information about the Gcc-help mailing list