プログラムの領域

以下にhello worldのバイナリをreadelfした例を示す

Section Headers:
[番] 名前 タイプ アドレス Off サイズ ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .text PROGBITS 80080000 001000 0003c0 00 AX 0 0 4
[ 2] .reginfo MIPS_REGINFO 80082000 003000 000018 01 0 0 4
[ 3] .data PROGBITS 80082018 002018 000fe8 00 WA 0 0 4
[ 4] .bss NOBITS 80083000 003000 000000 00 WA 0 0 1
[ 5] .pdr PROGBITS 00000000 003018 0000e0 00 0 0 4
[ 6] .mdebug.abi32 PROGBITS 00000000 0030f8 000000 00 0 0 1
[ 7] .shstrtab STRTAB 00000000 0030f8 000048 00 0 0 1
[ 8] .symtab SYMTAB 00000000 0032d0 000310 10 9 12 4
[ 9] .strtab STRTAB 00000000 0035e0 0001c5 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
I (info), L (link order), G (group), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)

Program Headers:
タイプ オフセット 仮想Addr 物理Addr FileSiz MemSiz Flg Align
LOAD 0x001000 0x80080000 0x80080000 0x003c0 0x003c0 R E 0x1000
LOAD 0x002018 0x80082018 0x80082018 0x00fe8 0x00fe8 RW 0x1000

主メモリの検証(write/read)をする場合、
この場合.text〜.bssの領域を避け0x80089000から検証していく。
今日、.data領域を検証プログラム自身で書き換えてハングするという失敗を冒した。