《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 計算機系統原理(十七) 特殊的算術操作指令詳解

計算機系統原理(十七) 特殊的算術操作指令詳解

2017-06-22
關鍵詞: 匯編語言

上一章我們討論了常見的算術與邏輯運算指令,其中比較有特點的是leal指令,本章我們再來看幾個比較特殊的操作指令,這些指令可以讓只有32位的寄存器存儲64位的數據,是不是十分霸氣側漏呢。

imull、mull指令

這兩個指令一看就是雙胞胎,它們一個負責有符號全64位乘法,一個負責無符號全64位乘法。細心的猿友會發現,imull這個指令好像是負責乘法的指令,而且在之前的乘法并沒有區分有符號和無符號,現在怎么又成雙胞胎指令了。

我們上一章當中出現的指令是imul指令,當它操作雙字的時候,也就是imull指令。不過不同的是,它的一般形式是imull S D,這里有兩個操作數,它將計算S和D的乘積并截斷為雙字,然后存儲在D當中。由于在截斷時,無符號以及有符號的二進制序列是一樣的,因此此處的乘法指令并不區分有符號和無符號。

本次我們討論的imull指令,則與上面的普通乘法指令稍有不同,它只有一個操作數,也就是說,它的一般形式為imull S,這點在書中的表格中也能看出來,而另外一個操作數默認為%eax寄存器。最終的結果,會將高32位存入%edx寄存器,而低32位存入%eax寄存器。

試想一下,如果我們只取%eax寄存器當中的32位結果,那其實這里計算的結果就是S*%eax,此時imull S的作用就與imull S D是一樣的,只是目的操作數被固定為%eax罷了。

cltd指令

這個指令相對來說就非常簡單了,它就是簡單的將%eax寄存器的值符號擴展32位到%edx寄存器,也就是說,如果%eax寄存器的二進制序列的最高位為0,則cltd指令將把%edx置為32個0,相反,如果%eax寄存器的二進制序列最高位為1,則cltd指令將會自從填充%edx寄存器為32個1。

idivl、divl指令

這兩個指令與前面的imull以及mull類似,它也將計算結果存放在兩個寄存器當中,其中余數存放在%edx寄存器,商存放在%eax寄存器。如果各位理解了前面的imull以及mull,那么這里idivl和divl理解起來會非常簡單。

文章小結

本章介紹了幾個特殊的算術運算指令,其實這些指令的運算規則都建立在2.X的基礎之上,2.X當中所介紹的二進制算術規則,就是這些指令的執行方式規定。理解這些指令的指令方式,有助于提高我們聯系程序代碼與匯編代碼之間的對應關系的能力,這是非常有用的。





本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 99久久精品费精品国产一区二区| 国产不卡在线视频| 亚洲av无码专区在线观看下载| 国产福利你懂的| 女欢女爱第一季| 久久免费国产视频| 欧美色视频日本| 国产日韩欧美三级| www.狠狠操| 欧美日本在线视频| 国产午夜精品一区二区三区不卡| 一级毛片免费观看不收费| 激情综合色综合啪啪开心| 国产亚洲美女精品久久久久| www.波多野结衣.com| 日韩不卡高清视频| 亚洲欧美成人综合久久久| 香港aa三级久久三级老师| 成年女人免费碰碰视频| 亚洲三级视频在线| 玉蒲团之天下第一| 国产精品多人p群无码| 久久久久久亚洲精品| 欧美俄罗斯乱妇| 伊人蕉久中文字幕无码专区| 福利视频导航大全| 天天插天天操天天射| 亚洲av无码乱码在线观看| 男人桶女人爽羞羞漫画| 国产极品粉嫩交性大片| 99久久无色码中文字幕| 日韩欧美综合在线| 亚洲欧美激情在线| 精品一区二区三区在线观看视频| 国产精品无码久久综合网| 丰满少妇被猛烈高清播放 | 在线观看视频99| 中国娇小与黑人巨大交| 欧美日韩国产精品| 国产一区二区不卡| 91精品国产自产91精品|