⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.c

📁 XSBase255_Linux_C开发版BootLoader源代码.gz
💻 C
字号:
/////////////////////////////////////////////////////////////////////////////////// Copyright(c) 2001-2002 Hybus Co,.ltd. All rights reserved.//// Module name://      util.c//// Description:////// Author://      bedguy//// Created://      2002.10/////////////////////////////////////////////////////////////////////////////////#include "util.h"bool DoMemCpy(CMD_TBL *cptr, int argc, char **argv){	ulong	dest, src, len;	if (argc < 4){		printf(cptr->usage);		return false;	}	if (!HexToInt(argv[1], &dest, 32) || !HexToInt(argv[2], &src, 32) ||			!HexToInt(argv[3], &len, 32)){		printf("Illegal character is used.\n");		return false;	}		MemCpy((char *)dest, (char *)src, len);	return true;}	// DoMemCpy.bool DoMemDump(CMD_TBL *cptr, int argc, char **argv){	ulong	i, addr, len, endptr;	char	value;	if (argc < 3){		printf(cptr->usage);		return false;	}	if (!HexToInt(argv[1], &addr, 32) || !HexToInt(argv[2], &len, 32)){		printf("Illegal character is used.\n");		return false;	}	endptr = addr + len;		for (i=0; addr < endptr; i++, ((char *)addr)++){		value = ADDR8(addr);		if ((i)%4==0) printf("0x");		printf("%02x", value);		if ((i+1)%4==0){			printf("  ");		}		if ((i+1)%16==0) printf("\n");	}	return true;}	// DoMemDump.bool DoHexDump(CMD_TBL *cptr, int argc, char **argv){	long addr, len;		if (argc < 3){		printf(cptr->usage);		return false;	}	if (!HexToInt(argv[1], &addr, 32) || !HexToInt(argv[2], &len, 32)){		printf("Illugal character is used.\n");		return false;	}	HexDump((char *)addr, (int)len);	return true;}	// DoHexDump.bool DoMemCmp(CMD_TBL *cptr, int argc, char **argv){	ulong addr1, addr2;	int len;	if (argc < 4){		printf(cptr->usage);		return false;	}	if (!HexToInt(argv[1], &addr1, 32) || !HexToInt(argv[2], &addr2, 32) ||			!HexToInt(argv[3], &len, 32)){		printf("Illugal character is used.\n");		return false;	}	if (MemCmp((char *)addr1, (char *)addr2, len)==0)			printf("equil.\n");	else printf("not equil.\n");	return true;}	// DoMemCmp.bool DoMemSet(CMD_TBL *cptr, int argc, char **argv){	char	*addr;	char	c;	int		len;	if (argc < 4){		printf(cptr->usage);		return false;	}	if (!HexToInt(argv[1], &addr, 32) ||			!HexToInt(argv[2], &c, 8) || !HexToInt(argv[3], &len, 32)){		printf("Illugal character is used.\n");		return false;	}	MemSet(addr, c, len);	return true;}	// DoMemSet.bool DoReadFromReg(CMD_TBL *cptr, int argc, char **argv){	void	*addr=0;	char	c;	short	s;	long	l;		if (argc < 3){		printf(cptr->usage);		return false;	}	if (!HexToInt(argv[2], &addr, 32)){		printf("Illugal character is used.\n");		return false;	}	printf("\taddress : 0x%08lx\n", (long)addr);	printf("\tvalue   : 0x");		switch (argv[1][0]){		case 'c' :			c = ADDR8(addr);			printf("%02x", c);			break;		case 's' :			s = ADDR16(addr);			printf("%04x", s);			break;		case 'l' :			l = ADDR32(addr);			printf("%08lx", l);			break;		default :			printf("Error.\n");			return -1;			break;	}	printf(".\n");	return true;}	// DoReadFromReg.bool DoWriteToReg(CMD_TBL *cptr, int argc, char **argv){	char *addr=0;	char c;	short s;	long l;		if (argc < 4){		printf(cptr->usage);		return false;	}	if (!HexToInt(argv[2], &addr, 32)){		printf("Illugal character is used.\n");		return false;	}	switch (argv[1][0]){		case 'c' :			if (!HexToInt(argv[3], &c, 8)){				printf("Illugal character is used.\n");				return false;			}			ADDR8(addr) = c;			break;		case 's' :			if (!HexToInt(argv[3], &s, 16)){				printf("Illugal character is used.\n");				return false;			}			ADDR16(addr) = s;			break;		case 'l' :			if (!HexToInt(argv[3], &l, 32)){				printf("Illugal character is useqd.\n");				return false;			}			ADDR32(addr) = l;			break;		default :			printf("write [c/s/l] [addr] [value].\n");			return false;			break;	}	return true;}	// DoWriteToReg.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -