อ่าน 4 นาที
รหัสปฏิบัติการ
ใน ด้านการคำนวณ โอ พโค้ด (ย่อมาจาก operation code ) [ 1 ] [ 2 ] คือ ค่าที่กำหนดไว้ ซึ่งระบุการดำเนินการที่จะดำเนินการ โอพโค้ดถูกนำไปใช้ในอุปกรณ์ฮาร์ดแวร์ เช่น หน่วยคำนวณและ ตรรกะ...
รหัสปฏิบัติการ
| รหัสเครื่อง |
|---|
| แนวคิดทั่วไป |
| คำแนะนำ |
ในด้านการคำนวณโอพโค้ด (ย่อมาจากoperation code ) [ 1 ] [ 2 ]คือค่าที่กำหนดไว้ซึ่งระบุการดำเนินการที่จะดำเนินการ โอพโค้ดถูกนำไปใช้ในอุปกรณ์ฮาร์ดแวร์ เช่นหน่วยคำนวณและ ตรรกะ (ALU) หน่วยประมวลผลกลาง (CPU) และชุดคำสั่งซอฟต์แวร์ ใน ALU โอพโค้ดจะถูกนำไปใช้กับวงจรโดยตรงผ่านทางบัสสัญญาณอินพุต ในทางตรงกันข้าม ใน CPU โอพโค้ดเป็นส่วนหนึ่งของคำสั่งภาษาเครื่อง ที่ระบุการดำเนินการที่จะดำเนินการ
ซีพียู
โอเปอเรเตอร์โค้ดพบได้ในคำสั่งภาษาเครื่องของซีพียู รวมถึงในเครื่องคำนวณนามธรรม บางเครื่อง ในซีพียู โอเปอเรเตอร์โค้ดอาจถูกเรียกว่ารหัสเครื่องคำสั่ง [ 3 ] รหัสคำสั่ง [ 4 ] พยางค์ คำสั่ง[ 5 ] [ 6 ] [ 7 ] [ 8 ]กลุ่มคำสั่งหรือโอเปอเรเตอร์สตริง [ 9 ] [ 2 ] สำหรับ โปรเซสเซอร์ใดๆ (ซึ่งอาจเป็นซีพียูทั่วไปหรือหน่วยประมวลผลเฉพาะทาง) โอเปอเรเตอร์โค้ดจะถูกกำหนดโดย สถาปัตยกรรมชุดคำสั่ง (ISA) ของโปรเซสเซอร์[ 10 ]สามารถอธิบายได้โดยใช้ตารางโอเปอเรเตอร์โค้ดประเภทของการดำเนินการอาจรวมถึง การคำนวณ ทางคณิตศาสตร์การคัดลอกข้อมูลการดำเนินการทางตรรกะการควบคุมโปรแกรม และคำสั่งพิเศษ (เช่นCPUID ) [ 10 ]
นอกจากรหัสการทำงานแล้ว คำสั่งหลายคำสั่งยังระบุข้อมูล (เรียกว่าตัวถูกดำเนินการ ) ที่การดำเนินการจะกระทำ แม้ว่าบางคำสั่งอาจมีตัวถูกดำเนินการโดยปริยายหรือไม่มีเลยก็ตาม[ 10 ]ชุดคำสั่งบางชุดมีฟิลด์ที่เกือบจะเหมือนกันสำหรับตัวระบุรหัสการทำงานและตัวถูกดำเนินการ ในขณะที่ชุดคำสั่งอื่นๆ (เช่น สถาปัตยกรรม x86 ) มีโครงสร้างที่ไม่สม่ำเสมอและมีความยาวแปรผัน[ 10 ] [ 11 ]ชุดคำสั่งสามารถขยายได้ผ่านคำนำหน้ารหัสการทำงานซึ่งเพิ่มชุดย่อยของคำสั่งใหม่ที่ประกอบด้วยรหัสการทำงานที่มีอยู่ตามหลังลำดับไบต์ที่สงวนไว้[ 12 ]
ตารางตัวอย่างโอเปอเรเตอร์โค้ด
ตารางนี้แสดงรหัสคำสั่ง (opcode) ของไมโครโปรเซสเซอร์ 8 บิตแบบง่ายๆ คือIntel 8008จากปี 1972
แต่ละโอเปอเรชันโค้ดมีความยาว 8 บิตโดยแสดงเป็น รูปแบบ ไบนารีของเลข 1 และ 0 ใน คอลัมน์ โอเปอเรชันโค้ดอาจมีฟิลด์เพิ่มเติมได้สูงสุดสองฟิลด์ฝังอยู่ในโอเปอเรชันโค้ด ฟิลด์ 3 บิตบางฟิลด์จะมีป้ายกำกับว่า DDD, SSS, CC และ ALU ฟิลด์ SSS (แหล่งที่มา) และ DDD (ปลายทาง) ระบุรีจิสเตอร์หรือหน่วยความจำ 8008 หนึ่งในแปดแบบที่เป็นไปได้ ได้แก่ A, B, C, D, E, H, L หรือ M ฟิลด์ CC ระบุเงื่อนไขผลลัพธ์หนึ่งในแปดแบบที่จะเปิดใช้งานคำสั่ง JMP, CAL และ RET บางคำสั่ง ฟิลด์ ALU ระบุ ฟังก์ชัน หน่วยคำนวณและ ตรรกะหนึ่งในแปดแบบที่เป็นไปได้ ที่จะดำเนินการระหว่างคำสั่ง ได้แก่ การบวก การบวกพร้อมตัวทด การลบ การลบพร้อมการยืม AND เชิงตรรกะ XOR เชิงตรรกะ OR เชิงตรรกะ และการเปรียบเทียบ ตัวอักษรX ในบางฟิลด์หมายความว่าสามารถใส่เลข 1 หรือ 0 ได้โดย ไม่มีผลใดๆ
เลขหนึ่งและศูนย์ที่กำหนดไว้จะถูกรวมเข้ากับฟิลด์พารามิเตอร์เพื่อสร้างโอเปอเรเตอร์โค้ด 8 บิต นอกจากนี้ คำสั่งทั้งหมดอาจต้องการตัวถูกดำเนินการ เพิ่มเติมอีกหนึ่งหรือสองไบต์ ซึ่งแสดงอยู่ในคอลัมน์หลักที่สองของตารางที่มีชื่อว่าตัวถูกดำเนินการหากไม่ต้องการตัวถูกดำเนินการ คอลัมน์นั้นจะถูกเติมด้วยเครื่องหมายขีด (—)
เนื่องจากเลขหนึ่งและศูนย์นั้นจำยาก คอลัมน์ ตัวช่วย จำ จึงแสดงรหัสตัวอักษรสั้นๆ ที่จำง่าย ซึ่ง โปรแกรมเมอร์ ภาษาแอสเซมบลีสามารถใช้เพื่อเรียกใช้โอเปอเรชันโค้ดที่ต้องการได้
คอลัมน์คำอธิบายแสดงฟังก์ชันที่ไมโครโปรเซสเซอร์ดำเนินการเมื่อพบรหัสคำสั่งเฉพาะ
| รหัสปฏิบัติการ | ตัวถูกดำเนินการ | ตัวช่วยจำ | คำอธิบาย | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | บี2 | บี3 | |||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | — | — | เอชแอลที | หยุด | |
| 0 | 0 | ดีดีดี | 0 | 0 | 0 | — | — | อินอาร์ | DDD ← DDD + 1 (ยกเว้น A และ M) | |||
| 0 | 0 | ดีดีดี | 0 | 0 | 1 | — | — | ดีซีอาร์ | DDD ← DDD - 1 (ยกเว้น A และ M) | |||
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | — | — | อาร์แอลซี | A 1-7 ← A 0-6 ; A 0 ← Cy ← A 7 | |
| 0 | 0 | ซีซี | 0 | 1 | 1 | — | — | Rcc (เงื่อนไข RET) | ถ้า cc เป็นจริง P ← (สแต็ก) | |||
| 0 | 0 | อลู | 1 | 0 | 0 | ข้อมูล | — | ข้อมูล ADI ACI SUI SBI NDI XRI ORI CPI | ข้อมูล A ← A [การดำเนินการ ALU] | |||
| 0 | 0 | เอ็น | 1 | 0 | 1 | — | — | อาร์เอสทีเอ็น | (ซ้อน) ← P, P ← N x 8 | |||
| 0 | 0 | ดีดีดี | 1 | 1 | 0 | ข้อมูล | — | ข้อมูล LrI (โหลด r ด้วยข้อมูลทันที) | DDD ← ข้อมูล | |||
| 0 | 0 | X | X | X | 1 | 1 | 1 | — | — | เรท | P ← (ซ้อน) | |
| 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | — | — | อาร์อาร์ซี | A 0-6 ← A 1-7 ; A 7 ← Cy ← A 0 | |
| 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | — | — | ราล | A 1-7 ← A 0-6 ; Cy ← A 7 ; A 0 ← Cy | |
| 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | — | — | อาร์อาร์ | A 0-6 ← A 1-7 ; Cy ← A 0 ; A 7 ← Cy | |
| 0 | 1 | ซีซี | 0 | 0 | 0 | แอดโล | อัดฮี | Jcc add (JMP conditional) | ถ้า cc เป็นจริง P ← เพิ่ม | |||
| 0 | 1 | 0 | 0 | ท่าเรือ | 1 | — | — | พอร์ต INP | พอร์ต A ← (เฉพาะพอร์ต 0-7) | |||
| 0 | 1 | ท่าเรือ | 1 | — | — | พอร์ต OUT | พอร์ต ← A (เฉพาะพอร์ต 8-31 เท่านั้น) | |||||
| 0 | 1 | ซีซี | 0 | 1 | 0 | แอดโล | อัดฮี | Ccc add (CAL conditional) | ถ้า cc เป็นจริง (stack) ← P, P ← add | |||
| 0 | 1 | X | X | X | 1 | 0 | 0 | แอดโล | อัดฮี | JMP เพิ่ม | P ← เพิ่ม | |
| 0 | 1 | X | X | X | 1 | 1 | 0 | แอดโล | อัดฮี | แคลเพิ่ม | (ซ้อน) ← P, P ← เพิ่ม | |
| 1 | 0 | อลู | เอสเอสเอส | — | — | ADr ACr SUr SBr NDr XRr OR CPR | A ← A [การดำเนินการ ALU] SSS | |||||
| 1 | 1 | ดีดีดี | เอสเอสเอส | — | — | Lds (โหลด d ด้วย s) | DDD ← SSS | |||||
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | — | — | เอชแอลที | หยุด | |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | บี2 | บี3 | ตัวช่วยจำ | คำอธิบาย | |
| เอสเอสเอส ดีดีดี | 2 | 1 | 0 | ซีซี | อลู | |||||||
| เอ | 0 | 0 | 0 | เอฟซี, ซี เท็จ | ADr ADI (A ← A + arg) | |||||||
| บี | 0 | 0 | 1 | FZ, Z เท็จ | ACr ACI (A ← A + arg + Cy) | |||||||
| ซี | 0 | 1 | 0 | FS, S เท็จ | SUr SUI (A ← A - arg) | |||||||
| ดี | 0 | 1 | 1 | FP, P คี่ | SBr SBI (A ← A - arg - Cy) | |||||||
| อี | 1 | 0 | 0 | ทีซี ซี จริง | NDr NDI (A ← A ∧ arg) | |||||||
| ชม | 1 | 0 | 1 | TZ, Z จริง | XRr XRI (A ← A ⊻ arg) | |||||||
| แอล | 1 | 1 | 0 | TS, S จริง | ORr ORI (A ← A ∨ arg) | |||||||
| เอ็ม | 1 | 1 | 1 | TP, P เท่ากัน | CPr CPI (A - arg) | |||||||
| เอสเอสเอส ดีดีดี | 2 | 1 | 0 | ซีซี | อลู | |||||||
ชุดคำสั่งซอฟต์แวร์
Opcode สามารถพบได้ในbytecodeและการแสดงผลอื่นๆ ที่มีไว้สำหรับการประมวลผลโดยตัวแปลซอฟต์แวร์ โดยทั่วไปแล้วจะใช้ประเภทข้อมูลและการดำเนินการระดับสูงกว่าเล็กน้อยเมื่อเทียบกับที่พบใน opcode ของฮาร์ดแวร์ แต่ก็ยังถูกสร้างขึ้นในลักษณะที่คล้ายคลึงกัน ตัวอย่างเช่น bytecode ที่พบในไฟล์คลาส Javaซึ่งถูกตีความโดย เครื่องเสมือน Java , bytecode ที่ใช้ในGNU Emacsสำหรับ โค้ด Lisp ที่คอมไพล์แล้ว และ NET Common Intermediate Language [ 13 ]
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ รหัสปฏิบัติการ
ใน ด้านการคำนวณ โอ พโค้ด (ย่อมาจาก operation code ) [ 1 ] [ 2 ] คือ ค่าที่กำหนดไว้ ซึ่งระบุการดำเนินการที่จะดำเนินการ โอพโค้ดถูกนำไปใช้ในอุปกรณ์ฮาร์ดแวร์ เช่น หน่วยคำนวณและ ตรรกะ...
ซีพียู
โอเปอเรเตอร์โค้ดพบได้ในคำสั่งภาษาเครื่องของซีพียู รวมถึงใน เครื่องคำนวณนามธรรม บางเครื่อง ในซีพียู โอเปอเรเตอร์โค้ดอาจถูกเรียกว่า รหัสเครื่องคำสั่ง [ 3 ] รหัส คำสั่ง [ 4 ] พยางค์ คำ สั่ง [ 5 ] [ 6 ] [ 7 ] [ 8 ] กลุ่มคำสั่ง หรือ โอเปอเรเตอร์สตริง [ 9 ] [ 2 ]...
ตารางตัวอย่างโอเปอเรเตอร์โค้ด
ตารางนี้แสดงรหัสคำสั่ง (opcode) ของไมโครโปรเซสเซอร์ 8 บิตแบบง่ายๆ คือ Intel 8008 จากปี 1972
ชุดคำสั่งซอฟต์แวร์
Opcode สามารถพบได้ใน bytecode และการแสดงผลอื่นๆ ที่มีไว้สำหรับการประมวลผลโดยตัวแปลซอฟต์แวร์ โดยทั่วไปแล้วจะใช้ประเภทข้อมูลและการดำเนินการระดับสูงกว่าเล็กน้อยเมื่อเทียบกับที่พบใน opcode ของฮาร์ดแวร์ แต่ก็ยังถูกสร้างขึ้นในลักษณะที่คล้ายคลึงกัน ตัวอย่างเช่น...