Skip to content

20日目の解析

hangedman edited this page Dec 23, 2016 · 13 revisions

もうそろそろ終わりが見えてきたぜ

最後までCOFFは開発者を苦しめる、以下はopennasknaskで差分が出たところ

  • 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

あと新しい命令

Clone this wiki locally