Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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

For example:

cmp %eax, (%esi, %ebx, 4)
like image 984
Secret Avatar asked Sep 06 '13 04:09

Secret


1 Answers

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
like image 55
Carl Norum Avatar answered Dec 02 '22 14:12

Carl Norum