fbpx
วิกิพีเดีย

ชุดแปลโปรแกรมของกนู

ชุดแปลโปรแกรมของกนู (อังกฤษ: GNU Compiler Collection) หรือเรียกโดยย่อว่า จีซีซี (อังกฤษ: GCC) เป็นชุดโปรแกรมแปลโปรแกรมสำหรับแปลภาษาโปรแกรมต่าง ๆ พัฒนาโดยโครงการกนู (GNU) และแจกจ่ายเป็นซอฟต์แวร์เสรีภายใต้สัญญาอนุญาตแบบ GPL และ LGPL โดยชุด GCC ถือว่าเป็นชุดคอมไพเลอร์มาตรฐานในระบบปฏิบัติการแบบยูนิกซ์ อย่างเช่น ลินุกซ์ หรือ Mac OS X เป็นต้น

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

ภาพรวม

GCC เริ่มพัฒนาใน ค.ศ. 1985 โดยริชาร์ด สตอลแมน ซึ่งเขาเริ่มจากการแปลงคอมไพเลอร์ของภาษา Pastel (ส่วนขยายของภาษาปาสกาล) ให้ใช้กับภาษาซีได้ GCC ถูกเขียนขึ้นมาใหม่อีกครั้งโดยใช้ภาษาซีทั้งหมด เพื่อเป็นคอมไพเลอร์สำหรับภาษาซีและเป็นส่วนสำคัญของโครงการกนูในยุคแรก ซึ่งทิศทางการพัฒนากำหนดโดย Free Software Foundation

ใน ค.ศ. 1997 กลุ่มนักพัฒนา GCC จำนวนหนึ่งไม่พอใจการพัฒนาของ GCC สายหลักที่ล่าช้า จึงแยกตัวออกมาพัฒนา EGCS (Experimental/Enhanced GNU Compiler System) ทำให้การพัฒนาเกิดขึ้นรวดเร็วกว่า GCC เดิมมาก ในปี ค.ศ. 1999 EGCS กลายมาเป็น GCC เวอร์ชันหลักแทน GCC เก่าในท้ายที่สุด

นอกจากจะเป็นคอมไพเลอร์มาตรฐานบนระบบปฏิบัติการแบบยูนิกซ์แล้ว GCC ยังถูกนำมาแปลงให้ใช้ได้บนระบบปฏิบัติการอื่นๆ เช่น NeXTSTEP และ Mac OS X รวมถึงระบบฝังตัวอื่นๆ เช่น Symbian, PlayStation และ Dreamcast เป็นต้น

ภาษาโปรแกรมที่สนับสนุน

ในชุดคอมไพเลอร์มาตรฐานเวอร์ชัน 4.3 สนับสนุนภาษาโปรแกรมดังต่อไปนี้

นอกจากนี้ยังสนับสนุนภาษาโปรแกรมอื่นๆ เพิ่มเติม แต่ไม่ได้รวมอยู่ในชุดคอมไพเลอร์มาตรฐาน

  • Modula-2
  • Modula-3
  • Pascal
  • PL/I
  • D
  • Mercury
  • VHDL

สถาปัตยกรรมคอมพิวเตอร์ที่สนับสนุน

โพรเซสเซอร์ที่สนับสนุนโดย GCC รุ่น 4.3 ได้แก่

  • Alpha
  • ARM
  • Atmel AVR
  • Blackfin
  • HC12
  • H8/300
  • IA-32 (x86)
  • x86-64
  • IA-64
  • Motorola 68000
  • MIPS
  • PA-RISC
  • PDP-11
  • PowerPC
  • R8C/M16C/M32C
  • SPU
  • System/390/zSeries
  • SuperH
  • SPARC
  • VAX

โพรเซสเซอร์อื่นที่สนับสนุนได้แก่:

  • A29K
  • ARC
  • ETRAX CRIS
  • D30V
  • DSP16xx
  • FR-30
  • FR-V
  • Intel i960
  • IP2000
  • M32R
  • 68HC11
  • MCORE
  • MMIX
  • MN10200
  • MN10300
  • Motorola 88000
  • NS32K
  • ROMP
  • Stormy16
  • V850
  • Xtensa
  • AVR32

โพรเซสเซอร์อื่นที่สนับสนุนโดย GCC แต่การพัฒนาและบำรุงรักษา แยกจากรุ่นของ FSF:

  • D10V
  • MeP
  • MicroBlaze
  • MSP430
  • Nios II และ Nios
  • PDP-10
  • TIGCC (Motorola 68000 variation)
  • Z8000

โครงสร้างการทำงาน

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

พรีโพรเซสเซอร์ ที่ใช้เป็นโปรแกรมหนึ่งใน GCC มีชื่อว่า cpp เรียกใช้ก็ต่อเมื่อจะคอมไพล์โปรแกรมที่เขียนในบางภาษา เช่น C หรือ C++ เป็นต้น

