page0030
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* OSECPU-ASKAの注意点
-(by [[K]], 2013.04.25)
** はじめに
-ASKAはC言語の文法をかなり真似したアセンブラですが、真似...
-どこが違いかを忘れないようにするためにメモを作りました。
** for文
-for文は違いが満載。見た目が似ているだけに混乱は小さくな...
-(1) 繰り返し範囲は必ず { } でくくらなければいけない。
--一文しかなくても、{ } をつけなければいけない。
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
-(2) for文の条件式が最初から不成立だったとしても、ループ...
for (;0;) {
あれこれ
}
// こう書いても「あれこれ」は一度だけ実行される!
--C言語風に最初から不成立だった場合は一度も実行しない、と...
if (条件式) { // ifの条件式はforと同じ内...
for (...; 条件式; ...) {
あれこれ
}
}
--なぜこんな仕様なのかって?それは確実に一度は回るという...
-(3) continue;文の挙動がC言語と違う。
--普通はcontinueを実行したら、for文中の更新式が実行されて...
--このような仕様により、たとえば以下の記述は無限ループを...
for (i = 0; i < 2; i++) {
continue;
}
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
--C言語相当にしたければ、continueの直前に、更新式や条件式...
for (i = 0; i < 2; i++) {
i++; if (i < 2) continue; // この一行がC言語でのcon...
}
** if文
-(1) if成立節もelse節も必ず { } でくくらなければいけない。
--ただし例外がある。
if (条件式) continue;
if (条件式) break;
if (条件式) goto ...;
--この3形式だけは { } でくくる必要はないし、くくらないほ...
--なおこれらの3形式は途中で改行してはいけない。つまり以下...
if (条件式)
continue;
--これがやりたいならコードがへぼくなることを承知の上で、...
if (条件式) {
continue;
}
--以下のような書き方でもかまわない。
if (条件式)
{ continue; }
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
-(2) else if は使えない。
--else節の中にifを入れることでほぼ同じことはできる。しか...
--forやbreakを使って以下のように書くのがもっとも好ましい...
for (;0;) {
if (R02 == 0) {
あれこれ
break;
}
if (R02 == 1) { /* else-ifの代わり */
いろいろ
break;
}
if (R02 == 2) { /* else-ifの代わり */
ほげほげ
break;
}
if (R02 == 3) { /* else-ifの代わり */
ふがふが
}
}
-(3) if成立節の最後がbreak;などのジャンプ命令だとしても、...
--何を言っているのかよくわからないと思うので補足。
// 書き方1
if (条件式) {
あれこれ
break;
} else {
いろいろ
}
// 書き方2
if (条件式) {
あれこれ
break;
}
いろいろ
--2つの書き方は同じ動作結果になるが、書き方2のほうがよい...
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
-(4) else を書くときは、直前の } と同じ行になくてはいけな...
// OKな例
} else {
} else
{
// だめな例
}
else {
}
else
{
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
-(5) &&や||は(当面)使わない。
--その代わり&や|で代用する。これらは左辺値で真偽が確定す...
if (p < p1 && *p == 'a') { ... としたいとき
if (p < p1 & *p == 'a') { ... これはダメな書き方
if (p < p1) {
if (*p == 'a') { ... これは良い書き方
}
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
** こめんと欄
-このページにこめんと欄はありません。このページの内容にコ...
終了行:
* OSECPU-ASKAの注意点
-(by [[K]], 2013.04.25)
** はじめに
-ASKAはC言語の文法をかなり真似したアセンブラですが、真似...
-どこが違いかを忘れないようにするためにメモを作りました。
** for文
-for文は違いが満載。見た目が似ているだけに混乱は小さくな...
-(1) 繰り返し範囲は必ず { } でくくらなければいけない。
--一文しかなくても、{ } をつけなければいけない。
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
-(2) for文の条件式が最初から不成立だったとしても、ループ...
for (;0;) {
あれこれ
}
// こう書いても「あれこれ」は一度だけ実行される!
--C言語風に最初から不成立だった場合は一度も実行しない、と...
if (条件式) { // ifの条件式はforと同じ内...
for (...; 条件式; ...) {
あれこれ
}
}
--なぜこんな仕様なのかって?それは確実に一度は回るという...
-(3) continue;文の挙動がC言語と違う。
--普通はcontinueを実行したら、for文中の更新式が実行されて...
--このような仕様により、たとえば以下の記述は無限ループを...
for (i = 0; i < 2; i++) {
continue;
}
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
--C言語相当にしたければ、continueの直前に、更新式や条件式...
for (i = 0; i < 2; i++) {
i++; if (i < 2) continue; // この一行がC言語でのcon...
}
** if文
-(1) if成立節もelse節も必ず { } でくくらなければいけない。
--ただし例外がある。
if (条件式) continue;
if (条件式) break;
if (条件式) goto ...;
--この3形式だけは { } でくくる必要はないし、くくらないほ...
--なおこれらの3形式は途中で改行してはいけない。つまり以下...
if (条件式)
continue;
--これがやりたいならコードがへぼくなることを承知の上で、...
if (条件式) {
continue;
}
--以下のような書き方でもかまわない。
if (条件式)
{ continue; }
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
-(2) else if は使えない。
--else節の中にifを入れることでほぼ同じことはできる。しか...
--forやbreakを使って以下のように書くのがもっとも好ましい...
for (;0;) {
if (R02 == 0) {
あれこれ
break;
}
if (R02 == 1) { /* else-ifの代わり */
いろいろ
break;
}
if (R02 == 2) { /* else-ifの代わり */
ほげほげ
break;
}
if (R02 == 3) { /* else-ifの代わり */
ふがふが
}
}
-(3) if成立節の最後がbreak;などのジャンプ命令だとしても、...
--何を言っているのかよくわからないと思うので補足。
// 書き方1
if (条件式) {
あれこれ
break;
} else {
いろいろ
}
// 書き方2
if (条件式) {
あれこれ
break;
}
いろいろ
--2つの書き方は同じ動作結果になるが、書き方2のほうがよい...
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
-(4) else を書くときは、直前の } と同じ行になくてはいけな...
// OKな例
} else {
} else
{
// だめな例
}
else {
}
else
{
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
-(5) &&や||は(当面)使わない。
--その代わり&や|で代用する。これらは左辺値で真偽が確定す...
if (p < p1 && *p == 'a') { ... としたいとき
if (p < p1 & *p == 'a') { ... これはダメな書き方
if (p < p1) {
if (*p == 'a') { ... これは良い書き方
}
--なぜこんな仕様なのかって?それはコンパイラが楽をするた...
** こめんと欄
-このページにこめんと欄はありません。このページの内容にコ...
ページ名: