首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mmix NEG和NEGU操作码

Mmix NEG和NEGU操作码
EN

Stack Overflow用户
提问于 2013-06-07 00:16:57
回答 1查看 168关注 0票数 1

根据NEG和NEGU的定义,

代码语言:javascript
复制
NEG $X,Y,$Z (negate signed): s($X) := Y - s($Z).
NEGU $X,Y,$Z (negate unsigned): u($X) := (Y - u($Z)) mod 2^64.

让我们假设$Z = s(-1)u(2^64 - 1)。然后,第一个操作码将在Y = 0时将值1放入$X寄存器,最近的一个操作码将给出相同的结果,因为u(-(2^64 - 1)) mod 2^64 = 1。我说的对吗?$Z = -2^63NEG指令是否应引发溢出异常

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-16 12:48:33

简短回答“当$Z =-2^63时,NEG指令是否应该引发溢出异常?”

代码语言:javascript
复制
yes, but you probably already suspected that.

从逻辑上讲,NEG $X,0,-2^63应该给出2^63,这超出了有符号正整数的界限,因此溢出。但是如果你像我一样,你想要一个整数溢出确实发生的证据。这就是它:

代码语言:javascript
复制
t       IS      $255

    LOC     #20          //handle the integer overflow event
    PUSHJ   255,Err
    PUT     rJ,$255
    GET     $255,rB
    RESUME

        LOC     #100
Main    SET     t,#4000
        PUT     rA,t        //set the integer overflow event bit
        SETH    $0,#8000
        NEG     $1,0,$0
        GETA    t,End
        TRAP    0,Fputs,StdOut
        TRAP    0,Halt,0
End     BYTE    "End of program",#a,0

Err     SET     $0,$255           //overflow subroutine, prints out message
        GETA    t,Emes
        TRAP    0,Fputs,StdOut
        GET     t,rW
        INCL    t,4
        PUT     rW,t
        SET     $255,$0
        POP     0,0
Emes    BYTE    "Error: integer overflow",#a,0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16967136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档