我想我明白
movzbl (%rdi, %rcx, 1) , %ecx
意思是“将零扩展字节移至长整型”,并表示将 ecx 扩展为 32 位,但我不完全确定语法 (%rdi, %rcx, 1) 指的是什么。
我在某处看到该语法指的是
(Base, Index, Scale)
但我找不到任何资源可以准确说明这意味着什么。我猜这意味着将 (%rdi, %rcx, 1) 处的任何信息移动到 %ecx 以便
(long) %ecx = (%rdi, %rcx, 1)
但我怎么知道那是什么位置呢?是否涉及某种算术来查找地址或其他东西?
ecx 不是已经隐式 32 位了吗?为什么需要扩展到32位?
编辑以澄清:
我知道语法 (%rdi, %rcx, 1) 意味着我必须将这三件事添加在一起,但我不明白这如何产生答案。
我要添加什么,寄存器的内容?寄存器的地址?如果是地址,我如何找出地址并将其加在一起?
我在网上找到的只是告诉我语法的含义,而不是如何通过示例使用它。