I have the following instructions:

The registers' values in the First instruction are:

  • RAX=0000000033307EE0
  • RCX=0000000000000000

The registers' values in the Second instruction are:

  • RAX=0000000033307EE0
  • RCX=00000000377F1FD0

What I did is:

The first instruction offset is [rax + rcx*8] = RCX(00000000) * 8 = 8
So, the final result is Address(33307EE0) + Offset(8).

And the second instruction offset is [rax + rcx*8] = RCX(377F1FD0) * 8 = BBF8FE80
So, the final result is Address(33307EE0) + Offset(BBF8FE80).

Are those results true? because I found the address is correct but the offset is still wrong.


1 Answer 1


[RAX=0x33307EE0 + RCX=0x0 * 0x8] == [0x33307EE0+0x0] = 0x33307EE0
compare whatever is at Address 0x33307EE0 with r9 register

[RAX=0x33307EE0 + RCX=0x377F1FD0 * 0x8] == [ 0x33307EE0 + 0x1bbf8fe80] = 0x1ef297d60

mov into rcx whatever is there at 0x1ef297d60

you really need to find some reading/viewing material on assembly it is always better to read a book on subject matter instead of getting random tidbit advice from unknown strangers on a web service if you need to grasp the basics

  • At present, I read several books about assembly, although I have seen that form before [eax+ecx*5], etc, but I didn't understand it but after your answer, I understood what it means.
    – Lion King
    Jun 18, 2021 at 23:26
  • without you understanding the basics it will be difficult to tell basically you save everything prehand before destroying write new code at same place which does what you want and also what you destroyed and return back to flow it is like joining a tee at two places in a pipe to cut out the leaking part in laymans term
    – blabb
    Jun 19, 2021 at 3:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.