กลับไปหน้าบทความ

อ่าน 54 นาที

ไม่มีชื่อบทความ

ตัว แปลซอร์สโค้ดเป็นซอร์สโค้ด ( S2S compiler ) หรือ ท ราน สไพเลอร์ ( transpiler ) [ 1 ] [ 2 ] [ 3 ] เป็นประเภทของ ตัวแปล ที่รับ ซอร์สโค้ด ของโปรแกรมที่เขียนด้วย ภาษาโปรแกรม...

คอมไพเลอร์แบบซอร์สโค้ดต่อซอร์สโค้ด

ตัวแปลซอร์สโค้ดเป็นซอร์สโค้ด ( S2S compiler ) หรือ ท รานสไพเลอร์ ( transpiler ) [ 1 ] [ 2 ] [ 3 ]เป็นประเภทของตัวแปลที่รับซอร์สโค้ดของโปรแกรมที่เขียนด้วยภาษาโปรแกรมเป็นอินพุต และสร้างซอร์สโค้ดที่เทียบเท่ากันในภาษาโปรแกรมเดียวกันหรือต่างกัน โดยปกติจะเป็นการแสดงผลระดับกลางตัวแปลซอร์สโค้ดเป็นซอร์สโค้ดจะแปลงระหว่างภาษาโปรแกรมที่ทำงานในระดับนามธรรม ที่ใกล้เคียงกัน ในขณะที่คอมไพเลอร์ แบบดั้งเดิม จะแปลจากภาษาที่มีระดับสูงกว่าไปยังภาษาที่มีระดับต่ำกว่าตัวอย่างเช่น ตัวแปลซอร์สโค้ดเป็นซอร์สโค้ดอาจทำการแปลโปรแกรมจากPythonเป็นJavaScriptในขณะที่คอมไพเลอร์แบบดั้งเดิมจะแปลจากภาษาเช่นCไปเป็นแอสเซมบลีหรือJavaไปเป็นไบต์โค้ด[ 4 ]คอม ไพเลอร์ แบบขนานอัตโนมัติมักจะรับโปรแกรมภาษาโปรแกรมระดับสูงเป็นอินพุต จากนั้นแปลงโค้ดและใส่คำอธิบายประกอบด้วยคำอธิบายประกอบโค้ดแบบขนาน (เช่นOpenMP ) หรือโครงสร้างภาษา (เช่น คำสั่ง ของFortran ) [ 2 ] [ 5 ]forall

อีกหนึ่งจุดประสงค์ของการคอมไพล์จากซอร์สโค้ดหนึ่งไปยังอีกซอร์สโค้ดหนึ่งคือ การแปลงโค้ดเก่าให้ใช้ภาษาโปรแกรมหรืออินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน ( API ) เวอร์ชันใหม่กว่า ซึ่งอาจขัดแย้งกับเวอร์ชันก่อนหน้า กระบวนการนี้จะทำการปรับโครงสร้างโค้ด โดยอัตโนมัติ ซึ่งมีประโยชน์เมื่อโปรแกรมที่จะปรับโครงสร้างนั้นอยู่นอกเหนือการควบคุมของผู้พัฒนาเดิม (เช่น การแปลงโปรแกรมจาก Python 2 เป็น Python 3 หรือการแปลงโปรแกรมจาก API เก่าเป็น API ใหม่) หรือเมื่อขนาดของโปรแกรมใหญ่เกินไปจนไม่สะดวกหรือไม่ก็ใช้เวลานานเกินไปที่จะปรับโครงสร้างด้วยตนเอง

