OSを作ろうpart5
■ このスレッドは過去ログ倉庫に格納されています
0001(・∀・)yossy ◆FlasH.X1/s
NGNGスレッドになればと思います。
Monaプロジェクトページ
ttp://mona.sourceforge.jp/
OSをつくろうpart4
http://pc3.2ch.net/test/read.cgi/tech/1037096449/
OSをつくろうpart3
http://pc3.2ch.net/tech/kako/1027/10270/1027080631.html
OSをつくろうpart2
http://pc3.2ch.net/tech/kako/1024/10244/1024411711.html
プロジェクトメンバーになりたい方は、
[email protected] までメールをどうぞ。
最新のイメージファイルは以下のURLから落とせます。
ttp://mona.sourceforge.jp/Download.html
ソースファイルの閲覧はここからできます。
ttp://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/mona/mona_v1.0/
0002ひげぽん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009山崎渉
NGNG0010デフォルトの名無しさん
NGNG前半は難解だったけど最後まで読んだら
ネットについての理解が格段に深まった。
ありがとう。
他の人も、煽ってばかりじゃなくて
一度読んでみるといいと思う。
0011デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG落ちたみたい
もっとガンガン埋めとくべきだった、、、
0016山崎渉
NGNG0017デフォルトの名無しさん
NGNG>Mona が Unix user にちょっとだけ出てた
だそうですが、読んだ人いませんか?
0018デフォルトの名無しさん
NGNGbochsの記事で、bochsのデバッグ機能が『mona』のブート部分の開発に役立った
というものでした。
0020デフォルトの名無しさん
NGNGなんかそれだけみると。bochsの何のために有るか分からん機能が
monaに役に立った。って書いてあるように見えるなぁ。
0021デフォルトの名無しさん
NGNGひげぽん「また落っこちました〜」
まわり「だからbochsのログだせやぁ」
の流れを思い出しました。w
0022ひげぽん
NGNG>の流れを思い出しました。w
あの時も、今もたくさんの人のお世話になっているということですね(笑)
ところで今日は、TSSを使わないタスクスイッチの簡易実験に成功しました。
eflags, csがいまいち更新されてなくて怪しいなど
不確定な要素満載ですが、一歩前に進みました。
アドバイスを下さったたくさんの方々、本当にありがとうございました。m(__)m
0023デフォルトの名無しさん
NGNGを思い出しました。
0024デフォルトの名無しさん
NGNG「タスク切り替え」なんてものは、定義が適当だし、今の段階では
実際的な「タスク切り替え」とは程遠いので、あんまり大したこと
ではない。
0025ひげぽん
NGNG>「タスク切り替え」なんてものは、定義が適当だし、今の段階では
>実際的な「タスク切り替え」とは程遠いので、あんまり大したこと
>ではない。
全くおっしゃるとおりです。
ただ今回の実験を通していろいろ勉強できたので
自分的には収穫は大きいです。
0026デフォルトの名無しさん
NGNG知りたきゃCVSから取ってこいってのは敷居高くない?
わざわざトップページ更新するほどじゃないのかもしれんが、
SF.jpに日記機能あるんだし、開発日誌みたいなの公開しないの?
https://sourceforge.jp/developer/diary.php?diary_user=2006
CVSを取ってこないと分からない例
1. STLがどうなったのか
2. VPC対応がどうなったのか
3. タスク切り替えがどうなったのか
あと64bitの話が出てたがどう考えてるの?
新規開発者が加入されたようだけどHP更新されてなくて可哀想...
ま、辛口だったかもしれんが、応援してるんで頑張ってちょ
0027ひげぽん
NGNG>何か最近Monaの進歩状況がよくわかんないな〜
>知りたきゃCVSから取ってこいってのは敷居高くない?
ご意見ありがとうございます。
こういうところは、なかなか自分で気付かない所なので
ご指摘は大変ありがたいです。
以下ひとつずつ、回答いたします。
>わざわざトップページ更新するほどじゃないのかもしれんが、
>SF.jpに日記機能あるんだし、開発日誌みたいなの公開しないの?
>https://sourceforge.jp/developer/diary.php?diary_user=2006
開発のソースレベルの変更をお知りになりたいのであれば
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/mona/mona_v1.0/src/ChangeLog
よりChangeLogを見ていただくのが良いかと思います。
CVSにコミットする場合は何らかのコメントを入れています。
それ以外に必要であれば、どこかに近況を入れようかと思いますが
どこが良いでしょうか。皆さんのご意見をうかがいたいです。
(1)sourceforge.jpの日記
(2)MonaBBS
(3)Monaトップページ
(4)作ろうスレ(ここ)
(5)メーリングリスト作成(現在非公開の開発者用メーリングリストはあります)
(6)その他
0028ひげぽん
NGNG>1. STLがどうなったのか
STLPortが使えるようになりました。
カーネルの実装にはまだ用いていませんが、いずれ使う事になると思います。
特にコレクションなど。
>2. VPC対応がどうなったのか
昨日にやっと、VPCでのブートとタスクスイッチが動作しました。
ただイメージとして公開している物は古いバージョンなので
VPCでは動きません。
イメージとして最新版を公開していないのは
現在タスクスイッチ(TSSを使用しないバージョン)の動作がまだあやしいためです。
安定後公開したいと思います。
もしどうしても最新版のイメージがほしい場合は、Make環境を整えていただくか
ひげぽんに言っていただければ、何とかいたします。
>3. タスク切り替えがどうなったのか
ここ最近、ずっと実験中かつ、実験が失敗していたので特に進捗はありませんでした。
昨日やっと、少しめどがたったのでいろいろな実機で実験しようと思っています。
0029ひげぽん
NGNGIA32アーキテクチャの理解もままならないのでしばらくは
64bit化を見据えた開発はしないと思います。
ただ、どなたか詳しい方がいらっしゃって
アドバイスいただけるのであれば、積極的に今からある程度
準備するのはありだと思っています。
>新規開発者が加入されたようだけどHP更新されてなくて可哀想...
すいません、なるべく早く追加いたします。
yuryuさんこれを見ていたら、開発者メーリングリスト宛に
メールください。
>ま、辛口だったかもしれんが、応援してるんで頑張ってちょ
貴重なご意見ありがとうございました。
他にも同じような事を思われていた方もいらっしゃると思うので
できるだけ改善していきたいと思っています。
0030デフォルトの名無しさん
NGNG> 昨日やっと、少しめどがたったのでいろいろな実機で実験しようと思っています。
こういうようなことを、自分の言葉で書ける日記は特別な意味があると思う。
→「あれやった、でも駄目だった、と思ったら勘違いだった」みたいな
他人にとっても泥臭さを通じてmonaを身近に感じる人もいるだろうし、
後で自分のやってきたことを見返すときにもきっと役立つ。
0031デフォルトの名無しさん
NGNGこういう書き方だと、
2chブラウザとかで >>1 と混同される
これに限らないがこの手の混同を避けるため
引用符と引用文の間はスペースを空ける慣習があるんだよ
0032デフォルトの名無しさん
NGNGMonaBBSではこんなにはじけちゃってるのに(藁
> (´∇`)ヒゲポソ ◆Ngzcp/NZpA
トリップは自衛の手段なんだから。
偽者がめちゃくちゃ書く可能性を自分で作ることになるよ。
こっちでもはじけちゃいなよ(藁
0033デフォルトの名無しさん
NGNGなんかあってからそのトリップつけりゃいんじゃない?
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG荒らすような偽者には、このスレは敷居高いと思う。
003633
NGNGぬ、MonaBBSで >>32 のトリップ使ってるのかと思ったんだが、
どうやらさっき確認した限りではそういう例が見つからなかった。
勘違いですた。
というか、トリップなんて後で適当に決めちゃってもオフイシャルページで宣言しちゃえば問題ないじゃん。
>>35
まぁね。分かるよね。騙すにはそれなりに技術レベルも必要だし。
0037デフォルトの名無しさん
NGNG一体全体、どこ探したの???
http://pc3monaos.hp.infoseek.co.jp/cgi-bin/2ch/test/read.cgi/entrance/1042291353/l50
あと誰も書き込まないMonaBBSで付けてるのに
荒らしの巣窟の2chで付けないことをなぜ擁護するか理解できん。
0038デフォルトの名無しさん
NGNGひげぽんさんが登場するのはこのスレだけではないと思われ
それこそOSASKとかNWSOSとかの絡みでしょっちゅう引き合いに出されてるし
0039デフォルトの名無しさん
NGNG004033
NGNG0041デフォルトの名無しさん
NGNGいつのまにか、いろんなGUIアプリが動いてた。ってかメモ帳程度の
ものが当たり前に動いてるし、
なんなんだ、いったい
0042デフォルトの名無しさん
NGNG#会社のPCなんで、linux入れてProxyキャッシュサーバとして稼動させる
のが本来の予定だったんだけど、NWSOS動かしたら周りの人が、なにそれなにそれ
みたいな感じで群がってきた。MONAは、今のところBIOSっぽい画面なんで
BIOSと思われてるらしく、あまり注目されてなかった。
ってことで、MONA頑張れ。
0043デフォルトの名無しさん
NGNG桜?
頑張れ。
0044デフォルトの名無しさん
NGNG0045ひげぽん
NGNG> 引用符と引用文の間はスペースを空ける慣習があるんだよ
了解しました。
> 何でひげぽんさんはこっちではトリップ付けないの?
> MonaBBSではこんなにはじけちゃってるのに(藁
>>32-40
面倒だったので付けていませんでした。>トリップ
なのでつけてみました(笑)
トリップを付けるかどうかは、結構気分かもです。ごめんなさい。
>>42
> みたいな感じで群がってきた。MONAは、今のところBIOSっぽい画面なんで
> BIOSと思われてるらしく、あまり注目されてなかった。
> ってことで、MONA頑張れ。
NWSOSと比べられたら、大負けですね。
というか、どのOSと比べても負けてる。
もっといえばBIOSのほうがすごい・・・
でもがんばります、ありがとうございます。
0046ひげぽん ◆Ngzcp/NZpA
NGNGさてMonaの進行状況は技術的なことであれば、なるべくここに書いていこうと
決めました。
昨日はタスクスイッチ実験成功コードを見直していたところ
どうも動いていたのは奇跡かもという結論に達しました。
iretではなくretで切り替わっていた模様。
なのでEFLAGS,CSチェンジが起こっていなかった。
またスタックに積まれていると予期していたものと
実際でいろいろ勘違いがありました。
ある時点でスタックに積まれている内容を
そこで処理がとまっていいので表示したい場合は
汎用レジスタにpopして表示でいいんですよね?自信なし
自分でスタックを初期化して作ったプロセスのほうは
popaように0を積んで、eflags,cs,eipとやってiret
切り替えられました。(process2)
0047ひげぽん ◆Ngzcp/NZpA
NGNGtimerHandler
schedule
switchProcess
ここで切り替え
インテルのマニュアルを読むと
エラーでない割り込みであれば
/* EFLAGS */
/* CS */
/* EIP */
と積まれているはずなのに、うまくいかないっす。
それぞれtimerHandler,scheduleのアドレスが
pushされているかと二つpopしてやってみたがうまくいかず・・・
0048ひげぽん ◆Ngzcp/NZpA
NGNGスタックの内容が表示できるよう
#define _syspop(count) { \
\
for (int i = 0; i < count; i++) { \
dword __eax; \
asm volatile("xor %%eax, %%eax\n" \
"pop %%eax \n" \
"mov %%eax, %0 \n" \
: "=m" (__eax) \
: /* no input */ \
); \
_sys_printf("_sysPop(): %x\n", __eax); \
} \
}
作ってみたけどいまいちきちんと動いてなさそうな気がする。
うーんうまくいかず。
ところでCSて16bitだけど
割り込みでスタックに積まれる時は32bit?
かなあ。
0049ひげぽん ◆Ngzcp/NZpA
NGNGすいません。
> ところでCSて16bitだけど
> 割り込みでスタックに積まれる時は32bit?
> かなあ。
32bitのようです。
サンクスmitkoさん。
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNGどこかのWEBページで見れるように保存しておいてほしかったなぁ。
前スレがDAT落ちしまくって後から来たものにはなにがどうなってるのか
分からない罠。
前スレの保存公開は禁じられてるのなら仕方ないけど。
0052FreeDOS教徒
NGNGとりあえず過去ログどっかに置いていいんじゃない?>ひげぽん
とか言うのもナンなのでHTML化されるまで出しておきます。
ttp://guriponn.tripod.co.jp/archives/os-part4.htm
0053デフォルトの名無しさん
NGNGご苦労様です。
ありがたく拝見されていただきます。
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGpopしちゃうと戻れなくなるから、popせずにスタックを除き見るだけが吉だとおもわれ。
例えば、
handler:
pusha; 8個のレジスタ分つまり32bytesプッシュする
moveax, [esp+32]; eax <= エラーコード
moveax, [esp+36]; eax <= 割り込み時eip
movax, word [esp+40]; ax <= 割り込み時cs
moveax, [esp+44]; eax <= 割り込み時eflags
popa
iret
Cの関数にする場合は
void handler(unsigned long eip, unsigned short cs, unsigned long eflags)
{
interror_code = (&eip)[-1];
/* 割り込みの処理 */
asm("leave");
asm("addl $4, %esp"); /* エラーコードをpopする替わり */
asm("iretl");
}
とかするとよろし。
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNG0058ひげぽん
NGNGインラインとprintfでやってますがうまくいかないです
0059デフォルトの名無しさん
NGNG上の例を説明すると、
- 32bitモードの場合push対象が16bitでも32bit分のスペースをとる。
- esp は最後にpushした値を指す。
- C言語の関数は一般に以下のようにコンパイルされる:
func:
push ebp
mov ebp,esp
; 関数の内容
leave
ret
- C言語の関数の引数としては call 前にpushした値が逆順に与えられる。
例:
push dword 0x1234
call func
void func(unsigned long x)
{
/* x=0x1234 */
}
- C言語の関数は leave, iret ではなく leave, ret で終わるので注意。(前スレあたりでがいしゅつ)
- 例外の場合はエラーコードがプッシュされる場合があるので注意。
なんか要約したつもりが余計長くなってしまった。
0060デフォルトの名無しさん
NGNGやりたい事が良く分からないので的外れかもしれないけど
無理にインラインアセンブラにしないで
↓みたいな関数にしちゃだめなの?
; eax,ecx,edxが破壊されretで返るルールの場合
__syspop proc near
push esi
push edi
push ebx
mov edi, dword ptr[esp+16]
xor ebx, ebx
test edi, edi
jz _syspop_02
syspop_01:
push dword ptr[esp+ebx*4+20]
push offset _syspop_buf ;printfの第1引数
call _printf
add esp, 8
inc ebx
inc edi
jnz _syspop_01
syspop_02:
pop ebx
pop edi
pop esi
ret
__syspop endp
0061デフォルトの名無しさん
NGNG0062ひげぽん ◆Ngzcp/NZpA
NGNGdword stack0, stack1, stack2;
asm volatile(
"pusha \n"
"mov 32(%%esp), %%eax \n"
"mov %%eax, %0 \n"
"mov 36(%%esp), %%eax \n"
"mov %%eax, %1 \n"
"mov 40(%%esp), %%eax \n"
"mov %%eax, %2 \n"
"popa \n"
: "=m"(stack0)
, "=m"(stack1)
, "=m"(stack2)
);
_sys_printf("_sysdumpStack(): %x %x %x\n"
, stack0, stack1, stack2);
}
0063ひげぽん ◆Ngzcp/NZpA
NGNGとりあえずこれを使って、昨晩はtimerHandler突入後のスタックを
調べてみましたが
CS=0x08らしきものすらスタックに積まれている様子がなくて
戸惑っています。
考えられる可能性は
・_sysdumpStack()がバグっている
・_sysdumpStack()の前にすでにスタックが破壊されている
・ひげぽんの大きな勘違い
・その他。
とりあえずいきづまったので寝てから、もう一度冷静に考えてみます。
0065超先生@OS板 ◆leaf/RYZgY
NGNGdword* stack;
mov stack,ebp
printf("cs=%x,eip=%x,flag=%0x",*(stack+0),*(stack+1),*(stack+2));
// (stackframe) <- esp
// [cs ] <- ebp
// [eip ]
// [eflags]
0066デフォルトの名無しさん
NGNGpush ebp
mov ebp,esp
sub esp,(AUTO変数のサイズ)
で、しかも、csとeipの順序が反対なので、
// <- esp
// [AUTO変数領域
// ...
// AUTO変数領域]
// [ebp ] <- ebp
// [eip ]
// [cs ]
// [eflags]
// [外側esp](もしあれば)
// [外側ss](もしあれば)
と夢の中でお告げがありましたのでご報告いたし上げます(南無)。
0067LightCone ◆sSJBc30S5w
NGNG0068ひげぽん ◆Ngzcp/NZpA
NGNG>>66ありがとうございます。
#define _sysdumpStack2(str) { \
\
dword* stack; \
asm volatile("mov %%ebp, %0 \n" : "=m"(stack)); \
_sys_printf("_sysdumpStack2(%s):%x %x %x\n" \
, str, *(stack + 0), *(stack + 1) \
, *(stack + 2)); \
}
#define _sysdumpStack3(str) { \
\
dword* stack; \
asm volatile("mov %%esp, %0 \n" : "=m"(stack)); \
_sys_printf("_sysdumpStack2(%s):%x %x %x\n" \
, str, *(stack + 0), *(stack + 1) \
, *(stack + 2)); \
}
0069ひげぽん ◆Ngzcp/NZpA
NGNGやってみました。
timerHandler()の頭で呼んだ場合(それぞれ単独の呼び出し)
_sysdumpStack2(timer):0x002FFF6C 0x00001ED0 0x00000008
_sysdumpStack3(timer):0x00001DAD 0x00001DCA 0x00001DAD
ProcessManger::schdule()
_sysdumpStack2(schedule):0x002FFF58 0x00001DEF 0x000098E0
_sysdumpStack3(schedule):0x000053DF 0x000053FC 0x000053DF
timerHandler()ないでは0x00000008があるので
もしかしたら惜しいかも。
でも今日はよくわからず、力尽きました。
最近ずっと動くものが作れていないので、CVS コミットしてません。
ちょっと不安。
Makeは出来るけど途中で動きが止まってしまうようなやつを
コミットしても良いかと迷うのですがどうなのでしょうか。
0070ひげぽん ◆Ngzcp/NZpA
NGNGスタックダンプしてとまるぞと、怒られそうで・・・
定常的にチェックして、
ソースからMakeしている人っているのだろうか。。。
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGそのためのブランチでしょ。
新しい実験を開始するたびにブランチすればいい。
0073デフォルトの名無しさん
NGNGスタック扱うのに?
0074デフォルトの名無しさん
NGNGインラインですが何か?
0075デフォルトの名無しさん
NGNG保証ない
0076デフォルトの名無しさん
NGNG逆汗してみ
0077デフォルトの名無しさん
NGNGコンパイルオプションを変えただけで動かなくなるかもしれない方法を薦めないように
0078デフォルトの名無しさん
NGNGだから逆汗してみっていってるでしょ
インラインアセンブラで書いた部分が最適化の影響を受けるとは初耳
0079デフォルトの名無しさん
NGNGインライン関数がインライン展開される保証は無いのですが
VisualC++なら__forceinlineなんてものがありますが
0080デフォルトの名無しさん
NGNG今回みたいにちょこっと実験してみるにはマクロが便利でつ
コンパイルオプションとかコンパイラとか、なるべく関係ないように書くには
アセンブリ言語が一番だけどナー
0081デフォルトの名無しさん
NGNG-O付けなければ一切インライン展開されない。
-Oが付いていればレベルに関係なく100%インライン展開される。
よって>>77は正しいが、-Oさえあれば保証はある。
ま、普通のコードでさえ-O3以上だとまれにバグるので、
環境に一切左右されないのは>>80の言うようにオール汗だな。
今のmonaの開発方針とは正反対になるけど。
だから最終的には気持ちの差。
############# 終 了 #############
0082ひげぽん ◆Ngzcp/NZpA
NGNGスタックを扱うので、ちょっとインライン関数は怖かったです。
>>72
ありがとうございます。
CVSコミットしちゃいました。
関係ありそうな箇所について-Sオプションでアセンブラコードを出してみました。
http://mona.sourceforge.jp/higepon/
timerHandler()
ProcessManager::schedule()
ProcessManager::swtichProcess2()
0083超先生@OS板 ◆leaf/RYZgY
NGNGinitProcessでtimerHandlerへの戻り先他を積んでおかないとダメか。
そもそもコンテキストスイッチをesp切り替えでやるのはあまりお勧めできないが・・・。
0084デフォルトの名無しさん
NGNGCVSでCFLAGSを見る限り、-Oが付いてないですね。
これではインライン展開されないです。
>>82
インライン関数はなるべくヘッダに書いた方が良いですよ。
他のクラスから使うのであれば絶対に。
0085ひげぽん ◆Ngzcp/NZpA
NGNG超先生さん
>initProcessでtimerHandlerへの戻り先他を積んでおかないとダメか。
なるほど
二つ手があると思っています。
(1)switchProcess2()は、インライン展開されていないので
schedule()からtimerHandler()に戻るために
initProcessでスタックにtimerHandlerへの戻り値を
格納しておく。
そしてtimerHandler()でiret
(2)iret(つまりタスクスイッチ)をswitchProcess2()で行ってしまう。
この場合はinitProcess()で初期化する場合には
timerHandler()への戻り値を格納しておく必要はなく
適当な値を積んで置く。
そしてタスクスイッチの前にスタックの値を
ひとつ捨てる。
(捨てられるのはtiemrHandelerのアドレスか初期化時に設定された適当な値)
うーんどちらがよいのでしょうか。
0086ひげぽん ◆Ngzcp/NZpA
NGNG現状は、この方法しかわからないというのが真実です。
ほかに、もっとよい方法があるのでしたら
簡単でよいので教えていただけないでしょうか。
0087ひげぽん ◆Ngzcp/NZpA
NGNGアドバイスありがとうございます。
> CVSでCFLAGSを見る限り、-Oが付いてないですね。
> これではインライン展開されないです。
了解しました。
この辺の-Oオプションに詳しいサイト等ありましたら
教えていただけないでしょうか。
できれば、必ずインライン展開される/されない等
の情報があればありがたいです。
> インライン関数はなるべくヘッダに書いた方が良いですよ。
> 他のクラスから使うのであれば絶対に。
はい一応認識しています。
一応私の方針としてクラスメンバ関数のうち
インライン化するのはprivateなものだけにしようと
思っています。
まあなんとなくですが・・・
0088デフォルトの名無しさん
NGNG> -Oが付いていればレベルに関係なく100%インライン展開される。
この情報のソースある ?
VC では、forceinline 指定にもかかわらず、インラインにならない時があるんだけど。
0089デフォルトの名無しさん
NGNGmonaのソースを逆汗して確認。
0090デフォルトの名無しさん
NGNGそれってたまたまそうなってたってことじゃないのか ?
もしそうなら、「100%インライン展開される」とか書くなよ。
0091デフォルトの名無しさん
NGNGとりあえず、確認もせずにえらそうなことを言うのはやめてくれ。
インラインにならない経験があるんだったら、
それと同じケースがmonaの開発に使っている環境で再現することを示せば
背理法で何も議論する必要ないんだから。
0092デフォルトの名無しさん
NGNG要するに、100% インラインになることは、保証されてないわけね。
議論以前の問題だよ。
0093デフォルトの名無しさん
NGNG動かないとかいうのはシステム的になんか嫌だな・・・。
OS作る前にもっとコンパイラとかオブジェクトコードの勉強しないと。。。
0094デフォルトの名無しさん
NGNG何一人で熱くなってんの?
とりあえず、Monaをダウンロードして、コンパイルしないと始まらないよ。
手を動かしましょうよ。そう思って逆汗逆汗って言ったのに。
Inline Limitを超えなければInlineになることは保証されてる。
それくらい自分で見つけると思ったんだけどなあ。
0095デフォルトの名無しさん
NGNGわかった、わかった。
貴方の環境では、100% インラインになるわけね。
これでいい ?
俺の環境で、100% 保証されない事がわかればどうでもいいです。
0096デフォルトの名無しさん
NGNG殺伐とした雰囲気には余りしたくないんだが、、、一つだけ言わせてもらう。
>>90 が言うように「たまたま」そうかもってのは考えた方がいいと思う。
注意事項とか、前提条件、仮定とかはなるべく少ない方がいいからな。
そういうのが多いと、人には理解してもらいづらいし、自分で書いたソースだって
一月もたてば結構忘れてしまうから、用心するには越したことがない。
0097デフォルトの名無しさん
NGNGはい、結構です。で、本題。
興味の方向から考えるに、貴殿は組み込み用のOSを手がけておられるとお見受けしますが、
タスクスイッチはどういう風に実装しておられましたか?
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGと言うか、inline にする/しないなんて、コンパイラのバージョンで変わったりしそうでしょ ?
それに依存するのは、あまり良くないと思ってる。
>>97
> 興味の方向から考えるに、貴殿は組み込み用のOSを手がけておられるとお見受けしますが、
> タスクスイッチはどういう風に実装しておられましたか?
普通に TCB (Task Control Block) にレジスタセーブして、SP を再設定するだけ。
当時は、メモリ管理などはなかった。
また使ってた、68020 は、SP がユーザー/システム/割り込みで独立していたから、結構綺麗に書けた。
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています