2010-10-18 85 views
3

MUL運算符只有單一操作數形式嗎?
IMUL運算符可以有三種不同的形式(帶有一個,兩個或三個操作數),這更方便。從技術角度來看,我沒有看到爲什麼MUL運營商不能以2/3個操作數形式出現。MUL運算符與NASM中的IMUL運算符

+1

有人也可以在MUL和IMUL之間的區別是什麼? – CodyBugstein 2013-04-22 18:31:16

回答

5

它與輸出的字節碼有關。在80286之前的世界裏,操作碼太多,因此英特爾工程師正在設法解決這個問題。一種解決方案是將指定操作的字節碼部分(在這種情況下是乘法)擴展到編碼第一個操作數的字節碼部分。這顯然意味着在執行MUL操作碼時只有一個操作數可以被支持。因爲乘法需要兩個操作數,所以他們通過對處理器進行硬編碼來解決問題,即第一個操作數總是eax寄存器。後來的處理器支持多個長度的字節碼,這些字節碼允許它們將更多數據編碼成單個命令。這使他們能夠使IMUL操作碼更有用。

今天有一個有趣的並行IP地址用完了。

+1

我認爲值得指出的是,其他模式不需要'MUL'。 'MUL'將無符號的單詞*單詞加倍。帶有一個操作數的'IMUL'對簽名做同樣的事情。對於單詞*單詞來說低字符號並不重要,因此不需要使用'MUL'這種模式。 – 2015-03-06 14:04:53

4

並非NASM不支持它 - 在CPU上,指令的簽名版本只支持比未簽名版本更多的變體。