โปรแกรมแปลงโค้ดอาจรักษาโครงสร้างโค้ดที่แปลแล้วให้ใกล้เคียงกับโค้ดต้นฉบับมากที่สุดเท่าที่จะเป็นไปได้ เพื่อลดความยุ่งยากในการพัฒนาและแก้ไขข้อบกพร่องของโค้ดต้นฉบับ หรืออาจเปลี่ยนแปลงโครงสร้างของโค้ดต้นฉบับมากจนโค้ดที่แปลแล้วดูไม่เหมือนกับโค้ดต้นฉบับ[ 6 ]นอกจากนี้ยังมีโปรแกรมยูทิลิตี้สำหรับแก้ไขข้อบกพร่องที่แมปโค้ดต้นฉบับที่แปลงแล้วกลับไปยังโค้ดต้นฉบับ ตัวอย่างเช่น มาตรฐาน JavaScript Source Map อนุญาตให้แมปโค้ด JavaScript ที่ดำเนินการโดยเว็บเบราว์เซอร์กลับไปยังโค้ดต้นฉบับเมื่อโค้ด JavaScript ถูกย่อขนาดหรือสร้างขึ้นโดยภาษาที่แปลงเป็น JavaScript [ 7 ]

ตัวอย่างได้แก่Closure Compiler , CoffeeScript , Dart , Haxe , Opal , TypeScriptและEmscripten [ 8 ]

ตัวแปลภาษาแอสเซมบลี

โปรแกรมแปลภาษาแอสเซมบลี ( Assembly language Translators)คือกลุ่มของโปรแกรมแปลโค้ดจากภาษาแอสเซมบลี หนึ่ง ไปยังอีกภาษาหนึ่ง ซึ่งรวมถึง (แต่ไม่จำกัดเพียง) การแปลข้ามตระกูลโปรเซสเซอร์และแพลตฟอร์มระบบต่างๆ

อินเทล CONV86

Intelวางจำหน่ายโปรเซสเซอร์ 16 บิต8086โดยระบุว่าสามารถใช้งานร่วมกับ8080ซึ่งเป็นโปรเซสเซอร์ 8 บิต ได้ [ 9 ]เพื่อสนับสนุนเรื่องนี้ Intel มีตัวแปลรหัสต้นฉบับจาก 8080 เป็น 8086 ที่ใช้ISIS-II ชื่อ CONV86 [ 10 ] [ 11 ] [ 12 ] [ 13 ] (เรียกอีกอย่างว่า CONV-86 [ 14 ]และ CONVERT 86 [ 15 ] [ 16 ] )ซึ่งมีให้สำหรับ ลูกค้า OEM ตั้งแต่ปี 1978 ซึ่งอาจ เป็นโปรแกรมประเภทนี้ที่เก่าแก่ที่สุด[ nb 1 ] โปรแกรม นี้รองรับการแปลหลายระดับและทำงานที่ความเร็ว 2 MHz บนระบบพัฒนาไมโครโปรเซสเซอร์ของ Intel MDS-800 ที่มี ไดรฟ์ฟลอปปี้ขนาด 8 นิ้วจากรายงานของผู้ใช้ พบว่ามันทำงานได้ไม่น่าเชื่อถือมากนัก[ 17 ] [ 18 ]  

SCP TRANS86

