Macro คืออะไร?
Macro นั้นเป็นการนำเอาความสามารถที่มีอยู่ของ Compiler ที่สามารถทำ Preprocessor มาใช้ในการช่วยพัฒนางาน หรือ รูปแบบการเขียนโปรแกรมให้สะดวกและง่ายขึ้น ตัวอย่างเช่น #define IRQ08 0x0099 เป็นต้น เมื่อมีการคำดังกล่าว ก็จะแทนด้วยคำที่ต่อท้ายนั้น
แล้วมีความสำคัญอย่างไรกับระบบฝังตัว?
ระบบฝังตัวนั้นประกอบด้วยอุปกรณ์ฝังตัวต่างๆ ทำงานร่วมกัน ซึ่งการที่อุปกรณ์ฝังตัวจะสามาถทำงานได้นั้นก็ต้องอาศัย การเขียนโปรแกรมซึ่งโดยส่วนใหญ่แล้ว มักจะไม่สามารถหลีกเลี่ยงการยุ่งเกี่ยวกับรายละเอียด ภายในตัวอุปกรณ์แบบฝังตัวได้ เราต้องมีการเข้าถึง Register ต่างๆเพื่อควบคุมการทำงาน ซึ่งแต่ละ Register นั้นก็จะประกอบด้วยกลุ่มบิตที่มีความหมาย ต่อการทำงานนั้น แล้วเราก็จะพบกับปัญหาเกี่ยวกับการใช้งานเนื่องจาก ภายในอุปกรณ์แบบฝังตัวมีข้อกำหนดมากมายที่ แสดงออกมาด้วยตัวเลข อย่างเช่น บิตที่ 7 ของ Register ตัวหนึ่งก็จะบอกถึงความหมายเฉพาะ เป็นต้น
แต่ด้วย Macro นี้ก็จะทำให้เราสามารถเปลี่ยนความหมายในเชิงตัวเลข ออกมาแทนด้วยตัวคำหรือกลุ่มอักษร เพื่อให้มันสามารถสื่อความหมาย และง่ายต่อความเข้าใจ เราจึงสามารถพัฒนางานบนระบบฝังตัวได้สะดวกและรวดเร็วมากขึ้น
ตัวอย่างการใช้เราจะพบว่ากลุ่มคำนี้สามารถสื่อความหมายได้มากกว่าตัวเลข
ปัญหาที่ตามมา
ข้อดีของ Macro นั้นก็มีประโยชน์ตรงที่ช่วยอำนวยความสะดวกให้กับนักพัฒนา แต่ก็เป็นธรรมดาว่ามันก็มักจะตรงข้ามกับความซับซ้อนที่เพิ่มขึ้น ตัวอย่างเช่น ซึ่งช่วยในการกำหนดค่าที่สะดวกมากเพียงแค่เราส่งค่า ว่าเราต้องการใช้ Match Register อันที่เท่าไร แต่ถ้าหากเรามองอีกแง่หนึ่งเราก็จะพบว่าในการกำหนดค่าด้วย Macro นี้จะต้องใช้ตัว Operator สองตัวคือ Shift และ Multiply ซึ่งถ้าเรากำหนดด้วยค่าทางตัวเลขไปเลยไม่ต้องอาศัย Macro ก็ไม่จำเป็นต้องมี Operator ในการกำหนดค่า เพราะยิ่งมี Operator มากขึ้นจำนวนคำสั่งเมื่อถูก Compile ของโค้ดแบบเดียวกันก็จะเพิ่มขึ้นตามไปได้
สรุปปิดท้าย
Macro นั้นก็มีข้อดีและข้อเสีย หน้าที่ของนักพัฒนาคือ ใช้งานมันให้เหมาะสมกับงานครับ
Macro นั้นเป็นการนำเอาความสามารถที่มีอยู่ของ Compiler ที่สามารถทำ Preprocessor มาใช้ในการช่วยพัฒนางาน หรือ รูปแบบการเขียนโปรแกรมให้สะดวกและง่ายขึ้น ตัวอย่างเช่น #define IRQ08 0x0099 เป็นต้น เมื่อมีการคำดังกล่าว ก็จะแทนด้วยคำที่ต่อท้ายนั้น
แล้วมีความสำคัญอย่างไรกับระบบฝังตัว?
ระบบฝังตัวนั้นประกอบด้วยอุปกรณ์ฝังตัวต่างๆ ทำงานร่วมกัน ซึ่งการที่อุปกรณ์ฝังตัวจะสามาถทำงานได้นั้นก็ต้องอาศัย การเขียนโปรแกรมซึ่งโดยส่วนใหญ่แล้ว มักจะไม่สามารถหลีกเลี่ยงการยุ่งเกี่ยวกับรายละเอียด ภายในตัวอุปกรณ์แบบฝังตัวได้ เราต้องมีการเข้าถึง Register ต่างๆเพื่อควบคุมการทำงาน ซึ่งแต่ละ Register นั้นก็จะประกอบด้วยกลุ่มบิตที่มีความหมาย ต่อการทำงานนั้น แล้วเราก็จะพบกับปัญหาเกี่ยวกับการใช้งานเนื่องจาก ภายในอุปกรณ์แบบฝังตัวมีข้อกำหนดมากมายที่ แสดงออกมาด้วยตัวเลข อย่างเช่น บิตที่ 7 ของ Register ตัวหนึ่งก็จะบอกถึงความหมายเฉพาะ เป็นต้น
แต่ด้วย Macro นี้ก็จะทำให้เราสามารถเปลี่ยนความหมายในเชิงตัวเลข ออกมาแทนด้วยตัวคำหรือกลุ่มอักษร เพื่อให้มันสามารถสื่อความหมาย และง่ายต่อความเข้าใจ เราจึงสามารถพัฒนางานบนระบบฝังตัวได้สะดวกและรวดเร็วมากขึ้น
ตัวอย่างการใช้
#define PWMMR0_IRQ_FLAG (1 << 0)
ปัญหาที่ตามมา
ข้อดีของ Macro นั้นก็มีประโยชน์ตรงที่ช่วยอำนวยความสะดวกให้กับนักพัฒนา แต่ก็เป็นธรรมดาว่ามันก็มักจะตรงข้ามกับความซับซ้อนที่เพิ่มขึ้น ตัวอย่างเช่น
#define PWMMCR_MRx_RESET(x) (2 << (3*x))
สรุปปิดท้าย
Macro นั้นก็มีข้อดีและข้อเสีย หน้าที่ของนักพัฒนาคือ ใช้งานมันให้เหมาะสมกับงานครับ
Powered by ScribeFire.
ไม่มีความคิดเห็น:
แสดงความคิดเห็น