การเดินทางของโปรแกรมที่เราเขียน
พอดีอ่านเจอมาจาก บล๊อคของพี่ lewเจอเรื่อง IDE ส่วนหนึ่งของบทความเขียนไว้เกี่ยวกับโค้ดที่เราเขียน ว่าผ่านกระบวนการอะไรบ้าง
————————————————————————————————————————
หลายคนที่เพิ่งเรียนเขียนโปรแกรมอาจจะไม่รู้ว่า โค้ดที่เราเขียนลงไปนั้น มักจะผ่านกระบวนการจากซอฟต์แวร์หลายต่อหลายตัว โดยทั่วไปเท่าที่นึกออกก็จะมี Pre-Processor, Compiler, Assembler, Linker, และ Loader
Pre-Processor นั้นถ้าใครเขียนภาษาซีก็เคยเจอคำสั่งที่อยู่หลังเครื่องหมาย # ทั้งหลาย เช่น define และ include คำสั่งเหล่านี้เป็นคำสั่งที่จะถูกประมวลผลโดยซอฟต์แวร์ตัวนี้ โดยมากแล้วมักเป็นการแทนที่ เช่นเอาตัวเลขไปแทนที่คำที่กำหนด หรือไม่ก็เอาโค้ดจากไฟล์หนึ่งไปวางไว้อีกไฟล์ (include)
Compiler หลายคนเข้าใจผิดว่าคอมไพล์เลอร์ให้ผลลัพธ์เป็นโปรแกรมที่รันได้เสมอ เช่น .exe ในวินโดวส์ แต่แท้จริงแล้วคอมไพล์เลอร์นั้นเป็นตัวแปลงจากภาษาที่เราใช้พัฒนาซอฟต์แวร์ มาเป็นภาษาสำหรับเครื่องซึ่งโดยทั่วไปแล้วก็เป็นภาษาแอสแซมบลี
Assembler ภาษาแอสแซมบลีนั้นอาจจะอ่านยากมาก แต่ที่จริงแล้วภาษาแอสแซมบลีนั้นเป็นภาษาระดับล่างสุดที่คนอาจจะอ่านเข้าใจ ได้ แต่เครื่องคอมพิวเตอร์ซึ่งเข้าใจแต่เลขฐานสองก็ยังไม่เข้าใจมันอยู่ดี ตัวแอสแซมเบลอนี้เองที่จะเข้ามาแปลงไฟล์เท็กที่เป็นภาษาแอสแซมบลีให้เป็น ข้อมูลที่ซีพียูเข้าใจได้จริงๆ
Linker เวลาทำงานจริงซอฟต์แวร์จำนวนมากสามารถใช้ฟังก์ชั่นหลายๆ อย่างร่วมกันได้ อย่างเช่น printf ดังนั้นแล้วจึงเป็นเรื่องที่ดีที่จะแยกไฟล์เหล่านี้เอาไว้ต่างหาก ด้วยเหตุผลด้านพื้นที่ดิสก์ และเวลาที่มีการปรับปรุงในเรื่องของความปลอดภัยจะได้มีผลทีเดียวหลายๆ โปรแกรม ตัว Linker นี้จะรับอินพุตเป็นไฟล์จากแอสแซมเบลอ มีสองแบบคือแบบ static ที่ก่อนโปรแกรมจะทำงานได้ต้องทำการรวมไลบรารีเข้าไว้ในไฟล์ก่อน กับแบบ dynamic ที่เมื่อรันโปรแกรมแล้วจึงมีการเรียก dynamic-linker มาเชื่อมไลบราลีต่างๆ เข้าด้วยกันอีกที แบบหลังนี่หลายๆ คนน่าจะเคยเห็นไฟล์ dll ในวินโดวส์ นั่นหล่ะครับที่มันต้องเอามาเชื่อมกันตอนรัน
Loader เป็นโปรแกรมตัวสุดท้ายที่จะเอาโปรแกรมของเราไปวางไว้ในเมมโมรี ก่อนที่จะเริ่มป้อนโปรแกรมของเราเข้าซีพียู เราไม่ค่อยเห็นโปรแกรมตัวนี้เท่าใหร่เพราะว่ามันมักจะผูกกับระบบปฏิบัติการ อย่างแนบแน่น
About this entry
You’re currently reading “การเดินทางของโปรแกรมที่เราเขียน,” an entry on CSN : CPE SKE News
- Published:
- 02.07.08 / 3am
- Category:
- Software
No comments
Jump to comment form | comments rss [?] | trackback uri [?]