-

差分

移動先: 案内検索

LIBRARIES PUBLIC DOCUMENT MEMUTIL

469 バイト追加, 2017年8月13日 (日) 12:11
著作権他
これを図式したものが次の図です。
{||-|scope="row" colspan="2"| low|-|<nowiki> -Pdata=xxxx -></nowiki>||------------|-| ||<nowiki> |data psect|</nowiki> | |-|<nowiki> -Pbss=xxxx -></nowiki>||------------|-| ||<nowiki> |bss psect |</nowiki> | |-|<nowiki> __Hbss </nowiki ->||------------ |ヒープ |- | | |<nowiki> |ヒープ |</nowiki> | | | | | | /| |- | |<nowiki> | -Pbss=xxxx -> </nowiki>||------------|-| ||<nowiki> |スタック |</nowiki><nowiki> |(auto変数)|</nowiki>|-|<nowiki> -Pbss=xxxx -> </nowiki>||------------|-| ||<nowiki> |システム |</nowiki><nowiki> |ワークなど|</nowiki>|-| || ------------|-|scope="row" colspan="2"| high|}
==setheaptop関数の働き==
setheaptop関数は、ヒープの先頭アドレスを変更し、任意のアドレスからメモリを取得するように働きかける働きを持っています。(malloc,calloc関数の管理領域があるので、厳密にアドレスを指定できる訳ではありませんが。)
下の図で例を示します。
  low -Pdata=xxxx -> ------------ |data psect| | | -Pbss=xxxx -> ------------ |bss psect | | | __Hbss -> ------------ | | | | setheaptopで ------------ 指定したアドレス| | |ヒープ | | | | | |/ | | | | | | /| | | | | -Pbss=xxxx -> ------------ |スタック | |(auto変数)| -Pbss=xxxx -> ------------ |システム | |ワークなど| ------------ high
これにより、任意のアドレスの任意の大きさのメモリブロックを取得して、利用することができるようになります。
==関数の使い方==
;void setheaptop(unsigned int addr):ヒープの先頭アドレスをaddrで指定したアドレスに移動します。malloc,calloc関数利用前の利用が効果的です。 ;unaigned int getheaptop(void):現在未使用のヒープの先頭アドレスを獲得します。malloc,calloc,setheaptop関数を一度も使わない状態でこの関数を呼び出すと0を返します。
==著作権他==
 本ライブラリのライセンスはHI本ライブラリのライセンスはHI-TECH C for CP/M Version 3.09のソースファイルを改変しているためHI-TECH C for CP/M Version 3.09のライセンスに従います。
オリジナルのZ80READ.MEより引用
use, private or commercial, strictly as-is. No warranty or product
support is offered or implied.
You may use this software for whatever you like, providing you acknowledge
that the copyright to this software remains with HI-TECH Software.
追加した関数については作者であるTatsuが著作権を所有しています。

案内メニュー