2016-10-10 8 views
0

MIPS 서명 및 부호없는 추가에 대한 오버플로 예외에 대한 몇 가지 게시물을 읽었지만 아직 명확하지 않습니다.MIPS 오버플로 예외

1) 오버플로 예외는 무엇을 의미하며 언제 발생합니까? 2) 부호없는 덧셈에 대해 오버플로가 무시되는시기는 언제입니까?

나는 두 숫자가 있다고 가정 서명 4 비트와 함께 시작하고

Signed negative addition 

    1010 -6 
+ 1101 -3 
    ------ 
1 0111 +7 with a carry(overflow) of 1, but result should have been -9. 

Signed positive addition 

    0110 +6 
+ 0011 +3 
-------- 
    1001 -7 with no carry(probably an overflow of 1), but actual result should have been +9. 

Next is an unsigned addition 

    1111 +15 
+ 1010 +10 
--------- 
1 1001 +9 with an overflow/carry of 1, but actual result is +25. 

이 날 경우에, 우리는 오버 플로우 예외를 무시하고이 경우 우리가 제기 할 할 알려 주시기 바랍니다 부호없는 4 비트에 갈 수 있습니다 오버 플로우 예외와 이유. 나는 서명되지 않은 것을 위해 항상 오버플로를 무시하지만 그 결과가 올바르지 않으면 (25 대신 9), 오버 플로우를 무시하는 이유는 무엇입니까?

답변

1

MIPS 서명 및 부호없는 추가 명령어의 차이점은 2의 보수 오버플로의 경우 부호없는 추가에 대해 정수 오버플로 예외가 생성되며 서명되지 않은 예외에 대해서는 예외가 생성되지 않는다는 것입니다.

예제에서 두 개의 "부호있는 추가"(예 : ADD 명령어)는 결과를 통해조차도 2의 보수 오버플로가 발생하고 "부호없는 덧셈"(예 : ADDU 명령어)이 발생하지 않으므로 예외를 생성합니다. 여기도 틀렸어. 프로그래머는 2의 보수 오버 플로우가 발생하고 예외가 발생하는 시점을 제어 할 수 있습니다. 그러나 명령 세트는 비트 32에서 오버플로가있는 32 비트 부호없는 덧셈을 허용하지 않으므로 마지막 비트가 실제로 필요한 경우 64 비트 산술을 수행하십시오.

+0

링크 및 설명 주셔서 감사합니다! 내가 게시 한 예제를 설명해 주시겠습니까? 또한 예외가 발생했을 때 하드웨어에서 취한 조치는 무엇입니까? –

+1

답변은 3 가지 예에 대한 설명으로 업데이트됩니다. [MIPS 예외 처리] (https://duckduckgo.com/?q=mips+exception+handling&t=h_&ia=web)에는 인터넷에서 많은 것을 발견 할 수 있습니다. –