8

What does (register1, register2, 4) mean in AT&T assembly?

For example:

cmp %eax, (%esi, %ebx, 4)
Peter Cordes
  • 328,167
  • 45
  • 605
  • 847
Secret
  • 3,291
  • 3
  • 32
  • 50

1 Answers1

13

The complete AT&T base/index register syntax is:

offset(base, index, multiplier)

Your offset field is 0, so you just have the (base, index, multiplier) part. In your case, you're comparing the contents of the eax register to the 32-bit value located at esi + (ebx * 4).

In the Intel syntax you might be more familiar with, this would be written as:

cmp [ebx*4 + esi], eax
Cody Gray - on strike
  • 239,200
  • 50
  • 490
  • 574
Carl Norum
  • 219,201
  • 40
  • 422
  • 469