読者です 読者をやめる 読者になる 読者になる

標準出力

新しいもの、変わらないこと 自分の頭を通して考えてみました (stdout)

Windowsな環境の32bit/64bitとか

まずは、メモ

ある程度知識が溜まったらまとめエントリ書くかも

[32bitバイナリか64bitバイナリかの判断]
PE(Portrable Executable)形式の場合

PEヘッダを見れば判断できる。
PEヘッダは、0x50450000 (PE\0\0) という規定値で始まる。
そして、それに続く2byteで32bit/64bitバイナリかの判断ができる。

0x14c の場合 x86向けバイナリ
0x6486の場合 x86-64向けバイナリ

*ここで注意なのは、ご使用のプロセッサがリトル・エンディアンの場合は、バイナリエディタでは、0x8664が0x6486と表示されます。


PEフォーマットについては、
https://code.google.com/p/corkami/wiki/PE101

チートシートを公開してくれてます。



[実行中のプロセスが32bitか64bitか]
タスクマネージャーのプロセス名に「*32」がついていれば、それは32bitのプロセスです。




また、Windowsも絡めた話は、
http://blogs.msdn.com/b/nakama/archive/2008/10/30/part-1-64-windows-os.aspx

の記事が精緻にまとめられています。