快樂蝦http://blog.csdn.net/lights_joy/
本文適用於
bfinutils-2.19
vs2008
bfd同時支援許多不同格式的檔案,這些格式各異的檔案自然要用不同的結構來進行表示,
bfd採用的做法是在
bfd這個結構體中使用乙個
union
來表示:
/* used by the back end to hold private data.*/
union
tdata;
嗯,不同的
target
各取所需!
由於這些結構體大小各異,其記憶體的分配與**自然也是各個
target
所負責的事情了。在
bfd_target
這個結構體中為此設計了乙個**函式陣列:
/* set the format of a file being written.*/
bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
對於不同的檔案型別使用不同的**函式進行處理,比如
bfd_elf32_bfin_vec
這個target
就這樣定義**函式:
#ifndef
bfd_elf32_mkobject
#define
bfd_elf32_mkobject bfd_elf_make_generic_object
#endif
/* bfd_set_format: set the format of a file being written */
,當某個
target
檢測到所要讀取的檔案確實是自己所能處理的型別時,它將呼叫這個**函式,在此**函式中為後端資料分配空間(以
object
檔案處理為例):
/* create a tdata field object_size bytes in length, zeroed out and with
the object_id field of an elf_obj_tdata field set to object_id.*/
bfd_boolean
bfd_elf_allocate_object (bfd *abfd,
size_t object_size,
enum
elf_object_id object_id)
bfd_boolean
bfd_elf_make_generic_object (bfd *abfd)
雖然可以直接通過相應的結構體來訪問後端資料,但是
bfd並不鼓勵這樣做。它定義了一些叫
bfd_get_*
的巨集來做這樣的事情。比如:
#define
bfd_get_section(x) ((x)->section)
#define
bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
等等。具體可參見
bfd.h
中的定義。
bfd對多目標的支援
(2008-9-25)
bfd對
elf32格式的支援
(
2008-11-7
)
objdump與
readelf的區別
(
2008-11-10
)
objdump**分析
(
2008-11-10
)
bfd的檔案格式識別
(2008-11-10)
Python 的資料表示
一 常量 變數和物件 1 常量 是指在程式的執行過程中不變的量。如 1,2,3,4,true false 也有一些包含在模組中的用符號表示的常量,常用的如math模組中的pi和e,如 from math import sqrt,sin pi 顯示3.141592653589793 e 顯示2.718...
BCD資料表示
2.13 bcd資料表示 雖然整數和浮點格式已經可以滿足一般程式的資料表示需求,但是在一些特殊的情況下,其他的數字表示方式更加方便一些。在本節中,我們將對二進位制編碼的十進位制 bcd 格式進行討論,因為80x86 cpu為這種資料表示方式提供了少量的硬體支援。bcd數值是由一些半位元組組成的序列,...
Struts Hibernate資料表示
在 struts hibernate 這種結構中,是不應該把hibernate產生的po直接傳遞給jsp的,不管他是iterator,還是list,這是乙個設計錯誤。我來談談在j2ee架構中各層的資料表示方法 web層的資料表示是formbean,資料 於html form post 業務層的資料表...