มีหลายวิธีในการใช้บางสิ่งบางอย่างที่สามารถใช้เครื่องจักรทัวริง
ในขณะที่คุณกำลังมองหาที่ประมวลผลหนึ่งที่มีผลบังคับใช้มากที่สุดน่าจะเป็นรูปแบบเครื่องลงทะเบียน ที่ง่ายที่สุดของเหล่านี้ (ในแง่ของสัญลักษณ์) เป็น mulit เทปสองสัญลักษณ์ ( mark
และblank
) หากคุณไปสำหรับบางสิ่งบางอย่างไม่ได้ค่อนข้างเป็นความลับที่inc(r)
, dec(r)
และjz(r,z)
(กระโดดลงทะเบียนถ้าr
เป็นศูนย์การเรียนการสอนz
) หรือclr(r)
(ชัดเจนr
) inc
, je(i,j,z)
(กระโดดลงทะเบียนถ้า i และ j จะเท่ากับการเรียนการสอน z)
ฉันเคยเห็นพูดถึงเครื่องลงทะเบียนที่:
- inc (i, m) - เพิ่มการลงทะเบียน i และไปที่บรรทัด m
- jzdec (i, m1, m2) - ถ้าลงทะเบียน i คือ 0 ไปที่ line m, ลดลง i อื่น, และไปที่ line m2
ซึ่งกำลังทำให้สมบูรณ์เช่นกัน - เครื่องลงทะเบียน Minskyแม้ว่ามันจะมีข้อ จำกัด อื่น ๆ เกี่ยวกับข้อมูลในเทป
แค่นั้นแหละ. ไม่มีอะไรเพิ่มเติม
เหตุใดจึงไม่ใช้โปรเซสเซอร์ risc แบบพิเศษเหล่านี้แทน มันเป็นความเจ็บปวดที่แท้จริงในการเขียนคอมไพเลอร์ให้พวกเขาและคุณก็ยอมแพ้สิ่งต่าง ๆ มากมายที่โปรเซสเซอร์สามารถทำได้ มันดีมากที่ได้ bitwise and
และadd
แทนที่จะพยายามทำทุกอย่างด้วยการลงทะเบียนที่เพิ่มขึ้นและวนซ้ำ นั่นคือพื้นฐานของภาษาการเขียนโปรแกรมโปรดที่ชื่อว่าBrainfuckซึ่งมี 8 คำแนะนำ
>
เพิ่มตัวชี้ข้อมูล
<
ลดตัวชี้ข้อมูล
+
เพิ่มข้อมูลที่ตัวชี้ข้อมูล
-
ลดค่าข้อมูลที่ตัวชี้ข้อมูล
.
ส่งออกข้อมูลที่ตัวชี้ข้อมูล
,
อ่านอินพุตเก็บข้อมูลที่ตัวชี้ข้อมูล
[
หากข้อมูลที่ชี้เป็นศูนย์แทนการย้ายตัวชี้คำสั่งข้างหน้าหนึ่งกระโดดไปข้างหน้ากับคำสั่งหลังจากการจับคู่]
คำสั่ง
]
หากข้อมูลที่ชี้เป็นเลขแทนการย้ายตัวชี้การเรียนการสอนไปข้างหน้าข้ามมันกลับไปที่คำสั่งหลังจากการจับคู่]
คำสั่ง
หนึ่งสามารถค้นหาคอมไพเลอร์เพื่อ Brainfuck แม้ว่ามันจะไม่สนุกที่จะทำสิ่งที่เรียบง่ายในนั้น นอกเสียจากว่าคุณจะเพลิดเพลินกับความหงุดหงิดซึ่งเป็นจุดประสงค์ของภาษา
การอ่านที่เกี่ยวข้อง: