src/Sim/ISAInfo.cpp

説明を見る。
00001 // 
00002 // Copyright (c) 2005-2008 Kenichi Watanabe.
00003 // Copyright (c) 2005-2008 Yasuhiro Watari.
00004 // Copyright (c) 2005-2008 Hironori Ichibayashi.
00005 // Copyright (c) 2008-2009 Kazuo Horio.
00006 // Copyright (c) 2009-2013 Naruki Kurata.
00007 // Copyright (c) 2005-2013 Ryota Shioya.
00008 // Copyright (c) 2005-2013 Masahiro Goshima.
00009 // 
00010 // This software is provided 'as-is', without any express or implied
00011 // warranty. In no event will the authors be held liable for any damages
00012 // arising from the use of this software.
00013 // 
00014 // Permission is granted to anyone to use this software for any purpose,
00015 // including commercial applications, and to alter it and redistribute it
00016 // freely, subject to the following restrictions:
00017 // 
00018 // 1. The origin of this software must not be misrepresented; you must not
00019 // claim that you wrote the original software. If you use this software
00020 // in a product, an acknowledgment in the product documentation would be
00021 // appreciated but is not required.
00022 // 
00023 // 2. Altered source versions must be plainly marked as such, and must not be
00024 // misrepresented as being the original software.
00025 // 
00026 // 3. This notice may not be removed or altered from any source
00027 // distribution.
00028 // 
00029 // 
00030 
00031 
00032 #include <pch.h>
00033 
00034 #include "Sim/ISAInfo.h"
00035 
00036 using namespace Onikiri;
00037 
00038 bool SimISAInfoDef::SimISAInfo_IW32_RW64_AS64::TestISAInfo(ISAInfoIF* info)
00039 {
00040     int iw = info->GetInstructionWordBitSize();
00041     if(iw != 32){
00042         THROW_RUNTIME_ERROR(
00043             "An emulator of ISA with instruction"
00044             "word size(%d) is not supported.", iw );
00045     }
00046 
00047     int rw = info->GetRegisterWordBitSize();
00048     if(rw > 64){
00049         THROW_RUNTIME_ERROR(
00050             "An emulator of ISA with register"
00051             "word size(%d) is not supported.", rw );
00052     }
00053 
00054     int as = info->GetAddressSpaceBitSize();
00055     if(as > 64){
00056         THROW_RUNTIME_ERROR(
00057             "An emulator of ISA with address"
00058             "space size(%d) is not supported.", as );
00059     }
00060 
00061     int maxSN = info->GetMaxSrcRegCount();
00062     if(maxSN > MAX_SRC_REG_COUNT){
00063         THROW_RUNTIME_ERROR(
00064             "An emulator of ISA with max source register"
00065             "number(%d) is not supported.", maxSN );
00066     }
00067 
00068     int maxDN = info->GetMaxDstRegCount();
00069     if(maxDN > MAX_DST_REG_COUNT){
00070         THROW_RUNTIME_ERROR(
00071             "An emulator of ISA with max destination register"
00072             "number(%d) is not supported.", maxDN );
00073     }
00074 
00075     int regCnt = info->GetRegisterCount();
00076     if(regCnt > MAX_REG_COUNT){
00077         THROW_RUNTIME_ERROR(
00078             "An emulator of ISA with register"
00079             "number(%d) is not supported.", regCnt );
00080     }
00081     
00082     int maxOpInfo = info->GetMaxOpInfoCountPerPC();
00083     if(maxOpInfo > MAX_OP_INFO_COUNT_PER_PC){
00084         THROW_RUNTIME_ERROR(
00085             "An emulator of ISA with register"
00086             "number(%d) is not supported.", maxOpInfo );
00087     }
00088 
00089     int regSegmentCount = info->GetRegisterSegmentCount();
00090     if( regSegmentCount > MAX_REG_SEGMENT_COUNT ){
00091         THROW_RUNTIME_ERROR(
00092             "An emulator of ISA with register"
00093             "segments(%d) is not supported.", regSegmentCount );
00094     }
00095 
00096     return true;
00097 }

Onikiri2に対してTue Jun 18 14:34:23 2013に生成されました。  doxygen 1.4.7