2016年7月4日月曜日

[アセンブリに挑戦]アセンブリに触れる

今回はアセンブリに挑戦し、C言語的に解釈していきたいと思います。
※独自の解釈なので間違いがあるかもしれません

まず、入門サイトなどを参考に、"HelloWorld"と表示するプログラムをアセンブリで作ろうと思います。ただし使用するのはLinux機です。
すると、下記のようなコードになります。
###############################

.global main
main:
movl $4,%eax
movl $2,%ebx
movl $msg,%ecx
movl $12,%edx
int $0x80

movl $1,%eax
movl $0,%ebx
int $0x80

.data
msg: .asciz "HelloWorld\n"

################################
上記のコードを"assembly-test.s"と言うファイル名で保存し、
gcc assembly-test.s
としてコンパイルし、
./a.out
とすると、見事"HelloWorld"と表示されました。

上記のプログラムを自分なりにC言語のように解釈すると下記のようになると思います。
※変更:5行目:*msg → (char *)msg,


C言語はよく使いますが、アセンブリは使ったことがないので完全な初心者でしたが、なんとか"HelloWorld"くらいは表示できるようになりました。しかし応用するには知識が足りないので今のところこれ以上発展させられませんでした。

0 件のコメント:

コメントを投稿