Я не совсем уверен, что делает эта add инструкция:
add
add 0x0(%rbp,%rbx,4),%eax
Если бы это было:
add %rbx,%eax
Я знаю, что это добавит содержимое rbx и содержимое в eax и сохранит их обратно в eax. Тем не менее, 0x0(%rbp,%rbx,4) сбивает меня с толку.
rbx
eax
0x0(%rbp,%rbx,4)
Это потому, что это глупый и сбивающий с толку синтаксис AT & T. В обычном синтаксисе Intel это add eax,dword ptr[rbp+4*rbx+0], то есть добавьте меч в rbp + 4 * rbx к eax.
add eax,dword ptr[rbp+4*rbx+0]