議論/GO/はじめの一歩


Top / 議論 / GO / はじめの一歩

GOの作者であるKさんに昨日の下記エラーの原因について教えてもらいました。 エラー内容  gas2nask -a hello.s hello.nas  skip:movl 8(%ebp) , %esi  skip:int $0x80 まず、int命令に対するパッチを提供していただいたので適用して gas2nask をリビルドします。 手順 1.http://wiki.osask.jp/?downloads/devから、go_0023pをダウンロード。

"1int     INT", 

書きかけ

初めてのGO(実験中 by ひげぽん)

  1. GOのサイト。http://community.osdev.info/index.php?GO
  2. ダウンロード (http://k.hideyosi.com/go_0020w.lzh)win32用実行バイナリセット
  3. Hello.c
    1. 要点はebx=1にしてesiに文字列をセットする、そしてint0x80
      #define SYSTEM_CALL_PRINT (0x0001)
      
      #define SYSCALL_1(syscall_number, result, arg1)                                   \
          asm volatile("movl $%c1, %%ebx \n"                                            \
                       "movl %2  , %%esi \n"                                            \
                       "int  $0x80       \n"                                            \
                       "movl %%eax, %0   \n"                                            \
                       :"=m"(result)                                                    \
                       :"g"(syscall_number), "m"(arg1)                                  \
                       :"ebx", "esi"                                                    \
                       );
      int print(const char* msg)
      {
          int result;
          SYSCALL_1(SYSTEM_CALL_PRINT, result, msg);
          return result;
      }
      
      void _user_start()
      {
          print("Hello");
      }
  4. コンパイル(gas形式に)
    cc1 -I. -Os -quiet -o hello.s hello.c
  5. nask形式に変換
    gas2nask -a hello.s hello.nas
    skip:movl 8(%ebp)  , %esi
    skip:int  $0x80
    • むむ最適化されてしまったっぽいな。

コメント

MENU

now: 7

リンク


最新の20件
2018-10-07 2018-09-20 2018-09-03 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-05-29 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 2720, today: 1, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:02 (3915d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.043 sec.