Seattle Computer Products (SCP) เสนอ TRANS86.COM [ 16 ] [ 19 ] [ 20 ]ซึ่งเขียนโดยTim Patersonในปี 1980 ขณะพัฒนา86-DOS [ 21 ] [ 22 ] [ 23 ] ยูทิลิตี้นี้สามารถแปลงซอร์สโค้ดแอสเซมบลี Intel 8080 และZilog Z80 (พร้อม ตัวย่อ Zilog/ Mostek ) เป็น ซอร์สโค้ด .ASMสำหรับ Intel 8086 (ในรูปแบบที่เข้ากันได้กับแอสเซมเบลอร์ข้ามแพลตฟอร์ม ASM86 ของ SCP สำหรับCP/M-80เท่านั้น) แต่รองรับเฉพาะชุดย่อยของโอเปรนด์รีจิสเตอร์ และโหมด และมักยังคงต้องมีการแก้ไขและปรับปรุงด้วยตนเองอย่างมากในภายหลัง[ 24 ] [ 21 ] นอกจากนี้ การ แปลงอักษรเพียงอย่างเดียว[ 15 ] [ 19 ] [ 10 ] [ 11 ] ตัวแปล แบบ brute-force single-passไม่ได้ทำการปรับแต่งรีจิสเตอร์และการกระโดดใดๆ[ 25 ] [ 26 ] ใช้ RAM ประมาณ 24 KB [ 16 ] TRANS86.COM เวอร์ชัน SCP 1 ทำงานบนระบบที่ใช้ Z80 [ 16 ] [ 19 ]เมื่อ 86-DOS ทำงานแล้ว Paterson ได้ใช้ TRANS86 ใน แนวทางที่ได้รับแรงบันดาล ใจจากการโฮสต์ด้วยตนเองเพื่อแปลงตัวเองให้เป็นโปรแกรมที่ทำงานภายใต้ 86-DOS [ 23 ] [ 19 ]เวอร์ชันหมายเลข 2 นี้จึงถูกตั้งชื่อว่า TRANS.COM แทน[ 19 ] [ 26 ] [ 25 ] [ 27 ] [ 28 ]ต่อมาในปี 1982 ดูเหมือนว่าโปรแกรมแปลภาษาจะพร้อมใช้งานจากMicrosoftด้วย[ 16 ] [ 29 ] 

ซอร์ซิม ทรานส์86

โปรแกรมที่ชื่อ TRANS86 เช่นกันSorcimได้นำเสนอตัวแปล 8080 เป็น 8086 ตั้งแต่เดือนธันวาคม พ.ศ. 2523 [ 30 ] [ 15 ]เช่นเดียวกับโปรแกรมของ SCP โปรแกรมนี้ได้รับการออกแบบมาเพื่อแปลงโค้ดแอปพลิเคชัน CP/M-80 (ในรูปแบบแอสเซมบลี ASM, MAC, RMAC หรือ ACT80) ไปยังMS-DOS (ในรูปแบบที่เข้ากันได้กับ ACT86) [ 30 ] [ 16 ] [ 31 ] [ 32 ]ในรูปแบบ ACT80 ยังรองรับคำสั่งย่อ Z80 บางส่วนด้วย การแปลเกิดขึ้นแบบคำสั่งต่อคำสั่งโดยมีการเพิ่มประสิทธิภาพบางอย่างกับการกระโดดแบบมีเงื่อนไข โปรแกรมทำงานภายใต้ CP/M-80, MP/M-80และCromemco DOSโดยใช้ RAM อย่างน้อย 24  KB และไม่มีข้อจำกัดเกี่ยวกับขนาดไฟล์ต้นฉบับ[ 16 ] [ 33 ]

ดิจิทัลรีเสิร์ช XLT86

