การเข้าถึงแต่ละบิตใน MIPS

ฉันกำลังเขียนโปรแกรมใน MIPS ที่แก้เขาวงกตโดยใช้อัลกอริธึมกฎมือซ้าย ฉันเขียนอัลกอริทึมไว้แล้ว แต่ฉันต้องหาทางติดตามพื้นที่ในเขาวงกตที่ฉันเคยไปมา เพื่อที่ฉันจะได้ค้นพบวิธีแก้ปัญหาที่ "ดีที่สุด" และตรงที่สุดในการแก้เขาวงกต

ในโปรแกรม register $t9 เป็นตัวเลข 32 บิตที่เก็บข้อมูลตำแหน่งของรถที่แล่นผ่านเขาวงกต รวมถึงตำแหน่งเสาและแถว ซึ่งเป็นสิ่งที่ฉันต้องแยก โดยพื้นฐานแล้ว สิ่งที่ฉันจำเป็นต้องรู้คือวิธีทำงานกับ/แยกบิตเฉพาะเหล่านั้น

บิต 31-24 เป็นตัวเลข 8 บิตแทนแถวในคำชมเชยของ 2 บิต 23-16 คือตัวเลข 8 บิตแทนคอลัมน์ในคำชมเชยของ 2

tl; dr ฉันแค่ต้องแยก 8 บิตแรกและ 8 บิตถัดไปจากหมายเลข 32 บิตที่อยู่ใน $t9 ใน MIPS

ขอบคุณ!


person Nick Mullen    schedule 02.11.2016    source แหล่งที่มา


คำตอบ (1)


หากต้องการรับบิต 31-24 ให้เลื่อนลอจิคัลไปทางขวา (SRL) คูณ 24 จำนวนที่เหลือจะสอดคล้องกับค่าของบิตเหล่านั้น ตามที่ตีความว่าเป็นจำนวนเต็ม 8 บิต

หากต้องการรับบิต 23-16 ให้เลื่อนไปทางขวา 16 แล้วตามด้วย AND 0xff

คุณจะทราบคำสั่ง MIPS สำหรับสิ่งนั้นหรือไม่

person Seva Alekseyev    schedule 02.11.2016
comment
คุณไม่จำเป็นต้องปิดบังค่า 32 บิต 8 บิตที่เลื่อนไปทางขวา 24 บิต - เมื่อใช้การเลื่อนทางลอจิคัล เนื่องจาก 24 บิตบนเหล่านั้นเต็มไปด้วยศูนย์อยู่แล้ว - person Ped7g; 02.11.2016