What does a comma in a parenthesis mean in the AT&T syntax for x86 assembly?

4.5k views Asked by At

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

For example:

cmp %eax, (%esi, %ebx, 4)
1

There are 1 answers

0
Carl Norum On BEST ANSWER

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