XLT86 1.0 ของDigital Researchในเดือนกันยายน พ.ศ. 2524 มีความซับซ้อนมากขึ้นและเป็นโปรแกรมแรกที่นำเทคโนโลยี คอมไพ เลอร์ที่ปรับให้เหมาะสมมา ใช้ในกระบวนการแปลซอร์สโค้ด XLT86 1.1 พร้อมใช้งานในเดือนเมษายน พ.ศ. 2525 [ 34 ] โปรแกรมนี้เขียนโดยGary Kildall [ 15 ] [ 35 ] [ 36 ] [ 37 ]และแปล ซอร์สโค้ด .ASMสำหรับโปรเซสเซอร์ Intel 8080 (ในรูปแบบที่เข้ากันได้กับแอสเซมเบลอร์ ASM, MAC หรือ RMAC) เป็นซอร์สโค้ด.A86สำหรับ 8086 (เข้ากันได้กับ ASM86) การใช้การวิเคราะห์การไหลของข้อมูลทั่วโลกในการใช้งานรีจิสเตอร์ 8080 [ 38 ] [ 15 ] [ 39 ] [ 40 ] ตัวแปลง แบบหลายรอบห้าเฟสจะปรับเอาต์พุตให้เหมาะสมกับขนาดโค้ดและดูแลข้อกำหนดการเรียก ( การเรียก BDOS ของ CP/M-80 ถูกแมปเป็นการเรียก BDOS สำหรับCP/M-86 ) เพื่อให้โปรแกรม CP/M-80 และ MP/M-80 สามารถพอร์ตไปยังแพลตฟอร์ม CP/M-86 และMP/M-86ได้โดยอัตโนมัติ XLT86.COM เองเขียนด้วยPL/I-80สำหรับแพลตฟอร์ม CP/M-80 [ 41 ] [ 16 ] [ 34 ] [ 42 ]โปรแกรมใช้RAM 30 KB สำหรับตัวมันเองบวกกับหน่วยความจำเพิ่มเติมสำหรับกราฟโปรแกรมในระบบหน่วยความจำ 64 KB ขนาดไฟล์ต้นฉบับสูงสุดที่รองรับได้คือประมาณ 6 KB [ 41 ] [ 16 ] [ 43 ] [ 34 ]ดังนั้นไฟล์ขนาดใหญ่จึงต้องถูกแบ่งย่อยตามความเหมาะสมก่อนการแปล[ 16 ] [ 34 ]นอกจากนี้ XLT86 ยังมีให้ใช้งานสำหรับDEC VAX/VMSด้วย[ 16 ] [ 34 ]แม้ว่าการป้อนข้อมูลและการส่งออกของ XLT86 จะทำงานในระดับซอร์สโค้ด แต่การแสดงโปรแกรมในหน่วยความจำของตัวแปลและเทคโนโลยีการเพิ่มประสิทธิภาพโค้ดที่ใช้ได้วางรากฐานสำหรับการคอมไพล์ไบนารีใหม่[ 44 ] [ 45 ] [ 46 ]     

คนอื่น

2500  AD  Software เสนอตัวแปลงซอร์สโค้ด 8080 เป็น 8086 เป็นส่วนหนึ่งของชุด XASM สำหรับเครื่อง CP/M-80 ที่ใช้ Z80 รวมถึงระบบZilog ZEUSและOlivetti PCOS [ 47 ]

ตั้งแต่ปี พ.ศ. 2522 Zilog ได้นำเสนอตัวแปลง Z80 เป็นZ8000เป็นส่วนหนึ่งของ ระบบพัฒนา PDS 8000 ของพวกเขา [ 48 ] [ 49 ] [ 50 ] [ 51 ] [ 52 ] [ 18 ] Advanced Micro Computers (AMC) [ 52 ] [ 18 ]และ 2500  AD  Software ก็ได้นำเสนอตัวแปลง Z80 เป็น Z8000 เช่นกัน[ 47 ]โดยตัวหลังนี้มีชื่อว่า TRANS [ 53 ] [ 54 ]และสามารถใช้งานได้กับ Z80 CP/M, CP/M-86, MS-DOS และ PCOS [ 47 ]

ชุดพัฒนา Z88DK มีตัวแปลรหัสต้นฉบับ Z80 เป็น i486 ที่กำหนดเป้าหมายไปที่ nasmชื่อ "to86.awk" ซึ่งเขียนขึ้นในปี 2008 โดย Stefano Bodrato [ 55 ]ซึ่งอิงตามตัวแปลง 8080 เป็น Z80 ที่เขียนขึ้นในปี 2003 โดย Douglas Beattie, Jr. ชื่อ "toz80.awk" [ 55 ]

ในปี 2021 Brian Callahan ได้เขียนโปรแกรมแปลซอร์สโค้ด 8080 CP/M 2.2 เป็น MS-DOS ที่กำหนดเป้าหมายไปที่nasmชื่อ 8088ify [ 56 ]

การนำภาษาโปรแกรมไปใช้

การใช้งานภาษาโปรแกรมบางภาษาเริ่มต้นจากการแปลงโค้ด และการใช้งานเริ่มต้นสำหรับภาษาเหล่านั้นบางภาษาก็ยังคงเป็นการแปลงโค้ดอยู่ นอกจากตารางด้านล่างแล้ว ผู้ดูแล CoffeeScriptยังได้จัดทำรายการภาษาที่คอมไพล์เป็น JavaScript อีกด้วย[ 57 ]

รายชื่อทรานส์คอมไพเลอร์[ 4 ]
ชื่อภาษาต้นฉบับภาษาเป้าหมายความคิดเห็น
บาเบลECMAScript 6+ ( JavaScript )อีเอส5
เซอร์เบอรัส เอ็กซ์เซอร์เบอรัสJavaScript , Java , C++ , C#
ซีฟรอนต์ซี++ซี
โคลจูร์สคริปต์โคลจูร์โค้ด JavaScript
คอฟฟี่สคริปต์คอฟฟี่สคริปต์โค้ด JavaScript
ดาฟนีดาฟนีC#, JavaScript , Java , C++, Go , Python
โผโผโค้ด JavaScript
h5 [ 58 ]ซี#โค้ด JavaScript
ไอเฟลผ่านทางEiffelStudioหอไอเฟลC, ภาษากลางทั่วไป
ต้นเอล์มต้นเอล์มโค้ด JavaScript
นิทานเอฟ#โค้ด JavaScript
นิทานไพธอนเอฟ#ไพธอน
แฮ็กซ์แฮ็กซ์ActionScript 3 , JavaScript, Java, C++, C#, PHP , Python , Lua
ฮิปฮอปสำหรับ PHP (HPHPc)พีพีซี++
J2ObjC [ 59 ]ชวาออบเจกทีฟซี
เจเอสวีท[ 60 ]ชวาไทป์สคริปต์
โคทลิน/JSโคทลินโค้ด JavaScript
ไมอา[ 61 ]ไมอาเวริล็อก
เมลังจ์OCaml , Reasonโค้ด JavaScript
มรัสท์ซีสนิมซีคอมไพเลอร์ทดลองที่สามารถบูตสแตรปคอมไพเลอร์ Rust อย่างเป็นทางการ (rustc) ได้
นาคาโคบอลชวา
นิมนิมC, C++, Objective-C , JavaScript
เพียวสคริปต์เพียวสคริปต์โค้ด JavaScript
รีสคริปต์รีสคริปต์โค้ด JavaScript
ซาเธอร์ซาเธอร์ซี
สกาล่า.เจเอสสกาล่าโค้ด JavaScript
Swiftify [ 62 ]ออบเจกทีฟซีสวิฟต์
วีวีซี
วาลาวาลาซี
หอไอเฟลจำลองหอไอเฟลซี

การย้ายโค้ดเบส

เมื่อนักพัฒนาต้องการเปลี่ยนไปใช้ภาษาอื่นโดยยังคงใช้โค้ดเบสเดิมส่วนใหญ่ การใช้ทรานส์คอมไพเลอร์อาจดีกว่าการเขียนซอฟต์แวร์ใหม่ทั้งหมดด้วยมือ ขึ้นอยู่กับคุณภาพของทรานส์คอมไพเลอร์ โค้ดอาจต้องการหรืออาจไม่ต้องการการแก้ไขด้วยตนเองเพื่อให้ทำงานได้อย่างถูกต้อง ซึ่งแตกต่างจาก "ภาษาที่ถูกแปลงแล้ว" ที่ข้อกำหนดระบุว่าโค้ดต้นฉบับที่ได้จะต้องทำงานได้โดยไม่ต้องแก้ไข ทรานส์คอมไพเลอร์ทั้งหมดที่ใช้ในการพอร์ตโค้ดเบสจะคาดหวังการปรับแต่งโค้ดต้นฉบับด้วยตนเองหากจำเป็นเพื่อให้ได้คุณภาพโค้ดสูงสุดในแง่ของความสามารถในการอ่านและการปฏิบัติตามมาตรฐานของแพลตฟอร์ม

