11 THUMB Instruction Set
แม้ว่า ARM7 นั้นจะเป็น Processor แบบ 32 บิต แต่ก็สามารถทำงานกับชุดคำสั่งขนาด 16 บิต ที่เรียกว่า THUMB ได้ โดยชุดคำสั่งแบบ THUMB นั้นจริงๆแล้วคือชุดคำสั่งแบบ Word ที่ถูกบีบให้สั้นลงนั้นเอง
......
ซึ่งทำให้สามารถเก็บคำสั่งในรูปแบบ 16 บิต ซึ่งสามารถขยายออกให้เป็นแบบ Word ได้แล้วเข้าทำงาน แม้ว่า คำสั่งTHUMB นั้นจะทำให้ประสิทธิภาพของโค้ดต่ำลงเมื่อเทียบกับแบบ Word แต่สิ่งที่เราได้รับนั้นคือความหนาแน่ของโค้ดที่สูงขึ้นมาก ดังนั้นในการพัฒนางานที่ต้องพิจารณาถึงขนาดของโปรแกรมให้สามารถ
อยู่ภายในบนไมโครคอลโทลเลอร์อันเดียว แล้วให้มันทำงานออกมามีประสิทธิภาพสูงสุด เราจึงจำเป็นอย่างยิ่งที่จะต้องมีการแปลโค้ดแบบผสมผสานกันระหว่างแบบ Word และ THUMB โดยการทำแบบนี้เรียกว่า Interworking และทำให้มันรองรับกับตัวแปลภาษาทุกๆตัว อย่างเช่น หากมีใช้ชุดคำสั่งแบบ THUMB จะทำให้ประหยัดพื้นที่ขึ้น 30% แต่สำหรับในบางครั้งการใช้ชุดคำสั่งแบบ Word ก็ทำให้ทำงานได้เร็วขึ้น 40% ซึ่งเราจะต้องปรับให้เกิดความสมดุลระหว่างสองส่วนนี้
ชุดคำสั่งแบบ THUMB นั้นคล้ายๆกับใน ไมโครคอลโทลเลอร์ และไม่เหมือนกับแบบ Word ตรงที่ไม่มี Prefix สำหรับคำสั่งทั่วไป ยกเว้น Branch ที่ยังคงใช้ Prefix อยู่ ส่วนในคำสั่งในการประมวลผลจะมีสอง Operand
ตัวอย่างเช่น
ARM Instruction (Word) ****************** THUMB Instruction
ADD R0, R0, R1 __________________ADD R0, R1 __________R0 = R0 + R1
…
แต่ว่าในการเข้าใช้งาน R8-12 (High register) นั้นจะจำกัดไว้เพียงบางคำสั่งเท่านั้น : MOV, ADD, CMP
นอกจากนี้ชุดคำสั่งแบบ THUMB นั้นยังไม่มี MSR และ MRS ทำให้เราต้องเอาใช้แบบอ้อมแทน ถ้าหากเราต้องการเปลี่ยน user-bit ของ CPSR เราจะต้องเปลี่ยนจาก THUMB เป็น Word ด้วยคำสั่ง BX หรือ BLX
ดังนั้นเมื่อเรากลับมาจาก Reset หรือเข้าไปใน Exception ก็จะเปลี่ยนรูปแบบคำสั่งเป็น Word เอง
....
ชุดคำสั่ง THUMB ได้เพิ่มเติมคำสั่งสำหรับ PUSH และ POP เพื่อใช้จัดการกับ Stack ซึ่งถูกกำหนดไว้แล้วที่ R13
….
สุดท้าย ชุดคำสั่ง THUMB จะยังมีคำสั่ง SWI ซึ่งเป็นทางหนึ่งที่จะใช้ในการกลับเข้าสู่รูปแบบคำสั่งแบบ Word เพียงแต่ว่าบิตที่ไม่ได้ใช้งาน(แต่จะนำมาพิจารณาว่าอะไรจะทำงาน) ลดลงเหลือ 8 บิต ทำให้มีจำนวน SWI ได้มากที่สุด 255
ไม่มีความคิดเห็น:
แสดงความคิดเห็น