2013-11-04 293 views
1

我給這個leal命令,我必須填寫他們的意思。 我一直在努力研究leal命令如何操作,但我一直在Web上找到相關材料時遇到困難。我發現的是leal(src1,src2),dst // dst = src2 + src1。 此信息不能提供足夠的信息,因爲leal命令比這更復雜。彙編語言IA32

這是怎麼看?

假設%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

+0

我會使用英特爾的語法所以它更容易閱讀。例如。 'lea edx,[eax + 6]'。 – greatwolf

回答

1

我會做的是在翻譯上述ATT語法Intel語法作爲這是第一步,因爲分析起來更直觀。

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 
+0

英特爾語法+1。 AT&T語法殺死了彙編編程。 :) – johnfound