SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

MASMとなでしこによるオリジナルコンパイラの制作

MASMとなでしこによるオリジナルコンパイラの制作 5

変数の宣言、代入、表示と四則演算

  • このエントリーをはてなブックマークに追加

今回は、整数型の変数の宣言、代入、表示を実装します。また、四則演算の実装もしていきます。

  • このエントリーをはてなブックマークに追加

はじめに

 本連載では、最近の日本語プログラミング言語の中で高いシェアを占める「なでしこ」を使用して、BASICライクな自作言語のコンパイラを作成します。

 前回、「MASMとなでしこによるオリジナルコンパイラの制作 4」では、メッセージボックスのタイトルを指定できるようにし、変数についても解説しました。今回は変数に値を代入してコンソールに出力します。

過去の記事

変数の宣言

 ようやくまともに使える関数が少しはできました。しかし、まともに使える関数が2つや3つでは「プログラミング言語もどき」と言うにも厳しいです。そこで、変数を扱う関数をいくつか用意したいと思います。MASMでは、変数に値を代入するには、以下の書式を使用します。

MASMでの変数に値を代入する書式
(変数名) (変数型) (代入する内容)

 例えば、「dd型のhensuuという変数名に32を代入する」という場合は以下のようになります。単語の間は半角スペースです。

変数代入サンプル
hensuu dd 32

 イメージはつかめましたか? では、この行を実際に出力するプログラムを作ってみましょう。

改行について
 以降、掲載しているプログラムコードでは1行に収まらなかった場合、改行記号を付加し改行していますが、実際は改行の無い1行のソースコードになります。ソースコードをコピーする場合は、ペーストしたソースコードから改行を取り除いて実行するようにしてください。
build.nakoの途中
 違えば、もし、最新命令が「msgbox」ならば、
  アセンブリデータに「STR{文字列数} db "{バッファ¥0}", 0」を配列追加。
  もし、バッファ¥1が空ならば、
   アセンブリに「invoke MessageBoxA, 0, offset STR{文字列数}, offset STR{文字列数}, 0」を配列追加。
  違えば、
   アセンブリデータに「STR{文字列数+1} db "{バッファ¥1}", 0」を配列追加。
   アセンブリに「invoke MessageBoxA, 0, offset STR{文字列数}, offset STR{文字列数+1}, 0」を配列追加。
   文字列数は文字列数+1。    //文字列を1つ多く使ったので
  文字列数は文字列数+1。
  バッファは空。
 違えば、もし、最新命令が「Dim」ならば、
  もし、予約名¥1が「Long」ならば、
   アセンブリデータに「{予約名¥0} dd 0」を配列追加。
  予約名は空。
違えば、もし、対象が改行でなければ、
 バッファは「{バッファ}{対象}」。
 もし、予約名スィッチがオンならば、
  予約名は「{予約名}{対象}」。

 Dimは、Basic言語で「変数の宣言」を意味します。ただし、この行ではまだ何も代入していません。変数の宣言の時に同時に代入することができる言語もたくさんありますが、現時点では対応しないようにします。

 それでは、コンパイルしてエラーが起きないことを確認してください。

test4.txt
Dim testdim As Long

 注意点が2つあります。まず、これは前回(第4回)で書いた「test3.txt」の内容と全く一緒ですが、新しく「test4.txt」を作成するようにしてください。2点目は、ソースコードの最後に改行をつけてることを忘れないようにしてください。

 アセンブリの中の.dataの下に、以下の行が打ち込まれているのを確認できましたか?

test4.txt.asmの.data
tester dd 0

 アセンブルしてもエラーは発生しませんでしたが、このままでは本当に変数が作られたか分かりません。そこで、変数に値が代入されているか確かめてみます。変数が代入されているか、そして変数が表示されるかを2ステップに分けて確認します。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
変数への代入

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
MASMとなでしこによるオリジナルコンパイラの制作連載記事一覧

もっと読む

この記事の著者

KMY(かみぃ)

とあるごく平凡な中学生。兵庫県在住。日本語プログラミング言語「なでしこ」に惹かれ、たくさんのプログラムを作り利用している。なでしこ以外にも、他の言語を心得ており、HTMLがなでしこの次に得意であり、Perlが第3位(かも)。ベクターにも多彩な作品を残している。作文がど苦手。KMYpage

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1339 2008/08/26 14:03

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング