อ่าน 9 นาที
รหัสเครื่อง
ใน ด้านการคำนวณ รหัส เครื่อง คือ ข้อมูล ที่เข้ารหัส และจัดโครงสร้างเพื่อควบคุม หน่วยประมวลผลกลาง (CPU) ของ คอมพิวเตอร์ ผ่าน อินเทอร์เฟซ ที่สามารถตั้งโปรแกรมได้ โปรแกรม คอมพิวเตอร์...
รหัสเครื่อง

| การดำเนินการตามโปรแกรม |
|---|
| แนวคิดทั่วไป |
| ประเภทของโค้ด |
| กลยุทธ์การรวบรวม |
| ระยะเวลาการวิ่งที่น่าสนใจ |
|
| คอมไพเลอร์และชุดเครื่องมือที่โดดเด่น |
ในด้านการคำนวณรหัสเครื่องคือข้อมูลที่เข้ารหัสและจัดโครงสร้างเพื่อควบคุมหน่วยประมวลผลกลาง (CPU) ของคอมพิวเตอร์ ผ่าน อินเทอร์เฟซ ที่สามารถตั้งโปรแกรมได้ โปรแกรมคอมพิวเตอร์ประกอบด้วยลำดับของคำสั่งรหัสเครื่องเป็นหลัก[ 1 ]รหัสเครื่องจัดอยู่ในประเภทดั้งเดิมเมื่อเทียบกับ CPU โฮสต์ เนื่องจากเป็นภาษาที่ CPU ตีความโดยตรง[ 2 ]โปรแกรมแปล ภาษา บางตัวจะ แปลภาษาโปรแกรมที่ตีความให้เป็นรหัสเครื่องเสมือน ( ไบต์โค้ด ) และประมวลผลด้วยเครื่อง P-code
คำสั่งรหัสเครื่องจะทำให้ซีพียูทำงานเฉพาะอย่าง เช่น:
- โหลดคำจากหน่วยความจำไปยังรีจิสเตอร์ของซีพียู
- ดำเนิน การ คำนวณทางคณิตศาสตร์และตรรกะ (ALU) กับรีจิสเตอร์หรือตำแหน่งหน่วยความจำตั้งแต่หนึ่งตำแหน่งขึ้นไป
- ข้ามหรือกระโดกไปยังคำสั่งที่ไม่ใช่คำสั่งถัดไป
สถาปัตยกรรม ชุดคำสั่ง (ISA) กำหนดอินเทอร์เฟซสำหรับซีพียู และแตกต่างกันไปตามกลุ่มหรือตระกูลของการออกแบบซีพียู เช่นx86และARMโดยทั่วไปแล้ว รหัสเครื่องที่เข้ากันได้กับตระกูลหนึ่งจะไม่สามารถเข้ากันได้กับตระกูลอื่น แต่ก็มีข้อยกเว้น สถาปัตยกรรม VAXมีการรองรับชุดคำสั่ง PDP-11 เป็นตัวเลือก สถาปัตยกรรม IA -64มีการรองรับ ชุดคำสั่ง IA-32 เป็นตัวเลือก และPowerPC 615 สามารถประมวลผลคำสั่งทั้ง PowerPCและ x86 ได้โดยตรง
ภาษาแอสเซมบลี

ภาษาแอสเซมบลีให้การแมปโดยตรงจากซอร์สโค้ดที่มนุษย์อ่านได้ ไปยังโค้ดเครื่อง ภาษาแอสเซมบลีแสดงรหัสตัวเลขในโค้ดเครื่องในรูปแบบของตัวย่อและป้ายกำกับ[ 3 ]ตัวอย่างเช่นในภาษาแอสเซมบลีสำหรับ โปรเซสเซอร์ x86 จะแสดง รหัสปฏิบัติการสถาปัตยกรรม x86 0x90 ในโค้ดเครื่อง แม้ว่าจะเป็นไปได้ที่จะเขียนโปรแกรมในโค้ดเครื่อง แต่การทำเช่นนั้นยุ่งยากและมีโอกาสเกิดข้อผิดพลาดสูง ดังนั้น โปรแกรมจึงมักเขียนด้วยภาษาแอสเซมบลี หรือที่พบได้บ่อยกว่าคือในภาษา โปรแกรมระดับสูงNOP
ชุดคำสั่ง
คำสั่งเครื่องจะเข้ารหัสการดำเนินการเป็นรูปแบบของบิตตามรูปแบบที่กำหนดไว้สำหรับชุดคำสั่งของเครื่อง[ nb 1 ] [ 4 ]
ชุดคำสั่งแตกต่างกันในหลายด้าน คำสั่งในชุดอาจมีความยาวเท่ากันทั้งหมด หรือคำสั่งที่แตกต่างกันอาจมีความยาวต่างกัน อาจมีขนาดเล็กกว่า เท่ากับ หรือใหญ่กว่า ขนาด คำของสถาปัตยกรรม จำนวนคำสั่งอาจมีขนาดเล็กหรือใหญ่ คำสั่งอาจไม่จำเป็นต้องจัดเรียงตามขอบเขตหน่วยความจำเฉพาะ เช่น ขอบเขตคำของสถาปัตยกรรม[ 4 ]
ชุดคำสั่งจำเป็นต้องดำเนินการวงจรของระดับตรรกะดิจิทัล ของคอมพิวเตอร์ ที่ระดับดิจิทัล โปรแกรมจำเป็นต้องควบคุมรีจิสเตอร์ บัส หน่วยความจำ ALU และส่วนประกอบฮาร์ดแวร์อื่นๆ ของคอมพิวเตอร์[ 5 ] เพื่อควบคุมคุณลักษณะ ทางสถาปัตยกรรมของคอมพิวเตอร์จึงมีการสร้างคำสั่งเครื่องขึ้น ตัวอย่างของคุณลักษณะที่ถูกควบคุมโดยใช้คำสั่งเครื่อง ได้แก่:
เกณฑ์สำหรับรูปแบบการสอนประกอบด้วย:
- คำแนะนำที่ใช้บ่อยที่สุดควรสั้นกว่าคำแนะนำที่ใช้ไม่บ่อย[ 4 ]
- อัตราการถ่ายโอนข้อมูลของหน่วยความจำในฮาร์ดแวร์พื้นฐานจะเป็นตัวกำหนดความยืดหยุ่นของคำสั่งดึงข้อมูลจากหน่วยความจำ
- จำนวนบิตในฟิลด์ที่อยู่ต้องได้รับการพิจารณาเป็นพิเศษ[ 9 ]
การกำหนดขนาดของฟิลด์ที่อยู่เป็นการเลือกระหว่างพื้นที่และความเร็ว[ 9 ]ในคอมพิวเตอร์บางเครื่อง จำนวนบิตในฟิลด์ที่อยู่อาจน้อยเกินไปที่จะเข้าถึงหน่วยความจำทางกายภาพทั้งหมด นอกจากนี้ยัง ต้องพิจารณา พื้นที่ที่อยู่เสมือนด้วยข้อจำกัดอีกประการหนึ่งอาจเป็นข้อจำกัดเกี่ยวกับขนาดของรีจิสเตอร์ที่ใช้ในการสร้างที่อยู่ ในขณะที่ฟิลด์ที่อยู่สั้นกว่าช่วยให้คำสั่งทำงานได้เร็วขึ้น แต่จำเป็นต้องพิจารณาคุณสมบัติทางกายภาพอื่นๆ เมื่อออกแบบรูปแบบคำสั่ง
คำสั่งสามารถแบ่งออกเป็นสองประเภท: คำสั่งทั่วไปและคำสั่งเฉพาะทาง คำสั่งเฉพาะทางใช้ประโยชน์จากคุณสมบัติทางสถาปัตยกรรมที่เป็นเอกลักษณ์เฉพาะของคอมพิวเตอร์ คำสั่งทั่วไปควบคุมคุณสมบัติทางสถาปัตยกรรมที่พบได้ทั่วไปในคอมพิวเตอร์ทุกเครื่อง[ 10 ]
คำสั่งควบคุมทั่วไป:
- การเคลื่อนย้ายข้อมูลจากที่หนึ่งไปยังอีกที่หนึ่ง
- การดำเนินการแบบเอกภาคที่มีตัวถูกดำเนินการ หนึ่งตัว เพื่อสร้างผลลัพธ์
- การดำเนินการแบบทวิภาคที่มีตัวถูกดำเนินการสองตัวเพื่อสร้างผลลัพธ์
- การเปรียบเทียบและการกระโดดแบบมีเงื่อนไข
- การเรียกใช้ขั้นตอน
- การควบคุมลูป
- อินพุต/เอาต์พุต
การสอนที่ซ้อนทับกัน
บนสถาปัตยกรรมโปรเซสเซอร์ที่มีชุดคำสั่งความยาวแปรผัน[ 11 ] (เช่น ตระกูลโปรเซสเซอร์ x86ของIntel ) ภายในขอบเขตของปรากฏการณ์การซิงโครไนซ์การ ไหลของควบคุม ที่เรียกว่าจำนวน Kruskal [ 12 ] [ 11 ] [ 13 ] [ 14 ] [ 15 ]บางครั้งเป็นไปได้ผ่านการเขียนโปรแกรมระดับโอเปอเรเตอร์โค้ดเพื่อจัดเรียงโค้ดที่ได้เพื่อให้เส้นทางโค้ดสองเส้นทางใช้ส่วนของลำดับโอเปอเรเตอร์โค้ดร่วมกัน[ nb 2 ]สิ่งเหล่านี้เรียกว่าคำสั่งที่ทับซ้อนกันโอ เปอเรเตอร์โค้ด ที่ทับซ้อนกัน โค้ดที่ทับซ้อนกันโค้ดที่ซ้อนทับการแยกคำสั่งหรือการกระโดดเข้าไปตรงกลางของคำสั่ง[ 16 ] [ 17 ] [ 18 ]
ในช่วงทศวรรษ 1970 และ 1980 บางครั้งมีการใช้คำสั่งที่ซ้อนทับกันเพื่อประหยัดพื้นที่หน่วยความจำ ตัวอย่างหนึ่งคือการใช้งานตารางข้อผิดพลาดในAltair BASICของMicrosoftซึ่งคำสั่งที่สลับกันจะใช้ไบต์คำสั่งร่วมกัน[ 19 ] [ 11 ] [ 16 ]เทคนิคนี้ไม่ค่อยได้ใช้ในปัจจุบัน แต่ก็อาจยังจำเป็นต้องใช้ในพื้นที่ที่ต้องการการเพิ่มประสิทธิภาพอย่างมากสำหรับขนาดในระดับไบต์ เช่น ในการใช้งานบูตโหลดเดอร์ที่ต้องพอดีกับ เซก เตอร์บูต[ nb 3 ]
บางครั้งยังใช้เป็น เทคนิค การปกปิดรหัสเพื่อป้องกันการถอดประกอบและการดัดแปลง อีกด้วย [ 11 ] [ 14 ]
หลักการนี้ยังใช้ในลำดับรหัสที่ใช้ร่วมกันของไบนารีขนาดใหญ่ซึ่งต้องทำงานบนแพลตฟอร์มโปรเซสเซอร์หลายแพลตฟอร์มที่ไม่เข้ากันกับชุดคำสั่ง[ nb 2 ]
คุณสมบัตินี้ยังใช้เพื่อค้นหาคำสั่งที่ไม่ได้ตั้งใจที่เรียกว่าgadgetในที่เก็บโค้ดที่มีอยู่ และใช้ในการเขียนโปรแกรมแบบ return-orientedเป็นทางเลือกแทนการฉีดโค้ดสำหรับการโจมตี เช่น การโจมตี return-to - libc [ 20 ] [ 11 ]
ไมโครโค้ด
ในคอมพิวเตอร์บางเครื่อง รหัสเครื่องของสถาปัตยกรรมจะถูกนำไปใช้โดยเลเยอร์พื้นฐานที่เรียกว่าไมโครโค้ดซึ่งให้ส่วนต่อประสานภาษาเครื่องทั่วไปในตระกูลหรือกลุ่มของคอมพิวเตอร์รุ่นต่างๆ ที่มีกระแสข้อมูล พื้นฐานที่แตกต่างกันอย่างมาก การทำเช่นนี้เพื่ออำนวยความสะดวก ใน การพอร์ตโปรแกรมภาษาเครื่องระหว่างรุ่นต่างๆ[ 21 ]ตัวอย่างของการใช้งานนี้คือตระกูลคอมพิวเตอร์ IBM System/360 และรุ่นต่อๆ มา [ 22 ]
ตัวอย่าง
ไอบีเอ็ม 650


