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

Jiaxun Yang/sim-godson
关闭

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
endian.c 3.41 KB
一键复制 编辑 原始数据 按行查看 历史
Jiaxun Yang 提交于 2019-11-13 20:22 . Initial commit
/*
* endian.c - host endian probes
*
* This file is part of the Alpha simulator tool suite written by
* Raj Desikan as part of the Bullseye project.
* It has been written by extending the SimpleScalar tool suite written by
* Todd M. Austin as a part of the Multiscalar Research Project.
*
*
* Copyright (C) 1994, 1995, 1996, 1997, 1998 by Todd M. Austin
*
* Copyright (C) 1999 by Raj Desikan
*
* 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.
*
*
*/
#include "endian.h"
#ifndef HOST_ONLY
#include "loader.h"
#endif
/* probe host (simulator) byte endian format */
enum endian_t
endian_host_byte_order(void)
{
int i = 1, *p;
p = &i;
if (*((char *)p) == 1)
return endian_little;
else if (*((char *)p) == 0)
return endian_big;
else
return endian_unknown;
}
/* probe host (simulator) double word endian format */
enum endian_t
endian_host_word_order(void)
{
int *p;
double x = 1.0;
/* NOTE: this check assumes IEEE floating point format */
p = (int *)&x;
if (*p == 0)
return endian_little;
else if (*p == 0x3ff00000)
return endian_big;
else
return endian_unknown;
}
#ifndef HOST_ONLY
/* probe target (simulated program) byte endian format, only
valid after program has been loaded */
enum endian_t
endian_target_byte_order(void)
{
return ld_target_big_endian ? endian_big : endian_little;
}
/* probe target (simulated program) double word endian format,
only valid after program has been loaded */
enum endian_t
endian_target_word_order(void)
{
/* same as byte sex for SimpleScalar target */
return endian_target_byte_order();
}
#endif /* !HOST_ONLY */
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/flygoat/sim-godson.git
git@gitee.com:flygoat/sim-godson.git
flygoat
sim-godson
sim-godson
master

搜索帮助