Exemplo n.º 1
0
Arquivo: main.c Projeto: mengpq/os
/*======================================================================*
                         loadELFFile
 *======================================================================*/
void loadELF(){
	/* 0x1000存放加载的文件数
	 * 0x1004开始存放文件名,单个字节的
	 * 0x50000开始,每0x2000个字节放一个bin文件,bin文件的入口为0x400000(4M)
	*/
	int i,startAddr;
	char filename[12]="a.bin";
	u8 data[8192];
	FILEINFO file;
	int totalFileAddr=0x1000;
	u8 totalFile=read_mem_byte(totalFileAddr);
	for (i=0,startAddr=0x50000; i<totalFile;i++,startAddr+=0x2000){
		memset((void *)0x400000+0x2000*i,0,sizeof(data));
		memset(data,0,sizeof(data));
		readelf(startAddr);
		memcpy(data,(void *)0x400000+0x2000*i,sizeof(data));
		memcpy(file.name,filename,sizeof(filename));
		u8 c=read_mem_byte(0x1004+i);
		if ('A'<=c && c<='Z') c=c-'A'+'a';
		file.name[0]=c;
		file.size=sizeof(data);
		file.start_pos=new_space(FILESTOREADDR,file.size);
		write_fileinfo(file);
		write_data(file.start_pos,data,sizeof(data));
		++filename[0];
	}
}
Exemplo n.º 2
0
Arquivo: main.c Projeto: mengpq/os
int dump_mem(char *start, char *len){
	if (!is_hex(start) || !is_number(len)) return -1;
	int st=hextoi(start),ed=st+atoi(len),i,total;
	char output[2];
	total=0;
	memset(output,0,sizeof(output));
	for (i=st; i<ed; i++){
		u8 temp=read_mem_byte(i);
		display_byte_hex(temp); 
		++total;
		if (total%8==0 && total%16!=0) display_string("-"); else display_string(" ");
		if ((total)%16==0) display_string("\n");
	}
	if (total%16!=0) display_string("\n");
	return 0;
}
Exemplo n.º 3
0
QString SpimView::formatAsChars(mem_addr from, mem_addr to)
{
    QString windowContents = nnbsp(2);

    if (to - from != BYTES_PER_LINE)
    {
        int missing = (BYTES_PER_LINE - (to - from)) / BYTES_PER_WORD;
        windowContents += nnbsp(2);
        switch (st_dataSegmentDisplayBase)
        {
        case 10: windowContents += nnbsp(missing * (WORD_WIDTH_10 + 2)); break;
        case 16: windowContents += nnbsp(missing * (WORD_WIDTH_16 + 2)); break;
        default: windowContents += nnbsp(missing * (WORD_WIDTH_DEFAULT + 2)); break;
        }
    }

    for (mem_addr a = from; a < to; a += 1)
    {
        mem_word val = read_mem_byte(a);
        windowContents += formatChar(val) % " ";
    }

    return windowContents;
}