2.2 microlib とデフォルトの C ライブラリの違い

microlib とデフォルトの C ライブラリには、多くの違いがあります。

主な相違点を以下に示します。
  • microlib は、ISO C ライブラリ標準に準拠しません。ISO 機能がサポートされていないこともあれば、機能が少ないこともあります。
  • microlib は、2 進浮動小数点演算の IEEE 754 標準に準拠していません。
  • microlib は、コードサイズが小さくなるように十分に最適化されます。
  • ロケールは設定できません。デフォルトの C ロケールのみ使用できます。
  • main() は、宣言して引数を取ったり、値を返したりしません。mainargc、および argv パラメータは未定義で、コマンドライン引数へのアクセスには使用できません。
  • microlib では、C99 関数のサポートが限定されています。特に、microlib では、次の C99 関数をサポートしていません。
    • <fenv.h> 関数:
      feclearexcept      fegetenv           fegetexceptflag
      fegetround         feholdexcept       feraiseexcept
      fesetenv           fesetexceptflag    fesetround
      fetestexcept       feupdateenv
    • ワイド文字(通常):
      btowc         fgetwc         fgetws         fputwc
      fputws        fwide          fwprintf       fwscanf
      getwc         getwchar       iswalnum       iswalpha
      iswblank      iswcntrl       iswctype       iswdigit
      iswgraph      iswlower       iswprint       iswpunct
      iswspace      iswupper       iswxdigit      mblen
      mbrlen        mbsinit        mbsrtowcs      mbstowcs
      mbtowc        putwc          putwchar       swprintf
      swscanf       towctrans      towlower       towupper
      ungetwc       vfwprintf      vfwscanf       vswprintf
      vswscanf      vwprintf       vwscanf        wcscat
      wcschr        wcscmp         wcscoll        wcscspn
      wcsftime      wcslen         wcsncat        wcsncmp
      wcsncpy       wcspbrk        wcsrchr        wcsrtombs
      wcsspn        wcsstr         wcstod         wcstof
      wcstoimax     wcstok         wcstol         wcstold
      wcstoll       wcstombs       wcstoul        wcstoull
      wcstoumax     wcsxfrm        wctob          wctomb
      wctrans       wctype         wmemchr        wmemcmp
      wmemcpy       wmemmove       wmemset        wprintf
      wscanf
    • Auxiliary <math.h> 関数:
      ilogb              ilogbf             ilogbl
      lgamma             lgammaf            lgammal
      logb               logbf              logbl
      nextafter          nextafterf         nextafterl
      nexttoward         nexttowardf        nexttowardl
    • プログラムの起動とシャットダウンおよびその他の OS とのやりとりに関連する関数:
      _Exit              atexit             exit
      system             time
  • microlib では、C++ をサポートしていません。
  • microlib では、オペレーティングシステム関数をサポートしていません。
  • microlib では、位置非依存コードをサポートしていません。
  • microlib では、スレッドセーフでないコードに対して保護するためのミューテックスのロックは提供していません。
  • microlib では、ワイドキャラクタまたはマルチバイト文字列をサポートしていません。
  • microlib では、stdlib(標準ライブラリ)のような、1 領域のメモリモデルと 2 領域のメモリモデルとの選択をサポートしていません。microlib では、スタックとヒープを個別の領域に配置した 2 領域のメモリモデルのみを提供しています。
  • microlib は、ビット境界で整列されたメモリ関数の _membitcpy[b|h|w][b|l]() および membitmove[b|h|w][b|l]() をサポートしません。
  • Microlib は、armclang コマンドラインオプション -ffast-math と組み合わせてのみ使用できます。
  • 提供される ANSI C stdio サポートのレベルは、asm(".global __use_full_stdio\n") を使用して制御できます。
  • asm(".global __use_smaller_memcpy\n") は、memcpy() のサイズは小さいものの低速なバージョンを選択します。
  • ストリームはいずれもバッファされないので、setvbuf()setbuf() は必ず失敗します。
  • エラーおよび EOF の通知がサポートされていないので、feof()ferror() は常に 0 を返します。
  • AArch64 状態では、microlib のサポートはありません。
関連する概念
2.1 microlib について
2.3 microlib のライブラリヒープ使用状況の要件
2.4 microlib でサポートされていない ISO C 機能
2.5 microlib を使用したアプリケーションのビルド
2.7 microlib とリンクしたプログラムの開始と終了
関連する作業
2.6 microlib で使用するスタックおよびヒープの設定
関連する参考文書
2.8 microlib 入出力関数のカスタマイズ
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.