-
Notifications
You must be signed in to change notification settings - Fork 0
/
反汇编.c
56 lines (46 loc) · 1.45 KB
/
反汇编.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "hong.h"
#include <stdlib.h>
#include <stdio.h>
枚举 操作类型{
操作停机,操作入,操作出,操作加,操作减,操作乘,操作除,
操作转储,
操作载入,操作存储,操作载入码,
操作跳小于,操作跳小等,
操作跳大于,操作跳大等,
操作跳等于,操作跳不等,
操作跳,
操作无效
};
类型定义 结构 指令{
整型 操作;
整型 实参;
}指令;
#define 代码大小 (1024)
#define 数据大小 (1024)
外部 整型 取操作数计数(整型 操作);
/*映射到操作类型*/
常量 印刻 *操作描述[] = {
"停机","入","出","加","减","乘","除",
"转储",
"载入","存储","载入码",
"跳小于","跳小等","跳大于","跳大等",
"跳等于","跳不等",
"跳",
0
};
空 反汇编出投掷(常量 印刻 *文件,常量 指令 *操作码, 整型 大小){
FILE *文件指针;
印刻 文[256];
整型 甲;
strcpy(文, 文件);
strcat(文, ".反汇编");
文件指针 = fopen(文, "w");
环(甲 = 0; 甲 < 大小 && 操作码[甲].操作 != 操作停机; ++甲){
fprintf(文件指针, "%3d\t%s", 甲, 操作描述[操作码[甲].操作]);
若(取操作数计数(操作码[甲].操作) > 0 ){
fprintf( 文件指针, "\t%d", 操作码[甲].实参);
}
fputc('\n', 文件指针);
}
fclose(文件指针);
}