Возможно, вы захотите прочитать о режимах адресации x86 .
[rax+rdx-01]
относится к адресу, вычисленному путем сложения rax
и rdx
и вычитания 1. Это обычно используется если один из rax, rdx
является указателем на массив («базовый адрес»), а другой является индексом в этом массиве. Так что это может быть сгенерировано кодом C, таким как
char *array = ...;
size_t i = ...;
// ...
array[i-1] = 0;
, где значение array
хранится в rax
, а i
в rdx
или наоборот. Здесь вы говорите, что rax
не является указателем, но, возможно, rdx
является.
Аналогично, mov [r10+rsi], al
может соответствовать
char *array = ...;
size_t i = ...;
char c = ...;
// ...
array[i] = c;
, где r10=array
и rsi=i
(или наоборот) и al=c
.