9-1.ソース・ビルド・インストールアセンブラでエンディアン変換(その3) アニメ『ゴブリンスレイヤー』 1話で冒険者であることのマイナス面を見せられ、魅了されました。ゴブリンからの、駆け出し冒険者たちへの、仕打ちが……、もう、本当に、ひどい。 とにかく、許せませんね、ゴブリン。 いきなりゴブリンへの... 2018.10.219-1.ソース・ビルド・インストール
9-1.ソース・ビルド・インストールアセンブラでエンディアン変換(その2) 前回は、アセンブラで試行錯誤してエンディアン変換してみました。 先人たちは、どのようにエンディアン変換をプログラミングしているのか気になります。 標準ライブラリのhtonlのソースを読んで、確認したいと思います。 htonlとは、... 2018.10.209-1.ソース・ビルド・インストール
9-1.ソース・ビルド・インストールアセンブラでエンディアン変換 アセンブラでエンディアン変換してみます。 32bitの変数aのエンディアン変換です。EAXとEBXレジスタを使います。 まずは1Byteのコピーから。 コピーして8bitシフトします。 これを繰り返します。 ... 2018.10.199-1.ソース・ビルド・インストール
9-1.ソース・ビルド・インストールレジスタを使ったマスク AL/AHレジスタを使ってマスク処理をアセンブラで書いてみます。 まずは、代入するだけの処理。 変数aに0x12345678を代入します。 実行。 さきほどのプログラムをベースに、ALレジスタを用いて下位8bit... 2018.10.189-1.ソース・ビルド・インストール
9-1.ソース・ビルド・インストールビットシフトをアセンブラで書く Cソースの一部アセンブラ化に慣れてきました。 今回はビットシフトをアセンブラに置き換えてみます。 では、元ソース。0xffを左に1ビットシフトするプログラムです。 実行すると、最下位bitには0が入って0x1feになります... 2018.10.179-1.ソース・ビルド・インストール
9-1.ソース・ビルド・インストールアセンブラからみた効率のよい戻り値の型 今回は戻り値の型でアセンブラがどう変わるか確認します。 まずは戻り値がchar型の場合。 func1の戻り値はEAXに格納されるようです。char型の戻り値であっても、32bitのレジスタが使用されるんですね。 main側... 2018.10.169-1.ソース・ビルド・インストール
9-1.ソース・ビルド・インストールアセンブラからみた効率のよい引数の型 C言語の関数の引数ですが、どんな型にすると効率が良いのでしょう。 ALレジスタを見ると、8bitアクセスなので、一見効率がよさそうに見えます。 引数なし、8bit、16bit、32bit、64bitの型の引数の関数を呼び出しした... 2018.10.159-1.ソース・ビルド・インストール