ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS

FAQ / カバレッジマスターwinAMS

カバレッジマスター 「ゼネラル」  固有の問題

A02_03 :カバレッジマスターゼネラルに内蔵されている汎用マイコン(General)のデータ型は、どのような仕様ですか?実際のマイコンとどのような差がありますか?

【質問】
カバレッジマスターゼネラルを使用したいのですが、実際のマイコンとの仕様の差を把握したいと思います。カバレッジマスターゼネラルに内蔵されている汎用マイコン(General)のデータ型は、どのような仕様ですか?実際のマイコンとどのような差がありますか?

【回答】
カバレッジマスターゼネラルに内蔵されているマイコンシミュレータは、32ビットのRISC系のマイコンの構造を持ちます。マイコンのビット数を変更したり指定することはできません。

また、バイトオーダに関しては、リトルエンディアンまたはビッグエンディアンの選択が可能ですが、それ以外の処理系依存項目については、変更は出来ません。

そのため、特に16ビット、8ビットなどデータ幅の異なるマイコンのコードをテストする場合、マイコン構造の違いから来るデータ型の違いを把握しておく必要があります。

「int」型の記述がソースコードに有る場合、その変数のビット幅はマイコンによって異なります。32ビットマイコンでは int = 32bit(long型) 、 16ビットマイコンでは int=16bit(short型) です。例えば、16ビットのマイコンコードをテストする際には、int型の変数は、予め16ビットを明示するshort型で変数を定義しておく必要があります。

ゼネラルの言語処理(実行コードを生成する際の内蔵コンパイラの仕様)は、ヘルプマニュアルに記載されています。

Windowsスタート → WinAMS → カバレッジマスターGeneralヘルプ の「言語仕様」のページ

 

(上記マニュアルからの抜粋)

言語仕様

識別子の有効文字数
識別子の有効長: 250文字(250文字を超える識別子でもビルドできますが、C++言語の場合、カバレッジマスター winAMSでその識別子を参照できなくなります。その場合、テストドライバを作成して、その識別子への値の代入、参照を行ってください)

データタイプ

変数タイプ サイズ 最小値 最大値
char
unsigned char
8bit
8bit
-128
0
+127
+255
short
unsigned short
short int
unsigned short int
16bit
16bit
16bit
16bit
-32768
0
-32768
0
+32767
+65535
+32767
+65535
int
unsigned int
long
unsigned long
32bit
32bit
32bit
32bit
-2147483648
0
-2147483648
0
+2147483647
+4294967295
+2147483647
+4294967295
long long
unsigned long long
64bit
64bit
-9223372036854775808
0
+9223372036854775807
+18446744073709551615
float
double
long double
32bit
64bit
64bit
-1e37
-1e306
-1e306
+1e37
+1e306
+1e306
signedビットフィールド
unsignedビットフィールド
1 〜 32bit
-2^(W-1)
0
2^(W-1) - 1
2^(W) - 1
enum
ポインタ
32bit
32bit
---
0
---
0xffffffff

備考 W(width)は指定されたビットの幅を示します

補足:boolはintと同じです。
ビットフィールドは、32ビット境界でアサインされます
_Bool(C99)はcharと同じです。
Generalを使用した場合、MISRA-C解析時のintサイズは32ビット固定となります。

ビットフィールド

ビットフィールドでは32bitの境界を越えてフィールドを定義することはできません。 
したがって,ビットフィールドのメンバの最大幅は32bitです。 
また,メンバが32bit境界を越えるときは次の32bit境界に整合されます。 
ビットフィールドは定義順にMSBから割り当てられますが、LSBにつめて割り当てられるため、空きビットがMSB側に取られます。
以下の例は4つのメンバからなる構造体を定義していますが,この場合メモリ上では下図のように,割り当てられます。


【ビットフィールド定義】

struct bit {
    int a:4 ;
    int b:5 ;
    int c:30 ;
    int d:8 ;
} ;

【ビットフィールド割り当てイメージ】

浮動小数点数
Generalで使用される浮動小数点数の内部フォーマットは,IEEE754に準拠しています。
 また,Generalでは拡張倍精度(80ビット)の浮動小数点数はサポートしていません。

アライメント(バウンダリ調整)

【アライメント調整値一覧】
変数の宣言場所 変数の型 アライメント調整値
スタティック記憶クラス
グローバル記憶クラス
char
short
int
long
float
long long
double
ポインタ
構造体・共用体
配列
1
2
4
4
4
4
4
4
4
型に依存
オート記憶クラス,引数 全型
4
構造体のメンバ char
short
int
long
float
long long
double
ポインタ
構造体・共用体
配列
1
2
4
4
4
4
4
4
4
型に依存

Generalコード生成では、#pragma pack(n)とGNUのpacked属性およびaligned(n)属性を無視します。このため、sizeof()の計算ではこれらの指定がないものとして計算します。

 

関連サポート情報検索

【サポート情報サイト内Google検索】

検索キーワード: ゼネラルデータ型

他のキーワード検索

 


参考情報・リンク