เครื่องมือภาษาต้นฉบับภาษาเป้าหมายความคิดเห็น
สคริปต์2to3ไพธอน 2ไพธอน 3แม้ว่า 2to3 จะพยายามอย่างเต็มที่ในการทำการแปลแบบอัตโนมัติ แต่ก็ยังจำเป็นต้องมีการแก้ไขด้วยตนเองเพิ่มเติมอยู่บ่อยครั้ง
เอ็มสคริปเทนไบต์โค้ดLLVMโค้ด JavaScriptตัวอย่างเช่น วิธีนี้ช่วยให้สามารถรันโค้ดเบส C/C++ ในเบราว์เซอร์ได้
c2go [ 63 ]ซีไปก่อนการเปิดตัวเวอร์ชัน 1.5 คอมไพเลอร์ Go ถูกเขียนด้วยภาษา C มีการพัฒนาตัวแปลอัตโนมัติเพื่อแปลงโค้ดเบสของคอมไพเลอร์จากภาษา C เป็นภาษา Go โดยอัตโนมัติ[ 64 ] [ 65 ]ตั้งแต่ Go เวอร์ชัน 1.5 เป็นต้นมา "คอมไพเลอร์และรันไทม์ถูกนำไปใช้ในภาษา Go และแอสเซมเบลอร์ โดยไม่มีภาษา C"
C2Rust [ 66 ]ซีสนิมC2Rust รับโค้ด C เป็นอินพุตและส่งออกunsafeโค้ด Rust โดยมุ่งเน้นที่การรักษาความเข้ากันได้กับโค้ดเบสเดิม มีข้อจำกัดหลายประการที่ได้รับการบันทึกไว้สำหรับกระบวนการนี้ การแปลงโค้ดที่ได้ให้เป็นโค้ด Rust ที่ปลอดภัยและเป็นไปตามหลักการเป็นงานที่ต้องทำด้วยมือหลังจากการแปล แม้ว่าจะมีเครื่องมืออัตโนมัติเพื่อช่วยลดภาระงานนี้ก็ตาม[ 66 ]
Google Web Toolkitโปรแกรม Java ที่ใช้ APIเฉพาะตัวหนึ่งโค้ด JavaScriptโค้ด Java นี้มีข้อจำกัดเล็กน้อยเมื่อเทียบกับโค้ด Java ทั่วไป
Js_of_ocaml [ 67 ]ของ Ocsigenโอแคมล์โค้ด JavaScript
J2Eif [ 68 ]ชวาหอไอเฟลโค้ด Eiffel ที่ได้นั้นมีคลาสและโครงสร้างคล้ายกับโปรแกรม Java แต่ใช้ไวยากรณ์และหลักการของ Eiffel
C2Eif [ 69 ]ซีหอไอเฟลโค้ด Eiffel ที่ได้นั้นมีคลาสและโครงสร้างที่พยายามทำให้สะอาดที่สุดเท่าที่จะเป็นไปได้ เครื่องมือนี้สมบูรณ์และจะอาศัยการฝังโค้ด C และโค้ดแอสเซมบลีหากไม่สามารถแปลได้อย่างถูกต้อง
ข้าม[ 70 ]สวิฟต์โคทลินSkip เป็นปลั๊กอินของ Xcode ที่แปลงโค้ด Swift สำหรับแอปหรือไลบรารี iOS โดยใช้ SwiftUI ให้เป็นโค้ด Kotlin ดั้งเดิมที่เทียบเท่ากันสำหรับ Android โดยใช้ Jetpack Compose
Swiftify [ 71 ]ออบเจกทีฟซีสวิฟต์Swiftify เป็นเครื่องมือแปลงโค้ดจาก Objective-C เป็น Swift ที่ใช้งานได้ทางออนไลน์ ช่วยเหลือนักพัฒนาที่กำลังย้ายโค้ดเบส iOS ทั้งหมดหรือบางส่วนไปยัง Swift การแปลงนี้มุ่งเน้นไปที่การแปลงไวยากรณ์ระหว่าง Objective-C และ Swift เป็นหลัก และได้รับการสนับสนุนเนื่องจาก Apple ได้พยายามอย่างเต็มที่เพื่อให้มั่นใจว่ารันไทม์ของ Swift และ Objective-C เข้ากันได้
ตัวแปลงรันไทม์[ 72 ]พีพีชวาRuntime Converter เป็นเครื่องมืออัตโนมัติที่แปลงซอร์สโค้ด PHP เป็นซอร์สโค้ด Java มีไลบรารี Java Runtime สำหรับฟังก์ชันบางอย่างของภาษา PHP รวมถึงความสามารถในการเรียกใช้ไบนารี PHP โดยตรงโดยใช้ JNI สำหรับการเรียกใช้ไลบรารีมาตรฐานของ PHP และฟังก์ชันส่วนขยาย

