1 /*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
4 for INTEL64(R), AMD64(R)
6 Copyright(C) Koinec 2007-2008. All Rights Reserved.
7 DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
9 /* File Info -----------------------------------------------------------
13 ----------------------------------------------------------------------*/
17 #include"../include/drd64_types.h"
18 #include"../include/libintel64asm.h"
21 /*----------------------------------------------------------------------
22 ----------------------------------------------------------------------*/
27 puts("INTEL64 Line Assembler/DisAssemble Version 1.00");
28 puts("(Dr.Deamon64 SubProject -- LibIntel64asm Test Program)");
29 puts("Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.");
36 /*----------------------------------------------------------------------
37 ----------------------------------------------------------------------*/
42 puts(" Usage: intel64asm [option] command data");
43 puts(" command List :");
44 puts(" -a : Assemble File ex.> intel64asm -a example.asm");
45 puts(" -l : Assemble Line ex.> intel64asm -l mov rax, dword [ rsi + 0005h] ");
46 puts(" -d : DisAssemble File ex.> intel64asm -d example.bin");
47 /*puts(" -r : DisAssemble Line ex.> intel64asm -r 412a1200h");*/
48 puts(" -v : [OPTION] Vervose Mode (Put All Debug Message)");
49 puts(" ex. intel64asm -v -a example.asm");
50 puts(" CAUTION!! : This Assembler isn't until support ELF Binary Format!");
56 /*----------------------------------------------------------------------
57 ----------------------------------------------------------------------*/
66 if( NULL == (fp = fopen( filename, "r" )))
70 while( NULL != fgets( str_buf, 200, fp )) {
71 Drd64_LibIntel64asm_AsmLine( b_dest, str_buf, sizeof(b_dest));
80 /*----------------------------------------------------------------------
81 ----------------------------------------------------------------------*/
94 if(NULL == (fp = fopen( filename, "rb" )))
97 fseek(fp, 0, SEEK_END);
99 fseek(fp, 0, SEEK_SET);
101 pb_data = (Byte *)malloc(fsize);
102 if( NULL == pb_data )
105 fread(pb_data, fsize, 1, fp);
113 i_length = Drd64_LibIntel64asm_DisAsmLine(ans, pb_now, sizeof(ans));
116 }while( pb_now < (pb_data+i_size) );
124 /*----------------------------------------------------------------------
125 ----------------------------------------------------------------------*/
134 char str_option[256];
135 unsigned char b_dest[256];
138 str_option[0] = '\0';
148 /* Analyze Option Line */
149 if( !strcmp( argv[i_pos], "-v" )) {
154 Drd64_LibIntel64asm_Initialize();
155 Drd64_LibIntel64asm_SetDebugLevel( i_debug_level );
157 /* Analyze Command Line */
158 if( !strcmp( argv[i_pos], "-a" )) {
159 asm_file( argv[i_pos+1]);
161 else if( !strcmp( argv[i_pos], "-l" )) {
162 for( i_cnt = i_pos+1; i_cnt < argc; i_cnt++ ) {
163 strncat( str_option, argv[i_cnt], sizeof( str_option ));
164 strncat( str_option, " ", sizeof( str_option ));
166 Drd64_LibIntel64asm_AsmLine( b_dest, str_option, sizeof(b_dest));
168 else if( !strcmp( argv[i_pos], "-d" )) {
169 disasm_file( argv[i_pos+1] );
171 else if( !strcmp( argv[i_pos], "-r" )) {
175 Drd64_LibIntel64asm_Terminate();
181 /* EOF of drd64_.c ----------------------------------- */