Standard C စာကြည့်တိုက် PicoLibc 1.1 ရရှိနိုင်ပါသည်။

Keith Packard၊ တက်ကြွသော Debian developer၊ X.Org ပရောဂျက်၏ခေါင်းဆောင်နှင့် XRender၊ XComposite နှင့် XRandR အပါအဝင် X extensions များစွာကို ဖန်တီးသူ၊ မိတ်ဆက်ပေးခဲ့သည် စံ C စာကြည့်တိုက်အသစ်ကို ထုတ်ဝေသည်။ PicoLibc 1.1အမြဲတမ်းသိုလှောင်မှုနှင့် RAM အကန့်အသတ်ရှိသော မြှုပ်သွင်းထားသော စက်များတွင် အသုံးပြုရန်အတွက် တီထွင်ထုတ်လုပ်ထားသည်။ ဖွံ့ဖြိုးတိုးတက်မှုကာလအတွင်း၊ ကုဒ်တစ်စိတ်တစ်ပိုင်းကို စာကြည့်တိုက်မှ ချေးယူခဲ့သည်။ newlib Cygwin ပရောဂျက်နှင့် AVR LibcAtmel AVR မိုက်ခရိုကွန်ထရိုလာများအတွက် ဖန်တီးထားသည်။ PicoLibc ကုဒ် ဖြန့်ဝေသည် BSD လိုင်စင်အောက်တွင်။ စာကြည့်တိုက်စည်းဝေးပွဲကို ARM (32-bit), i386, RISC-V, x86_64 နှင့် PowerPC ဗိသုကာများအတွက် ပံ့ပိုးထားသည်။

Keith Packard သည် RAM အနည်းငယ်ပါသော စက်များတွင် အသုံးပြုနိုင်သည့် လျောက်ပတ်သော Libc ရွေးချယ်မှုကို ရှာမတွေ့ပြီးနောက် ဖွံ့ဖြိုးတိုးတက်မှုစတင်ခဲ့သည်။ ပရောဂျက်ကို မနှစ်ကကတည်းက ဖော်ဆောင်ခဲ့တာ။ ပထမအဆင့်တွင်၊ ပရောဂျက်သည် newlib ၏ မူကွဲတစ်မျိုးဖြစ်ပြီး avrlibc မှ ကျစ်ကျစ်လျစ်လျစ်သောဗားရှင်းဖြင့် အစားထိုးထားသော stdio ၏လုပ်ဆောင်ချက်များ (newlib တွင် stdio သည် ၎င်း၏မြင့်မားသောအရင်းအမြစ်သုံးစွဲမှုအတွက် မသင့်လျော်ပါ)။ Keith ၏လက်ရှိအလုပ်တွင် RISC-V ဗိသုကာလက်ရာနှင့် မြှုပ်သွင်းကိရိယာများအတွက် ကိရိယာများ ဖွံ့ဖြိုးတိုးတက်မှုတို့နှင့်အတူ ဆက်လက်လုပ်ဆောင်နေသောကြောင့်၊ ၎င်းက မကြာသေးမီက libc အကောင်အထည်ဖော်မှုများ၏အခြေအနေကို ပြန်လည်သုံးသပ်ပြီး အနည်းငယ်ပြင်ဆင်ခြင်းဖြင့်၊ newlib နှင့် avrlibc ပေါင်းစပ်မှုသည် ယေဘူယျရည်ရွယ်ချက်ကောင်းတစ်ခုဖြစ်နိုင်ကြောင်း ကောက်ချက်ချခဲ့သည်။ ဖြေရှင်းချက်။ အစပိုင်းတွင် ပရောဂျက်ကို “newlib-nano” ဟူသောအမည်ဖြင့် တီထွင်ခဲ့သော်လည်း Newlib စာကြည့်တိုက်နှင့် ရှုပ်ထွေးမှုများကို ရှောင်ရှားရန် PicoLibc ဟု အမည်ပြောင်းခဲ့သည်။

