アセンブリを書く
- この章では、アセンブリの読み書きの「書き」パートを通して慣れていきましょう。比較的簡単なので、終わった人は自由にアセンブリを書いて、Mattermostに「こんなことできたよ!」と報告してくれると嬉しいです。
単純な足し算
~/minicamp-files/step-1-1/main.s
の空欄を埋めて足し算をしてください。
- 以下のようにして確かめることができます
$ gcc main.s -o main
$ ./main
$ echo $?
echo $?
で最後に実行したプログラムの終了ステータスコードを得られるのでそれを使っています。
RPN電卓
- 四則演算とスタック構造に慣れてもらいたいので電卓を作ってもらいます
- 大部分作ってあるので、アセンブリ出力部分を作ってください
- (逆ポーランド記法は以下のように演算子を後ろに置くような表記の仕方を言います。スタックと相性がよいです)
1 1 +
1 2 + 3 4 - +
~/minicamp-files/step-1-2/rpncalc.c
の空欄を埋めて逆ポーランド記法での引き算、掛け算、割り算を入力したときにそれに対応するアセンブリを出力してください
$ gcc rpncalc.c -o rpncalc
$ ./rpncalc
1 2 + 3 4 + +
.intel_syntax noprefix
.globl main
main:
push 1
...
ret
[10]
$ ./rpncalc > rpn.s
1 2 + 3 4 + +
[10]
$ cat rpn.s
$ gcc rpn.s
$ ./rpn
$ echo $?
終わったら...?
- いろいろ書いてみることが大事なので、アセンブリをいろいろ書いてみてください。こんなことできました!みたいなのをMattermostで報告してみてください。
- 例
- RPN電卓に新しい演算子(xorとか)を導入してみる
- writeシステムコールを呼び出して、値を出力できないか考えてみる