Easyyam、組立にランプアップ


私は私の母校でコンパイラのレッスンを求めていた時間を覚えていたし、コンパイルのプロセスのコアの概念、さらにはアセンブリ言語でさらに良い方法で私を理解するのに役立ったオープンソースプロジェクトをチェックアウトすることを決めた.
うん!私はいくつかのこれらの低レベルのプログラミング言語で怖がってしまうかもしれない知っているが、最後に、彼らはそれだけです:独自の複雑さを持つ別の言語.
まず最初に知っておく必要があるのは、アセンブリ言語が異なることです.
  • MIPS32
  • X86
  • ARM
  • X64
  • 新たに家族に加えられるWebAssembly
  • とX 86用の有名な広く使用されるアセンブラですNASM

    教育目的で


    私は、この素晴らしいオープンソースプロジェクト(MIP 32とX 86命令セットの通訳)にすべてをあなたに紹介するためにここに来ましたEasyASM .

    偶像 / アスキー


    アセンブラ言語の簡単な学習のためのMIPS 32とx 86シミュレータ


    アスキー


    EasyYMはMIPS 32とX 86 ISASのサブセットのための単純なシミュレータです.主な目的はプロセスを容易にする
    アセンブラ言語の学習.この目的のために簡単なコマンドラインインターフェイスを提供します
    ユーザーはアセンブラの指示を入力することができますし、いくつかのアセンブラプログラムを使用せずにテストします.プログラム
    エラーの場合、ユーザーに瞬時にフィードバックを提供します.別に、シミュレータはいくつかの有用なコマンドを提供します
    セクションコマンドで説明します.

    インストール


    プログラムをインストールするにはC +コンパイラとソースコードが必要です.一度だけ両方を入力する必要がある
    ソースコードを持つディレクトリとコマンドを入力するディレクトリ

    Linux ( Debianベースの配布)

    $ make deps
    $ make

    Windows

    It might work if you use msys

    用途

    Once you have the simulator compiled, you can run it by typing ./EasyASM in the source…

    It’s a project where you can play around with a vast instruction set for either MIPS32 or X86 and have good feedback of what’s going on. Also you have available some helper instructions to pre-fill a register with a desired value and then use it later in the code.

    I've made very few contributions to it, the most recent being an easy way to set it up and running in your Debian based distribution.

    歴史の少し

    The project was made by a professor I had during my major and was developed while we were having lessons with him, so we were pretty much like Beta Testers 😆 at the time.

    A few of us made very few contributions back then, and it wasn't until recently that I came back to see if the project was still alive and noticed there were some changes which weren't quite well explained in the Readme.md file about:

    • specific i386 dependencies
    • custom version of Lemon

    It really wasn't easy to set the project up and running at once, so I decided to figure out the needed dependencies and the custom version of Lemon myself.

    I added a script to install all those dependencies easily just by executing one shell command... Yeah, I went through all that pain to simplify that process to future users.

    セットアップ

    $ git clone https://github.com/ideras/EasyASM.git
    $ cd EasyASM
    $ make deps
    $ make
    $ cp ./EasyASM /usr/bin/EasyASM
    
    最後のコマンドはオプションです.あなたが他のCLIプログラムのように、あなたがそうであるどんなディレクトリからでもそれを使うことができるように、それはほとんどそこにあります、あるいは、あなたは直接プロジェクトフォルダからそれをすぐに使うことができました.

    走る


    上記のすべての手順に従って次のように入力します.
    $ EasyASM
    
    最後のステップをスキップした場合は
    $ cd </path/where/you/cloned/the/project>
    $ ./EasyASM
    
    この出力をコンソールに期待してください.
    (入力を開始するのを待つ点滅カーソルがあります).
    --- EasyASM MIPS32 mode (big endian) ----
    
    Global base address = 0x10000000
    Stack pointer address = 0x7fffeffc
    Global memory size = 256 words
    Stack size         = 256 words
    
    ASM> _
    

    用途


    デフォルトモードはMIPS 32 (ビッグエンディアン)
    x 86 (リトルエンディアン)として実行するには:$ EasyASM --x86

    Easyyam自身のヘルパーコマンド

  • #set レジスタまたはメモリアドレスに値を格納する
  • #show レジスタまたはメモリアドレスに格納されるものを表示する
  • #exec アセンブラファイル全体を実行する
  • quit コマンドラインプロンプト
  • ではEasyYMで動く簡単な例を見ましょう
    ASM> start:
    ASM> #set $t0 = 10
    ASM> #set $t1 = 20
    ASM> lbl_add1: add $t2, $t0, $t1
    $t2 = 0x1E 30 30
    ASM> #show $t2
    $t2 = 30
    ASM> _
    
    私たちは、Calc操作の直後に見ることができます.Easyamは、3つの異なる形式でレジスタに格納された結果値を表示します.[target register] = [HEX] [Signed Decimal] [Unsigned Decimal]注:ラベルを追加することができますが、我々はジャンプすることはできませんnot existing ラベルのように、私たちがさらにラベルをプログラムにジャンプしたいならば、我々はよりよく使いますfile.asm そして、#exec コマンド
    誰かが本当にこのプロジェクトの力を十分に利用できるように、これが役に立つことを願っています.
    読書ありがとう!😊