アセンブリの方言を学ぶ価値はありますか?[閉まっている]

StackOverflow https://stackoverflow.com/questions/27942

  •  09-06-2019
  •  | 
  •  

質問

私の目標はソフトウェア アプリケーションの開発、そしておそらく Web アプリケーションの開発に焦点を当てていますが、おそらくデスクトップ アプリケーションの開発に重点を置いています。C/C++ にもっと慣れるための道を歩み始めていますが、それよりはるかに下位のアセンブリに進む必要がありますか?それとも、長期的な目標を達成するにはメリットがないのでしょうか?

役に立ちましたか?

解決

直接アプリケーションを使用しない限り、おそらく大きなメリットは得られません。一般的な知識を学びたい場合は、C/C++ から始めるのが最適です。

そうは言っても、アセンブリが引き起こす課題は非常に興味深いものであり、物事を成し遂げるにはかなり異なる考え方が必要です。

私は少し時間をかけて、Z80 のアセンブリをプログラミングして学習しました。 TI-86 電卓。Z80 の命令セットは非常に小さく、アセンブリで電卓をプログラミングするという斬新さは非常に面白いです。

ティカルク.org には良いリソースがたくさんあります TI アセンブリ プログラミング.

他のヒント

この質問に対して「いいえ」という回答が非常に多いことに本当に驚きました。私はあなたを思う すべき 組み立てを学びます。

あなたがそんなことをするとは思っていません 使用 仕事の一環として直接組み立てることができます。しかし、だからといってそれを学ばなくてもよいということにはなりません。

アセンブリを学習すると、コンピューターの内部で何が起こっているのかがわかります。ソフトウェアが実際に何をしているのかを理解するのに役立ちます。

それは本当にプロフェッショナリズムに関するものです。プロのソフトウェアエンジニアになるつもりですか?それともコピー&ペーストのハックをするつもりですか?確かに、後者が請求額を支払うかもしれませんが、プロであることの方がはるかに満足感が得られます。

誰かが「いや、わざわざアセンブリを学ばなくてもいいよ」と言うのを聞くと、私の耳には「これが橋を作るためのクックブックだ。橋を建設するために物理学や工学について学ぶ必要はありません。このレシピに従ってください。」いいえ、ありがとう。

こんにちは、

私は Elect のときに PDP アセンブラを学びました。工学70年代後半に学位を取得。私が実際に使用したアセンブラの最後の方言には、メモリ アドレッシングの 4 つの異なるモードがありました。私が最後に調べた方言には 17 のモードがありました。

今ではアセンブラを学ぶと実際に何が得られるのかわかりません。当時、それは私の選挙でのCSストリームの重要な部分でした。工学程度。

C++ の学習に関しては、ただ座って勉強するだけです。」高速化された C++」 これは、「他のビットを備えた C」としてではなく、C++ 自体にアプローチしています。

C については、最新バージョンを使いこなすだけです。 「Cプログラミング言語」 (別名) K'n'R

お役に立てれば。

乾杯、ロブ

