通信用語の基礎知識 全国のICカードこれひとつ 戻る

通常PC用 / 人気 更新 今日 カテ
電子計算機 > 仕様・構造 > ソフトウェア > プログラミング言語 > 言語仕様 > 予約語・関数など
__m64
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS)
読み:アンダースコア-アンダースコア-エムろくじゅうよん
外語:__m64
品詞:名詞

x86プロセッサー用のC/C++で、MMX3DNow!を扱うための独自のデータ型(変数型)。

目次
概要

MMXレジスターは、64ビット長のSIMD演算装置用レジスターである。

通常のintやlongなどと性質の異なるものであるため、このような独自の型が用意されたようである。

当然、MMXなどと無縁の環境に対する移植性はないものの、Microsoft WindowsPC UNIX(FreeBSDLinux等)では共通して使えるようである。

特徴
仕様

Windows

Microsoft Visual Studio 2010の場合、mmintrin.hに、次のように定義がある。

typedef union __declspec(intrin_type) _CRT_ALIGN(8) __m64
{
    unsigned __int64    m64_u64;
    float               m64_f32[2];
    __int8              m64_i8[8];
    __int16             m64_i16[4];
    __int32             m64_i32[2];
    __int64             m64_i64;
    unsigned __int8     m64_u8[8];
    unsigned __int16    m64_u16[4];
    unsigned __int32    m64_u32[2];
} __m64;

Cの標準機能のみで定義することができないため、Visual C/C++の独自拡張機能を用いて定義されているが、その実体はどうやらunionのようである。


FreeBSD

FreeBSDの場合、mmintrin.hに、次のように定義がある。

typedef int __m64 __attribute__ ((__vector_size__ (8), __may_alias__));

Cの標準機能のみで定義することができないため、GCCの独自拡張機能を用いて定義されている。

__vector_size__は、バイト単位で変数のベクトル長を定義するものである。ここでは8バイト(つまり64ビット)である。型はintで定義されているので、各32ビット長、つまり4バイト2台のベクトルとして定義される。

__may_alias__は、この属性を持つ型のオブジェクトへのアクセスは、型に基づく別名解析の対象とされず、代わりにchar型と同様、他の種類のオブジェクトへの別名として定義される。

結果として__m64データ型は、8つの8ビット値、4つの16ビット値、2つの32ビット値、または1つの64ビット値を保持することができる。

利用方法

__m64は、関数の戻り値やパラメーターとして利用できるが、他の一般的な算術式と共に使うことはできない。

処理系の実装に依存するが、この変数型を扱うための関数が用意されており、これを通してMMXを使うことになる。

リンク
用語の所属
データ型
関連する用語
MMX
__m128
__m256

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.03 (16-May-2019)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic