Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
8687 | turbocat | 1 | #include |
2 | #include |
||
3 | #include |
||
4 | #include |
||
5 | |||
6 | int main(int argc, char** argv) { |
||
7 | if(argc!=3){ |
||
8 | printf("Usage: LoadGen |
||
9 | return 0; |
||
10 | } |
||
11 | argv[2][strlen(argv[1])-2]='\0'; |
||
12 | FILE* symbols_txt = fopen(argv[1], "r"); |
||
13 | if(!symbols_txt){ |
||
14 | fprintf(stderr, "File '%s' not found!\n", argv[1]); |
||
15 | return -1; |
||
16 | } |
||
17 | char line[256]; |
||
18 | while(fgets(line, 256, symbols_txt)) { |
||
19 | if(line[0]!='!'){ |
||
20 | if(line[strlen(line)-1]=='\n'){ |
||
21 | line[strlen(line)-1]='\0'; |
||
22 | } |
||
23 | char asm_name[PATH_MAX]; |
||
24 | sprintf(asm_name, "%s/%s.asm", argv[2], line); |
||
25 | FILE *out = fopen(asm_name, "wb"); |
||
26 | if(!out){ |
||
27 | fprintf(stderr, "Error! File '%s' not created!\n", asm_name); |
||
28 | return -1; |
||
29 | }else{ |
||
30 | printf("File '%s' created successfully!\n", asm_name); |
||
31 | } |
||
32 | |||
33 | fprintf(out, "format ELF\n"); |
||
34 | fprintf(out, "include \"__lib__.inc\"\n"); |
||
35 | fprintf(out, "fun equ __func@%s\n", line); |
||
36 | fprintf(out, "fun_str equ '%s'\n", line); |
||
37 | fprintf(out, "section '.text'\n"); |
||
38 | fprintf(out, "fun_name db fun_str, 0\n"); |
||
39 | fprintf(out, "section '.data'\n"); |
||
40 | fprintf(out, "extrn lib_name\n"); |
||
41 | fprintf(out, "public fun as fun_str\n"); |
||
42 | fprintf(out, "fun dd fun_name\n"); |
||
43 | fprintf(out, "lib dd lib_name\n"); |
||
44 | |||
45 | fclose(out); |
||
46 | } |
||
47 | } |
||
48 | } |