📄 c++.txt
字号:
廬偆偑丄堦晹堎側傞揰偑偁傞偺偱丄憡堘揰傪拞怱偵夝愢偡傞丅
側偍丄摦嶌妋擣偵偼丄儂僗僩娐嫬偲偟偰偼Cygwin 1.3.22傪巊梡偟偨丅
4.1 昁梫側僜僼僩僂僃傾
C++奐敪娐嫬傪峔抸偡傞偵偼丄GCC-CORE偍傛傃G++丄傑偨偼GCC偑昁梫偵側傞丅
傑偨丄NEWLIB偼昁恵偱偁傞丅
GNU奐敪娐嫬
BINUTILS乮傾僙儞僽儔丆儕儞僇側偳乯
GCC乮C/C++僐儞僷僀儔乯
GDB乮僨僶僢僈乯
NEWLIB乮昗弨C儔僀僽儔儕乯
Perl乮摦嶌妋擣偼 5.8.0乯
GNU Make乮摦嶌妋擣偼 3.80乯
GNU sed乮摦嶌妋擣偼 4.0.7乯
patch乮摦嶌妋擣偼 2.5.8乯
4.2 BINUTILS偺僀儞僗僩乕儖
BINUTILS偼丄GCC偺僀儞僗僩乕儖偵昁梫側偨傔丆GCC偵愭偩偭偰僀儞僗僩乕儖
偡傞丅BINUTILS偺僀儞僗僩乕儖庤弴偼師偺捠傝丅
% mkdir <BINUTILS-OBJDIR>
% cd <BINUTILS-OBJDIR>
% <BINUTILS-SRCDIR>/configure --target=<TARGET> --prefix=<PREFIX>\
--disable-nls
% make
% make install
4.3 GCC傊偺僷僢僠
Cygwin忋偱GCC 3.2.3傪make偡傞応崌偵堦晹忈奞偑敪惗偡傞偨傔丄師偺僷僢僠
偑昁梫偲側傞丅乮SH斉偺傒丅GCC 3.3.x埲崀偱偼晄梫乯
% cp gcc-3.2.3_fixinc_gnu-regex.patch <GCC-SRCDIR>
% cd <GCC-SRCDIR>
% patch -p1 < gcc-3.2.3_fixinc_gnu-regex.patch
埲壓偺庤弴偵廬偭偰丄GCC傪TOPPERS/JSP僇乕僱儖偵懳墳偝偣傞偨傔偺僷僢僠
傪偁偰傞丅
% cp gcc-3.2.3_gthr-toppers-1.patch <GCC-SRCDIR>
% cd <GCC-SRCDIR>
% patch -p1 < gcc-3.2.3_gthr-toppers-1.patch
4.4 GCC偺僀儞僗僩乕儖(1)
GCC偺僀儞僗僩乕儖偵偼NEWLIB偑昁梫偱偁傞偑丄NEWLIB傪僀儞僗僩乕儖偡傞偵
偼GCC偑昁梫側偨傔丄庒姳偺岺晇偑昁梫偵側傞丅
% mkdir <GCC-OBJDIR>
% cd <GCC-OBJDIR>
% <GCC-SRCDIR>/configure --target=<TARGET> --prefix=<PREFIX>\
--enable-languages=c,c++ --enable-threads=toppers\
--disable-nls
% make all-gcc
% make install-host
4.5 NEWLIB偺僀儞僗僩乕儖
師偺庤弴偵廬偭偰丄NEWLIB傪僀儞僗僩乕儖偡傞丏
% mkdir <NEWLIB-OBJDIR>
% cd <NEWLIB-OBJDIR>
% <NEWLIB-SRCDIR>/configure --target=<TARGET> --prefix=<PREFIX>
% make
% make install
側偍丄Cygwin偺僶乕僕儑儞偵傛偭偰偼NEWLIB偺僀儞僗僩乕儖偵幐攕偡傞応崌
偑偁傞丅偦偺傛偆側応崌偼丄Cygwin偺僶乕僕儑儞傪曄峏偡傞偐丄NEWLIB傪僶
僀僫儕偱擖庤偡傞偙偲丅
4.6 GCC偺僀儞僗僩乕儖(2)
師偺庤弴偵廬偭偰丄GCC偺巆傝晹暘傪僀儞僗僩乕儖偡傞丏
% cd <GCC-OBJDIR>
% make
% make install
俆丏C++僶僀儞僨傿儞僌偺幚憰徻嵶
5.1 僼傽僀儖峔惉
(1) cxxrt.cfg
cxxrt.cfg偼C++懳墳儔儞僞僀儉偺撪晹偱巊梡偡傞僆僽僕僃僋僩傪惗惉偡傞丅
C++偺婡擻傪巊梡偡傞応崌偵偼丄昁偢僐儞僼傿僊儏儗乕僔儑儞僼傽僀儖偐傜丄
cxxrt.cfg傪僀儞僋儖乕僪偡傞昁梫偑偁傞丅
(2) cxxrt.c
cxxrt.c偼C++懳墳儔儞僞僀儉偺杮懱偱偁傝丄椺奜張棟摍偱昁梫偲側傞娭悢傗
曄悢偺掕媊偑峴傢傟傞丅
(3) newlibrt.c
newlibrt.c偼NEWLIB偺娭悢傪TOPPERS/JSP僇乕僱儖偵懳墳偝偣傞偨傔偺儔儞僞
僀儉偱偁傝丄C++傪巊梡偡傞応崌偵偼昁恵偱偁傞丅
偙偺儔儞僞僀儉偼丄C++傪巊梡偟側偄応崌偱傕丄NEWLIB傪巊梡偡傞嵺偵偼扨撈
偱巊梡偡傞偙偲偑偱偒傞丅
5.2 摨婜婡擻
椺奜張棟偍傛傃昗弨C++儔僀僽儔儕撪晹偱巊梡偡傞摨婜婡擻傪採嫙偡傞娭悢孮丅
昗弨C++儔僀僽儔儕偼僼儕乕僗僞儞僨傿儞僌娐嫬偱偼僒億乕僩偝傟側偄偑丄偍
偦傜偔libstdc++偺慡婡擻傪巊梡偡傞偙偲偑偱偒傞偲巚傢傟傞丅乮偨偩偟丄摦
嶌偼妋擣偟偰偄側偄乯
(1) int _toppers_cxxrt_lock(_toppers_cxxrt_sync_t *sync);
儅儖僠僞僗僋摦嶌帪偱偼丄儘僢僋傪妡偗丄僋儕僥傿僇儖僙僋僔儑儞傪奐巒偡
傞丅旕儅儖僠僞僗僋摦嶌帪偵偼壗傕偟側偄丅
惉岟帪偵偼0傪曉偟丄幐攕帪偵偼晧偺抣傪曉偡丅
偙偺娭悢偼僱僗僥傿儞僌壜擻偱偁傞丅
(2) int _toppers_cxxrt_trylock(_toppers_cxxrt_sync_t *sync);
_toppers_cxxrt_lock娭悢偲傎傏摨偠偱偁傞偑丄婛偵懠偺僞僗僋偵傛偭偰儘僢僋
拞偺応崌偱傕懸婡忬懺偵偼堏峴偣偢丄扨偵屇弌偟偵幐攕偡傞丅
尰嵼偺幚憰偱偼丄_toppers_cxxrt_lock娭悢偼僨傿僗僷僢僠嬛巭傪梡偄偰幚尰偟
偰偄傞偨傔丄偳偪傜傕摨偠偱偁傞丅
(3) int _toppers_cxxrt_unlock(_toppers_cxxrt_sync_t *sync);
儅儖僠僞僗僋摦嶌帪偱偼丄儘僢僋傪夝彍偟丄僋儕僥傿僇儖僙僋僔儑儞傪廔椆
偡傞丅旕儅儖僠僞僗僋摦嶌帪偵偼壗傕偟側偄丅
惉岟帪偵偼0傪曉偟丄幐攕帪偵偼晧偺抣傪曉偡丅
(4) int _toppers_cxxrt_once(_toppers_cxxrt_once_t *once,
void (*func)(void));
巜掕偟偨娭悢傪丄僔僗僥儉慡懱偱堦搙偩偗幚峴偝偣傞丅func傪幚峴拞偵丄堎
側傞僞僗僋偱傕摨偠娭悢傪幚峴偝偣傛偆偲偟偨応崌丄func偺幚峴偑姰椆偡傞
傑偱懸婡忬懺偵堏峴偡傞丅
惉岟帪偵偼0傪曉偟丄幐攕帪偵偼晧偺抣傪曉偡丅
5.3 僞僗僋儘乕僇儖婰壇堟婡擻
僞僗僋偛偲偵梡堄偝傟傞丄尒偐偗忋惷揑側婰壇堟傪採嫙偡傞娭悢孮偱偁傝丄
椺奜張棟偱巊梡偝傟傞丅
僞僗僋儘乕僇儖婰壇堟偲偟偰妋曐偱偒傞偺偼丄僨僼僅儖僩偱偼2屄傑偱偱偁傞
偑丄_CXXRT_KEY_MAX儅僋儘傪儐乕僓掕媊偡傞偙偲偱丄3屄埲忋偵奼挘偡傞偙偲
偑偱偒傞丅
(1) int _toppers_cxxrt_key_create(struct _toppers_cxxrt_tls **key,
void (*dtor)(void*))
僞僗僋儘乕僇儖婰壇堟偵妋曐偡傞曄悢傪怴婯嶌惉偡傞丅
惉岟帪偵偼0傪曉偟丄*key偵曄悢傪幆暿偡傞偨傔偺僉乕偑奿擺偝傟傞丅
dtor偵偼丄僉乕傪嶍彍偡傞嵺偵丄僞僗僋偛偲偺奺曄悢偵懳偟偰幚峴偡傋偒廔
椆張棟傪巜掕偡傞丅
幐攕帪偵偼晧偺抣傪曉偡丅
(2) int _toppers_cxxrt_key_delete(struct _toppers_cxxrt_tls *key);
_toppers_cxxrt_key_create娭悢偱嶌惉偟偨僉乕傪嶍彍偡傞丅
惉岟帪偵偼0傪曉偟丄幐攕帪偵偼晧偺抣傪曉偡丅
5.4 NEWLIB偺僇僗僞儅僀僘
(1) void __malloc_lock(struct _reent *ptr);
malloc偍傛傃free偺攔懠惂屼傪峴偆丅懠偺僞僗僋偵傛偭偰儘僢僋偝傟偰偄傞
忬嫷偱屇弌偝傟偨応崌偼懸婡忬懺偵堏峴偡傞丅
(2) void __malloc_unlock(struct _reent *ptr);
__malloc_lock娭悢偵傛傞儘僢僋傪夝彍偡傞丅
(3) void *_sbrk_r(struct _reent *ptr, ptrdiff_t nbytes);
僾儘僌儔儉偺僸乕僾椞堟傪nbyte偩偗奼戝偡傞丅惉岟帪偵偼丄怴偟偄椞堟偺愭
摢傊偺億僀儞僞傪曉偡丅幐攕帪偼晧偺抣傪曉偟丄errno偍傛傃ptr->_errno偵
ENOMEM傪愝掕偡傞丅
僸乕僾椞堟偵偼丄奜晹幆暿巕end乮.bss僙僋僔儑儞偺廔抂乯偐傜丄儅儖僠僞僗
僋摦嶌奐巒慜偺僗僞僢僋億僀儞僞傑偱傪巊梡偡傞丅
儊儌儕儅僢僾忋丄暋悢偺儊儌儕僀儊乕僕偑敪惗偡傞僞乕僎僢僩偱偼丄.bss僙
僋僔儑儞偲僗僞僢僋億僀儞僞偺弶婜抣傪摨堦僀儊乕僕忋偵攝抲偡傞昁梫偑偁
傞丅
僸乕僾椞堟偲婲摦帪偺僗僞僢僋椞堟偑楢懕偟偰偄側偄応崌丄sys_config.h撪
偱HEAP_TOP儅僋儘傪僸乕僾偺廔抂傾僪儗僗偵掕媊偡傞昁梫偑偁傞丅
杮棃偱偁傟偽丄_sbrk_r娭悢偺尨巒娭悢偵偁偨傞_sbrk娭悢傪僇僗僞儅僀僘偡
傋偒偱偁傞偑丄僞乕僎僢僩偵傛偭偰偼丄_write娭悢摍偲摨堦偺東栿扨埵偵僆
儕僕僫儖偺_sbrk娭悢偑掕媊偝傟偰偍傝丄儕儞僋帪偵忈奞偑敪惗偡傞尨場偲側
傞偨傔丄_sbrk_r娭悢傪僇僗僞儅僀僘偟偰偄傞丅
5.5 偦偺懠
(1) int main();
JSP僇乕僱儖忋偱摦嶌偡傞C/C++僾儘僌儔儉偼僼儕乕僗僞儞僨傿儞僌娐嫬偱偁
傞偨傔丄僄儞僩儕娭悢偼main偱偼側偔kernel_start偱偁傞丅偟偐偟丄NEWLIB
偱偼僄儞僩儕億僀儞僩偲偟偰main偑巊梡偝傟傞偙偲傪婜懸偟偰偄傞偨傔丄
main娭悢偑側偗傟偽儕儞僋僄儔乕偵側傞応崌偑偁傞丅
C++懳墳儔儞僞僀儉偱偼丄儕儞僋傪夝寛偡傞偙偲偺傒傪栚揑偲偟偰main娭悢傪
掕媊偡傞丅
俇丏僞乕僎僢僩埶懚晹偺幚憰
尰嵼丄C++僶僀儞僨傿儞僌偑僒億乕僩偡傞幚峴娐嫬偼丄MS7727CP01(SH3)偍傛
傃AKI-H8/3069F偱偁傞丅
傑偨丄GNU奐敪娐嫬偺僞乕僎僢僩偲偟偰丄SH梡偵偼sh-hitachi-elf丄H8梡偵偼
h8300-hms傪巊梡偟偰偄傞丅
6.1 GNU奐敪娐嫬偵娭偡傞傕偺
GNU奐敪娐嫬慡斒偵娭偡傞梫慺偲偟偰丄埲壓偺傕偺偑偁傞丅
(1) 儕儞僇僗僋儕僾僩偺懳墳
C++傪梡偄傞応崌偺儕儞僇僗僋儕僾僩偵偼丄.ctor偍傛傃.dtor丄偡側傢偪僌儘
乕僶儖側僐儞僗僩儔僋僞傗僨僗僩儔僋僞偺億僀儞僞僥乕僽儖傪宍惉偡傞偨傔
偺僙僋僔儑儞掕媊偑昁梫偱偁傞丅
傑偨丄.eh_frame傗.gcc_except_table側偳偺椺奜張棟梡偺僙僋僔儑儞掕媊傕
昁梫偵側傞丅
6.2 ELF宍幃偵娭楢偡傞傕偺
SH偵尷傜偢丄ELF宍幃偵埶懚偡傞梫慺偲偟偰丄壓婰撪梕偺懳墳偑昁梫偱偁傞丅
(1) crti.o, crtbegin.o, crtend.o, crtn.o偺儕儞僋
僌儘乕僶儖側僐儞僗僩儔僋僞偍傛傃僨僗僩儔僋僞偺屇弌偟傗丄椺奜張棟娭楢
偵昁梫側偨傔丄偙傟傜偺僼傽僀儖傪惓偟偄弴彉偱儕儞僋偡傞昁梫偑偁傞丅
儕儞僋偺弴彉偼丄
start.o crti.o crtbegin.o 儐乕僓僾儘僌儔儉 libkernel.a libstdc++.a
libm.a libc.a libgcc.a crtend.o crtn.o
偱偁傞丅
偙偺巜掕偵偼丄僞乕僎僢僩埶懚晹偺config/sh3/Makefile.config偵偍偄偰丄
START_OBJS = \
start.o \
$(shell $(CC) $(COPTS) -print-file-name=crti.o | sed -e 's/\\/\//g') \
$(shell $(CC) $(COPTS) -print-file-name=crtbegin.o | sed -e 's/\\/\//g')
END_OBJS = \
$(shell $(CC) $(COPTS) -print-file-name=crtend.o | sed -e 's/\\/\//g') \
$(shell $(CC) $(COPTS) -print-file-name=crtn.o | sed -e 's/\\/\//g')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -