Я смотрю на x86 asm и хочу попробовать прочитать его и определить ошибку в моем коде cpp и ОПТИМИЗИРОВАТЬ. Но асм имеет много накладных расходов от инструкций по вычислению адресов. И я не могу найти способ идентифицировать тех, кто вычисляет адрес, из тех, которые выполняют другие задачи. например, добавление может использоваться как для вычисления адреса mem, который будет использоваться в более позднем insn, так и для выполнения обычной операции добавления, которая доступна в моем коде.
есть ли способ сделать это легко, например, они использовали фиксированные регистры для вычисления адреса? или я должен проследить код от начала до конца?
РЕДАКТИРОВАТЬ: кажется, нет никакого четкого способа идентифицировать их. Но справедливо ли предположить, что только mov, add, sub и lea являются инструкциями для вычисления адреса? или в x86 есть что-то более сложное?
спасибо