3: 2004-12-12 (日) 08:27:30 |
4: 2004-12-12 (日) 20:17:13 |
| * naskでOSASKアプリを作ってみよう、のページ | | * naskでOSASKアプリを作ってみよう、のページ |
| -(by [[K]], 2004.12.11) | | -(by [[K]], 2004.12.11) |
| + | -そもそもnaskってなによ、っていうのがあると思いますが、naskは[[K]]が作ったアセンブラです。 |
| + | --より詳しくはこちら → [[Z:GO/nask]] |
| | | |
| *** まずは開発環境の入手 | | *** まずは開発環境の入手 |
| RESB 64 ; テキストボックス構造体 | | RESB 64 ; テキストボックス構造体 |
| RESB 8 * 1 * 8 ; 8文字分 | | RESB 8 * 1 * 8 ; 8文字分 |
| + | |
| | | |
| *** どうやってアセンブルするの? | | *** どうやってアセンブルするの? |
| --.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になれている人へ |
| 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セクションに置いちゃいます。そうすればややこしいセグメントに悩まされずに済みますからね。 |
| | | |
| *** 雑な説明 | | *** 雑な説明 |