сборка — как «выйти» работает со смещениями в Stack Overflow

Пожалуйста, объясните, как работает команда 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?

-5

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]