ใน GCC แยกคอมไพเลอร์แต่ละภาษาออกเป็นคนละโปรแกรม ตัวอย่างเช่น คอมไพเลอร์ภาษา C จะเป็นโปรแกรมที่ชื่อ cc1 โครงสร้างภายในคอมไพเลอร์แต่ละภาษาแบ่งเป็นสามส่วนเหมือนกัน ได้แก่ ฟรอนต์เอ็นด์ (frontend) มิดเดิลเอ็นด์ (middle-end) และ แบ็คเอ็นด์ (backend)

  • ฟรอนต์เอ็นด์ ทำหน้าที่อ่านไฟล์ที่ผ่านการประมวลผล พรีโพรเซสเซอร์ แล้วตีความหมาย ตรวจสอบหาข้อผิดพลาด และสร้างโครงสร้างข้อมูลที่ชื่อ GENERIC ซึ่งมีรูปแบบ abstract syntax tree (AST) ฟรอนต์เอ็นด์นี้เป็นส่วนของคอมไพเลอร์ที่ขึ้นกับภาษา
  • มิดเดิลเอ็นด์ ทำหน้าที่แปลง GENERIC เป็นอีกโครงสร้างหนึ่งที่ชื่อ GIMPLE ซึ่งลดรูปโครงสร้างต่างๆ เช่น ลูป for, while ให้เหลือเพียง if และ goto แล้วแปลงเข้ารูปแบบ static single assignment (SSA) สุดท้ายสร้างโครงสร้างข้อมูลที่ชื่อ Register Transfer Language (RTL) ซึ่งในแต่ละขั้นตอนการแปลข้างบน ก็มีการทำ ออพติไมซ์ (optimize) เพื่อให้โปรแกรมที่ได้ทำงานเร็วขึ้น ส่วนนี้ของคอมไพเลอร์ไม่ขึ้นกับภาษาหรือสถาปัตยกรรมที่ใช้
  • แบ็คเอ็นด์ แปลง RTL ไปเป็นโปรแกรมภาษาแอสเซมบลี ส่วนนี้ขึ้นกับสถาปัตยกรรมที่จะคอมไพล์

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

อ้างอิง

  1. "GCC Front Ends". สืบค้นเมื่อ 2008-05-11.
  2. "GCC Command Options". สืบค้นเมื่อ 2008-05-11.
  3. "The Conceptual Structure of GCC". สืบค้นเมื่อ 2008-05-11.
  4. "GCC 4.0.2 - The Implementation". สืบค้นเมื่อ 2008-05-11.

แหล่งข้อมูลอื่น

  • เว็บไซต์ GCC

