像 mov byte ptr [rax + rdx-1], 00 这样的偏移量是什么意思,其中 rax 不是指针
what does mean instruction like mov byte ptr [rax + rdx-1], 00 with such offset where rax not pointer
一直在学习汇编
mov byte ptr [rax+rdx-01],00
RAX=00000004
RDX=2295EA3B878
和
mov [r10+rsi],al
RAX=0000000000000065
RSI=000002295EA3B878
R10=0000000000000000
清楚mov
al
byte ptr
。但我不明白 [rax+rdx-01]
和 [r10+rsi]
是什么意思,其中 rax 和 r10 不是指针。
在大多数情况下,我遇到 [RAX+C1]
其中 rax 是指针,C1 是偏移量,但我不知道当寄存器存储一些值而不是指针时是什么意思
您可能想阅读有关
[rax+rdx-01]
指的是rax
和rdx
相加减1得到的地址。如果rax, rdx
其中之一是数组指针时常用这个("base address"),另一个是该数组的索引。所以这可能是由 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
.