Пожалуйста, объясните, как работает команда lea в tasm на следующем примере:
RES equ 52
HED equ 16
proc @allocx
push eax
lea eax,[eax*4+HED+RES] ;vиetnм hlaviиky a rezervovanйho mнsta
push eax
call Alloc
pop edx
pop ecx
test eax,eax
jz @@ret
add eax,HED
mov [eax-16],ecx
mov [dword eax-12],0 ;inicializuj na nulu
mov [dword eax-4],1
mov [dword eax-8],0
@@ret: ret
endp @allocx
Вызов функции из C ++:
void *Alloc(int size)
{
return operator new(size);
}
Структура, с которой работает код:
struct Numx
{
int
alen, // Allocated data length (in int units)
len; // Used data length (in int units), 0 = zero, -1 = variable, -2 = fraction, -5 = range, -12 = matrix
bool
sgn; // Sign, plus -- 0, minus -- 1
int
exp, // Exponent (how many ints has integer part)
m, // Mantissa (most significant digits are at the beginning)
d,
reserved[12];
};
Мне не нужен перевод вне тасма. Просто объясните мне: как ‘lea’ работает со struct и offsets?
Задача ещё не решена.
Других решений пока нет …