アセンブリ言語:今日のアセンブリをコード化する方法を学ぶ

開示: あなたのサポートはサイトの運営を維持するのに役立ちます!このページで推奨する一部のサービスについては、紹介料を稼ぎます.


アセンブリ言語は、マシンコード(CPU(または他のマイクロプロセッサ)のレジスタに値を出し入れする一連のバイナリ命令)と1対1で対応する非常に低レベルのプログラミング言語です。.

前書き

マイクロプロセッサは機械的な計算機です。これには、数字のペンを保持するような、名前付きのレジスタがいくつかあります。一連のバイナリビット(1と0)で表されるマシンコードの形式で命令を受け取ります。たとえば、次のコードはマシンコードです。

10110000 01100001

最初の数ビット(10110)は、値をレジスタにコピーするための命令です。次の3桁(000)は、値がコピーされるレジスターを識別します。残り(01100001)はコピーされる値です.

もちろん10110は意味がなく、コンピュータは「値をコピーする」ことを意味することを「認識」していません。プロセッサーは、10110(on-off-on-on-off)で表される一連の電気インパルスが望ましい結果をもたらすように設計されています。これは、「機械的」が意味するものの一部です。

プロセッサが実行するプログラムを作成する場合、1と0の数千行を書き込むのは面倒でエラーが発生しやすいと想像できます。解決策はアセンブリ言語です。アセンブリ言語は、バイナリコードの長い文字列の人間が理解できる代替を提供します.

たとえば、10110が「値の移動」を意味する場合、MOVコマンドを使用して短縮できます。.

また、000レジスタに覚えやすい名前を付けることもできます(この場合、レジスタの名前はALです)。.

最後に、10進数(91)や16進数(61)などの異なる番号付けシステムで値をレンダリングできます。その場合、その行はMOV AL、61になります。プログラム全体がこのように記述されると、アセンブラは各行を適切なバイナリ表現に簡単に変換できます.

コンピューターは、毎秒数十億ものこれらの小さな命令を処理することにより、機能します(計算の実行、データの移動、データの変換)。.

非常に単純な指示(この値を移動し、その値をコピーし、これら2つの値を一緒に追加し、そこに値を保存する)を組み合わせて複雑な操作を形成し、より高いレベルで組み合わせて、実際に意味があると認識することを実際に行う.

アセンブリ言語リソース

オンライン資料

チュートリアルと基本ガイド

  • チュートリアルポイントのアセンブリプログラミングチュートリアル

  • X86アセンブリ言語プログラミング、FreeBSD開発者向けハンドブックの章で、オペレーティングシステム開発のコンテキストでアセンブリ言語の記述を行うのに役立ちます

  • Code as Artブログからのアセンブリへのかなり穏やかな紹介であるX64アセンブリに挨拶してください

  • X86アセンブリ言語プログラミング。これは、OSプログラミングコンテキストにアセンブリ言語を配置する別のチュートリアルです。これは、Linux、Windows、さらにはMac OS Xについても言及しています。

  • PCアセンブリ言語、これはLinux、Windows、またはFreeBSDを実行する32ビットPCに焦点を当てています

  • バージニア大学コンピュータサイエンス学部のX86アセンブリガイド

  • ウェブスター:「インターネット上でアセンブリ言語を学ぶ場所」として自分自身に請求するこのサイトは、(どうやら)The Art of Assembly Languageの作者とHLAの発明者によって運営されているようです。

  • Linuxアセンブリチュートリアル

  • 簡単なX86-64

  • X86アセンブリ

  • Windowsアセンブリプログラミングチュートリアル(pdf)

ビデオチュートリアル

  • アセンブリ言語プログラミングチュートリアル、Kip Irvine著の本 『Assembly Language for x86 Processors(6th Edition)』に続く、アセンブリに関する非常に徹底した55ビデオシリーズ(ビデオをフォローしていない場合は、おそらく最新版が必要になるでしょう)

  • 非常に民俗的な魅力を持つアーサーグリフィスが教える70部構成のビデオシリーズ、アセンブリ言語プログラミングビデオコース

  • アセンブリ言語の紹介、アセンブリ言語を紹介するコーネルでのクラスルーム講義

  • アセンブリ言語プログラミング、1時間のアセンブリ入門、および高校時代にオーバーヘッドプロジェクターで代数の例を追うことが本当に好きな場合に最適な形式(これは、マイクロプロセッサとマイクロコントローラに関するより大きなシリーズの一部です).

参照

  • X86命令リスト、x86アーキテクチャのすべての命令の完全なリスト、およびそれぞれがいつ追加されたかに関する注記

  • X86オペコードおよび命令リファレンス

  • Intel X86アセンブリ言語チートシート(pdf).

