*ASKAのページ [#n2497c4d] -あすかと読みます。ASK Assemblerの略というのが語源です。まあぶっちゃけた話、[[OSASK]]を作るために考案された言語ってところでしょうか。 -今はIA-32、IA-16くらいにしか使えません。 -http://www.imasy.org/~kawai/osask/developers.html のtolsetの中にASKAは入っています。 -言語仕様設計:[[K]]&今原修一郎氏 -処理系実装:今原修一郎氏&Risa Papa氏 -将来的には[[GO]]の一部になる予定です。 *NASMとの文法比較 [#j28c403e] -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の問題点 [#z7a5f960] -処理系の完成度がいまいちで、正規文法では表現可能だけど、うまくコンパイルできない表現がまだたくさんあります(LEA構文とか、IMUL構文とか)。このせいでほとんどの人にはお勧めしかねる状況です。ただ、読むのには結構向いている言語だとは思います。 *こめんと欄 [#i84738fd] #comment