ページへ戻る

− Links

 印刷 

OT​/0005 のバックアップ差分(No.4) :: OSASK計画

osaskwiki:OT/0005 のバックアップ差分(No.4)

« Prev[4]  Next »[5]
3: 2009-07-16 (木) 11:42:03 ソース[6] 4: 2009-11-17 (火) 12:06:28 ソース[7]
Line 40: Line 40:
--最初の 47 01 はシグネチャ。次の4bitの0が「簡易モード」を意味している。次の5はフラグで、「CALL([ESI]);の付与」と、「終了時の'\n'補完出力」を要求している。またC3も末尾に自動付加される。結果として、.textは次のようになる。 --最初の 47 01 はシグネチャ。次の4bitの0が「簡易モード」を意味している。次の5はフラグで、「CALL([ESI]);の付与」と、「終了時の'\n'補完出力」を要求している。またC3も末尾に自動付加される。結果として、.textは次のようになる。
 CALL([ESI]); DB(0x51, "hello, world\0"); return;  CALL([ESI]); DB(0x51, "hello, world\0"); return;
 +--APIの引数については、[[OT/0004]]の例を参照のこと。
 +--16バイトのhelloは、この12バイトのメッセージを7bitエンコードすることで11バイトに縮めたもの。
-chars.g01 (13バイト) -chars.g01 (13バイト)
 47 01 08 9a 00 55 16 00 40 3C 7F 72 F6  47 01 08 9a 00 55 16 00 40 3C 7F 72 F6
--最初の 47 01 はシグネチャ。次の4bitの0が「簡易モード」を意味している。次は89だが、これはgh4エンコードされた9のこと。この9は、「CALL([ESI]);の付与」と、「終了時の'\n'補完出力」に加え、「EAXの初期値設定」を指定。次のa0もgh4エンコードされた0x20のこと。これがEAXの初期値となる。次の0はパディングのために入っているだけなので無視される。そして結果として、.textは次のようになる。 --最初の 47 01 はシグネチャ。次の4bitの0が「簡易モード」を意味している。次は89だが、これはgh4エンコードされた9のこと。この9は、「CALL([ESI]);の付与」と、「終了時の'\n'補完出力」に加え、「EAXの初期値設定」を指定。次のa0もgh4エンコードされた0x20のこと。これがEAXの初期値となる。次の0はパディングのために入っているだけなので無視される。そして結果として、.textは次のようになる。
 do { CALL([ESI]); DB(0x55, 0x16, 0x00); EAX++; } while ((unsigned) AL < 0x7f); return;  do { CALL([ESI]); DB(0x55, 0x16, 0x00); EAX++; } while ((unsigned) AL < 0x7f); return;
 +--APIの引数については、[[OT/0004]]の例を参照のこと。
* こめんと欄 * こめんと欄
#comment #comment
« Prev[4]  Next »[5]