ดแปลโปรแกรมของกน, งกฤษ, compiler, collection, หร, อเร, ยกโดยย, อว, งกฤษ, เป, นช, ดโปรแกรมแปลโปรแกรมสำหร, บแปลภาษาโปรแกรมต, าง, ฒนาโดยโครงการกน, และแจกจ, ายเป, นซอฟต, แวร, เสร, ภายใต, ญญาอน, ญาตแบบ, และ, lgpl, โดยช, อว, าเป, นช, ดคอมไพเลอร, มาตรฐานในระบบปฏ, การ. chudaeplopraekrmkhxngknu xngkvs GNU Compiler Collection hruxeriykodyyxwa cisisi xngkvs GCC epnchudopraekrmaeplopraekrmsahrbaeplphasaopraekrmtang phthnaodyokhrngkarknu GNU aelaaeckcayepnsxftaewresriphayitsyyaxnuyataebb GPL aela LGPL odychud GCC thuxwaepnchudkhxmiphelxrmatrthaninrabbptibtikaraebbyuniks xyangechn linuks hrux Mac OS X epntnGNU Compiler Collectionphuphthnaokhrngkarknurunlasud8 2 26 krkdakhm ph s 2561rabbptibtikarhlayrabbptibtikarpraephthkhxmiphelxrsyyaxnuyatGPLewbistgcc gnu orgchuxedimkhxng GCC khux GNU C Compiler enuxngcakinrayaaerkthukphthnakhunepnkhxmiphelxrkhxngphasasiethann aetinphayhlngemuxidphthnaihsnbsnunphasaopraekrmxun makkhun cungepliynchuxephuxihsuxkhrxbkhlumkhwamhmaymakkwaedim enuxha 1 phaphrwm 2 phasaopraekrmthisnbsnun 3 sthaptykrrmkhxmphiwetxrthisnbsnun 4 okhrngsrangkarthangan 5 xangxing 6 aehlngkhxmulxunphaphrwm aekikhGCC erimphthnain kh s 1985 odyrichard stxlaemn sungekhaerimcakkaraeplngkhxmiphelxrkhxngphasa Pastel swnkhyaykhxngphasapaskal ihichkbphasasiid GCC thukekhiynkhunmaihmxikkhrngodyichphasasithnghmd ephuxepnkhxmiphelxrsahrbphasasiaelaepnswnsakhykhxngokhrngkarknuinyukhaerk sungthisthangkarphthnakahndody Free Software Foundationin kh s 1997 klumnkphthna GCC canwnhnungimphxickarphthnakhxng GCC sayhlkthilacha cungaeyktwxxkmaphthna EGCS Experimental Enhanced GNU Compiler System thaihkarphthnaekidkhunrwderwkwa GCC edimmak inpi kh s 1999 EGCS klaymaepn GCC ewxrchnhlkaethn GCC ekainthaythisudnxkcakcaepnkhxmiphelxrmatrthanbnrabbptibtikaraebbyuniksaelw GCC yngthuknamaaeplngihichidbnrabbptibtikarxun echn NeXTSTEP aela Mac OS X rwmthungrabbfngtwxun echn Symbian PlayStation aela Dreamcast epntnphasaopraekrmthisnbsnun aekikhinchudkhxmiphelxrmatrthanewxrchn 4 3 snbsnunphasaopraekrmdngtxipni 1 C C G cawa GCJ Ada GNAT Objective C Objective C Fortran GFortran nxkcakniyngsnbsnunphasaopraekrmxun ephimetim aetimidrwmxyuinchudkhxmiphelxrmatrthan Modula 2 Modula 3 Pascal PL I D Mercury VHDLsthaptykrrmkhxmphiwetxrthisnbsnun aekikhophressesxrthisnbsnunody GCC run 4 3 idaek Alpha ARM Atmel AVR Blackfin HC12 H8 300 IA 32 x86 x86 64 IA 64 Motorola 68000 MIPS PA RISC PDP 11 PowerPC R8C M16C M32C SPU System 390 zSeries SuperH SPARC VAXophressesxrxunthisnbsnunidaek A29K ARC ETRAX CRIS D30V DSP16xx FR 30 FR V Intel i960 IP2000 M32R 68HC11 MCORE MMIX MN10200 MN10300 Motorola 88000 NS32K ROMP Stormy16 V850 Xtensa AVR32ophressesxrxunthisnbsnunody GCC aetkarphthnaaelabarungrksa aeykcakrunkhxng FSF D10V MeP MicroBlaze MSP430 Nios II aela Nios PDP 10 TIGCC Motorola 68000 variation Z8000okhrngsrangkarthangan aekikhGCC thanganodyichbrrthdkhasng phuichmkeriykopraekrmodykareriykopraekrmthichux gcc phrxmthngistweluxktang thangpharamietxrinbrrthdkhasng opraekrmnicawiekhraahphasathiichcaknamskulkhxngifl aelweriykphriophressesxr khxmiphelxr aexsesmeblxr aela lingekxr mathangantamladb aetphuichsamarthsngihthanganechphaabangkhntxnkhangbncakpharamietxrid 2 phriophressesxr thiichepnopraekrmhnungin GCC michuxwa cpp eriykichktxemuxcakhxmiphlopraekrmthiekhiyninbangphasa echn C hrux C epntnin GCC aeykkhxmiphelxraetlaphasaxxkepnkhnlaopraekrm twxyangechn khxmiphelxrphasa C caepnopraekrmthichux cc1 okhrngsrangphayinkhxmiphelxraetlaphasaaebngepnsamswnehmuxnkn idaek frxntexnd frontend midedilexnd middle end aela aebkhexnd backend 3 4 frxntexnd thahnathixaniflthiphankarpramwlphl phriophressesxr aelwtikhwamhmay trwcsxbhakhxphidphlad aelasrangokhrngsrangkhxmulthichux GENERIC sungmirupaebb abstract syntax tree AST frxntexndniepnswnkhxngkhxmiphelxrthikhunkbphasa midedilexnd thahnathiaeplng GENERIC epnxikokhrngsranghnungthichux GIMPLE sungldrupokhrngsrangtang echn lup for while ihehluxephiyng if aela goto aelwaeplngekharupaebb static single assignment SSA sudthaysrangokhrngsrangkhxmulthichux Register Transfer Language RTL sunginaetlakhntxnkaraeplkhangbn kmikartha xxphtiims optimize ephuxihopraekrmthiidthanganerwkhun swnnikhxngkhxmiphelxrimkhunkbphasahruxsthaptykrrmthiich aebkhexnd aeplng RTL ipepnopraekrmphasaaexsesmbli swnnikhunkbsthaptykrrmthicakhxmiphlswn aexsesmeblxr aela lingekxr nnimrwmxyuinchudopraekrm GCC inrabbknuopraekrmthngsxngcaxyuinxikchudopraekrmhnung khux binutils aexsesmeblxr thahnathiaeplphasaaexsesmbli epnphasaekhruxng inkhnathi lingekxr thahnathirwmiflphasaekhruxng sungxacmihlayifl aelailbrariekhadwykn epnopraekrmthismburnsamarththanganidxangxing aekikh GCC Front Ends subkhnemux 2008 05 11 GCC Command Options subkhnemux 2008 05 11 The Conceptual Structure of GCC subkhnemux 2008 05 11 GCC 4 0 2 The Implementation subkhnemux 2008 05 11 aehlngkhxmulxun aekikhewbist GCC bthkhwamekiywkbethkhonolyi hrux singpradisthniyngepnokhrng khunsamarthchwywikiphiediyidodyephimkhxmulekhathungcak https th wikipedia org w index php title chudaeplopraekrmkhxngknu amp oldid 8047782, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม