3: 2004-12-12 (日) 08:27:30 [6] | 4: 2004-12-12 (日) 20:17:13 [7] | ||
---|---|---|---|
Line 1: | Line 1: | ||
* naskでOSASKアプリを作ってみよう、のページ | * naskでOSASKアプリを作ってみよう、のページ | ||
-(by [[K]], 2004.12.11) | -(by [[K]], 2004.12.11) | ||
+ | -そもそもnaskってなによ、っていうのがあると思いますが、naskは[[K]]が作ったアセンブラです。 | ||
+ | --より詳しくはこちら → [[Z:GO/nask]] | ||
*** まずは開発環境の入手 | *** まずは開発環境の入手 | ||
Line 75: | Line 77: | ||
RESB 64 ; テキストボックス構造体 | RESB 64 ; テキストボックス構造体 | ||
RESB 8 * 1 * 8 ; 8文字分 | RESB 8 * 1 * 8 ; 8文字分 | ||
+ | |||
*** どうやってアセンブルするの? | *** どうやってアセンブルするの? | ||
Line 102: | Line 105: | ||
--.bssが使えるバージョンをパッケージしたらここの記述は直しますね。 | --.bssが使えるバージョンをパッケージしたらここの記述は直しますね。 | ||
-RESB文は何かと言うと、DB dupみたいなものです。 RESB 256 は DB 256 dup (0) に相当します。 | -RESB文は何かと言うと、DB dupみたいなものです。 RESB 256 は DB 256 dup (0) に相当します。 | ||
+ | --NASMもnaskでも、DBなどでdup構文を使うことはできません。 | ||
*** ほかのOSのAPIになれている人へ | *** ほかのOSのAPIになれている人へ | ||
Line 112: | Line 116: | ||
CALL 0xc7:0 | CALL 0xc7:0 | ||
ADD ESP,12 | ADD ESP,12 | ||
- | -OSASKアプリのメモリモデルは、DS == ES == SS != CS です。つまり.textセクション内のデータにアクセスするにはCS:プリフィクスガ必須です。また、PUSH(CS); POP(ES);などをやってESにCSのセレクタを代入しても、.textセクションの内容を書き換えることはできません。リードオンリーです。無理やり書き換えようとすれば、一般保護例外になるだけです。 | + | -OSASKアプリのメモリモデルは、DS == ES == SS != CS です。つまり.textセクション内のデータにアクセスするにはCS:プリフィクスが必須です。また、PUSH(CS); POP(ES);などをやってESにCSのセレクタを代入しても、.textセクションの内容を書き換えることはできません。リードオンリーです。無理やり書き換えようとすれば、一般保護例外になるだけです。 |
+ | --ということが面倒極まりないので、普通は全部のデータを.dataセクションにおきます。リードオンリーのデータも.dataセクションに置いちゃいます。そうすればややこしいセグメントに悩まされずに済みますからね。 | ||
*** 雑な説明 | *** 雑な説明 |
(This host) = http://osask.net