[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2668] from OSASK BOARD



このメールは、OSASK伝言板に書き込まれた内容です。
この書き込みに返事を書く場合は、下のURLから書き込みを行なって下さい。


http://www.imasy.or.jp/~mone/osask/index.cgi?REFER=3c14cf02_e524

From: Gaku
Message-ID: 3c14cf02_e524
Date: 2001/12/11 00:04
Subject: ちょっとだけ。

こんちは。Gaku です。

幾つか書きたいことがありますが、まず用件から先に。

/////
ML を見ていたら、以下のようにありました。
[OSASK 2657] >   一晩考えましたが、やっぱり、[OSASK 2651]に書いたように、アセン
[OSASK 2657] > ブラも自作することにします。これは1/1から開発を開始して、2/1まで
[OSASK 2657] > に完成させます。そして、Daniel/Pete/Rickyは2/1から開発を開始して
[OSASK 2657] > 3/1に一般公開ということにします。つまり1ヶ月ずれるわけです。

ええっ1ヶ月もアセンブラにかけちゃうの?
と思ったので見てみると、以下が事の起こりのように思われました。

[OSASK 2636] >>    MOV DWORD [FS:EBX+4],.l001 ; これはうまくいかない(disp32)
[OSASK 2636] >>    MOV DWORD [FS:EBX+4],.l000 ; これはうまくいくのに(disp8)
[OSASK 2636] ですね。これはどうみてもdisplacementが8bitに納まるって分かるのに
[OSASK 2636] 、なんでdisp32になってしまうんでしょうか?多分、チェック方法に手
[OSASK 2636] 抜きがあるんでしょう。

なるほど。
で、気になったのでもう少し追っかけると。

[OSASK 2651] >   ラベル計算を別ルーチンにまかせられるということは、ほぼ1パスで
[OSASK 2651] > 処理できてしまうということです。これは面白いと思うんですが・・・
[OSASK 2651] > 。こういうのが好きな人っていないかなあ。1ヶ月くらいがんばったら
[OSASK 2651] > 、僕一人でもできるかな。できそうだな。でも今やったらみんなに怒ら
[OSASK 2651] > れちゃうだろうなあ・・・。

そういうこと好きですけど・・。
ML2657 からすると12月いっぱいが期限ですか。
大変そうです。

/////
と、これだけだと「大変そう」って言ってるだけで面白くなさそうなので
NASM を読んでみることにしました。
目的は ML2636 で話題の disp32 の原因を探ってみることです。

BITS 32
L000:
    MOV DWORD [EBX+4],L001 ; これはうまくいかない
    MOV DWORD [EBX+4],L000 ; これはうまくいくのに
L001:

を入力とします。
通常は、以下が出力です。

000000 C7 83 04 00 00 00 11 00 - 00 00 00 C7 43 04 00 00 00
000010 00

これを以下のように出力させるのが目的です。

000000 C7 43 04 0E 00 00 00 C7 - 43 04 00 00 00 00

# makefile は面倒なので以下のようです。
all:
	gcc assemble.c eval.c float.c insnsa.c labels.c listing.c nasm.c nasmlib.c outaout.c outas86.c outbin.c outcoff.c outdbg.c outelf.c outform.c outobj.c outrdf.c outrdf2.c parser.c preproc.c zoutieee.c

# 以下変更を加えた部分です。
assemble.c 1169行目
from	(o>=-128 && o<=127 && seg==NO_SEG && !forw_ref &&
to	(o>=-128 && o<=127 && seg==NO_SEG &&

# 上記を直すならこっちも?
assemble.c 1225行目

/////
なんだかエライ副作用がでそうですが、チェックは一切していません。
多分,あの辺りの条件チェックをチャンとすれば良いのかな?と。
「アセンブラ作りました」とか言えればカッコイイのですけどね。

# こんな短期間で作れたら信仰の対象です。

/////
もう1つの話題です。

コンソール欲しいなと思ったのです。
で、他タスクの起動をするだろうから pokon0.c を読めば良いと思いました。
sgg_execcmd0, sgg_createtask2 でファイル読み込み、タスク起動をしているようです。
後は、画面出力のためにタスク間通信が欲しいなと。
共有モジュールか?と思いましたが、とりあえず、シグナルを使うのでしょうか。

一般アプリとして作りたかったのです。
で、まだ出来なさそうだから、後でまた考えてみよう。て結論です。
いちお報告まで。

それでは、また。