一段处理汇编的代码
上一篇 /
下一篇 2008-08-14 08:30:40
// asmkey.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include
#include #include struct aa { char name[16]; char val[8]; struct aa *next; }; int main(int argc, char* argv[]) { FILE * fp ,*fp1; char buffer[128]; char temp[128]; struct aa *zhi; struct aa *head,*curren,*tmp; char *p1,*p2,*p3,*p4,*p5; int len; int biaoz=0; head =NULL; fp=fopen("vndioPart.asm","r"); if(fp == NULL) { printf("不能打开输入文件\n"); return 1; } fp1=fopen("out.asm","w"); if(fp == NULL) { printf("不能打开输出文件\n"); return 1; } fputs("//__declspec(naked) int unlimt(unsigned char * buff)\n",fp1); fputs("//{\n",fp1); fputs("// __asm\n",fp1); fputs("// {\n",fp1); fputs("// 汇编\n",fp1); fputs("// }\n",fp1); fputs("//}\n",fp1); fputs("\n",fp1); fputs("\n",fp1); while (fgets(buffer,128,fp) != NULL) { len = strlen(buffer); if (len <= 1) continue; if (memcmp(buffer,";",1) == NULL) continue; if (strstr(buffer,"near") != NULL) { p5 = strstr(buffer,"proc"); *(p5-1) = ':'; *p5 = '\0'; strcpy(temp,buffer); biaoz += 1; if (biaoz >= 2) { fputs("\n",fp1); fputs(temp,fp1); fputs("\n",fp1); fputs("\n",fp1); } continue; } if (strstr(buffer,"endp") != 0) { curren = head; while (curren != NULL) { tmp = curren; curren = curren->next; free(tmp); } head = NULL; continue; } p1= strstr(buffer,"="); if ( p1 != NULL) { if (head == NULL) { head = (struct aa *)malloc(sizeof(struct aa)); memcpy(head->name,buffer,(p1-buffer)); head->name[p1-buffer]='\0'; p2 = strrchr(buffer,' '); memcpy(head->val,p2+1,(buffer + len - p2)); head->val[buffer + len - p2 + 1]='\0'; head->next = NULL; }else { curren = head; while (curren->next != NULL) { curren = curren->next; } zhi = (struct aa *)malloc(sizeof(struct aa)); curren->next = zhi; zhi->next=NULL; memcpy(zhi->name,buffer,(p1-buffer)); zhi->name[p1-buffer]='\0'; p2 = strrchr(buffer,' '); memcpy(zhi->val,p2+1,(buffer + len - p2)); zhi->val[buffer + len - p2 + 1]='\0'; } continue; } curren = head; while (curren != NULL) { p3 = strstr(buffer,curren->name); if ( p3 != NULL) { memcpy(temp,buffer,p3-buffer); temp[p3-buffer] = ' '; temp[p3-buffer+1] = '\0'; strcat(temp,curren->val); temp[strlen(temp)-1] = '\0'; p4 = strrchr(buffer,']'); if (p4 != NULL) strcat(temp,p4); /*printf("%s\n",temp);*/ break; } else { memcpy(temp,buffer,len); temp[len] = '\0'; } curren = curren->next; }; fputs(temp,fp1); } fclose(fp); fclose(fp1); printf("转换完成!\n"); return 0; }
导入论坛
引用链接
收藏
分享给好友
管理
举报
TAG:
代码
汇编