General

Parameter ใน gcc ที่น่าสนใจ

ตามที่ Nathdodo ไปหามานั้น มีสอง parameter ที่น่าสนใจสำหรับ gcc คือ -fpack-struct และ -fPIC ครับ
อนึ่งหากขึ้นต้นด้วย -f นั้นหมายถึงเรากำลังคุยกับ gcc เพื่อกำหนดกรรมวิธี ในการ Generate Code .. เป็นอย่างไรมาลองดู

-fpack-struct

เพื่อแก้ปัญหาการกำหนดค่าตัวแปร 16-bit หรือ 8-bit ใน 32-bit system
..โดยเฉพาะการจอง member ของ struct แล้วทาง gcc กำหนดให้ทุก member มี sizeof ขั้นต่ำเป็น 4-byte (32-bit) เท่ากันหมด ถึงแม้เราจะจองเป็น char (8-bit) ก็ตาม
ทางแก้ไขสามารถทำได้ทั้งที่ gcc และการกำหนด #pragma ของภาษา C
http://en.wikipedia.org/wiki/Data_structure_alignment

-fPIC

(Position-Independent Code )
เพื่อแก้ปัญหาคล้ายคลึงกับปัญหาข้องต้น แต่เกิดขึ้นใน Machine Code (ไม่ใช่ Data เหมือนปัญหาแรก)
..ใน Dynamic Link Library
… ทำไมนะหรือ.. ก็เพราะว่าปรกติแล้วในบาง Machine ไม่ Support การอ่าน Code ทีละ 8-bit หรือ 16-bit หากตัวเองเป็น 32-bit (เช่นใน Motorola บางรุ่น)
ดังนั้นเมื่อต้อง Load Dynamic Link Library ที่ปราศจาก -fPIC ตอน Compile จะทำให้ CPU ต้องเสียเวลา Convert Code ให้ Compatible เสียก่อน .. เสียเวลา
ดังนั้นการใช้ -fPIC จึงช่วยประหยัดเวลาลงไปได้
http://en.wikipedia.org/wiki/Position-independent_code

Technorati : , , , ,
Del.icio.us : , , , ,

Advertisements
มาตรฐาน

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s