ASKAのページ

  • あすかと読みます。ASK Assemblerの略というのが語源です。まあぶっちゃけた話、OSASKを作るために考案された言語ってところでしょうか。
  • 今はIA-32、IA-16くらいにしか使えません。
  • http://www.imasy.org/~kawai/osask/developers.html のtolsetの中にASKAは入っています。
  • 言語仕様設計:K&今原修一郎氏
  • 処理系実装:今原修一郎氏&Risa Papa氏
  • 将来的にはGOの一部になる予定です。

NASMとの文法比較

  • NASM (NASKも同じ:NASKについてはGOを参照)
        XOR EAX,EAX
        XOR ECX.ECX
    loopsum:
        ADD EAX,ECX
        INC ECX
        CMP ECX,10
        JLE loopsum
  • ASKA
      int sum == EAX, i == ECX;
      sum = 0; i = 0;
      do {
        sum += i;
        i++;
      } while (i <= 10);
  • 一見するとASKAはC言語のように見えますが、結局はただのアセンブラで、ASKAは上記NASMコードと全く同じコードを生成することを保障します。
  • ASKAはアセンブラなので、たとえばsum += i++;みたいなことはできません。原則として一文=一命例です。
  • ASKAはニーモニックがC言語風なので、他のCPU、たとえばZ80版になっても似たような記述で書けます。しかしもちろん、レジスタ数もレジスタ名も違いますし、それぞれの挙動だって微妙に違いますので、移植可能なわけではありません。そもそも移植可能になることを目指した言語ではなく、単に文法をC言語風にしたアセンブラなのです。それ以上を期待してはいけません。・・・逆にこの割り切りがあったからこそ、ASKAは実用的なレベルに到達したんだとも思っています。

現状のASKAの問題点

  • 処理系の完成度がいまいちで、正規文法では表現可能だけど、うまくコンパイルできない表現がまだたくさんあります(LEA構文とか、IMUL構文とか)。このせいでほとんどの人にはお勧めしかねる状況です。ただ、読むのには結構向いている言語だとは思います。

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-09-05 (金) 11:52:34 (1865d)