leal教学如何运作?

时间:2013-11-04 01:17:57

标签: assembly x86

我已经给出了这些leal指令,我必须填写他们的意思。 我一直在努力研究leal指令的作用,但我一直难以在网上找到相关资料。我发现的是

leal (src1, src2), dst  //dst = src2 + src1

此信息未提供足够的信息,因为leal指令要复杂得多。

这看起来怎么样?

假设%eax保持值x,%ecx保持值y。填写表格。

%edx =  x + 6___________leal 6(%eax),%edx
%edx =  x + y___________leal (%eax,%ecx),%edx
%edx =  x * 5y___________leal (%eax,%ecx,4),%edx
%edx =  9x + 7___________leal 7(%eax,%eax,8),%edx
%edx =  4y + 10___________leal 0xA(,%ecx,4),%edx
%edx =  x + 3y + 9___________leal 9(%eax,%ecx,2),%edx

1 个答案:

答案 0 :(得分:3)

我要做的是将上面的att语法翻译成英特尔语法作为第一步,因为分析更加直观。

lea edx, [eax + 6]            
lea edx, [eax + ecx]          
lea edx, [eax + ecx * 4]      
lea edx, [eax + eax * 8 + 7]  
lea edx, [ecx * 4 + 10]       
lea edx, [eax + ecx * 2 + 9]  

即使您对汇编语法一无所知,您也可以看一下上面的内容,可以找出它们的含义。您可以在心理上将此映射为您喜欢的编程语言中的赋值语句:您分配给的东西位于左侧,值被分配位于右侧。现在只需用您的xy值替换寄存器:

edx = x + 6
edx = x + y
edx = x + y*4
edx = x + x*8 + 7 => x*9 + 7
edx = y*4 + 10
edx = x + y*2 + 9