Docker で アセンブリの環境構築(Assembly, Dockerfile, nasm)

Docker で アセンブリを動かす

アセンブリの学習環境を Docker を使用して構築します。

Docker入門 関連記事

Docker で アセンブリを動かすプロジェクトのディレクトリ構造

以下がプロジェクトのディレクトリ構造になります。 Dockerfilecode/helloworld.asmが必要なファイルになります。

C:.
│  Dockerfile
│  README.md
│
└─code
        helloworld.asm

アセンブリを動かす Dockerfile

アセンブリを動かす Dockerfleは以下の通りです。

FROM debian:latest

RUN apt-get update 
RUN apt-get install -y binutils nasm gdb 
RUN apt-get install -y vim
  • debianディストリビューションをベースイメージとしています。
  • apt-getupdateにてパッケージマネージャーを最新版にしています。
  • アセンブラコンパイルに必要なbinutils,nasm,gdbの3つをインストールします。
  • コンテナ内部での編集を可能にするためにエディタのvimもインストールします。

アセンブリファイルを作成する

今回はhello worldを出力します。 以下のコードをコピペしてください

section .data
message: db 'hello, world!', 10

section .text
global _start

_start:
  mov rax, 1
  mov rdi, 1
  mov rsi, message
  mov rdx, 14
  syscall

  mov rax, 60
  xor rdi, rdi
  syscall

アセンブリを実行する。

buildコマンドとrunコマンドを使用してhelloworldを出力させます。

docker build -t low-level-programming .
docker run -it -v $PWD/code:/code low-level-programming

成功すればhelloworldと表示されるはずです。 以上で完了となります。

最後まで閲覧いただきありがとうございます!