ความแตกต่างระหว่าง Overflow Flag และ Carry Flag

น้อง ป.ตรี ท่านหนึ่งเดินดุ่ยๆเข้ามาถามหาพี่ TA วิชา Computer Architecture แต่อังเอิญพี่เขาไม่ว่าง .. เลยต้องลงมือหลอกน้องไป .. ไม่สำเร็จ .. เจ็บใจ .. ก็เลยกลับมาหาข้อมูลแก้ช้ำใจ

จาก http://blog.csdn.net/iAL/archive/2004/11/09/173256.aspx ความว่า

Two of the bits in the FLAGS register that add and sub instructions set are overflow and carry flag:

Overflow flag:
Set for signed arithmetic when the ture result is too big to fit into the destination.

Carry flag:
If there is a carry in the MSB of an addition or a borrow in the MSB of a subtraction, the carry flag is set. Thus, it can be used to detect overflow for unsigned arithmetic.

และ http://en.wikipedia.org/wiki/Overflow_flag , http://en.wikipedia.org/wiki/Carry_flag

จึงขอสรุปว่า Flag ทั้งสองทำงานร่วมกับ Arithmetric Instruction ทุกคำสั่ง โดย Overflow Flag (OVF) จะมอง Register เป็น Signed Integer ซึ่งหากเลขบวก (signed bit เป็น 0) บวกกันแล้วได้เลขลบ หรือเลขลบ (signed bit เป็น 1) บวกกันแล้วได้เลขบวก จะได้ OVF=1

ส่วน Carry/Borrow Flag (Carry) จะมอง Register เป็น Unsigned Integer ทั้งหมด ซึ่งหากว่าการบวกหรือลบเลขนั้น ได้มีการ Carry หรือ Borrow .. จะทำให้ Carry=1

แล้วนำไปประยุกต์ใช้ยังไงล่ะ ? .. [ตัวอย่าง Source Code]

ปล. น้องได้แนะนำให้รู้จักกับหนังสือที่เขาเรียน .. น่าจะอ่านก่อนจะอ่าน Computer Architecture: Quantiative Approach ของ ป.โท นะ

Picture

Computer architecture design principles based on Reduced-Instruction Set Computer Architecture (RISC). MIPS R/3000-based RISC processor design, and pipelining datapath and control. Memory Hierarchy and Input/Output Systems.

Text Book: �Computer Organization and Design: the Hardware/Software Interface� David A. Patterson, and John J. Hennessy (1994), Morgan Kaufmann Publishers, Inc.

Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s