[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/13 05:17 / Filesize : 519 KB / Number-of Response : 1084
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【QBASIC互換!?】FreeBasic【GPL】



876 名前:デフォルトの名無しさん [2016/10/13(木) 22:02:03.31 ID:7rM2EKzx.net]
>>816 つづき。
8080系では、処理の速さからスタック領域に変数を置く傾向がある。
ところが、スタックによるメモリー破壊を検出する、メモリー保護の例外、という事象が発生しない。
メモリー保護用レジスタがないし、関係命令もない。
スーパーバイザー以外のタスクが使用するメモリーをスーパーバイザーが決定するのが、マルチタスク処理の基本ではあるが、
8080系は、シングルタスク用CPUなので、関係命令がない。
結果として、やたら処理中に原因不明の障害を発生しやすくなる。

makoto-watanabe.main.jp/freebasic/CompilerOptt.html
には、スタックの初期値(無指定時の容量)が記載されていない。MA-DOSの処理では、
サブルーチンコールに、全レジスタの3-5倍ぐらい(8086 で16レジスタ位、32バイトの20倍512バイトをシステム割り込み(INT 21他)用に確保するように記載があったと記憶している。
FCだったかな、80480以後の旧隠し命令、全レジスタのPOPをサブルーチンコールとしてユーザーが使用するようになったのは。
非公開レジスタを含めてPOPするので、かなり巨大なスタック領域を確保する必要がある。
(細かいことはken-crate.blue.coocan.jp/asm/asm_menu.htm のようなサイトを探してくれ)

使う変数の目安としては、入力変数+出力変数の合計を作業変数と近似して
>>814 だと、
入力ファイル 50KB(内1KBを読み取る), 出力ファイル100KB(内4KBか可変、残りは表題などの定数)、出力変数2kbより、作業変数7KB、合計14KBを用意して
ここに、FreeBasic 内ルーチンの参照分(これが不明)を足す。
スタックの消費量の管理については、在庫管理が参考になる。
www2.rku.ac.jp/takada/logist/plan_zaiko.html
在庫が不足すれば、ハングアップという結果が待っているわけで、
目安としては、全容積の50%位を消費するようにして、66%を超えないように管理する。

理論としてはわかっているが、実際のスタックの状況をユーザーレベル(タスク)で検出できないと、対応も取れない。






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´Д`)<519KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef