2
วิธีที่เร็วที่สุดในการคำนวณลำดับของขนาดในชุดประกอบ x86
ภารกิจนั้นง่าย: เขียนชุดคำสั่งที่คำนวณลำดับความสำคัญของจำนวนเต็มโดยใช้วงจรนาฬิกาน้อยที่สุด ลำดับความสำคัญถูกกำหนดให้เป็นไม่ได้log10log2 ช่วงของการป้อนข้อมูลที่ถูกต้องคือ0การรวม พฤติกรรมสำหรับอินพุตภายนอกช่วงนั้นไม่ได้กำหนดไว้1012 ค่าควรจะปัดเศษลงเลขที่ใกล้ที่สุด, มีข้อยกเว้นว่าการป้อนข้อมูลได้รับการส่งออกที่ควรจะเป็น0 0(คุณสามารถพิจารณาว่านี่เป็นตัวแทนที่ดีที่สุดของอินฟินิตี้ลบที่เป็นไปได้ในจำนวนเต็มที่ไม่ได้ลงชื่อ) ต้องเป็นชุดประกอบ x86 จำนวนเต็มต้องเป็นค่ารันไทม์ไม่ใช่จำนวนเต็มแบบสแตติก / อินไลน์ ดังนั้นเราจึงไม่รู้ว่ามันคืออะไรในเวลารวบรวม สมมติว่าคุณมีจำนวนเต็มโหลดลงทะเบียนแล้ว (แต่รวมถึงการตั้งค่าในการลงทะเบียนในคำตอบเพื่อความชัดเจน) ไม่สามารถเรียกไลบรารีหรือฟังก์ชันภายนอกใด ๆ อิสระในการใช้ใด ๆ ของคำแนะนำที่มีอยู่ในเอกสารของอินเทล ไม่ค สถาปัตยกรรม Intel Core ~ 7 ใด ๆ ก็ได้รับการยอมรับ (แสดงอยู่ในหน้า 10 ) Nehalem ในอุดมคติ (Intel Core i7) คำตอบที่ชนะคือคำตอบที่ใช้รอบสัญญาณนาฬิกาน้อยที่สุดเท่าที่จะเป็นไปได้ นั่นคือมันสามารถมีการดำเนินงานมากที่สุดต่อวินาที นาฬิกาโดยประมาณสรุปวงจร are here: http://www.agner.org/optimize/instruction_tables.pdf การคำนวณรอบสัญญาณนาฬิกาสามารถเกิดขึ้นได้หลังจากโพสต์คำตอบแล้ว