ไปป์ไลน์ทรานคอมไพเลอร์

ไปป์ไลน์ทรานส์คอมไพเลอร์คือผลลัพธ์ที่ได้จากการแปลงโค้ดแบบเรียกซ้ำโดยการเชื่อมโยงเทคโนโลยีหลายชั้นเข้าด้วยกัน โดยมีขั้นตอนการแปลงโค้ดคั่นระหว่างแต่ละชั้น เทคโนโลยีสามารถถูกแปลงซ้ำ ๆ ได้อย่างมีประสิทธิภาพ ทำให้เกิดข้อกำหนดแบบกระจายที่ไม่ ขึ้นกับ ภาษา

XSLTเป็นเครื่องมือแปลงอเนกประสงค์ที่สามารถใช้ระหว่างเทคโนโลยีต่างๆ มากมายเพื่อสร้างไปป์ไลน์โค้ดอนุพันธ์ ดังกล่าว [ 73 ]

การแปลงคอมไพล์แบบเรียกซ้ำ

การแปลงโค้ดแบบเรียกซ้ำ (หรือการแปลงโค้ดแบบเรียกซ้ำ ) คือกระบวนการนำแนวคิดของการแปลงโค้ดมาใช้ซ้ำๆ เพื่อสร้างไปป์ไลน์ของการแปลง (โดยมักเริ่มต้นจากแหล่งข้อมูลหลักแหล่งเดียว ) ซึ่งจะเปลี่ยนเทคโนโลยีหนึ่งไปเป็นอีกเทคโนโลยีหนึ่งซ้ำๆ

โดยการทำซ้ำกระบวนการนี้ เราสามารถเปลี่ยน A → B → C → D → E → F แล้วกลับมาเป็นA(v2)ได้ ข้อมูลบางส่วนจะถูกเก็บรักษาไว้ตลอดกระบวนการนี้ จาก A → A(v2)และข้อมูลนั้น (ในระดับนามธรรม) แสดงให้เห็นว่าแต่ละองค์ประกอบ A–F เห็นพ้องต้องกันในเรื่องใดบ้าง

ในแต่ละเวอร์ชันที่ไปป์ไลน์ทรานส์คอมไพเลอร์สร้างขึ้น ข้อมูลนั้นจะถูกเก็บรักษาไว้ อาจมีรูปร่างและขนาดที่แตกต่างกันมากมาย แต่เมื่อกลับมาที่A (v2)หลังจากถูกแปลงโค้ดหกครั้งในไปป์ไลน์ข้างต้น ข้อมูลก็จะกลับคืนสู่สถานะเดิม