၎င်း၏လက်ရှိပုံစံတွင်၊ Picolibc သည် BSD လိုင်စင်အောက်တွင် ပံ့ပိုးမထားသော ကုဒ်အားလုံးကို ဖယ်ရှားရန် လုပ်ဆောင်ထားပြီး (ဤကုဒ်ကို ထည့်သွင်းထားသည့် စက်ပစ္စည်းများအတွက် တည်ဆောက်ရာတွင် အသုံးမပြုပါ)၊ ပရောဂျက်အတွက် လိုင်စင်နှင့် အခြေအနေကို သိသိသာသာ ရိုးရှင်းစေပါသည်။ ဒေသခံစီးကြောင်းများ၏ အကောင်အထည်ဖော်မှုကို 'struct _reent' မှ TLS ယန္တရားသို့ ရွှေ့ထားသည် (thread-local storage) avrlibc စာကြည့်တိုက်ကုဒ်မှ ချေးယူထားသော stdio ၏ကျစ်ကျစ်လစ်လစ်ဗားရှင်းကို မူရင်းအတိုင်း အသက်သွင်းထားပါသည် (ATmel-specific assembler ထည့်သွင်းမှုများကို C ဖြင့် ပြန်လည်ရေးသားထားသည်)။ Meson toolkit ကို စည်းဝေးပွဲအတွက် အသုံးပြုခဲ့ပြီး၊ ၎င်းသည် newlib စည်းဝေးပွဲ scripts များနှင့် ချိတ်ဆက်ရန် မဖြစ်နိုင်ဘဲ newlib မှ အပြောင်းအလဲများ လွှဲပြောင်းခြင်းကို ရိုးရှင်းစေရန် ပြုလုပ်ထားသည်။ လည်ပတ်နိုင်သောဖိုင်တွင် ပူးတွဲပါရှိသည့် ရိုးရှင်းသော ကနဦးထည့်သွင်းခြင်းကုဒ် (crt0) ဗားရှင်းကို ထည့်သွင်းပြီး ထိန်းချုပ်မှုကို main() လုပ်ဆောင်ချက်သို့ မလွှဲပြောင်းမီ လုပ်ဆောင်ခဲ့သည်။

Picolibc ဗားရှင်း 1.1 တွင်-

  • နည်းပညာပံ့ပိုးကူညီရန် အရန်စာကြည့်တိုက်များ ပေါင်းထည့်ထားသည်”semihosting"ဟို့စ်စနစ်၏ I/O ယန္တရားများကို အသုံးပြုရန် အမှားရှာကိရိယာ သို့မဟုတ် emulator ပတ်၀န်းကျင်တွင် ကုဒ်ကို အသုံးပြုခွင့်ပေးသည်။
  • စနစ်ခေါ်ဆိုမှုများကို အဖွင့်၊ ပိတ်၊ ဖတ်၊ ရေးခြင်းတို့ကို ပံ့ပိုးပေးသည့် စနစ်များအတွက် tinystdio သည် fopen နှင့် fdopen လုပ်ဆောင်ချက်များအပါအဝင် စံသတ်မှတ်ထားသော POSIX stdio I/O အင်တာဖေ့စ်များကို ပေါင်းထည့်သည့်အပြင်၊ stdin/stdout/stderr တို့ကို POSIX-သတ်မှတ်ထားသော ဖိုင်ဖော်ပြချက်များနှင့် ပေါင်းစပ်ထားသည်။
  • newlib codebase မှ မကြာသေးမီက အပြောင်းအလဲများ ပြီးဆုံးသွားပါပြီ။ ထည့်သွင်းထားသော libm ချလံများ ပါဝင်သည်။ fenv.hFloating Point ပံ့ပိုးမှုမရှိဘဲ စနစ်များတွင် အသုံးပြုနိုင်သည့်၊
  • ARM နှင့် RISC-V စနစ်များအတွက် picolibc ဖြင့် “Hello world” အက်ပလီကေးရှင်းကို တည်ဆောက်ခြင်း၏ ဥပမာတစ်ခု ထပ်ထည့်ထားသည်။
  • အသုံးမပြုသော စမ်းသပ်ကုဒ်များပါရှိသော newlib၊ libm နှင့် mathfp လမ်းညွှန်များကို ဖယ်ရှားခဲ့သည်။

source: opennet.ru

မှတ်ချက် Add