ツール

アセンブラー—利用可能なアセンブラーはたくさんあります—以下は、最も人気のあるフリーでオープンソースのアセンブラーの一部です。

  • NASM

  • FASM

  • ヤスム

  • GASM.

IDE(統合開発環境):

  • SASM、NASM、MASM、GAS、FASMアセンブリ言語用のシンプルなクロスプラットフォームIDE

  • 新鮮なIDE、組み込みのFASMアセンブラを備えたビジュアルアセンブリ言語IDE

  • WinAsm Studio、アセンブラーを使用して32ビットWindowsおよび16ビットDOSプログラムを開発するための無料IDE

  • ビジュアルMASM.

コミュニティと継続的な学習

  • Dream.In.Codeのアセンブリフォーラム

  • MASMフォーラム

  • Hack Forumsでのアセンブリ言語と機械語コード

  • Art of Assembly Language(オンライン版)は、常に読めるNo Starch Pressからの、アセンブリ言語に関する最も人気のある本の1つです。同じ著者のこれらにも興味があるかもしれません:優れたコードの作成:第1巻:マシンの理解と優れたコードの作成、第2巻:低レベルで考える、高レベルで書く

  • アセンブリ言語のステップバイステップ:Linuxでのプログラミング

  • プロのアセンブリ言語

  • x86プロセッサのアセンブリ言語

  • 最新のX86アセンブリ言語プログラミング:32ビット、64ビット、SSE、およびAVX

  • LinuxおよびOS Xの64ビットアセンブリプログラミングの概要:第3版– LinuxおよびOS X用

  • 80X86アセンブリ言語とコンピュータアーキテクチャの概要

  • アセンブリ言語プログラミング:PCおよびラップトップコンピュータ用.

アセンブリ言語を学ぶべきか?

アセンブリ言語を学ぶべきかどうかは、目標が何であるかに依存します。ほとんどの開発者にとって、答えは「いいえ」です。

アセンブリ言語を学ぶ主な理由は2つあります。それを直接使用したい場合と、コンピュータを基本レベルで理解したい場合です。.

実用的な観点から見ると、実際にアセンブリ言語を使用しているのは、世界のエンジニアやコンピュータサイエンティストのごく一部だけです。.

ほぼすべての種類のアプリケーション開発を含む、ソフトウェア開発の圧倒的大多数は、アセンブリコードではなく、高水準プログラミング言語を使用しています。アセンブリ言語が使用されるいくつかの特定の領域は次のとおりです。

  • オペレーティングシステム

  • ファームウェア

  • デバイスドライバ

  • 言語デザイン

  • コンパイラー設計

  • 組み込みシステム

  • ハードウェア設計

  • 高度な暗号化

  • 理論的コンピュータサイエンス

アセンブリ言語を学ぶもう1つの理由は、コンピューターの根底で実際に起こっていることをよりよく理解するためです。 (これが、事実上すべてのコンピュータサイエンス専攻がアセンブリ言語を学ぶ必要がある理由です。)

もちろん、あなたが本当にそれに興味がある人なら、低レベルのシステム開発で働くキャリアについて考えたいと思うかもしれません.

その他の学習事項

一部の言語では、少しだけ知っていれば、たくさんのことができます。 PythonとRubyはそのようなものです。価値のある何かを構築するために週末に十分に学ぶことができます。アセンブリ言語はそうではありません.

アセンブリ言語が孤立して使用されることはありません。アセンブリを知る必要があるタイプのエンジニアは、効果的な他のいくつかのスキルを知る必要がある領域で作業している可能性があります。これらには以下が含まれます:

  • VHDLやVerilogなどのハードウェア言語、およびマイクロプロセッサと電気工学の十分な理解

  • Cおよびその派生物のような低レベルのオペレーティングシステム言語:C ++、C#、およびD

  • FortranやCobolなどのレガシー言語

  • JavaやObjective-Cなどのプラットフォーム言語

  • アルゴリズム

  • コンパイラー、インタープリター、および言語設計.

参考資料とリソース

この種のものについてはもっとたくさんの情報があります。プログラミング:言語、タイムライン & ガイド.

どのコードを学ぶべきか?

あなたがコーディングするためにどのプログラミング言語を学ぶべきかについて混乱していますか?私たちのインフォグラフィックをチェックして、あなたは何のコードを学ぶべきですか?

これは、言語のさまざまな側面について説明するだけでなく、「生活のためにJavaプログラミングを行うことでどれだけのお金を稼ぐことができるか」などの重要な質問に答えます。

どのコードを学ぶべきですか?
どのコードを学ぶべきか?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map