[解決済み】なぜアセンブリで書かれたプログラムが増えないのか?[クローズド]
質問
アセンブリプログラミングは、C言語などの高級言語に比べて時間がかかり、プログラミングも難しいという意見が主流のようです。したがって、これらの理由と移植性が高いという理由から、高級言語で書くことを推奨または想定しているようです。
最近、私はx86アセンブリで書いているのですが、おそらくこれらの理由は、移植性を除けば、本当は正しくないのではと思い至りました。おそらく、アセンブリを上手に書くには、慣れと知識が必要なのでしょう。また、アセンブリでのプログラミングは、HLLでのプログラミングとはかなり異なることにも気づきました。おそらく、優秀で経験豊富なアセンブリプログラマーは、経験豊富なCプログラマーがCで書くのと同じように簡単に、素早くプログラムを書くことができるのでしょう。
おそらく、アセンブリプログラミングはHLLとは全く異なるため、異なる考え方、方法、やり方が必要で、慣れないうちは非常に厄介に感じ、そのためプログラムを書くのに悪評が立っているのでしょう。
もし移植性が問題でないなら、本当にCがNASMのような優れたアセンブラに勝るものはあるのでしょうか?
編集する 一応指摘しておきます。アセンブリで記述する場合、命令コードだけで記述する必要はないのです。マクロやプロシージャ、独自の規約を使って様々な抽象化を行うことで、プログラムをよりモジュール化し、保守性を高め、読みやすくすることができるのです。そこで、良いアセンブリの書き方を熟知しておくことが重要になる。
どのように解決するのか?
ASMは <強い 可読性が悪い そして メンテナンス性に欠ける は高水準の言語と比較して
また、多くの ASMの開発者が少ない C言語など、より一般的な言語と比べると
さらに、より高度な言語を使用し 新しいASM命令が利用可能になった (例えばSSE)、コンパイラを更新するだけで、古いコードも簡単に新しい命令を利用することができます。
次のCPUでレジスタの数が2倍になったら?
この質問の逆はこうなる。 コンパイラはどのような機能を提供するのか?
ASMの最適化ができるのか、したいのか、すべきなのか、疑問です。
gcc -O3
ができます。
関連
-
[解決済み】C 言語の添え字で配列の要素値を代入すると、配列でもポインタでもベクトルでもない値になる
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】 「配列のイニシャライザーはイニシャライザーリストまたは文字列リテラルでなければなりません」と表示されるのですが?
-
[解決済み】Linuxでexeclp()がどのように動作するのか理解できません。
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み】C言語で入力が整数型かどうかチェックする
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み] Project Eulerとの速度比較。CとPythonとErlangとHaskellの比較
-
[解決済み] なぜC言語では構造体を頻繁にtypedefする必要があるのですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind - strcpyのサイズ1の無効な書き込み
-
[解決済み】valgrind - サイズ8のブロックが割り当てられた後、アドレス ---- が0バイトになる。
-
[解決済み】警告:互換性のないポインタ型からの代入
-
[解決済み】式は、単純なポインタ演算を使用して完全なオブジェクト型へのポインタでなければなりません【重複】。
-
[解決済み】C言語におけるファイルスコープでの可変長配列の変更
-
[解決済み】fgetsによるセグメンテーションフォールト(コアダンプ) - と思う。
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み] C: エラー: ';'トークンの前に ')' があると予想される
-
[解決済み】execvp: バッドアドレスエラー
-
[解決済み】インラインアセンブリ言語はネイティブC++コードより遅いですか?