protect

ถ้าเอาบทความไปเผยแพร่แล้วไม่ให้เครดิต ดำเนินคดีด้วย พรบ. คอมพิวเตอร์ฉบับใหม่ ขั้นสูงสุดและไม่ยอมความครับ

วันอังคารที่ 27 ตุลาคม พ.ศ. 2558

Assembly Module : ตอนที่ 5 TypeDef table และสมาชิก (1)


TypeDef table เป็น table ที่อยู่ในส่วนของ Definition table มี reference code 0x02 ตอนทำ runtime (reference code ผมจะอธิบายพร้อมยกตัวอย่างในตอนถัดไปครับ) ใน 1 Module จะมี TypeDef แค่ 1 table เท่านั้น ทำหน้าที่เก็บรายละเอียดของ Type ที่เป็นสมาชิกของ module โดยแต่ล่ะแถวของ table จะเก็บข้อมูลของ Type แต่ล่ะชนิด ข้อมูลในแถวจะเก็บรายละเอียดของข้อมูลดังนี้

1) ชื่อของ Type
2) base type ที่มีการสืบทอดมา
3) flags access modifiers ของ Type (เช่น public, private)
4) Index ของ method ที่ Type นี้เป็นเจ้าของ ข้อมูลของ method จะอยู่ใน table MethodDef โดยมี index นี้เป็นตัวเชื่อมระหว่าง TypeDef กับ MethodDef
5) Index ของ field ที่ Type นี้เป็นเจ้าของ ข้อมูลของ field จะอยู่ใน table FieldDef โดยมี index นี้เป็นตัวเชื่อมระหว่าง TypeDef กับ FieldDef
6) Index ของ property ที่ Type นี้เป็นเจ้าของ ข้อมูลของ property จะอยู่ใน table PropertyDef โดยมี index นี้เป็นตัวเชื่อมระหว่าง TypeDef กับ PropertyDef
7) Index ของ event ที่ Type นี้เป็นเจ้าของ ข้อมูลของ event จะอยู่ใน table EventDef โดยมี index นี้เป็นตัวเชื่อมระหว่าง TypeDef กับ EventDef

จากคำอธิบายข้างต้นเราจะเห็นความสัมพันธ์ของ database อย่างง่ายๆ โดยมี TypeDef เป็น table หลักและมี table อื่นๆ เป็นตัวเก็บรายละเอียดของ Type

เรามาดู table ย่อยที่มีความสัมพันธ์กับ TypeDef โดยมีรายละเอียดดังนี้

1) MethodDef
    เป็น table ที่เก็บรายละเอียดของ method ที่เป็นสมาชิกของ Type มี reference code 0x06 ตอนทำ runtime โดยรายละเอียดที่เก็บใน table มีดังนี้
   - ชื่อของ method
   - flags access modifiers ของ method (เช่น public, private)
   - Index ของ parameter ของ method (signature) ข้อมูลของ parameter จะอยู่ใน table ParamDef โดยมี index นี้เป็นตัวเชื่อมระหว่าง TypeDef กับ ParamDef

2) ParamDef
    เป็น table ที่เก็บรายละเอียดของ parameter ของ method  มี reference code 0x08 ตอนทำ runtime ใน 1 แถวจะเก็บรายละเอียดของ พารามิเตอร์ที่ถูกกำหนดใน method โดยข้อมูลในแต่ล่ะแถวจะเก็บรายละเอียดดังนี้
    - Type ของ parameter
    - ชื่อของ parameter
    - flag ของ parameter เช่น in, out, retval

2) FieldDef
  เป็น table ที่เก็บรายละเอียดของ filed ที่เป็นสมาชิกของ Type มี reference code 0x04 ตอนทำ runtime โดยรายละเอียดที่เก็บใน table มีดังนี้
    - Type ของ field
    - ชื่อของ field
    - flag ของ field เช่น private, public

3) PropertyDef
    เป็น table ที่เก็บรายละเอียดของ property ที่เป็นสมาชิกของ Type มี reference code 0x17 ตอนทำ runtime โดยรายละเอียดที่เก็บใน table มีดังนี้
    - Type ของ property
    - ชื่อของ property
    - flag ของ propertyเช่น private, public


4) EventDef

    เป็น table ที่เก็บรายละเอียดของ event ที่เป็นสมาชิกของ Type มี reference code 0x14 ตอนทำ runtime โดยรายละเอียดที่เก็บใน table มีดังนี้
    - Type ของ event
    - ชื่อของ event
    - flag ของ event เช่น private, public


ในตอนหน้าเราจะมาดูวิธีการอ่านรายละเอียดของ table TypeDef และ table อื่นๆ ที่ TypeDef มีการอ้างถึงกันครับ

พบกันใหม่บทความหน้าครับ
TuChay


ไม่มีความคิดเห็น:

แสดงความคิดเห็น