[解決済み] アセンブリ言語を学ぶ価値はあるのか?[クローズド]
質問
を学ぶことはまだ価値があるのでしょうか? ASM ?
私は少し知っていますが、実際に使ったことも、きちんと学んだこともありません。なぜなら、私がアセンブラで学ぶことはすべて、CやC++のようなある言語で1/10の時間でできるからです。では、本当にASMを勉強して使うべきなのでしょうか?プロとして何か役に立つのでしょうか?臨機応変に対応できるようになるのだろうか?要するに、よりよいプログラマーになれるのでしょうか?
注:私が話しているのは、以下のような低レベルのアセンブリのことです。 FASM または NASM のようなものでなく HLA (ハイレベル・アセンブラ) のようなものではありません。
どのように解決するのですか?
私は キップ・アーバイン氏の の本から学びました。彼の(無関係な)ライブラリに対する(正当な)批判を無視すれば、私はこの言語自体への良い入門書としてこの本を推薦できます。 本当に しかし、本当に興味深いものについては、ネット上でこだわりのある人たちを探し出す必要があります。
下位のレベルで何が起こっているかを理解することは有用だと思います。アセンブラを研究していると、CPU パイプライン、分岐予測、キャッシュのアライメント、SIMD、命令の並べ替えなどについて学ぶことができます。これらの知識は、より良い高レベルのコードを書くのに役立ちます。
さらに、従来の常識では、ほとんどの場合、手作業でアセンブリを最適化しようとせず、コンパイラーに心配させるようにします。コンパイラが生成するねじれたものの例をいくつか見れば、なぜこの常識が成り立つのかがよりよく理解できるでしょう。
例 このような特定のケースでは、コンパイラーがそれを理解するのに十分賢明であるかどうかを発見するのと同じくらい、アセンブラー バージョンを書くのは簡単です。時には を知ることがあります。 を知っていて、コンパイラがそれを理解できないこともあります。
また、セキュリティ問題(write-or-execute、スタックオーバーランなど)についての理解も深まります。
いくつかの 同時実行 の問題は、命令レベルで何が起こっているかを認識したときに初めて明らかになります。
完全なソース コードがない場合、デバッグの際に役立つことがあります。
好奇心が満たされます。仮想関数はどのように実装されるのでしょうか。DirectX や COM プログラムをアセンブラで書こうとしたことはありますか? 大きな構造体がどのように返されるのか、呼び出し側の関数がそれらのためのスペースを提供するのか、あるいはその逆なのか。
それから、グラフィックスハードウェアのための特別なアセンブリ言語があります。シェーダー言語は数年前に高レベルになりましたが、問題を別の方法で考えることができるものは何でも良いのです。
関連
-
[解決済み] 軽量化の意味[クローズド]について
-
[解決済み] 静的型付け言語と動的型付け言語の違いは何ですか?
-
[解決済み] 1サイクルあたり4FLOPの理論上の最大値を達成するにはどうすればよいですか?
-
[解決済み] なぜ関数型言語なのか?[クローズド]
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】NULLのない言語についての最適な説明
-
[解決済み】動的型言語と静的型言語の比較
-
[解決済み] 宣言型プログラミングとは?[クローズド]
-
[解決済み] スカラーとプリミティブのデータ型 - 同じものなのか?
-
[解決済み] スニペットからプログラミング言語を検出する【終了しました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン