一直在組裝作業,而且大部分我都很瞭解組件。或者至少對於這個任務來說是足夠好的。但是這個mov聲明讓我沮喪。我真的很感激,如果有人可以解釋這個mov語句如何操作寄存器值。「mov(%ebx,%eax,4),%eax」是如何工作的?
MOV(%EBX,%eax中,4),%eax中
P.S.我無法通過基本搜索找到這種特定類型的mov語句,所以我很抱歉如果我錯過了它並且在回答問題。
一直在組裝作業,而且大部分我都很瞭解組件。或者至少對於這個任務來說是足夠好的。但是這個mov聲明讓我沮喪。我真的很感激,如果有人可以解釋這個mov語句如何操作寄存器值。「mov(%ebx,%eax,4),%eax」是如何工作的?
MOV(%EBX,%eax中,4),%eax中
P.S.我無法通過基本搜索找到這種特定類型的mov語句,所以我很抱歉如果我錯過了它並且在回答問題。
完整的存儲器尋址模式格式AT &變速箱總成是:
offset(base, index, width)
因此,對於您的情況:
offset = 0
base = ebx
index = eax
width = 4
含義,該指令是一樣的東西:
eax = *(uint32_t *)((uint8_t *)ebx + eax * 4 + 0)
在類似C的僞代碼中。
這個問題絕對是重複的。讓我看看周圍。你有沒有檢查過[docs](http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)?他們很好地解釋了這個問題。儘管如此,您可能想要翻譯爲英特爾格式程序集,以便在這些書籍中查找。 – 2013-02-15 17:45:23
我覺得這將是,但我很欣賞尋找合適的地方尋找幫助。 – Scalahansolo 2013-02-15 17:48:21
請參閱wikibooks上的[GAS語法尋址模式語法](http://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax#Address_operand_syntax)以及[x86 tag wiki]中的其他鏈接(https://stackoverflow.com/tags/x86/info) – 2017-09-23 07:44:47