page0038
の編集
http://osecpu.osask.jp/wiki/?page0038
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
BracketName
FormattingRules
FrontPage
Fulyn
Fulyn-v2
Fulyn_Samples
Help
InterWiki
InterWikiName
InterWikiSandBox
K
KOR_PIT8254
KWVM.NET
Liva
MANA
MenuBar
OSECPU_FPGA
PG_MANA
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
hikalium
hikarupsp
hikarupsp_ELCHNOS
hikarupsp_ELCHNOS_IDE
hikarupsp_FrontEndCode
hikarupsp_WebCPU-VM
hikarupsp_WebCPU-VM_internal
hikarupsp_study_hh4
impressions
impressions0000
jpag0000
jpag0001
jpag0002
jpag0003
jpag0004
jpag0005
lambdalice
mandel59
members
memo0000
memo0001
memo0002
memo0003
memo0004
memo0005
memo0006
memo0007
memo0008
memo0009
memo0010
osask
osecpu4android
page0000
page0001
page0002
page0003
page0004
page0005
page0006
page0007
page0008
page0009
page0010
page0011
page0012
page0013
page0014
page0015
page0016
page0017
page0018
page0019
page0020
page0021
page0022
page0023
page0024
page0025
page0026
page0027
page0028
page0029
page0030
page0031
page0032
page0033
page0034
page0035
page0036
page0037
page0038
page0039
page0040
page0041
page0042
page0043
page0044
page0045
page0046
page0047
page0048
page0049
page0050
page0051
page0052
page0053
page0054
page0055
page0056
page0057
page0058
page0059
page0060
page0061
page0062
page0063
page0064
page0065
page0066
page0067
page0068
page0069
page0070
page0071
page0072
page0073
page0074
page0075
page0076
page0077
page0078
page0079
page0080
page0081
page0082
page0083
page0084
page0085
page0086
page0087
page0088
page0089
page0090
page0091
page0092
page0093
page0094
page0095
page0096
page0097
page0098
page0099
page0100
page0101
page0102
page0103
page0104
page0105
page0106
page0107
page0108
page0109
pagenames
populars
seccamp2013
seccamp2014
seccamp2017
ttwilb
ttwilb-asmi
yao
* OSECPU-ASKA入門 #0002 -(by [[K]], 2013.06.07) ** (0) はじめに -以下の記事はver.0.46のWindows版を前提にしています。他の版を使っている場合は適宜読み替えてください。 --たとえば osecpu046a.zip とかのことです ~ -もくじ --[[page0036]]: #0000 --[[page0037]]: #0001 --[[page0038]]: #0002 ** (1) for構文 #0 -for構文は、OSECPU-ASKAでは実は奥が深くていろいろな使い方ができるのですが、まあ最初から全てを説明しても分かりにくくなるだけなので、まずは簡単に。 #include "osecpu_ask.h" int32s xsiz:R00, ysiz:R01, x0:R02, y0:R03, col:R04, i:R05; for (i = 0; i != 128; i++) { xsiz = ysiz = (144 - i) * 2; x0 = (320 - 144) + i; y0 = (240 - 144) + i; col = i * 0x020201; junkApi_fillOval(0, xsiz, ysiz, x0, y0, col); } -このfor文は、i=0から127まで { } のプログラムを1回ずつ実行しています。このように繰り返し処理をするときに便利です。 --iは1ずつ増えています。それは「i++」と書いてあるからです。 i = i + 2 とか書いてあったら、2ずつ増えて64回しか繰り返さなくなります。 --iが127で終わってしまうのは、i=128になったときに、「i != 128」が成立しなくなるためです。 --ASKAではC言語などとは異なり、繰り返し実行する命令が1つしかなくても { } でくくることを省略できません。 -C言語やそのほかの言語でも、for構文を持つ言語の多くは for (i = 0; i < 128; i++) { ... } -のような書き方をするのが普通だと思います。つまりノットイコールではなく不等号を使うわけです。OSECPU-ASKAでもこれは問題なくできますので、そうしたければそうしてもらってかまわないのです。しかしノットイコールで書いたほうがちょっとだけ最適化が有利になります。 --まあ気にしないでもいいんですけどね。 --ノットイコールの場合だけ最適化が有利になるというのは、もちろんただの手抜きです。この手のループはカウンタ変数が増えていく場合と減っていく場合があると思うのですが、そう考えると<だったり>だったりするわけです。でも!=だったらどっちでも同じで処理できて判定処理が楽だからとりあえずこれだけでいいや、という情けない理由なのです。 ** (2) コメントについて -ASKAでは /* */ 型のコメントと、// 型のコメントをサポートしています。・・・たぶん。 --あれ、最近 /* */ 型は使ってないからちょっと自信ない・・・。 --// 型は間違いなくできますので、こっちがおすすめです。 --/* */ 型は仮にできたとしても、行をまたぐとうまく行かない可能性があります。いろいろ大変なんです。 -// 型のコメントについてですが、現在プリプロセッサの文字コード認識力がいまいちなので、コメントの最後の文字が全角だといろいろ予期しない結果になることがあります。 ということで、「.」をつけるなどして、とにかくコメントの最後が半角文字で終わるようにしてあげてください。 --おっと、もちろん半角カタカナもやめてあげてくださいね!・・・これらは末尾に使えないだけで、途中なら何でもいいです。・・・たぶん。 --OSECPU-ASKAは短期間で無理やり作った言語なので、いろいろ行き届かないところがあります。そこは言語に対するおもいやりとやさしさでカバーしてください。 ** (3) できそうでできないこと -変数の宣言時に、初期値の代入を書く。 int32s i:R12 = 3; // これはできない. できたらうれしいのはわかりますが. ~ -レジスタ割り付けを書かない変数宣言。 int32s i, j, k; // これはC言語ぽくってかっこいいけど、でもできない. ~ -intと書いてみたい。 int i:R12; // ダメです. エラーです. --まあこれについては #define int int32s とかやればできるかもしれないですが(できないかもしれない)。 ~ -できそうでできないことはきっとたくさんあります。このwikiで紹介されていないことはできないことだと思っておくくらいがちょうどいいかと思います。 --言語に対するおもいやりとやさしさをお願いします! ** (4) 色の指定と16進数について -色の指定でどうしても16進数を使うことになると思うので、解説しておこうと思います。 -とはいえ、0,1,2,3,4,5,6,7,8,9ときてそこからA,B,C,D,E,Fと数えて次が10になる、なんていうのはまあ分かっているとしましょう。 ~ -プログラムでは col = i * 0x020201; なんていう表現が出てきましたが、これがどういうことか簡単に説明してみます。 i= 0 のとき col=0x000000 i= 1 のとき col=0x020201 i= 2 のとき col=0x040402 i= 3 のとき col=0x060603 i= 10 のとき col=0x14140a i=127 のとき col=0xfefe7f -あのプログラムはこうやって色を計算していたわけです。 ~ -たとえばこういう計算もできるのです。 col = red * 0x10000 + green * 0x100 + blue; // red, green, blueは0~255. ~ -ホームページとかで色を使う程度だと、計算で色を作るということに慣れていないと思いますが、16進数といえども結局はただの数字なので、こんな風に計算で色を作ることができるのです。 //c+=0x100; // xxyy00 ** つづく -[[page0039]]につづく * こめんと欄 #comment
タイムスタンプを変更しない
* OSECPU-ASKA入門 #0002 -(by [[K]], 2013.06.07) ** (0) はじめに -以下の記事はver.0.46のWindows版を前提にしています。他の版を使っている場合は適宜読み替えてください。 --たとえば osecpu046a.zip とかのことです ~ -もくじ --[[page0036]]: #0000 --[[page0037]]: #0001 --[[page0038]]: #0002 ** (1) for構文 #0 -for構文は、OSECPU-ASKAでは実は奥が深くていろいろな使い方ができるのですが、まあ最初から全てを説明しても分かりにくくなるだけなので、まずは簡単に。 #include "osecpu_ask.h" int32s xsiz:R00, ysiz:R01, x0:R02, y0:R03, col:R04, i:R05; for (i = 0; i != 128; i++) { xsiz = ysiz = (144 - i) * 2; x0 = (320 - 144) + i; y0 = (240 - 144) + i; col = i * 0x020201; junkApi_fillOval(0, xsiz, ysiz, x0, y0, col); } -このfor文は、i=0から127まで { } のプログラムを1回ずつ実行しています。このように繰り返し処理をするときに便利です。 --iは1ずつ増えています。それは「i++」と書いてあるからです。 i = i + 2 とか書いてあったら、2ずつ増えて64回しか繰り返さなくなります。 --iが127で終わってしまうのは、i=128になったときに、「i != 128」が成立しなくなるためです。 --ASKAではC言語などとは異なり、繰り返し実行する命令が1つしかなくても { } でくくることを省略できません。 -C言語やそのほかの言語でも、for構文を持つ言語の多くは for (i = 0; i < 128; i++) { ... } -のような書き方をするのが普通だと思います。つまりノットイコールではなく不等号を使うわけです。OSECPU-ASKAでもこれは問題なくできますので、そうしたければそうしてもらってかまわないのです。しかしノットイコールで書いたほうがちょっとだけ最適化が有利になります。 --まあ気にしないでもいいんですけどね。 --ノットイコールの場合だけ最適化が有利になるというのは、もちろんただの手抜きです。この手のループはカウンタ変数が増えていく場合と減っていく場合があると思うのですが、そう考えると<だったり>だったりするわけです。でも!=だったらどっちでも同じで処理できて判定処理が楽だからとりあえずこれだけでいいや、という情けない理由なのです。 ** (2) コメントについて -ASKAでは /* */ 型のコメントと、// 型のコメントをサポートしています。・・・たぶん。 --あれ、最近 /* */ 型は使ってないからちょっと自信ない・・・。 --// 型は間違いなくできますので、こっちがおすすめです。 --/* */ 型は仮にできたとしても、行をまたぐとうまく行かない可能性があります。いろいろ大変なんです。 -// 型のコメントについてですが、現在プリプロセッサの文字コード認識力がいまいちなので、コメントの最後の文字が全角だといろいろ予期しない結果になることがあります。 ということで、「.」をつけるなどして、とにかくコメントの最後が半角文字で終わるようにしてあげてください。 --おっと、もちろん半角カタカナもやめてあげてくださいね!・・・これらは末尾に使えないだけで、途中なら何でもいいです。・・・たぶん。 --OSECPU-ASKAは短期間で無理やり作った言語なので、いろいろ行き届かないところがあります。そこは言語に対するおもいやりとやさしさでカバーしてください。 ** (3) できそうでできないこと -変数の宣言時に、初期値の代入を書く。 int32s i:R12 = 3; // これはできない. できたらうれしいのはわかりますが. ~ -レジスタ割り付けを書かない変数宣言。 int32s i, j, k; // これはC言語ぽくってかっこいいけど、でもできない. ~ -intと書いてみたい。 int i:R12; // ダメです. エラーです. --まあこれについては #define int int32s とかやればできるかもしれないですが(できないかもしれない)。 ~ -できそうでできないことはきっとたくさんあります。このwikiで紹介されていないことはできないことだと思っておくくらいがちょうどいいかと思います。 --言語に対するおもいやりとやさしさをお願いします! ** (4) 色の指定と16進数について -色の指定でどうしても16進数を使うことになると思うので、解説しておこうと思います。 -とはいえ、0,1,2,3,4,5,6,7,8,9ときてそこからA,B,C,D,E,Fと数えて次が10になる、なんていうのはまあ分かっているとしましょう。 ~ -プログラムでは col = i * 0x020201; なんていう表現が出てきましたが、これがどういうことか簡単に説明してみます。 i= 0 のとき col=0x000000 i= 1 のとき col=0x020201 i= 2 のとき col=0x040402 i= 3 のとき col=0x060603 i= 10 のとき col=0x14140a i=127 のとき col=0xfefe7f -あのプログラムはこうやって色を計算していたわけです。 ~ -たとえばこういう計算もできるのです。 col = red * 0x10000 + green * 0x100 + blue; // red, green, blueは0~255. ~ -ホームページとかで色を使う程度だと、計算で色を作るということに慣れていないと思いますが、16進数といえども結局はただの数字なので、こんな風に計算で色を作ることができるのです。 //c+=0x100; // xxyy00 ** つづく -[[page0039]]につづく * こめんと欄 #comment
テキスト整形のルールを表示する