IBM 650ซึ่งเปิดตัวในปี พ.ศ. 2497 เป็นคอมพิวเตอร์แบบใช้เลขฐานสิบและระบุตำแหน่งคำ โดยมีคำสั่งและข้อมูลจัดเก็บไว้บนดรัมแม่เหล็ก แต่ละคำประกอบด้วยตัวเลขสิบหลักบวกเครื่องหมาย คำสั่งจะแบ่งคำออกเป็นรหัสการทำงานสองหลัก ที่อยู่สี่หลักของคำข้อมูลที่จะประมวลผล และที่อยู่สี่หลักของคำสั่งถัดไปที่จะดำเนินการ ที่อยู่ที่สองนี้ช่วยให้สามารถวางคำสั่งบนดรัมใกล้กับตำแหน่งที่ดรัมจะอยู่หลังจากคำสั่งก่อนหน้าเสร็จสิ้น ซึ่งเป็นแนวทางปฏิบัติที่เรียกว่าการเพิ่มประสิทธิภาพ[ 23 ]
ด้วยความช่วยเหลือจากตารางรหัสคำสั่งทางกายภาพ การเขียนโปรแกรมด้วยรหัสเครื่องจึงเป็นไปได้ค่อนข้างมาก IBM จัดเตรียมแบบฟอร์มที่มีตารางแสดงตำแหน่งหน่วยความจำแต่ละตำแหน่ง เพื่อให้โปรแกรมเมอร์สามารถติดตามได้ว่าตำแหน่งใดบ้างที่ยังว่างอยู่ มีรูปแบบคำสั่งเดียวต่อการ์ดที่สามารถโหลดลงในเครื่องและประมวลผลได้โดยตรง ต่อมา IBM ได้แนะนำแอสเซมเบลอร์ (SOAP) ที่อนุญาตให้ใช้ที่อยู่เชิงสัญลักษณ์และยังทำการปรับปรุงประสิทธิภาพอย่างคร่าวๆ อีกด้วย
ไอบีเอ็ม 709x
หน่วย ประมวลผล IBM 704, 709, 704x และ 709xเก็บคำสั่งหนึ่งคำสั่งในแต่ละคำคำสั่ง โดย IBM จะกำหนดหมายเลขบิตจากซ้ายเป็น S, 1, ..., 35 คำสั่งส่วนใหญ่มีรูปแบบใดรูปแบบหนึ่งจากสองรูปแบบนี้:
- ทั่วไป
- S,1-11
- 12-13 ธง ซึ่งถูกละเลยในคำแนะนำบางข้อ
- 14-17 ไม่ได้ใช้
- แท็ก 18-20
- 21-35 ปี
- การควบคุมการลงทะเบียนดัชนี นอกเหนือจาก TSX
- รหัสปฏิบัติการ S,1-2
- 3-17 การลดลง
- แท็ก 18-20
- 21-35 ปี
สำหรับเครื่องคำนวณทุกรุ่นยกเว้นIBM 7094และ 7094 II จะมีรีจิสเตอร์ดัชนีสามตัวที่กำหนดไว้เป็น A, B และ C การเข้าถึงดัชนีด้วยบิต 1 หลายบิตในแท็กจะลบค่าตรรกะ ORของรีจิสเตอร์ดัชนีที่เลือก และการโหลดด้วยบิต 1 หลายบิตในแท็กจะโหลดรีจิสเตอร์ดัชนีที่เลือกทั้งหมด เครื่องคำนวณ 7094 และ 7094 II มีรีจิสเตอร์ดัชนีเจ็ดตัว แต่เมื่อเปิดเครื่อง เครื่องจะอยู่ในโหมดหลายแท็กซึ่งจะใช้เพียงสามรีจิสเตอร์ดัชนีในลักษณะที่เข้ากันได้กับเครื่องรุ่นก่อนหน้า และต้องใช้คำสั่ง Leave Multiple Tag Mode ( LMTM ) เพื่อเข้าถึงรีจิสเตอร์ดัชนีอีกสี่ตัวที่เหลือ
โดยปกติแล้ว ที่อยู่ที่มีประสิทธิภาพคือ YC(T) โดยที่ C(T) จะเป็น 0 สำหรับแท็กเป็น 0 หรือเป็นผลการดำเนินการเชิงตรรกะ OR ของรีจิสเตอร์ดัชนีที่เลือกในโหมดหลายแท็ก หรือเป็นรีจิสเตอร์ดัชนีที่เลือกหากไม่ได้อยู่ในโหมดหลายแท็ก อย่างไรก็ตาม ที่อยู่ที่มีประสิทธิภาพสำหรับคำสั่งควบคุมรีจิสเตอร์ดัชนีคือ Y เท่านั้น
แฟล็กที่มีบิตทั้งสองเป็น 1 จะเลือกใช้การกำหนดแอดเดรสแบบทางอ้อม โดยคำแอดเดรสแบบทางอ้อมจะมีทั้งแท็กและฟิลด์ Y
นอกจาก คำสั่ง ถ่ายโอน (สาขา) แล้ว เครื่องเหล่านี้ยังมีคำสั่งข้ามที่ข้ามคำหนึ่งหรือสองคำแบบมีเงื่อนไข เช่น คำสั่งเปรียบเทียบค่าสะสมกับหน่วยเก็บข้อมูล (CAS) จะทำการเปรียบเทียบสามทางและข้ามไปยัง NSI, NSI+1 หรือ NSI+2 แบบมีเงื่อนไข ขึ้นอยู่กับผลลัพธ์
เอ็มไอพีเอส
สถาปัตยกรรมMIPSเป็นตัวอย่างเฉพาะของรหัสเครื่องที่มีคำสั่งยาว 32 บิตเสมอ[ 24 ] : 299 ประเภททั่วไปของคำสั่งจะกำหนดโดย ฟิลด์ op (การดำเนินการ) ซึ่งเป็น 6 บิตสูงสุด คำสั่งประเภท J (กระโดด) และประเภท I (ค่าคงที่) จะถูกระบุอย่างครบถ้วนโดยop คำสั่งประเภท R (รีจิสเตอร์) จะมีฟิลด์ funct (ฟังก์ชัน) เพิ่มเติมเพื่อกำหนดการดำเนินการที่แน่นอน ฟิลด์ที่ใช้ในประเภทเหล่านี้คือ:
| พิมพ์ | -31- รูปแบบ (บิต) -0- | |||||
|---|---|---|---|---|---|---|
| อาร์ | opcode (6) | rs (5) | rt (5) | rd (5) | ชามต์ (5) | ฟังก์ชัน (6) |
| ฉัน | opcode (6) | rs (5) | rt (5) | ทันที (16) | ||
| เจ | opcode (6) | ที่อยู่ (26) | ||||
rs , rtและrdระบุตัวดำเนินการรีจิสเตอร์; shamtให้ค่าการเลื่อน และ ฟิลด์ ที่อยู่หรือ ฟิลด์ค่า คงที่ประกอบด้วยตัวดำเนินการโดยตรง[ 24 ] : 299–301
ตัวอย่างเช่น การบวกค่าในรีจิสเตอร์ 1 และ 2 แล้วนำผลลัพธ์ไปใส่ในรีจิสเตอร์ 6 จะถูกเข้ารหัสเป็น: [ 24 ] : 554
[ op | rs | rt | rd |shamt| funct] 0 1 2 6 0 32 ทศนิยม 000000 00001 00010 00110 00000 100000 ไบนารี
โหลดค่าลงในรีจิสเตอร์ 8 โดยดึงค่าจากเซลล์หน่วยความจำที่อยู่ห่างจากตำแหน่งที่ระบุในรีจิสเตอร์ 3 ไป 68 เซลล์: [ 24 ] : 552
[ op | rs | rt | address/immediate] 35 3 8 68 เลขฐานสิบ 100011 00011 01000 00000 00001 000100 ไบนารี
กระโดดไปยังที่อยู่ 1024: [ 24 ] : 552
[ op | ที่อยู่เป้าหมาย ] 2 1024 ทศนิยม 000010 00000 00000 00000 10000 000000 ไบนารี
ไบต์โค้ด
รหัสเครื่อง (Machine code) มีลักษณะคล้ายคลึงกับรหัสไบต์ (Bytecode ) แต่ก็แตกต่างกันโดยพื้นฐาน เช่นเดียวกับรหัสเครื่อง รหัสไบต์มักถูกสร้างขึ้น (เช่น โดยคอมไพเลอร์) จากรหัสต้นฉบับ แต่แตกต่างจากรหัสเครื่องตรงที่ รหัสไบต์ไม่สามารถประมวลผลโดยตรงโดยซีพียูได้ ยกเว้นในกรณีที่โปรเซสเซอร์ถูกออกแบบมาให้ใช้รหัสไบต์เป็นรหัสเครื่อง เช่นPascal MicroEngineหรือโปรเซสเซอร์ Javaหากรหัสไบต์ถูกประมวลผลโดยตัวแปลภาษาซอฟต์แวร์ ตัวแปลภาษานั้นก็คือเครื่องเสมือน (Virtual machine)ซึ่งรหัสไบต์เป็นรหัสเครื่องของเครื่องเสมือนนั้น
พื้นที่จัดเก็บ
ระหว่างการดำเนินการ รหัสเครื่องโดยทั่วไปจะถูกเก็บไว้ใน RAM แม้ว่าอุปกรณ์บางชนิดจะรองรับการทำงานจาก ROM ก็ตาม อย่างไรก็ตาม รหัสอาจถูกแคชไว้ในหน่วยความจำเฉพาะเพื่อเพิ่มประสิทธิภาพ อาจมีแคชที่แตกต่างกันสำหรับคำสั่งและข้อมูล ขึ้นอยู่กับสถาปัตยกรรม[ 25 ]
จากมุมมองของกระบวนการรหัสเครื่องจะอยู่ในพื้นที่รหัสซึ่งเป็นส่วนที่กำหนดไว้ของพื้นที่แอดเดรสใน สภาพแวดล้อม มัลติเธรดดิ้ง เธรดต่างๆ ของกระบวนการหนึ่งๆ จะใช้พื้นที่รหัสร่วมกับพื้นที่ข้อมูล ซึ่งช่วยลดภาระการสลับบริบทได้อย่างมากเมื่อเทียบกับการสลับกระบวนการ[ 26 ]
ความอ่านง่าย
โดยทั่วไปแล้ว รหัสเครื่องถือว่าไม่สามารถอ่านได้โดยมนุษย์[ 27 ]โดยDouglas HofstadterเปรียบเทียบกับการตรวจสอบอะตอมของโมเลกุลDNA [ 28 ]อย่างไรก็ตาม เครื่องมือและวิธีการต่างๆ สนับสนุนการทำความเข้าใจรหัสเครื่อง
การถอดประกอบจะถอดรหัสรหัสเครื่องเป็นภาษาแอสเซมบลี ซึ่งเป็นไปได้เนื่องจากคำสั่งแอสเซมบลีมักจะสามารถจับคู่กับคำสั่งเครื่องแบบหนึ่งต่อหนึ่งได้[ 29 ]
โปรแกรมดีคอมไพเลอร์จะแปลงรหัสเครื่องให้เป็นภาษาโปรแกรมระดับสูงแต่ผลลัพธ์ที่ได้อาจค่อนข้างซับซ้อน (เข้าใจยาก)
โปรแกรมสามารถเชื่อมโยงกับสัญลักษณ์ดีบัก (ไม่ว่าจะฝังอยู่ในไฟล์ปฏิบัติการดั้งเดิมหรือในไฟล์แยกต่างหาก) ซึ่งช่วยให้สามารถแมปไปยังซอร์สโค้ดภายนอกได้ โปรแกรมดีบัก จะอ่านสัญลักษณ์เหล่านี้เพื่อช่วยให้นักเขียนโปรแกรม ดีบัก โปรแกรม แบบโต้ตอบได้ตัวอย่างเช่น:
- ระบบปฏิบัติการ SHARE (ปี 1959) สำหรับ คอมพิวเตอร์ IBM 709 , IBM 7090และIBM 7094อนุญาตให้ใช้รูปแบบโค้ดที่โหลดได้ชื่อSQUOZE SQUOZE เป็นรูปแบบไบนารีแบบบีบอัดของ โค้ด ภาษาแอสเซมบลีและมีตารางสัญลักษณ์รวมอยู่ด้วย
- ระบบปฏิบัติการเมนเฟรม IBM สมัยใหม่เช่นz/OSมีตารางสัญลักษณ์ที่เรียกว่าAssociated data (ADATA) ตารางนี้จัดเก็บอยู่ในไฟล์ที่สามารถสร้างได้โดยIBM High-Level Assembler (HLASM) [ 30 ] [ 31 ]คอมไพเลอร์COBOLของ IBM [ 32 ] และ คอมไพเลอร์PL/Iของ IBM [ 33 ]ไม่ว่าจะเป็นไฟล์ SYSADATA แยกต่างหากหรือเป็นเรคอร์ด ADATA ในไฟล์เอาต์พุตวัตถุทั่วไป (GOFF) [ 34 ]ซึ่งทำให้เรคอร์ด TEST จากOS/360 ล้าสมัยไป แม้ว่าจะยังสามารถร้องขอและใช้งานใน คำสั่ง TSO TEST ได้ก็ตาม
- Windowsใช้ตารางสัญลักษณ์[ 35 ]ซึ่งจัดเก็บไว้ใน ไฟล์ ฐานข้อมูลโปรแกรม ( .pdb ) [ 36 ]
- ระบบปฏิบัติการที่คล้าย Unixส่วนใหญ่ มีรูปแบบตารางสัญลักษณ์ที่ใช้งานได้ ซึ่งเรียกว่า stabsและDWARFในmacOSและระบบปฏิบัติการอื่นๆ ที่ใช้ Darwinเป็นพื้นฐาน สัญลักษณ์สำหรับการดีบักจะถูกจัดเก็บในรูปแบบ DWARF ในไฟล์ . dSYM แยกต่างหาก
ดูเพิ่มเติม
- เอนเดียนเนส – ลำดับของไบต์ในคำของคอมพิวเตอร์
- รายชื่อภาษาเครื่อง – รายชื่อประเภทของภาษาโปรแกรมและภาษาที่ตรงตามคำอธิบายนั้นๆ
- โปรแกรมตรวจสอบรหัสเครื่อง – ซอฟต์แวร์ที่ได้รับความนิยมในช่วงยุคคอมพิวเตอร์ส่วนบุคคลในทศวรรษ 1970 และ 1980
- ไมโครโปรเฟสเซอร์ MPF-I – ไมโครคอมพิวเตอร์ที่ผลิตโดยบริษัท Multitech ในปี 1981
- ไฟล์ปฏิบัติการดั้งเดิม – ข้อมูลที่ทำให้คอมพิวเตอร์ปฏิบัติตามคำสั่งที่ระบุไว้
- รหัสวัตถุ – ลำดับของคำสั่งหรือคำแนะนำในภาษาคอมพิวเตอร์
- เครื่อง P-code – การเขียนโปรแกรมเครื่องเสมือน
- คอมพิวเตอร์ชุดคำสั่งลดรูป (RISC) – โปรเซสเซอร์ที่ประมวลผลคำสั่งเดียวในรอบสัญญาณนาฬิกาน้อยที่สุด
- คำสั่งที่ยาวมาก – สถาปัตยกรรมคอมพิวเตอร์เพื่อรองรับการประมวลผลแบบขนาน
หมายเหตุ
- ^ในเครื่องคำนวณเลขฐานสิบ ยุคแรก รูปแบบของตัวอักษร ตัวเลข และเครื่องหมายตัวเลข
- ในขณะที่คำสั่งที่ซ้อนทับกันบนสถาปัตยกรรมโปรเซสเซอร์ที่มีชุดคำสั่งความยาวแปรผันบางครั้งสามารถจัดเรียงเพื่อรวมเส้นทางโค้ดที่แตกต่างกันกลับเข้าเป็นหนึ่งเดียวผ่านการซิงโครไนซ์การไหลของ ควบคุม ได้ แต่โค้ดที่ซ้อนทับกันสำหรับสถาปัตยกรรมโปรเซสเซอร์ที่แตกต่างกันบางครั้งก็สามารถสร้างขึ้นเพื่อทำให้เส้นทางการดำเนินการแยกออกเป็นทิศทางที่แตกต่างกันขึ้นอยู่กับโปรเซสเซอร์พื้นฐาน ดังที่บางครั้งใช้ในไบนารีขนาดใหญ่
- ตัวอย่างเช่นมาสเตอร์บูตเรคคอร์ด (MBR) และบูตเซกเตอร์ของ DR-DOS (ซึ่งเก็บตารางพาร์ติชั่นและ BIOS Parameter Block ด้วย ทำให้เหลือพื้นที่สำหรับโค้ดน้อยกว่า 446 หรือ 423 ไบต์ตามลำดับ) สามารถค้นหาไฟล์บูตในระบบไฟล์FAT12หรือ FAT16ได้ด้วยตัวเองและโหลดลงในหน่วยความจำทั้งหมด ซึ่งแตกต่างจากระบบที่คล้ายคลึงกันใน MS-DOSและ PC DOSที่ต้องอาศัยไฟล์ระบบ ในการครอบครองตำแหน่ง รายการไดเร็กทอรีสองตำแหน่งแรกในระบบไฟล์ และสามเซกเตอร์แรกของ IBMBIO.COMที่จัดเก็บไว้ที่จุดเริ่มต้นของพื้นที่ข้อมูลในเซกเตอร์ที่ต่อเนื่องกันซึ่งมีตัวโหลดรองเพื่อโหลดส่วนที่เหลือของไฟล์ลงในหน่วยความจำ (โดยต้องใช้ SYSในการจัดการเงื่อนไขทั้งหมดนี้) เมื่อมีการเพิ่มการรองรับ FAT32และการกำหนดแอดเดรสแบบบล็อกเชิงตรรกะ (LBA) เข้ามา ไมโครซอฟต์ถึงกับเปลี่ยนไปใช้ คำสั่ง i386และแบ่งโค้ดบูตออกเป็นสองเซกเตอร์เพื่อลดขนาดโค้ด ซึ่งเป็นทางเลือกที่ไม่สามารถทำได้ใน DR-DOS เพราะจะทำให้ไม่สามารถใช้งานร่วมกับระบบปฏิบัติการอื่นได้ ทั้งในสถานการณ์การบูตหลายระบบและการโหลดแบบ ต่อเนื่อง รวมถึงพีซี ที่เข้ากันได้กับ IBM PC รุ่นเก่า ดังนั้น เซกเตอร์บูต ของ DR-DOS 7.07จึงใช้โค้ดที่แก้ไขตัวเองได้การ เขียนโปรแกรมระดับ โอเปอเรชันโค้ดด้วยภาษาเครื่อง การควบคุมการใช้งานผลข้างเคียง (ที่มีการบันทึกไว้) การซ้อนทับข้อมูล/โค้ดหลายระดับ และ เทคนิค การพับ แบบอัลกอริทึม เพื่อให้ทุกอย่างสามารถบรรจุลงในเซกเตอร์ทางกายภาพขนาดเพียง 512 ไบต์ได้โดยไม่สูญเสียฟังก์ชันเพิ่มเติมใดๆ
แหล่งที่มา
- ฮอฟสตัดเตอร์, ดักลาส อาร์. (1979). เกอเดล, เอสเชอร์, บาค: สายถักทองคำนิรันดร์ . เบสิก บุ๊คส์ . ISBN 0-465-02685-0สืบค้นข้อมูลเมื่อ10 กุมภาพันธ์ 2025
- Samuelson, Pamela (1984). "CONTU Revisited: The Case Against Copyright Protection for Computer Programs in Machine-Readable Form" . Duke Law Journal . 33 (4): 663– 769. doi : 10.2307/1372418 . hdl : hein.journals/duklr1984 . JSTOR 1372418 . สืบค้นเมื่อ2025-02-10 .
- Tanenbaum, Andrew S. (1990). โครงสร้างการ จัดระเบียบคอมพิวเตอร์ ฉบับที่สาม . Prentice Hall. หน้า 398. ISBN 978-0-13-854662-5.
อ่านเพิ่มเติม
- เฮนเนสซี, จอห์น แอล. ; แพตเตอร์สัน, เดวิด เอ. (1994). การจัดระเบียบและการออกแบบคอมพิวเตอร์ ส่วนต่อประสานระหว่างฮาร์ดแวร์และซอฟต์แวร์สำนักพิมพ์มอร์แกน คอฟแมนน์ISBN 1-55860-281-X.
- Tanenbaum, Andrew S. (1999). โครงสร้างการจัดระเบียบคอมพิวเตอร์ (ฉบับที่สี่). Prentice Hall . ISBN 0-13-020435-8สืบค้นข้อมูลเมื่อ10 กุมภาพันธ์ 2025
- บรูคเชียร์, เจ. เกล็นน์ (2007). วิทยาการคอมพิวเตอร์: ภาพรวม (ฉบับที่เก้า). แอดดิสัน เวสลีย์ . ISBN 978-0-321-38701-1สืบค้นข้อมูลเมื่อ10 กุมภาพันธ์ 2025
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ รหัสเครื่อง
ใน ด้านการคำนวณ รหัส เครื่อง คือ ข้อมูล ที่เข้ารหัส และจัดโครงสร้างเพื่อควบคุม หน่วยประมวลผลกลาง (CPU) ของ คอมพิวเตอร์ ผ่าน อินเทอร์เฟซ ที่สามารถตั้งโปรแกรมได้ โปรแกรม คอมพิวเตอร์...
ภาษาแอสเซมบลี
ภาษาแอสเซมบลี ให้การแมปโดยตรงจาก ซอร์สโค้ด ที่มนุษย์อ่านได้ ไปยังโค้ดเครื่อง ภาษาแอสเซมบลีแสดงรหัสตัวเลขในโค้ดเครื่องในรูปแบบของตัวย่อและป้ายกำกับ [ 3 ] ตัวอย่างเช่นในภาษาแอสเซมบลีสำหรับ โปรเซสเซอร์ x86 จะแสดง รหัส ปฏิบัติการสถาปัตยกรรม x86 0x90 ในโค้ดเครื่อง...
ชุดคำสั่ง
คำสั่งเครื่องจะเข้ารหัสการดำเนินการเป็นรูปแบบของ บิต ตามรูปแบบที่กำหนดไว้สำหรับชุดคำสั่งของเครื่อง [ nb 1 ] [ 4 ]
การสอนที่ซ้อนทับกัน
บนสถาปัตยกรรมโปรเซสเซอร์ที่มี ชุดคำสั่งความยาวแปรผัน [ 11 ] (เช่น ตระกูลโปรเซสเซอร์ x86 ของ Intel ) ภายในขอบเขตของปรากฏการณ์ การซิงโครไนซ์การ ไหลของควบคุม ที่เรียกว่า จำนวน Kruskal [ 12 ] [ 11 ] [ 13 ] [ 14 ] [ 15 ]...