DUMP で出力された内容を ダンプリスト と呼ぶ
ダンプリスト左端はアドレス(ファイル先頭からの位置)
ダンプリスト中央にある16進数(バイト)が列挙されてる部分がマシン語プログラム(バイトコード)を表している。
ダンプリスト右端は、バイトコードをキャラクタコードで表現したときの内容。ただしバイトで表現可能な数値はキャラクタコードの範疇を超えることがあるため、そのような場合はピリオドで表現される。
dump.c
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE *fp;
unsigned char buf[16]; /* 読み込みバッファ */
unsigned long addr = 0; /* 先頭からのアドレス */
int readnum, i;
if(argc <= 1) {
printf("usage:dump filename\n");
return 1;
}
if(!(fp = fopen(argv[1], "rb"))) {
printf("file open error.\n");
return 1;
}
while(1) {
printf("%08x ", addr);
readnum = fread(buf, 1, 16, fp);
/* パイナリデータの表示 */
for(i = 0; i < readnum; i++) {
if( i == 8)
printf(" ");
printf("%02x ", buf[i]);
}
for(i =readnum; i < 16; i++) {
if(i == 8)
printf(" ");
printf(" ");
}
printf(" ");
for(i = 0; i < readnum; i++)
printf("%c", (32 <= buf[i] && buf[i] <= 126) ? buf[i] : '.');
printf("\n");
addr += 16;
if(feof(fp))
break;
}
fclose(fp);
return 0;
}