さて、ナノプログラミングについて尋ねたとしたら...(-:

「アセンブリの方言を学ぶ価値はありますか?」

私は専門的にアセンブリをプログラミングしました。ファックス機とスキャナーを実行している M68k。また、Windows VxD (仮想デバイス ドライバー) は、実際のカーネルが登場する前の Windows 3/3.1 に遡ります。

通常のソフトウェア的な種類のタスク (メモリのコピー、文字列の連結、割り込みハンドラーの呼び出しなど) を実行するアセンブリをコード化するとき、それはちょっと興味深いものです。特定のプロセッサ上で特殊なタスクをできるだけ高速に実行するために、C コードによって呼び出されるアセンブリをコード化することがあります。プロセッサーが提供するすべてのサイクルを活用する方法を探しているので、これはさらに興味深いものになる可能性があります。プロセッサの L1 キャッシュに何があるかが重要です。キャッシュラインのヒットを避けるために、メモリ内でデータを整列させることに気を配ります(用語を覚えていれば)。デュアル パイプライン プロセッサ アーキテクチャと、2 つまたは 3 つまたは 4 つの命令を正しい順序で使用して、2 つまたは 3 つまたは 4 つの処理が 1 クロック ティック (プロセッサの XgHz の HZ の 1 つ) で起こるようにすることが重要です。

カスタム ハードウェアを駆動するアセンブリをコード化する場合、メモリの 16 バイト バッファを埋めたり、DMA 操作を設定したり、レーザー プリンタのドラムを駆動するような処理を行うコントローラにそのデータを送信したりすることになります。そしてドラムは回転していて止めることができず、次の 5 マイクロ秒以内に次の 16 バイトを要求します。もちろん、それは C または C++ で行うことができます。しかし、例は無限にあります。

私はあなたの質問の最後の半分を「集会の方言を学ぶのは価値がありますか?」そして、それを「学ぶ価値はありますか?」

プログラミングが大好きな場合、「価値」をどのように定義するかには、プログラミングへの愛情の何らかの要素が関係します。その意味で、私はプログラミングで何かを学んだことがないし、価値があると思ったこともありません。あとがきではあまり使わなかったとしても。

同じ意味で、何かを学ぶのが難しいほど、それはより「価値がある」と言えるでしょう。

しかし、そんなふわふわしたくだらないことはさておき、少なくともアセンブリの背景を学ぶことには価値があると私は信じています。strcpy、memmove などのいくつかの単純な stdlib ルーチンを置き換えるアセンブリの作成方法を理解してください。次に、タイミングを計りながら C から 100 万回呼び出して、最適化を試みます。

私なら ASM の学習を始めません。C/C++ を学びたい場合は、そこから始めてください。コードの品質が成熟すると、ASM が必要になる場合があります。99% の場合は必要ありませんが、場合によっては必要になることがあります。

また、ASM を知ることは、C/C++ が舞台裏で何を行っているかを理解するのに役立ちます。ただし、さらに上級者になるまでは、おそらくその必要はありません。

私もそうしましたし、当時はそれが役に立ったと思います。もう毎日は役に立ちませんが、あなたの仕事次第だと思います。

私は 20 年前に Commodore でアセンブラを学び、大学では IBM メインフレームで再びアセンブラを学びました。それが今の仕事に役立っているとは言えません。

私はマークに同意します。これは、C#、VB.NET、または別の .NET 言語で記述するときに MSIL を学習するのと似ていると思います。内部で何が起こっているかを知ることは役に立ちますが、機能するのに必要のないアプリケーションを作成しながら一生を過ごすことになる可能性があります。

いいえ。楽しみたいのでなければ、アセンブリを学ぶ必要はありません。

ドライバーの作成、OS の開発、エクスプロイトの開発など、アセンブリについて知っておく必要があることがいくつかありますが、それ以外では、知らなくてもずっと楽しくコーディングできると個人的には信じています。

アセンブリを学ぶ必要がある場合は、それを知っているでしょう - 私はそれを学ぶためにそれを学ぶつもりはありません。

アンマネージ C++ を作成している場合、少なくとも基本的な x86 アセンブリ、2 進数システムなどを知っていることが非常に重要になる場合があります。私は主に C/C++ 開発を行っていますが、コンパイラによって生成されたマシンコード表現に特有のエラーがないか製品コードをデバッグする必要がある場合があります。バグを見つけて修正する唯一の方法は、逆コンパイルされたアセンブリを読み取ることです。そして、コンパイラがなぜそのように生成したのかを確認します。

アセンブリの詳細については、次の質問を参照してください。 アセンブリを学ぶ最良の方法は何ですか?具体的には、動的言語の経験がある人向け.

組み立てはそれほど難しくありません。C に慣れたら、1 ~ 2 日かけて基本的なアセンブリを学習します。デバッグの点でその有用性は非常に高く、さらに、速度の点で同等の C 言語を 10 倍、15 倍、またはそれ以上上回るコードを作成できるのが楽しいです。

私は「最新のアセンブラー言語」を学ぶことをお勧めしません。

ただし、少し知っておくと、 MOS 6510 アセンブラと逆アセンブルされたものの閲覧 C64 カーネル、別名これは OS と BASIC インタプリタで、割り込みやメモリ ページなど、コンピュータ内で何が起こっているのかを理解するのに非常に役立ちました。

これは、他の言語で最適化されたコードを記述する方法のヒントを得るのに役立つ可能性があります。ただし、その多くは最新のコンパイラによってすでに実行されているため、ブラック ボックスの内部で何が起こっているかに興味がある場合にのみお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top