我目前正在测试使用 x86 汇编器加速我的代码的各种方法。我过去能够访问一维数组,但二维数组似乎完全不同!
我正在使用我在汇编中创建的两个 for 循环,并将“x”移动到 ECX 寄存器中,将“y”移动到 EDX 寄存器中。
我还使用以下方法将数组的有效地址加载到 EBX 中:
lea ebx,dword ptr [slimeTrail]
现在我想做的是使用循环来隔离一个字符并将其移动到 AL 寄存器中,方法是:
movsx al,byte ptr [ebx + (ecx * sizeX) + edx]
其中 sizeX 是宽度。
但是,我得到的错误是
error C2404: 'edx' : illegal register in 'second operand'
和
error C2425: '*' : non-constant expression in 'second operand'
我已经检查了英特尔手册,但似乎没有到达那里。我错过了一些基本的东西吗?