Intel Architecture プログラミング 新しいページはコチラ
提供: yonewiki
(→プログラムの例) |
|||
1行: | 1行: | ||
+ | [[メインページ#言語と開発環境|言語と開発環境]]へ戻る。 | ||
+ | |||
+ | |||
== '''概要''' == | == '''概要''' == | ||
インテルアーキテクチャーはWindows OSの命令を処理するCPU インテルプロッセッサの技術で、Visual C++コンパイラやGCCコンパイラでこのアーキテクチャーを使うことができるようになっています。この命令セットはいわば、最先端アセンブラ言語と言える高度なアセンブラの命令を理解することにもつながります。プロセッサあるところにアセンブラあり、IntelのCPUにもアセンブラがある。SIMDと呼ばれるSingle Instructure Multiple Dataという方式のCPU処理方式で、一つの命令で複数のデータを処理できるという方式です。 | インテルアーキテクチャーはWindows OSの命令を処理するCPU インテルプロッセッサの技術で、Visual C++コンパイラやGCCコンパイラでこのアーキテクチャーを使うことができるようになっています。この命令セットはいわば、最先端アセンブラ言語と言える高度なアセンブラの命令を理解することにもつながります。プロセッサあるところにアセンブラあり、IntelのCPUにもアセンブラがある。SIMDと呼ばれるSingle Instructure Multiple Dataという方式のCPU処理方式で、一つの命令で複数のデータを処理できるという方式です。 | ||
42行: | 45行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | 11行目からmovdqaが使われています。第一オペランドのxmm0レジスタに第二オペランドのint配列srcからまとめて格納転送されます。後ろのオペランドから、前のオペランドにデータが転送されている感じです。C++言語側で確保した配列との連携をする場合この操作で、間違いが起こらないようにするには配列が連続していることが重要になりますので、__declspec(align(16)) | + | 11行目からmovdqaが使われています。第一オペランドのxmm0レジスタに第二オペランドのint配列srcからまとめて格納転送されます。後ろのオペランドから、前のオペランドにデータが転送されている感じです。C++言語側で確保した配列との連携をする場合この操作で、間違いが起こらないようにするには配列が連続していることが重要になりますので、__declspec(align(16))という宣言をしました。16としたところには2の階乗になっていれば、その分だけ連続して配置するように働きます。アライメントといいます。タイヤのアライメントしか知らない人や半導体プロセスのLithography工程や重ね合わせ検査工程やその他、特定位置を検査する装置で必要な画像認識処理のアライメントとかしか知らない人もいるかもしれませんが、位置出しという日本語がちょうどいい感じのニュアンスに変換できると思います。 |
54行: | 57行: | ||
− | + | こういった命令セットを説明していくと広辞苑くらいの情報量が必要になってきます。現にIntelのアーキテクチャー説明資料もPDFで何千ページというボリュームになっています。よく使いそうなものを、ここでは紹介していくかもしれません。それでも、きっと書き終わったころには定年を向かていることでしょう。 | |
+ | |||
+ | |||
+ | [[メインページ#言語と開発環境|言語と開発環境]]へ戻る。 |