資源描述:
《第三章 運算方法和運算部件ppt課件.ppt》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、第一講不同層次程序員看到的運算及ALU第二講定點數(shù)運算及其運算部件第三講浮點數(shù)運算及其運算部件Ch3:ArithmeticandLogicOperateandALU運算方法和運算部件第一講:不同層次程序員看到的運算及ALU主要內容C語言程序中涉及的運算整數(shù)算術運、浮點數(shù)算術運算按位、邏輯、移位、位擴展和位截斷指令集中與運算相關的指令(以MIPS為參考)涉及到的定點數(shù)運算算術運算帶符號整數(shù)運算:取負/符號擴展/加/減/乘/除/算術移位無符號整數(shù)運算:0擴展/加/減/乘/除邏輯運算邏輯操作:與/或
2、/非/…移位操作:邏輯左移/邏輯右移涉及到的浮點數(shù)運算:加、減、乘、除基本運算部件ALU的設計C語言程序中涉及的運算算術運算(最基本的運算)無符號數(shù)、帶符號整數(shù)、浮點數(shù)的運算按位運算用途對位串實現(xiàn)“掩碼”(mask)操作或相應的其他處理(主要用于對多媒體數(shù)據或控制信息進行處理)操作按位或:“
3、”按位與:“&”按位取反:“~”按位異或:“^”問題:如何從一個16位采樣數(shù)據y中提取高位字節(jié),并使低字節(jié)為0?可用“&”實現(xiàn)“掩碼”操作:y&0xFF00例如,當y=0x2C0B時,通過掩碼操作得到結果為
4、:0x2C00C語言程序中涉及的運算邏輯運算用途用于關系表達式的運算例如,if(x>yandi<100)then……中的“and”運算操作“‖”表示“OR”運算“&&”表示“AND”運算例如,if((x>y)&&(i<100))then……“!”表示“NOT”運算與按位運算的差別符號表示不同:&~&&;
5、~‖;……運算過程不同:按位~整體結果類型不同:位串~邏輯值C語言程序中涉及的運算移位運算用途提取部分信息擴大或縮小數(shù)值的2、4、8…倍操作左移::x<>k不區(qū)分是邏輯移位還是算
6、術移位,由x的類型確定無符號數(shù):邏輯左移、邏輯右移高(低)位移出,低(高)位補0,可能溢出!問題:何時可能發(fā)生溢出?如何判斷溢出?若高位移出的是1,則左移時發(fā)生溢出帶符號整數(shù):算術左移、算術右移左移:高位移出,低位補0??赡芤绯?!溢出判斷:若移出的位不等于新的符號位,則溢出。右移:低位移出,高位補符,可能發(fā)生數(shù)據丟失。C語言程序中涉及的運算位擴展和位截斷運算用途類型轉換時可能需要數(shù)據擴展或截斷操作沒有專門操作運算符,根據類型轉換前后數(shù)據長短確定是擴展還是截斷擴展:短轉長無符號數(shù):0擴展,前面補0
7、帶符號整數(shù):符號擴展,前面補符截斷:長轉短強行將高位丟棄,故可能發(fā)生“溢出”例1:在大端機上輸出si,usi,i,ui的十進制和十六進制值是什么?shortsi=-12345;unsignedshortusi=si;inti=si;unsingnedui=usi;si=-12345CFC7usi=53191CFC7i=-12345FFFFCFC7ui=531910000CFC7例2:i和j是否相等?inti=53191;shortsi=(short)i;intj=si;不相等!i=5319100
8、00CFC7si=-12345CFC7j=-12345FFFFCFC7原因:對i截斷時發(fā)生了“溢出”,即:53191截斷為16位數(shù)時,有效數(shù)據丟失,無法被正確表示!MIPS定點算術運算指令InstructionExampleMeaningCommentsaddadd$1,$2,$3$1=$2+$33operands;exceptionpossiblesubtractsub$1,$2,$3$1=$2–$33operands;exceptionpossibleaddimmediateaddi$1,$
9、2,100$1=$2+100+constant;exceptionpossibleaddunsignedaddu$1,$2,$3$1=$2+$33operands;noexceptionssubtractunsignedsubu$1,$2,$3$1=$2–$33operands;noexceptionsaddimm.unsign.addiu$1,$2,100$1=$2+100+constant;noexceptionsmultiplymult$2,$3Hi,Lo=$2x$364-bitsigne
10、dproductmultiplyunsignedmultu$2,$3Hi,Lo=$2x$364-bitunsignedproductdividediv$2,$3Lo=$2÷$3,Lo=quotient,Hi=remainderHi=$2mod$3divideunsigneddivu$2,$3Lo=$2÷$3,Unsignedquotient&remainderHi=$2mod$3涉及到的操作數(shù):32/16位無符號數(shù),32/16位帶符號數(shù)涉及到的操作:加/減/乘/除(有符號/無符號)MIPS邏輯運