代码拉取完成,页面将自动刷新
/*
* regs.h - architected register state interfaces
*
* 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
*
*/
#ifndef REGS_H
#define REGS_H
#include "host.h"
#include "misc.h"
#include "mips.h"
/*
* This module implements the SimpleScalar architected register state, which
* includes integer and floating point registers and miscellaneous registers.
* The architected register state is as follows:
*
* Integer Register File: Miscellaneous Registers:
* (aka general-purpose registers, GPR's)
*
* +------------------+ +------------------+
* | $r0 (src/sink 0) | | PC | Program Counter
* +------------------+ +------------------+
* | $r1 | | HI | Mult/Div HI val
* +------------------+ +------------------+
* | . | | LO | Mult/Div LO val
* | . | +------------------+
* | . |
* +------------------+
* | $r31 |
* +------------------+
*
* Floating point Register File:
* single-precision: double-precision:
* +------------------+------------------+ +------------------+
* | $f0 | $f1 (for double) | | FCC | FP codes
* +------------------+------------------+ +------------------+
* | $f1 |
* +------------------+
* | . |
* | . |
* | . |
* +------------------+------------------+
* | $f30 | $f31 (for double)|
* +------------------+------------------+
* | $f31 |
* +------------------+
*
* The floating point register file can be viewed as either 32 single-precision
* (32-bit IEEE format) floating point values $f0 to $f31, or as 16
* double-precision (64-bit IEEE format) floating point values $f0 to $f30.
*/
struct regs_t {
md_gpr_t regs_R; /* (signed) integer register file */
md_fpr_t regs_F; /* floating point register file */
md_ctrl_t regs_C; /* control register file */
md_addr_t regs_PC; /* program counter */
md_addr_t regs_NPC; /* next-cycle program counter */
};
/* create a register file */
struct regs_t *regs_create(void);
/* initialize architected register state */
void
regs_init(struct regs_t *regs); /* register file to initialize */
/* dump all architected register state values to output stream STREAM */
void
regs_dump(struct regs_t *regs, /* register file to display */
FILE *stream); /* output stream */
/* destroy a register file */
void
regs_destroy(struct regs_t *regs); /* register file to release */
extern struct regs_t regs;
#endif /* REGS_H */
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。