-
Notifications
You must be signed in to change notification settings - Fork 3
20日目の解析
hangedman edited this page Dec 23, 2016
·
13 revisions
もうそろそろ終わりが見えてきたぜ
最後までCOFFは開発者を苦しめる、以下はopennask
とnask
で差分が出たところ
- nask -> opennask の順
- それぞれのシンボルの格納順序が異なる、これもうわかんねえな
# nask, 単純に EXTERNの宣言順にならんでいるだけ
00000280: 0000 0000 0000 0000 0000 0000 00e4 0000 : _inthandler20
00000290: 0000 0000 0000 0000 0002 0000 0000 00f2 : _inthandler21
000002a0: 0000 0000 0000 0000 0000 0002 0000 0000 :
000002b0: 0000 0100 0000 0000 0000 0000 0002 0000 : _inthandler27
000002c0: 0000 000e 0100 0000 0000 0000 0000 0002 : _inthandler2c
000002d0: 0000 0000 00d6 0000 0000 0000 0000 0000 : _cons_putchar
# opennask, std::vectorの影響かソートされてしまっている
00000280: 0000 0000 0000 0000 0000 0000 00d6 0000 : _cons_putchar
00000290: 0000 0000 0000 0000 0002 0000 0000 00e4 : _inthandler20
000002a0: 0000 0000 0000 0000 0000 0002 0000 0000 :
000002b0: 00f2 0000 0000 0000 0000 0000 0002 0000 : _inthandler21
000002c0: 0000 0000 0100 0000 0000 0000 0000 0002 : _inthandler27
000002d0: 0000 0000 000e 0100 0000 0000 0000 0000 : _inthandler2c
- opennaskのログ
- もちろん、
_cons_putchar
,_inthandler20
,_inthandler21
,_inthandler27
,_inthandler2c
の順
- もちろん、
_cons_putchar has value 725
(DW): 0xd6, 0x00, 0x00, 0x00
_inthandler20 has value 653
(DW): 0xe4, 0x00, 0x00, 0x00
_inthandler21 has value 671
(DW): 0xf2, 0x00, 0x00, 0x00
_inthandler27 has value 689
(DW): 0x00, 0x01, 0x00, 0x00
_inthandler2c has value 707
(DW): 0x0e, 0x01, 0x00, 0x00
(DW): 0x1c, 0x01, 0x00, 0x00
EXTERNのシンボルの書き込み順序が間違ってただけだった。 以下で修正
[20_day/harib17b] Fix writing process for EXTERN symbols
あと新しい命令
-
間接ファーコール CALL命令(Call Procedure)
0xFF /3 CALL m16:16 絶対間接ファーコール、m16:16でアドレスを指定
0xFF /3 CALL m16:32 絶対間接ファーコール、m16:32でアドレスを指定