ข้อมูลนี้ซึ่งยังคงอยู่รอดจากการแปลงผ่านแต่ละรูปแบบ ตั้งแต่A–F–A(v2)ถือเป็นเนื้อหาอนุพันธ์หรือรหัสอนุพันธ์ (ตามคำนิยาม )

การแปลงโค้ดแบบเรียกซ้ำใช้ประโยชน์จากข้อเท็จจริงที่ว่า โปรแกรมแปลงโค้ดอาจคงโค้ดที่แปลแล้วให้ใกล้เคียงกับโค้ดต้นฉบับมากที่สุดเท่าที่จะเป็นไปได้ เพื่อให้การพัฒนาและการแก้ไขข้อผิดพลาดของโค้ดต้นฉบับง่ายขึ้น หรืออาจเปลี่ยนแปลงโครงสร้างของโค้ดต้นฉบับมากจนโค้ดที่แปลแล้วไม่เหมือนกับโค้ดต้นฉบับ นอกจากนี้ยังมีเครื่องมือช่วยในการแก้ไขข้อผิดพลาดที่แมปโค้ดต้นฉบับที่แปลงแล้วกลับไปยังโค้ดต้นฉบับ ตัวอย่างเช่น แผนที่โค้ด JavaScriptช่วยให้สามารถแมปโค้ด JavaScript ที่เบราว์เซอร์ ทำงาน กลับไปยังโค้ดต้นฉบับในภาษา JavaScript ที่แปลงแล้วได้

ดูเพิ่มเติม

หมายเหตุ

  1. หนึ่งในโปรแกรมเชิงพาณิชย์ที่ทราบกันว่ามีการแปลด้วยเครื่องภายใต้ ISIS-IIจากซอร์สโค้ด 8080 CP/M-80 ไปยัง 8086 CP/M-86โดยใช้CONV86 ของ Intel คือ WordStar 3.0ของ MicroProในเดือนกันยายน 1981

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ไม่มีชื่อบทความ

ตัว แปลซอร์สโค้ดเป็นซอร์สโค้ด ( S2S compiler ) หรือ ท ราน สไพเลอร์ ( transpiler ) [ 1 ] [ 2 ] [ 3 ] เป็นประเภทของ ตัวแปล ที่รับ ซอร์สโค้ด ของโปรแกรมที่เขียนด้วย ภาษาโปรแกรม...

ตัวแปลภาษาแอสเซมบลี

โปรแกรมแปลภาษาแอสเซมบลี ( Assembly language Translators) คือกลุ่มของโปรแกรมแปลโค้ดจาก ภาษาแอสเซมบลี หนึ่ง ไปยังอีกภาษาหนึ่ง ซึ่งรวมถึง (แต่ไม่จำกัดเพียง) การแปลข้ามตระกูลโปรเซสเซอร์และ แพลตฟอร์มระบบ ต่างๆ

อินเทล CONV86

Intel วางจำหน่ายโปรเซสเซอร์ 16 บิต 8086 โดยระบุว่า สามารถใช้งานร่วม กับ 8080 ซึ่งเป็นโปรเซสเซอร์ 8 บิต ได้ [ 9 ] เพื่อสนับสนุนเรื่องนี้ Intel มีตัวแปลรหัสต้นฉบับจาก 8080 เป็น 8086 ที่ใช้ ISIS-II ชื่อ CONV86 [ 10 ] [ 11 ] [ 12 ] [ 13 ] (เรียกอีกอย่างว่า...

SCP TRANS86

Seattle Computer Products (SCP) เสนอ TRANS86.COM [ 16 ] [ 19 ] [ 20 ] ซึ่งเขียนโดย Tim Paterson ในปี 1980 ขณะพัฒนา 86-DOS [ 21 ] [ 22 ] [ 23 ] ยู ทิลิตี้นี้สามารถแปลงซอร์สโค้ดแอสเซมบลี Intel 8080 และ Zilog Z80 (พร้อม ตัวย่อ Zilog/ Mostek ) เป็น ซอร์สโค้ด .