
前回は、数多い条件選択命令群のうち「表」の4命令を動かしてみました。今回は「裏(エイリアス)」の5命令を動かしてみたいと思います。共通しているのは、「表」の命令と条件判断がひっくりかえっていること、そして本来3オペランドの「表」命令のソースオペランドに制限を加えていることです。 “ぐだぐだ低レベルプログラミング(84)ARM64(AArch64)、条件選択命令群その2” の続きを読む
デバイス作る人>>デバイス使う人>>デバイスおたく
前回は、数多い条件選択命令群のうち「表」の4命令を動かしてみました。今回は「裏(エイリアス)」の5命令を動かしてみたいと思います。共通しているのは、「表」の命令と条件判断がひっくりかえっていること、そして本来3オペランドの「表」命令のソースオペランドに制限を加えていることです。 “ぐだぐだ低レベルプログラミング(84)ARM64(AArch64)、条件選択命令群その2” の続きを読む
前々回から条件フラグNZCV関連の命令に入っておりますが、非常に充実してます。これは32ビット時代のArmがほぼ全ての命令に条件判断を付与できるという過激なあり方だったのを64ビット化するときに廃止してしまった「罪滅ぼし」なんじゃないかと密かに思います。知らんけど。今回は条件付き選択命令。多すぎて1回では終わらず。
“ぐだぐだ低レベルプログラミング(83)ARM64(AArch64)、条件選択命令群その1” の続きを読む
前回から、条件フラグNZCV関係に踏み入っております。やる前から分かっていたことですが、真か偽か判定するだけの1ビットのフラグですが、複数条件重なれば、霧のかかった老人の頭では、いずれが真か偽、是々非々、是々非々。特に今回の命令群は条件フラグの操作をするのに条件を判断して行うという奇怪さであります。 “ぐだぐだ低レベルプログラミング(82)ARM64(AArch64)、条件付き比較命令” の続きを読む
前回は先行ビットカウント命令でした。今回はビット、バイトのリバース命令群です。どちらも「場合によっては」必要な操作で、こういう専用命令なしに処理しようとすると結構メンドイ処理になる操作であります。有って悪いことはないですが、こういう複雑な命令群がいろいろ実装されているArmは複雑(なRISC)?
前回はシフト、ローテイトの落穂ひろいでした。今回は先行する(MSB側の)ビットカウントを行う命令です。時々「こういう操作」が必要なことがあり、「こういう専用命令」が無いと時間がかかるので有った方が嬉しい気もするのです。しかしArmはRISCの割には複雑な感じを醸しだしてる気もします(個人の感想です。) “ぐだぐだ低レベルプログラミング(79)ARM64(AArch64)、先行ビットカウント命令” の続きを読む
前回まで練習してきた即値でビット数を指定するシフト、ローテイト命令はビットフィールド転送とレジスタ抽出命令のエイリアスでした。しかしシフト、ローテイトには「片割れ」があります。レジスタでビット数を指定できる命令です。そちらも「エイリアス」あり、といいつつ、こちらはモロそのものじゃん。
前回までのビットフィールド転送命令群と比べて今回のレジスタ抽出命令EXTRの動作は分かり易いです。エイリアスもシンプル、たった1個。ROR(右ローテイト)命令だけです。ただ、左にシフトして取り出すような操作のEXTRに対して、詰まっているデータから見ると右ローテイトに見えると。左右が時々混乱するのは私だけ? “ぐだぐだ低レベルプログラミング(77)ARM64(AArch64)、EXTR、RORでもある” の続きを読む
前回は符号付きのビットフィールドMOV命令、SBFMのエクササイズでした。今回は符号無のビットフィールドMOV命令、UBFMです。これまた多くのエイリアスの名のもとにいろいろな命令に化ける命令です。似た命令であるSBFMと「対称」と思って見に行くと期待を裏切られます。SBFMであったものが無いです。でも無くても大丈夫。 “ぐだぐだ低レベルプログラミング(76)ARM64(AArch64)、UBFM命令、伸縮自在” の続きを読む
今回は前回に引き続き第72回で調べたビットフィールドMOV命令をエクササイズしたいと思います。今回の命令はSBFM命令(サイン付きBFM)です。SBFM命令の動作説明図を上に再掲載します。しかし図を見てもなんだかよく分からない命令デス。しかしこれが変幻自在、エイリアスの隠れ蓑の下で多数の「重要命令」の実体となります。
“ぐだぐだ低レベルプログラミング(75)ARM64(AArch64)、SBFM命令、変幻自在” の続きを読む
今回は、前々回調べたビットフィールドMOV命令の実習です。最初から躓きました。BFM命令の別名(エイリアス)のBFC命令、アセンブラに拒否られました。実体命令であるBFMは存在しているんですがね。そのくせディスアセンブラは頼みもしないのにBFM命令をBFC命令にディスアセンブルしてくれます。いろいろあるのね、きっと。
前回、MOV命令の込み入った事情を図にしただけで「実習はまた今度」などと書きました。しかし今回も「また今度」の回であります。MOV命令の親戚?ビットフィールドMOV命令群がこれまた込み入っているためであります。ビットフィールド転送命令と聞くと地味な?感じがしますが、これがどうして非常に多数の命令に化けるのであります。
前回まで論理演算命令の「代表」AND命令をやりました。今回からは他の論理演算ORRやXORは飛ばし、転送命令MOVへ入りたいと思います。A64の命令多すぎ、さっさとやらないと終わりませぬ。しかしMOV、されどMOVであります。例によってMOVという実体なくaliasで紡がれているのですが事情いささか込み入っております。