Пример #1
0
Файл: ui.c Проект: wxzcyy/X86
static int cmd_info(char*args){
	
	unsigned char*res=NULL;
	char *arg=strtok(NULL," ");
	if(arg==NULL){
		printf("No Argument!\n");
	}
	if(strcmp(arg,"r")==0)
	{
		int i;
		
		/*output eip*/
		res = (unsigned char*)(&cpu.eip);
		printf("eip:%02x %02x %02x %02x\n",*(res+3),*(res+2),*(res+1),*res);
		for(i=R_EAX;i<=R_EDI;i++)
		{
			res =(unsigned char*)(&reg_l(i));
			printf("%s:%02x %02x %02x %02x\n",regsl[i],*(res+3),*(res+2),*(res+1),*res);
		}

		res = (unsigned char*)(&cpu.GDTR.base);
		printf("%s:%02x %02x %02x %02x","GDTR",*(res+3),*(res+2),*(res+1),*res);
		res = (unsigned char*)(&cpu.GDTR.limit);
		printf(" %02x %02x\n",*(res+1),*res);
		
		res = (unsigned char*)(&cpu.cr0.val);
		printf("%s:%02x %02x %02x %02x\n","CR0",*(res+3),*(res+2),*(res+1),*res);
		for(i = R_ES; i <= R_DS; i ++){
			res = (unsigned char*)(&sreg(i));
			printf("%s:%02x %02x\n",sregs[i],*(res + 1),*res);
		}

		printf("%s  %s  %s  %s  %s  %s\n","OF","SF","ZF","AF","PF","CF");
		printf("%2d  %2d  %2d  %2d  %2d  %2d\n",cpu.OF,cpu.SF,cpu.ZF,cpu.AF,cpu.PF,cpu.CF);
	}
	else if(strcmp(arg,"w")==0)
		print_wp();
	else 
		printf("No Such Command!\n");
	return 0;
}
Пример #2
0
static int cmd_info(char *args) {
    char command;
    if(args == NULL){
        printf("please input arguments\n");
        return 0;
    }
    if(sscanf(args,"%c",&command) != 1){
        printf("wrong argument\n");
        return 0;
    }
    if(command == 'r'){
        //print the rigisters
        int i = 0;
        for(i = 0;i < 8; ++i){
            printf("%s\t0x%x\t\t%u\n",regsl[i],reg_l(i),reg_l(i));
        }
        for(i = 0;i < 8; ++i){
            printf("%s\t0x%x\t\t%u\n",regsw[i],reg_w(i),reg_w(i));
        }
        for(i = 0;i < 8; ++i){
            printf("%s\t0x%x\t\t%u\n",regsb[i],reg_b(i),reg_b(i));
        }

        printf("eip\t0x%x\t%d\n",cpu.eip,cpu.eip);
        printf("eflags\t0x%8x\t%d\n",cpu.eflags, cpu.eflags);
        printf("CF\t%x\n",cpu.CF);
        printf("PF\t%x\n",cpu.PF);
        printf("ZF\t%x\n",cpu.ZF);
        printf("SF\t%x\n",cpu.SF);
        printf("IF\t%x\n",cpu.IF);
        printf("DF\t%x\n",cpu.DF);
        printf("OF\t%x\n",cpu.OF);
    }else if(command == 'w'){
        //打印监视点信息
        print_wp();
    }else{
        printf("Unknown command: info %c\n",command);
    }
    return 0;
}