3: 2009-11-17 (火) 12:08:46 |
現: 2024-01-08 (月) 12:58:43 k-tan |
- | * ぐいぐい01に関するメモ-30 | + | TITLE:x |
| + | * ぐいぐい01に関するメモ-30 [#jd166c93] |
| -(by [[K]], 2009.08.03) | | -(by [[K]], 2009.08.03) |
| -メモのうち重要な部分をそのうちまとめてまともなページを作る | | -メモのうち重要な部分をそのうちまとめてまともなページを作る |
- | *** (42) naskで.g01アプリを作るには?(1) | + | *** (42) naskで.g01アプリを作るには?(1) [#d8843b70] |
| -[[impressions]]の2009-07-26ごろのfshinoさんのリクエストに答えるために、このセクションは用意されました。 | | -[[impressions]]の2009-07-26ごろのfshinoさんのリクエストに答えるために、このセクションは用意されました。 |
| -文脈的には[[GUIGUI01/memo27]]の続きだけど、あっちはC言語。こっちはアセンブラ主体です。 | | -文脈的には[[GUIGUI01/memo27]]の続きだけど、あっちはC言語。こっちはアセンブラ主体です。 |
| GLOBAL _G01Main | | GLOBAL _G01Main |
| EXTERN _g01_execcmd0 | | EXTERN _g01_execcmd0 |
| + | |
| [SECTION .text] | | [SECTION .text] |
| + | |
| _G01Main: | | _G01Main: |
| MOV EAX,msg | | MOV EAX,msg |
| DB 0x53, 0x00 ; g01_putstr0((char *) EAX); | | DB 0x53, 0x00 ; g01_putstr0((char *) EAX); |
| RET | | RET |
| + | |
| [SECTION .data] | | [SECTION .data] |
| + | |
| msg DB "hello, world", 0x0a, 0 | | msg DB "hello, world", 0x0a, 0 |
| -これです。makeすると64バイトになるでしょう。Makefileは[[GUIGUI01/memo18]]のex0000の例を参考にしてください。 | | -これです。makeすると64バイトになるでしょう。Makefileは[[GUIGUI01/memo18]]のex0000の例を参考にしてください。 |
| GLOBAL _G01Main | | GLOBAL _G01Main |
| EXTERN _g01_execcmd0 | | EXTERN _g01_execcmd0 |
| + | |
| [SECTION .text] | | [SECTION .text] |
| + | |
| _G01Main: | | _G01Main: |
| MOV AL,0x20 | | MOV AL,0x20 |
| -ここで、「CALL _g01_execcmd0」の正体を明かしたいと思います。これはライブラリで用意されている関数なのですが、中身はこうなっています。 | | -ここで、「CALL _g01_execcmd0」の正体を明かしたいと思います。これはライブラリで用意されている関数なのですが、中身はこうなっています。 |
| EXTERN _g01_esi0 | | EXTERN _g01_esi0 |
| + | |
| _g01_execcmd0: | | _g01_execcmd0: |
| XOR EDI,EDI | | XOR EDI,EDI |
| GLOBAL _G01Main | | GLOBAL _G01Main |
| EXTERN _g01_esi0 | | EXTERN _g01_esi0 |
| + | |
| [SECTION .text] | | [SECTION .text] |
| + | |
| _G01Main: | | _G01Main: |
| MOV AL,0x20 | | MOV AL,0x20 |
| [BITS 32] | | [BITS 32] |
| GLOBAL _G01Main | | GLOBAL _G01Main |
| + | |
| [SECTION .text] | | [SECTION .text] |
| + | |
| _G01Main: | | _G01Main: |
| MOV AL,0x20 | | MOV AL,0x20 |
| GLOBAL _G01Main | | GLOBAL _G01Main |
| EXTERN _g01_execcmd0 | | EXTERN _g01_execcmd0 |
| + | |
| [SECTION .text] | | [SECTION .text] |
| + | |
| _G01Main: | | _G01Main: |
| CALL _g01_execcmd0 | | CALL _g01_execcmd0 |
| -この手法は、当然ex0026の末尾の改行コード出力にも使えます。わざわざAL=0x0a;なんてやってAPIを呼ぶ必要なんてないのです。 | | -この手法は、当然ex0026の末尾の改行コード出力にも使えます。わざわざAL=0x0a;なんてやってAPIを呼ぶ必要なんてないのです。 |
| | | |
- | * こめんと欄 | + | * こめんと欄 [#g4dd4525] |
| | | |
| #comment | | #comment |