当前仓库属于关闭状态,部分功能使用受限,详情请查阅 仓库状态说明
1 Star 2 Fork 2

Jiaxun Yang / sim-godson
关闭

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
regs.c 4.90 KB
一键复制 编辑 原始数据 按行查看 历史
Jiaxun Yang 提交于 2019-11-13 20:22 . Initial commit
/*
* regs.c - architected registers state routines
*
* This file is a part of the SimpleScalar tool suite written by
* Todd M. Austin as a part of the Multiscalar Research Project.
*
* The tool suite is currently maintained by Doug Burger and Todd M. Austin.
*
* Copyright (C) 1994, 1995, 1996, 1997, 1998 by Todd M. Austin
*
* This source file is distributed "as is" in the hope that it will be
* useful. The tool set comes with no warranty, and no author or
* distributor accepts any responsibility for the consequences of its
* use.
*
* Everyone is granted permission to copy, modify and redistribute
* this tool set under the following conditions:
*
* This source code is distributed for non-commercial use only.
* Please contact the maintainer for restrictions applying to
* commercial use.
*
* Permission is granted to anyone to make or distribute copies
* of this source code, either as received or modified, in any
* medium, provided that all copyright notices, permission and
* nonwarranty notices are preserved, and that the distributor
* grants the recipient permission for further redistribution as
* permitted by this document.
*
* Permission is granted to distribute this file in compiled
* or executable form under the same conditions that apply for
* source code, provided that either:
*
* A. it is accompanied by the corresponding machine-readable
* source code,
* B. it is accompanied by a written offer, with no time limit,
* to give anyone a machine-readable copy of the corresponding
* source code in return for reimbursement of the cost of
* distribution. This written offer must permit verbatim
* duplication by anyone, or
* C. it is distributed by someone who received only the
* executable form, and is accompanied by a copy of the
* written offer of source code that they received concurrently.
*
* In other words, you are welcome to use, share and improve this
* source file. You are forbidden to forbid anyone else to use, share
* and improve what you give them.
*
* INTERNET: dburger@cs.wisc.edu
* US Mail: 1210 W. Dayton Street, Madison, WI 53706
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "host.h"
#include "misc.h"
#include "mips.h"
#include "memory.h"
#include "loader.h"
#include "regs.h"
/* create a register file */
struct regs_t *
regs_create(void)
{
struct regs_t *regs;
regs = calloc(1, sizeof(struct regs_t));
if (!regs)
fatal("out of virtual memory");
return regs;
}
/* initialize architected register state */
void
regs_init(struct regs_t *regs) /* register file to initialize */
{
/* FIXME: assuming all entries should be zero... */
memset(regs, 0, sizeof(*regs));
/* regs->regs_R[MD_SP_INDEX] and regs->regs_PC initialized by loader... */
}
#if 0
/* floating point register file format */
union regs_FP_t {
md_gpr_t l[MD_NUM_FREGS]; /* integer word view */
md_SS_FLOAT_TYPE f[SS_NUM_REGS]; /* single-precision FP view */
SS_DOUBLE_TYPE d[SS_NUM_REGS/2]; /* double-precision FP view */
};
/* floating point register file */
extern union md_regs_FP_t regs_F;
/* (signed) hi register, holds mult/div results */
extern SS_WORD_TYPE regs_HI;
/* (signed) lo register, holds mult/div results */
extern SS_WORD_TYPE regs_LO;
/* floating point condition codes */
extern int regs_FCC;
/* program counter */
extern SS_ADDR_TYPE regs_PC;
/* dump all architected register state values to output stream STREAM */
void
regs_dump(FILE *stream) /* output stream */
{
int i;
/* stderr is the default output stream */
if (!stream)
stream = stderr;
/* dump processor register state */
fprintf(stream, "Processor state:\n");
fprintf(stream, " PC: 0x%08x\n", regs_PC);
for (i=0; i<SS_NUM_REGS; i += 2)
{
fprintf(stream, " R[%2d]: %12d/0x%08x",
i, regs_R[i], regs_R[i]);
fprintf(stream, " R[%2d]: %12d/0x%08x\n",
i+1, regs_R[i+1], regs_R[i+1]);
}
fprintf(stream, " HI: %10d/0x%08x LO: %10d/0x%08x\n",
regs_HI, regs_HI, regs_LO, regs_LO);
for (i=0; i<SS_NUM_REGS; i += 2)
{
fprintf(stream, " F[%2d]: %12d/0x%08x",
i, regs_F.l[i], regs_F.l[i]);
fprintf(stream, " F[%2d]: %12d/0x%08x\n",
i+1, regs_F.l[i+1], regs_F.l[i+1]);
}
fprintf(stream, " FCC: 0x%08x\n", regs_FCC);
}
/* (signed) integer register file */
SS_WORD_TYPE regs_R[SS_NUM_REGS];
/* floating point register file */
union regs_FP regs_F;
/* (signed) hi register, holds mult/div results */
SS_WORD_TYPE regs_HI;
/* (signed) lo register, holds mult/div results */
SS_WORD_TYPE regs_LO;
/* floating point condition codes */
int regs_FCC;
/* program counter */
SS_ADDR_TYPE regs_PC;
#endif
1
https://gitee.com/flygoat/sim-godson.git
git@gitee.com:flygoat/sim-godson.git
flygoat
sim-godson
sim-godson
master

搜索帮助