C++
一次元配列同士の加算する。C++、AVX-512の例を示す。
一次元配列へスカラー値を加算します。C++、x86アセンブラー、AVX2、AVX-512の例を示します。
C++とアセンブラーで開発した関数について一通り解説してきた。今回は、戻り値を持つ関数の説明を行う。 戻り値がchar 戻り値がshort 戻り値がint 戻り値がポインター 戻り値が単精度浮動小数点 戻り値が倍精度浮動小数点
C++とアセンブラーで開発した関数について一通り解説してきた。今回は、スタックへレジスターの保存を行うだけでなく、スタックに作業領域を割り当てて使う方法を紹介する。レジスターの保護と、作業領域確保の両方を行う例を紹介する。
C++とアセンブラー④で紹介したように、xmmレジスターを保護しただけでは、ymmレジスターやzmmレジスターの保護が保証されないことが分かった。そこで、ここでは512ビットのSIMDをサポートしたCPUはzmmレジスターを、256ビットのSIMDをサポートしたCPUはymmレ…
Visual Studio のC++が呼び出すアセンブリ関数でレジスターを保護する方法を紹介したが、xmmレジスターまでしか考慮していない。ymmレジスターやzmmレジスターを搭載したCPUで、本当にxmmレジスターをほごするだけで良いのか考察してみる。 保存するSIMDレジ…
Visual Studio のC++からアセンブリコードで記述した関数を紹介したが、レジスターの退避が十分とは言えませんので、破壊してはならないレジスターを保護する例を紹介する。
Visual Studio でプラットフォームにx64 を選ぶとインラインアセンブラを使用できない。理由はスタックやレジスターの管理など、いろいろ考えられる。インラインアセンブラを使用できないということは、アセンブリコードは別のファイルに単独で記述しなけれ…
まず、Visual Studio のx86でC++とアセンブリ言語を混在して使用する方法を紹介します。X86ではインラインアセンブラを利用できますので、比較的簡単に記述できますが、C++はもちろん、アセンブリ言語を理解しておくのは前提です。
CPUの機能を読み出し、それを表示してみましょう。 arques.hatenablog.com のアゼンブラーバージョンです。
キャッシュ情報を読み込み表示してみましょう。 arques.hatenablog.com のアゼンブラーバージョンです。
CPUのベンダー名を読み出し、それを表示してみましょう。 arques.hatenablog.com のアゼンブラーバージョンです。
CPUのプロセッサ情報を読み出し、それを表示してみましょう。 arques.hatenablog.com のアゼンブラーバージョンです。
CPU brand stringを、C++から自身で開発したアセンブリ関数を呼び出し、表示してみた。 arques.hatenablog.com のアゼンブラーバージョンです。
CPUの機能を読み出し、それを表示してみましょう。
キャッシュ情報を読み込み表示してみましょう。
CPUのベンダー名を読み出し、それを表示してみましょう。
CPUのプロセッサ情報を読み出し、それを表示してみましょう。
C#でCPU brand stringを表示してみた。