^ ^

ยินดีต้อนรับครับ //** ข้อมูลทั้งหมดนี้ สรุปตามความเข้าใจของผมเอง ใครอ่านไม่เข้าใจกราบขออภัยด้วยครับ หากผมเข้าใจผิด ก็ช่วยติและแนะนำผมด้วยนะครับ**//

วันเสาร์ที่ 25 มกราคม พ.ศ. 2557

CPU...MIPS && ARM

โปรแกรมที่ใช้จำลอง CPU ในที่นี้ จะป็นของ MIPS กับ ARM นะครับ
ลิ้งดาวโหลด
ARM : http://armsim.cs.uvic.ca
MIPS: http://spimsimulator.sourceforge.net


วันจันทร์ที่ 20 มกราคม พ.ศ. 2557

สรุปเนื้อหาในคาบเรียน#2

ต่อจาก สัปดาห์ที่แล้ว

ยังอยู่ในเรื่องของการ เก็บข้อมูลลงในคอมพิวเตอร์ ซึ่งสัปดาห์นี้มาเจาะมากขึ้น โดยเขียนโปรแกรมช่วยคำนวณตรวจสอบดูว่า เครื่องคอมพิวเตอร์แต่ล่ะเครื่องนั้นเก็บข้อมูลแบบ  Big Endian หรือ Little Endian

ตัวอย่างที่ควิซในห้องเรียน
 จะเก็บ 7.25 ลงในเครื่องคอมพิวเตอร์ 64 bit แบบ  Big Endian และ Little Endian อย่างไร?

จากตารางที่แล้ว การเก็บแบบ 64 bit นั้น มีรายละเอียดดังนี้
Sing =1 bit
Exp = 11 bit 
Singnificant = 52 bit
Bias = 1023 bit

เราจะมาหาค่าของ [Sing] [ Exp] [Singnificant] กัน
ซึ่ง ค่า[Sing] = 0  เพราะ 7.25 เป็นค่าบวก

จากนั้นหาค่า  [ Exp] [Singnificant] 
เริ่มแรกโดยการ ทำ 7.25 ให้อยู่ในรูปฐาน2ก่อน
 จากกระบวนการแปลงเลขของสัปดาห์ที่แล้ว จะได้ว่า

  7.25 = 111.01
จากนั้นทำการเลื่อนจุดไปที่หลังเลขเลข 1 ตามกฏของการเก็บค่าแบบ Mendesa จะได้ดังนี้
จาก 111.01  => 1.1101 x 2^2       //    ^ เป็นเครื่องหมายยกกำลัง    //

เมื่อได้เลขยกกำลังแล้ว จะหาค่า Exp ได้
Exp = 1023+2  = 1025 แล้วแปลง  1025 เป็นฐาน2
1025 = 1000 0000 001
ดังนั้น  [ Exp] = 1000 0000 001

หาค่า  [Singnificant] โดยเอาค่าหลังจุดมา ให้ได้ 52 bit
จาก 1.1101 เราจะเก็บ หลังจุดไป จะได้
1101 0000... ( เพิ่ม 0 ไป 48 ตัว เพราะ 52 - 4 = 48)
เขียนแพคเป็นข้อมูล จะได้

 [Sing] [ Exp] [Singnificant]

[0][1000 0000 001][1101 0...(0 มี 48 ตัว)]

เรียงข้อมูล จะได้ 
0100 0000 0001 1101 0... ( 0 48 ตัว)
ทำเป็น Byte จะได้ดังนี้   // 1 byte = 8 bit//
   0100 0000 = 64
  0001 1101 = 29 
0000 0000 = 0
0000 0000 = 0
0000 0000 = 0
0000 0000 = 0
0000 0000 = 0
0000 0000 = 0

เพราะฉะนั้น ข้อมูลเมื่อเรียงแบบ Big Endian จะได้
64 29 0 0 0 0 0 0

เมื่อเรียงแบบ Little Endian จะได้
0 0 0 0 0 0 29 64

กรณี ได้ข้อมูลมาเป็น 0100 0000 0001 1101 0... ( 0 48 ตัว)
เราก็ทำการคิดย้อนกลับ โดยให้ bit แรก เป็นเครื่องหมาย แล้วbit ถัดมาจะเป็น Exponent และbit ถัดมาก็จะเป็น Singnificant ซึ่งแต่ล่ะค่านั้น จำนวนbitจะขึ้นอยู่กับว่าเก็บข้อมูลแบบกี่บิต
พอแยกเลขออกเป็นbitของแต่ล่ะอย่างได้แล้วก็ทำการแปลงให้เป็นเลขจำนวนจริง