2.11.9. __rt_heap_extend()

この関数は、可能な場合、ヒープに追加するための 8 バイト境界で整列された新しいメモリブロックを返します。 他のメモリモデル関数を再実装する場合には、この関数も再実装する必要があります。 プロトタイプの実装例が rt_memory.s に収録されています。

使用法

呼び出し規則は通常の AAPCS に準じます。 エントリ時、 r0 は追加されるブロックの最小サイズを保持し、r1 はベースアドレスが保存される場所を指すポインタを保持します。

デフォルトの実装には以下の特性があります。

  • 以下のいずれかのサイズが返されます。

    • 要求されたサイズ以上の 8 バイトの倍数

    • 要求を満たせない場合は 0

  • 返されるベースアドレスは 8 バイト境界で整列されます。

  • サイズはバイト単位で処理されます。

  • この関数には AAPCS の制約条件のみが適用されます。

戻り値

デフォルトの実装では、十分な空きヒープメモリがある場合にヒープが拡張されます。 それが不可能な場合、実装されていれば __user_heap_extend() が呼び出されます(__user_heap_extend()を参照)。 終了処理では、r0 は取得されたブロックのサイズ、または何も取得されなかった場合は 0 を保持し、エントリ時に r1 が指したメモリ位置にブロックのベースアドレスが保持されます。

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0349AJ
Non-Confidential