คำถามติดแท็ก cpu-registers


3
เหตุใดคำแนะนำ x86-64 บน 32 บิตจึงลงทะเบียนส่วนบนของการลงทะเบียน 64 บิตแบบเต็มเป็นศูนย์
ในx86-64 Tour of Intel Manualsฉันอ่าน บางทีความจริงที่น่าประหลาดใจที่สุดก็คือคำสั่งเช่นMOV EAX, EBXการRAXลงทะเบียน32 บิตบนเป็นศูนย์โดยอัตโนมัติ เอกสารของ Intel (3.4.1.1 General-Purpose Registers ในโหมด 64 บิตในสถาปัตยกรรมพื้นฐานแบบแมนนวล) ที่อ้างถึงในแหล่งข้อมูลเดียวกันบอกเราว่า: ตัวถูกดำเนินการ 64 บิตสร้างผลลัพธ์ 64 บิตในการลงทะเบียนวัตถุประสงค์ทั่วไปปลายทาง ตัวถูกดำเนินการ 32 บิตสร้างผลลัพธ์ 32 บิตขยายศูนย์เป็นผลลัพธ์ 64 บิตในการลงทะเบียนวัตถุประสงค์ทั่วไปปลายทาง ตัวถูกดำเนินการ 8 บิตและ 16 บิตสร้างผลลัพธ์ 8 บิตหรือ 16 บิต 56 บิตด้านบนหรือ 48 บิต (ตามลำดับ) ของรีจิสเตอร์วัตถุประสงค์ทั่วไปปลายทางจะไม่ถูกแก้ไขโดยการดำเนินการ หากผลลัพธ์ของการดำเนินการ 8 บิตหรือ 16 บิตมีไว้สำหรับการคำนวณแอดเดรส …

5
ทะเบียน“ FS” /“ GS” มีไว้เพื่ออะไร?
ดังนั้นฉันจึงรู้ว่าการลงทะเบียนต่อไปนี้และการใช้งานควรจะเป็นอย่างไร: CS = กลุ่มรหัส (ใช้สำหรับ IP) DS = กลุ่มข้อมูล (ใช้สำหรับ MOV) ES = ส่วนปลายทาง (ใช้สำหรับ MOVS ฯลฯ ) SS = Stack Segment (ใช้สำหรับ SP) แต่การลงทะเบียนต่อไปนี้มีไว้เพื่อใช้ทำอะไร? FS = "ส่วนของไฟล์"? GS = ??? หมายเหตุ: ฉันไม่ได้ถามเกี่ยวกับระบบปฏิบัติการใด ๆ - ฉันกำลังถามเกี่ยวกับสิ่งที่พวกเขาตั้งใจจะใช้กับ CPU ถ้ามีอะไร

3
เหตุใด JVM stack-based และ Dalvik VM register-based?
ฉันสงสัยว่าเหตุใด Sun จึงตัดสินใจสร้าง JVM stack-based และ Google ตัดสินใจที่จะสร้าง DalvikVM register ฉันคิดว่า JVM ไม่สามารถสันนิษฐานได้จริงๆว่ามีการลงทะเบียนจำนวนหนึ่งบนแพลตฟอร์มเป้าหมายเนื่องจากควรเป็นแพลตฟอร์มที่ไม่ขึ้นกับ ดังนั้นจึงเลื่อนการจัดสรรการลงทะเบียน ฯลฯ ไปยังคอมไพเลอร์ JIT (ช่วยแก้ให้ด้วยนะถ้าฉันผิด.) พวกแอนดรอยด์ก็เลยคิดว่า "เฮ้มันไม่มีประสิทธิภาพไปขอ register ตาม vm ทันที ... "? แต่เดี๋ยวก่อนมีอุปกรณ์ Android ที่แตกต่างกันจำนวนการลงทะเบียนที่ Dalvik กำหนดเป้าหมาย? Dalvik opcodes ฮาร์ดโค้ดสำหรับการลงทะเบียนจำนวนหนึ่งหรือไม่ อุปกรณ์ Android ปัจจุบันทั้งหมดในตลาดมีจำนวนการลงทะเบียนเท่ากันหรือไม่? หรือมีการจัดสรรรีจิสเตอร์ซ้ำระหว่างการโหลด dex หรือไม่ ทั้งหมดนี้เข้ากันได้อย่างไร?

4
ถ้าการลงทะเบียนเร็วมากทำไมเราไม่มีมากกว่านี้ล่ะ?
ใน 32 บิตเรามีการลงทะเบียน "วัตถุประสงค์ทั่วไป" 8 รายการ ด้วย 64 บิตจำนวนเงินจะเพิ่มขึ้นเป็นสองเท่า แต่ดูเหมือนว่าจะไม่ขึ้นอยู่กับการเปลี่ยนแปลง 64 บิตเอง ตอนนี้ถ้าการลงทะเบียนเร็วมาก (ไม่มีการเข้าถึงหน่วยความจำ) ทำไมถึงไม่มีการลงทะเบียนมากกว่านี้? ผู้สร้าง CPU ไม่ควรลงทะเบียนใน CPU ให้มากที่สุดเท่าที่จะทำได้หรือไม่? อะไรคือข้อ จำกัด เชิงตรรกะที่ทำให้เรามีเพียงจำนวนเงินที่เรามี?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.