¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤Ç¤Ï¡¢GNU ¥³¥ó¥Ñ¥¤¥é¤Î»È¤¤Êý¡¢¥¤¥ó¥¹¥È¡¼¥ëÊýË¡¡¢°Ü¿¢ÊýË¡¤ä¡¢¿·¤·¤¤µ¡Ç½¤ä¸ß´¹À¤Î̵¤¤Éôʬ¡¢¤½¤ì¤Ë¥Ð¥°¥ì¥Ý¡¼¥È¤ÎÊýË¡¤Ê¤É¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤ë¡£GNU CC ¤Î¥Ð¡¼¥¸¥ç¥ó 2.95 ¤ËÂбþ¤·¤Æ¤¤¤ë¡£(ÆüËܸìÈǥɥé¥Õ¥È-17 July 2001)
gcc ¤Î¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó
xm-machine.h ¤Î½ñ¤Êýt-target ¤È x-host ¤Î½ñ¤Êý
C, C++, Objective C, Fortran Ëè¤Ëʬ¤«¤ì¤Æ¤¤¤¿¥³¥ó¥Ñ¥¤¥é¤Ï¸½ºß¤Ç¤Ï°ì¤Ä¤ËÅý¹ç¤µ¤ì¤Æ¤¤¤ë¡£¤³¤Î¤¿¤á²æ¡¹¤Ï¡ÖGNU ¥³¥ó¥Ñ¥¤¥é½¸¡×(GNU Compiler Collection) ¤È¤¤¤¦Ì¾Á°¤ò»È¤¦¤³¤È¤Ë¤·¤¿¡£GNU C ¥³¥ó¥Ñ¥¤¥é¤Ï, C, C++, Objective C, Fortran ¤Ç½ñ¤«¤ì¤¿¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£Fortran ¥³¥ó¥Ñ¥¤¥é¤Ë¤Ä¤¤¤Æ¤ÏÆÈΩ¤·¤¿¥Þ¥Ë¥å¥¢¥ë¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¡£
GCC ¤È¤¤¤¦¤Î¤Ï¡¢GNU ¥³¥ó¥Ñ¥¤¥é½¸(GNU Compiler Collection)¤Î¤è¤¯¤¢¤ë¾Êά·Á¤Ç¤¢¤ë¡£²æ¡¹¤Î¥³¥ó¥Ñ¥¤¥é¤ÎºÇ¤â°ìÈÌŪ¤Ê̾Á°¤Ç¤â¤¢¤ë¤·¡¢C ¸À¸ì¤Î¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤Ë¾ÇÅÀ¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë»È¤ï¤ì¤ë̾Á°¤Ç¤â¤¢¤ë(¤³¤Î¾Êά·Á¤Ï°ÊÁ°¤Ï "GNU C Compiler" ¤òɽ¤·¤Æ¤¤¤¿)¡£
C++ ¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ë¤Ë¤Ä¤¤¤Æ¸À¤¦¤È¤¤Ë¤Ï¡¢G++ ¤È¸Æ¤Ö¤Î¤¬ÉáÄ̤Ǥ¢¤ë¡£¥³¥ó¥Ñ¥¤¥é¼«ÂΤϰì¤Ä¤·¤«¤Ê¤¤¤Î¤Ç¡¢ÂоݤȤ¹¤ë¸À¸ì¤¬¤Ê¤ó¤Ç¤¢¤ì¡¢GCC ¤È¸Æ¤Ö¤Î¤ÏÁ´¤¯Àµ¤·¤¤¡£¤À¤¬¡¢C++ ¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤À¤È¤¤¤¦¤³¤È¤ò¶¯Ä´¤¹¤ë¤È¤¤Ï¡¢G++ ¤È¸Æ¤Ö¤Î¤¬ÊØÍø¤Ç¤¢¤ë¡£
²æ¡¹¤Ï¡¢"GCC" ¤ò¥³¥ó¥Ñ¥¤¥é¥·¥¹¥Æ¥àÁ´ÂΤò»Ø¤¹Ì¾Á°¤È¤·¤Æ»È¤¦¡£¤â¤¦¾¯¤·Àµ³Î¤Ë¤Ï¡¢¤³¤Î¥³¥ó¥Ñ¥¤¥é¤Î¸À¸ìÈó°Í¸Éô¤ò»Ø¤¹¡£Î㤨¤Ð¡¢¡ÖGCC¡×¤Îưºî¤Ë±Æ¶Á¤¹¤ëºÇŬ²½¥ª¥×¥·¥ç¥ó¤È¸À¤Ã¤¿¤ê¡¢¤¢¤ë¤¤¤Ïñ¤Ë¡Ö¥³¥ó¥Ñ¥¤¥é¡×¤È¸À¤Ã¤¿¤ê¤¹¤ë¤³¤È¤â¤¢¤ë¡£
¾¤Î¸À¸ì¥Õ¥í¥ó¥È¥¨¥ó¥É¤È¤·¤Æ¡¢Ada 9X, Fortran, Modula-3, Pascal ¤Ë¤Ä¤¤¤Æ³«È¯Ãæ¤Ç¤¢¤ë¡£¤³¤ì¤é¤Î¥Õ¥í¥ó¥È¥¨¥ó¥É¤Ï¡¢C++ ¤ÈƱÍÍ¡¢GNU CC ¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ç¹½ÃÛ¤µ¤ì¡¢GCC ¤Ë¥ê¥ó¥¯¤µ¤ì¤ë¡£¤³¤Î·ë²Ì¡¢Åý¹ç¤µ¤ì¤¿¥³¥ó¥Ñ¥¤¥é¤¬½ÐÍè¾å¤¬¤ê¡¢C, C++, Objective C, ¤¢¤ë¤¤¤Ï¥æ¡¼¥¶¤¬¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¥Õ¥í¥ó¥È¥¨¥ó¥É¤Î¸À¸ì¤¬¥³¥ó¥Ñ¥¤¥ë½ÐÍè¤ë¤³¤È¤Ë¤Ê¤ë¡£
Ëܥޥ˥奢¥ë¤Ç¤Ï¡¢C¡¢Objective-C¡¢C++ ¥³¥ó¥Ñ¥¤¥é¤Î¥ª¥×¥·¥ç¥ó¤È¡¢GCC ¤ÎÃæ³ËÉôʬ¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¤ß²òÀâ¤ò¹Ô¤¦¡£Â¾¤Î¸À¸ì¤Ç½ñ¤«¤ì¤¿¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ëºÝ¤Ë»ÈÍѤ¹¤ë¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤½¤Î¸À¸ì¤Î¥Õ¥í¥ó¥È¥¨¥ó¥É¤Îʸ½ñ¤ò»²¾È¤¹¤ë¤³¤È¡£
G++ ¤ÏËÜʪ¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¤¢¤ë¡£Ã±¤Ê¤ë¥×¥ê¥×¥í¥»¥Ã¥µ¤Ç¤Ï¤Ê¤¤¡£G++ ¤Ï¡¢C++ ¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹¤«¤éľÀÜ¥ª¥Ö¥¸¥§¥¯¥È¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£Ãæ´ÖŪ¤Ê C ¤Î¥³¡¼¥É¤Ïºî¤é¤Ê¤¤¡£(ÂоÈŪ¤Ë¡¢Î㤨¤Ð¾¤Î¼ÂÁõ¤ÎÃæ¤Ë¤Ï¡¢C++ ¥½¡¼¥¹¤«¤é C ¥×¥í¥°¥é¥à¤òÀ¸À®¤¹¤ë¤â¤Î¤â¤¢¤ë¡£) C ¸À¸ì¤Ë¤è¤ëÃæ´Öɽ¸½¤ò»È¤ï¤Ê¤¤¤³¤È¤Ç¡¢¤è¤êÎɤ¤¥ª¥Ö¥¸¥§¥¯¥È¥³¡¼¥É¡¢¤è¤êÎɤ¤¥Ç¥Ð¥Ã¥°¾ðÊó¤òÆÀ¤ë¤³¤È¤¬¤Ç¤¤ë¡£GNU ¥Ç¥Ð¥Ã¥¬ GDB ¤ò»È¤¨¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¥³¡¼¥ÉÃæ¤Î¡¢¤³¤Î¤è¤êÎɤ¤¥Ç¥Ð¥Ã¥°¾ðÊó¤È¹ç¤ï¤»¤Æ¡¢C++ ¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹¥³¡¼¥É¥ì¥Ù¥ë¤ÎÊÔ½¸(¥Ç¥Ð¥Ã¥°)µ¡Ç½¤Î²¸·Ã¤ò¼õ¤±¤ë¤³¤È¤¬¤Ç¤¤ë¡£
GCC ¤òµ¯Æ°¤¹¤ë¤È¡¢ÉáÄ̤ϡ¢¥×¥ê¥×¥í¥»¥¹¡¢¥³¥ó¥Ñ¥¤¥ë¡¢¥¢¥»¥ó¥Ö¥ë¡¢¥ê¥ó¥¯¤ò¹Ô¤Ê¤¦¡£"overall options" ¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢¤³¤Î²áÄø¤òÃæ´Ö¤ÎÃʳ¬¤Ç»ß¤á¤ë¤³¤È¤¬¤Ç¤¤ë¡£Î㤨¤Ð¡¢-c ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢¥ê¥ó¥«¤òµ¯Æ°¤·¤Ê¤¤¡£¤½¤·¤Æ¡¢½ÐÎϤϥ¢¥»¥ó¥Ö¥é¤Î½ÐÎϤǤ¢¤ë¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤«¤é¤Ê¤ë¡£
¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾åµ¤Î²áÄø¤Î°ì¤Ä¤ÎÃʳ¬¤Ë¼õ¤±ÅϤµ¤ì¤ë¡£¥×¥ê¥×¥í¥»¥Ã¥µ¤òÀ©¸æ¤¹¤ë¥ª¥×¥·¥ç¥ó¤â¤¢¤ë¤·¡¢¥³¥ó¥Ñ¥¤¥éËÜÂΤòÀ©¸æ¤¹¤ë¥ª¥×¥·¥ç¥ó¤â¤¢¤ë¡£¤µ¤é¤Ë¡¢¤½¤Î¾¤Ë¡¢¥¢¥»¥ó¥Ö¥é¤È¥ê¥ó¥«¤òÀ©¸æ¤¹¤ë¥ª¥×¥·¥ç¥ó¤â¤¢¤ë¤¬¡¢¤Û¤È¤ó¤É¤Î¥ª¥×¥·¥ç¥ó¤ÏÌÇ¿¤ËɬÍפˤʤ뤳¤È¤Ï¤Ê¤¤¤Î¤Ç¡¢¤³¤³¤Ç¤ÏÀâÌÀ¤·¤Ê¤¤¡£
GCC ¤Ë»ØÄê¤Ç¤¤ë¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤Ï¡¢ÂçÉôʬ¤¬ C ¸À¸ì¸þ¤±¤Ç¤¢¤ë¡£Â¾¤Î¸À¸ì(C++ ¤Ç¤¢¤ë¤³¤È¤¬Â¿¤¤)¤Ç¤â»È¤¨¤ë¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÌÀ¼¨Åª¤Ë¤½¤Î»Ý¤ò½ñ¤¯¤è¤¦¤Ë¤·¤Æ¤¤¤ë¡£¥½¡¼¥¹¥×¥í¥°¥é¥à¤Î¸À¸ì¤Ë¤Ä¤¤¤Æµ½Ò¤Î¤Ê¤¤¥ª¥×¥·¥ç¥ó¤Ï¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î¸À¸ì¤ËÂФ·¤Æ»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
C++ ¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤ÎÆÃÊ̤ʥª¥×¥·¥ç¥ó¤ÎÍ×Ìó¤Ë¤Ä¤¤¤Æ¤Ï¡¢See Compiling C++ Programs.
gcc ¤Ï¡¢¥ª¥×¥·¥ç¥ó¤È¥Õ¥¡¥¤¥ë̾¤ò°ú¿ô¤È¤·¤Æ¼õ¤±ÉÕ¤±¤ë¡£Ê£¿ô¤Îʸ»ú¤«¤é¤Ê¤ë̾Á°¤ò»ý¤Ä¥ª¥×¥·¥ç¥ó¤¬¤¿¤¯¤µ¤ó¤¢¤ë¤Î¤Ç¡¢°ìʸ»ú¤Î¥ª¥×¥·¥ç¥ó¤ò¤Þ¤È¤á¤Æ»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£Î㤨¤Ð¡¢-dr ¤È¤¤¤¦¥ª¥×¥·¥ç¥ó¤Ï¡¢-d -r ¤È¤ÏÁ´¤¯°Û¤Ê¤ë»ØÄê¤Ë¤Ê¤ë¡£
¥ª¥×¥·¥ç¥ó¤È¤½¤ì°Ê³°¤Î°ú¿ô¤òÆþ¤êº®¤¼¤Æ»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£°ú¿ô¤Î½ç½ø¤ÏÌäÂê¤Ë¤Ê¤é¤Ê¤¤¾ì¹ç¤¬Â¿¤¤¡£ÌäÂê¤Ë¤Ê¤ë¤Î¤Ï¡¢Æ±¤¸¼ïÎà¤Î¥ª¥×¥·¥ç¥ó¤ò½Å¤Í¤Æ»È¤¦¤È¤¤Ç¤¢¤ë¡£Î㤨¤Ð¡¢-L ¥ª¥×¥·¥ç¥ó¤òÊ£¿ô²ó»ØÄꤹ¤ë¤È¡¢»ØÄꤵ¤ì¤¿½çÈ֤ǥǥ£¥ì¥¯¥È¥ê¤ò¸¡º÷¤¹¤ë¡£
-f ¤ä -W ¤Ç»Ï¤Þ¤ëŤ¤Ì¾Á°¤Î¥ª¥×¥·¥ç¥ó¤¬¤¿¤¯¤µ¤ó¤¢¤ë¡£Î㤨¤Ð¡¢-fforce-mem¡¢-fstrength-reduce¡¢-Wformat
¤È¤¤¤Ã¤¿¤â¤Î¤À¡£¤³¤Î¼ïÎà¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¤Û¤È¤ó¤É¤¬¡¢¹ÎÄê·Á¼°¤ÈÈÝÄê·Á¼°¤ÎξÊý¤Î·Á¼°¤ò»ý¤Ä¡£Î㤨¤Ð¡¢-ffoo ¤ÎÈÝÄê·Á¼°¤Ï -fno-foo ¤Ë¤Ê¤ë¡£¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤Ç¤Ï¡¢Æó¤Ä¤Î·Á¼°¤Î¤¦¤Á¤Î¤É¤Á¤é¤«¤Î¤ß¡¢¤Ä¤Þ¤ê¥Ç¥Õ¥©¥ë¥È¤Ç¤Ê¤¤Êý¤Î¤ß¤òÀâÌÀ¤¹¤ë¡£
°Ê²¼¤ËÁ´¥ª¥×¥·¥ç¥ó¤ÎÍ×Ìó¤ò¼ïÎàËè¤Ëʬ¤±¤Æ¼¨¤¹¡£²òÀâ¤Ï¸å¤ÎÀá¤Ç¹Ô¤Ê¤¦¡£
-c -S -E -o file -pipe -v --help -x language
-ansi -fstd -fallow-single-precision -fcond-mismatch -fno-asm -fno-builtin -ffreestanding -fhosted -fsigned-bitfields -fsigned-char -funsigned-bitfields -funsigned-char -fwritable-strings -traditional -traditional-cpp -trigraphs
-fno-access-control -fcheck-new -fconserve-space -fdollars-in-identifiers -fno-elide-constructors -fexternal-templates -ffor-scope -fno-for-scope -fno-gnu-keywords -fguiding-decls -fhandle-signatures -fhonor-std -fhuge-objects -fno-implicit-templates -finit-priority -fno-implement-inlines -fname-mangling-version-n -fno-default-inline -foperator-names -fno-optional-diags -fpermissive -frepo -fstrict-prototype -fsquangle -ftemplate-depth-n -fthis-is-variable -fvtable-thunks -nostdinc++ -Wctor-dtor-privacy -Wno-deprecated -Weffc++ -Wno-non-template-friend -Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Wno-pmf-conversions -Wreorder -Wsign-promo -Wsynth
-fsyntax-only -pedantic -pedantic-errors -w -W -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment -Wconversion -Werror -Wformat -Wid-clash-len -Wimplicit -Wimplicit-int -Wimplicit-function-declaration -Wimport -Werror-implicit-function-declaration -Winline -Wlarger-than-len -Wlong-long -Wmain -Wmissing-declarations -Wmissing-noreturn -Wmissing-prototypes -Wmultichar -Wnested-externs -Wno-import -Wparentheses -Wpointer-arith -Wredundant-decls -Wreturn-type -Wshadow -Wsign-compare -Wstrict-prototypes -Wswitch -Wtraditional -Wtrigraphs -Wundef -Wuninitialized -Wunused -Wwrite-strings -Wunknown-pragmas
-a -ax -dletters -fdump-unnumbered -fpretend-float -fprofile-arcs -ftest-coverage -g -glevel -gcoff -gdwarf -gdwarf-1 -gdwarf-1+ -gdwarf-2 -ggdb -gstabs -gstabs+ -gxcoff -gxcoff+ -p -pg -print-file-name=library -print-libgcc-file-name -print-prog-name=program -print-search-dirs -save-temps
-fbranch-probabilities -foptimize-register-moves -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks -fdelayed-branch -fexpensive-optimizations -ffast-math -ffloat-store -fforce-addr -fforce-mem -fdata-sections -ffunction-sections -fgcse -finline-functions -finline-limit-n -fkeep-inline-functions -fno-default-inline -fno-defer-pop -fno-function-cse -fno-inline -fno-peephole -fomit-frame-pointer -fregmove -frerun-cse-after-loop -frerun-loop-opt -fschedule-insns -fschedule-insns2 -fstrength-reduce -fthread-jumps -funroll-all-loops -funroll-loops -fmove-all-movables -freduce-all-givs -fstrict-aliasing -O -O0 -O1 -O2 -O3 -Os
-Aquestion(answer) -C -dD -dM -dN -Dmacro[=defn] -E -H -idirafter dir -include file -imacros file -iprefix file -iwithprefix dir -iwithprefixbefore dir -isystem dir -isystem-c++ dir -M -MD -MM -MMD -MG -nostdinc -P -trigraphs -undef -Umacro -Wp,option
-Wa,option
object-file-name -llibrary -nostartfiles -nodefaultlibs -nostdlib -s -static -shared -symbolic -Wl,option -Xlinker option -u symbol
-Bprefix -Idir -I- -Ldir -specs=file
-b machine -V version
M680x0 ÍÑ¥ª¥×¥·¥ç¥ó -m68000 -m68020 -m68020-40 -m68020-60 -m68030 -m68040 -m68060 -mcpu32 -m5200 -m68881 -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield -mrtd -mshort -msoft-float -malign-int VAX ÍÑ¥ª¥×¥·¥ç¥ó -mg -mgnu -munix SPARC ÍÑ¥ª¥×¥·¥ç¥ó -mcpu=cpu type -mtune=cpu type -mcmodel=code model -malign-jumps=num -malign-loops=num -malign-functions=num -m32 -m64 -mapp-regs -mbroken-saverestore -mcypress -mepilogue -mflat -mfpu -mhard-float -mhard-quad-float -mimpure-text -mlive-g0 -mno-app-regs -mno-epilogue -mno-flat -mno-fpu -mno-impure-text -mno-stack-bias -mno-unaligned-doubles -msoft-float -msoft-quad-float -msparclite -mstack-bias -msupersparc -munaligned-doubles -mv8 Convex ÍÑ¥ª¥×¥·¥ç¥ó -mc1 -mc2 -mc32 -mc34 -mc38 -margcount -mnoargcount -mlong32 -mlong64 -mvolatile-cache -mvolatile-nocache AMD29K ÍÑ¥ª¥×¥·¥ç¥ó -m29000 -m29050 -mbw -mnbw -mdw -mndw -mlarge -mnormal -msmall -mkernel-registers -mno-reuse-arg-regs -mno-stack-check -mno-storem-bug -mreuse-arg-regs -msoft-float -mstack-check -mstorem-bug -muser-registers ARM ÍÑ¥ª¥×¥·¥ç¥ó -mapcs-frame -mno-apcs-frame -mapcs-26 -mapcs-32 -mapcs-stack-check -mno-apcs-stack-check -mapcs-float -mno-apcs-float -mapcs-reentrant -mno-apcs-reentrant -msched-prolog -mno-sched-prolog -mlittle-endian -mbig-endian -mwords-little-endian -mshort-load-bytes -mno-short-load-bytes -mshort-load-words -mno-short-load-words -msoft-float -mhard-float -mfpe -mthumb-interwork -mno-thumb-interwork -mcpu= -march= -mfpe= -mstructure-size-boundary= -mbsd -mxopen -mno-symrename -mabort-on-noreturn -mno-sched-prolog Thumb ÍÑ¥ª¥×¥·¥ç¥ó -mtpcs-frame -mno-tpcs-frame -mtpcs-leaf-frame -mno-tpcs-leaf-frame -mlittle-endian -mbig-endian -mthumb-interwork -mno-thumb-interwork -mstructure-size-boundary= MN10200 ÍÑ¥ª¥×¥·¥ç¥ó -mrelax MN10300 ÍÑ¥ª¥×¥·¥ç¥ó -mmult-bug -mno-mult-bug -mrelax M32R/D ÍÑ¥ª¥×¥·¥ç¥ó -mcode-model=model type -msdata=sdata type -G num M88K ÍÑ¥ª¥×¥·¥ç¥ó -m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division -mhandle-large-shift -midentify-revision -mno-check-zero-division -mno-ocs-debug-info -mno-ocs-frame-position -mno-optimize-arg-area -mno-serialize-volatile -mno-underscores -mocs-debug-info -mocs-frame-position -moptimize-arg-area -mserialize-volatile -mshort-data-num -msvr3 -msvr4 -mtrap-large-shift -muse-div-instruction -mversion-03.00 -mwarn-passed-structs RS/6000 ¤È PowerPC ÍÑ¥ª¥×¥·¥ç¥ó -mcpu=cpu type -mtune=cpu type -mpower -mno-power -mpower2 -mno-power2 -mpowerpc -mno-powerpc -mpowerpc-gpopt -mno-powerpc-gpopt -mpowerpc-gfxopt -mno-powerpc-gfxopt -mnew-mnemonics -mno-new-mnemonics -mfull-toc -mminimal-toc -mno-fop-in-toc -mno-sum-in-toc -maix64 -maix32 -mxl-call -mno-xl-call -mthreads -mpe -msoft-float -mhard-float -mmultiple -mno-multiple -mstring -mno-string -mupdate -mno-update -mfused-madd -mno-fused-madd -mbit-align -mno-bit-align -mstrict-align -mno-strict-align -mrelocatable -mno-relocatable -mrelocatable-lib -mno-relocatable-lib -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian -mcall-aix -mcall-sysv -mprototype -mno-prototype -msim -mmvme -mads -myellowknife -memb -msdata -msdata=opt -G num RT ÍÑ¥ª¥×¥·¥ç¥ó -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs -mfull-fp-blocks -mhc-struct-return -min-line-mul -mminimum-fp-blocks -mnohc-struct-return MIPS ÍÑ¥ª¥×¥·¥ç¥ó -mabicalls -mcpu=cpu type -membedded-data -membedded-pic -mfp32 -mfp64 -mgas -mgp32 -mgp64 -mgpopt -mhalf-pic -mhard-float -mint64 -mips1 -mips2 -mips3 -mips4 -mlong64 -mlong32 -mlong-calls -mmemcpy -mmips-as -mmips-tfile -mno-abicalls -mno-embedded-data -mno-embedded-pic -mno-gpopt -mno-long-calls -mno-memcpy -mno-mips-tfile -mno-rnames -mno-stats -mrnames -msoft-float -m4650 -msingle-float -mmad -mstats -EL -EB -G num -nocpp -mabi=32 -mabi=n32 -mabi=64 -mabi=eabi i386 ÍÑ¥ª¥×¥·¥ç¥ó -mcpu=cpu type -march=cpu type -mieee-fp -mno-fancy-math-387 -mno-fp-ret-in-387 -msoft-float -msvr3-shlib -mno-wide-multiply -mrtd -malign-double -mreg-alloc=list -mregparm=num -malign-jumps=num -malign-loops=num -malign-functions=num -mpreferred-stack-boundary=num HPPA ÍÑ¥ª¥×¥·¥ç¥ó -march=architecture type -mbig-switch -mdisable-fpregs -mdisable-indexing -mfast-indirect-calls -mgas -mjump-in-delay -mlong-load-store -mno-big-switch -mno-disable-fpregs -mno-disable-indexing -mno-fast-indirect-calls -mno-gas -mno-jump-in-delay -mno-long-load-store -mno-portable-runtime -mno-soft-float -mno-space -mno-space-regs -msoft-float -mpa-risc-1-0 -mpa-risc-1-1 -mpa-risc-2-0 -mportable-runtime -mschedule=cpu type -mspace -mspace-regs Intel 960 ÍÑ¥ª¥×¥·¥ç¥ó -mcpu type -masm-compat -mclean-linkage -mcode-align -mcomplex-addr -mleaf-procedures -mic-compat -mic2.0-compat -mic3.0-compat -mintel-asm -mno-clean-linkage -mno-code-align -mno-complex-addr -mno-leaf-procedures -mno-old-align -mno-strict-align -mno-tail-call -mnumerics -mold-align -msoft-float -mstrict-align -mtail-call DEC Alpha ÍÑ¥ª¥×¥·¥ç¥ó -mfp-regs -mno-fp-regs -mno-soft-float -msoft-float -malpha-as -mgas -mieee -mieee-with-inexact -mieee-conformant -mfp-trap-mode=mode -mfp-rounding-mode=mode -mtrap-precision=mode -mbuild-constants -mcpu=cpu type -mbwx -mno-bwx -mcix -mno-cix -mmax -mno-max -mmemory-latency=time Clipper ÍÑ¥ª¥×¥·¥ç¥ó -mc300 -mc400 H8/300 ÍÑ¥ª¥×¥·¥ç¥ó -mrelax -mh -ms -mint32 -malign-300 SH ÍÑ¥ª¥×¥·¥ç¥ó -m1 -m2 -m3 -m3e -mb -ml -mdalign -mrelax System V ÍÑ¥ª¥×¥·¥ç¥ó -Qy -Qn -YP,paths -Ym,dir ARC ÍÑ¥ª¥×¥·¥ç¥ó -EB -EL -mmangle-cpu -mcpu=cpu -mtext=text section -mdata=data section -mrodata=readonly data section TMS320C3x/C4x ÍÑ¥ª¥×¥·¥ç¥ó -mcpu=cpu -mbig -msmall -mregparm -mmemparm -mfast-fix -mmpyi -mbk -mti -mdp-isr-reload -mrpts=count -mrptb -mdb -mloop-unsigned -mparallel-insns -mparallel-mpy -mpreserve-float V850 ÍÑ¥ª¥×¥·¥ç¥ó -mlong-calls -mno-long-calls -mep -mno-ep -mprolog-function -mno-prolog-function -mspace -mtda=n -msda=n -mzda=n -mv850 -mbig-switch NS32K ÍÑ¥ª¥×¥·¥ç¥ó -m32032 -m32332 -m32532 -m32081 -m32381 -mmult-add -mnomult-add -msoft-float -mrtd -mnortd -mregparam -mnoregparam -msb -mnosb -mbitfield -mnobitfield -mhimem -mnohimem
-fcall-saved-reg -fcall-used-reg -fexceptions -ffixed-reg -finhibit-size-directive -fcheck-memory-usage -fprefix-function-name -fno-common -fno-ident -fno-gnu-linker -fpcc-struct-return -fpic -fPIC -freg-struct-return -fshared-data -fshort-enums -fshort-double -fvolatile -fvolatile-global -fvolatile-static -fverbose-asm -fpack-struct -fstack-check -fargument-alias -fargument-noalias -fargument-noalias-global -fleading-underscore
¥³¥ó¥Ñ¥¤¥ë²áÄø¤Ï¡¢»Í¤Ä¤ÎÃʳ¬¤Ëʬ¤±¤ë¤³¤È¤¬¤Ç¤¤ë¡£¥×¥ê¥×¥í¥»¥¹¡¢¥³¥ó¥Ñ¥¤¥ë¤½¤Î¤â¤Î¡¢¥¢¥»¥ó¥Ö¥ë¡¢¤½¤ì¤Ë¥ê¥ó¥¯¤Ç¤¢¤ê¡¢É¬¤º¤³¤Î½çÈ֤Ǥ¢¤ë¡£Á°¤Î»°¤Ä¤ÎÃʳ¬¤Ï¸Ä¡¹¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ËÂФ·¤ÆÅ¬ÍѤµ¤ì¡¢¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ÎÀ¸À®¤Ç½ª¤ï¤ë¡£¥ê¥ó¥¯¤Ç¤Ï¡¢Á´¤Æ¤Î¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë(¿·¤·¤¯¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¡¢ÆþÎϤȤ·¤Æ¤·¤Æ¤¤¤µ¤ì¤¿¤â¤Î)¤òÁȤ߹ç¤ï¤»¤Æ¡¢°ì¤Ä¤Î¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤òºî¤ë¡£
»ØÄꤵ¤ì¤¿ÆþÎÏ¥Õ¥¡¥¤¥ëËè¤Ë¡¢¥Õ¥¡¥¤¥ë̾¤Î¥µ¥Õ¥£¥Ã¥¯¥¹¤«¤é¥³¥ó¥Ñ¥¤¥ë²áÄø¤Î¤É¤ì¤¬¼Â¹Ô¤µ¤ì¤ë¤«¤¬·èÄꤵ¤ì¤ë¡£
file.c
file.i
file.ii
file.m
libobjc.a ¤ò¥ê¥ó¥¯¤¹¤ëɬÍפ¬¤¢¤ë¤³¤È¤ËÃí°Õ¡£
file.h
file.cc
file.cxx
file.cpp
file.C
.cxx ¤ÎºÇ¸å¤ÎÆóʸ»ú¤Ï»úÌ̤ɤª¤ê x ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£Æ±¤¸¤¯¡¢.C ¤Ï»úÌ̤ɤª¤ê¤ÎÂçʸ»ú¤Î C ¤Ç¤¢¤ë¡£
file.s
file.S
other
-x ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤ÇÆþÎϤθÀ¸ì¤òÌÀ¼¨Åª¤Ë»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤ë¡£
-x language
-x ¥ª¥×¥·¥ç¥ó¤¬¸½¤ì¤ë¤Þ¤Ç¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤ËÂФ·¤ÆÅ¬ÍѤµ¤ì¤ë¡£language ¤Ë»ØÄê¤Ç¤¤ëÃͤϰʲ¼¤Î¤È¤ª¤ê¡£
c objective-c c++ c-header cpp-output c++-cpp-output assembler assembler-with-cpp
-x none
-x ¥ª¥×¥·¥ç¥ó¤¬Á´¤¯»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¤Î¤ÈƱ¤¸¤è¤¦¤Ë)½èÍý¤µ¤ì¤ë¡£¥³¥ó¥Ñ¥¤¥ë²áÄø¤Î°ìÉôʬ¤À¤±¼Â¹Ô¤·¤¿¤¤¾ì¹ç¤Ï¡¢-x (¤Þ¤¿¤Ï¥Õ¥¡¥¤¥ë̾¥µ¥Õ¥£¥Ã¥¯¥¹) ¤ò»È¤Ã¤Æ³«»Ï¤¹¤ëÃʳ¬¤ò»ØÄꤹ¤ë¤³¤È¤¬½ÐÍè¤ë¡£¤É¤ÎÃʳ¬¤Ç½ªÎ»¤¹¤ë¤«¤Ï¡¢¥ª¥×¥·¥ç¥ó -c¡¢-S¡¢-E ¤Î¤É¤ì¤«°ì¤Ä¤ò»È¤Ã¤Æ»ØÄꤹ¤ë¡£Áȹ礻¤Ë¤è¤Ã¤Æ¤Ï(Î㤨¤Ð¡¢-x cpp-output -E)¡¢gcc ¤Ï²¿¤â¤·¤Ê¤¤¤³¤È¤¬¤¢¤ë¡£
-c
¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë̾¤Ï¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë̾¤Î¥µ¥Õ¥£¥Ã¥¯¥¹ .c¡¢.i¡¢.s Åù¤ò .o ¤ËÃÖ¤´¹¤¨¤¿¤â¤Î¤Ë¤Ê¤ë¡£
ǧ¼±¤Ç¤¤Ê¤¤ÆþÎÏ¥Õ¥¡¥¤¥ë¤Ç¡¢¥³¥ó¥Ñ¥¤¥ë¤ä¥¢¥»¥ó¥Ö¥ë¤¬Í׵ᤵ¤ì¤Ê¤¤¤â¤Î¤Ï̵»ë¤µ¤ì¤ë¡£
-S
¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥¢¥»¥ó¥Ö¥é¥Õ¥¡¥¤¥ë̾¤Ï¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë̾¤Î¥µ¥Õ¥£¥Ã¥¯¥¹ .c¡¢.i Åù¤ò .s ¤ËÃÖ¤´¹¤¨¤¿¤â¤Î¤Ë¤Ê¤ë¡£
¥³¥ó¥Ñ¥¤¥ë¤òɬÍפȤ·¤Ê¤¤ÆþÎÏ¥Õ¥¡¥¤¥ë¤Ï̵»ë¤µ¤ì¤ë¡£
-E
¥×¥ê¥×¥í¥»¥¹¤òɬÍפȤ·¤Ê¤¤ÆþÎÏ¥Õ¥¡¥¤¥ë¤Ï̵»ë¤µ¤ì¤ë¡£
-o file
½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï°ì¤Ä¤·¤«»ØÄê¤Ç¤¤Ê¤¤¤Î¤Ç¡¢Ê£¿ô¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¾ì¹ç¤Ë-o ¤ò»ØÄꤹ¤ë¤Î¤Ï¡¢¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤ò½ÐÎϤȤ¹¤ë¾ì¹ç¤·¤«°ÕÌ£¤¬¤Ê¤¤¡£
-o ¤Î»ØÄ꤬¤Ê¤¤¾ì¹ç¤Ï¡¢¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤Ï a.out ¤È¤¤¤¦Ì¾Á°¤Ç¡¢source.suffix ¤È¤¤¤¦¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Î¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Ï¡¢source.o ¤È¤¤¤¦Ì¾Á°¤Ç¡¢¥¢¥»¥ó¥Ö¥é¥Õ¥¡¥¤¥ë¤Ïsource.s ¤È¤¤¤¦Ì¾Á°¤Çºî¤é¤ì¡¢¥×¥ê¥×¥í¥»¥¹¤·¤¿ C ¤Î¥½¡¼¥¹¤Ï¡¢É¸½à½ÐÎϤ˽ÐÎϤµ¤ì¤ë¡£
-v
-pipe
--help
gcc ¤¬Íý²ò¤¹¤ë¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤ÎÀâÌÀ¤òɸ½à½ÐÎϤËɽ¼¨¤¹¤ë¡£¹ç¤ï¤»¤Æ -v ¥ª¥×¥·¥ç¥ó¤â»ØÄꤹ¤ë¤È¡¢--help ¤Ïgcc ¤¬µ¯Æ°¤¹¤ë¿§¡¹¤Ê¥×¥í¥»¥¹¤Ë¤âÅϤµ¤ì¤Î¤Ç¡¢ÅϤµ¤ì¤¿¥×¥í¥»¥¹¤Ï¼õÉÕ²Äǽ¤Ê¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤òɽ¼¨¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£-W ¥ª¥×¥·¥ç¥ó¤ò°ì½ï¤Ë»ØÄꤹ¤ë¤È¡¢ÀâÌÀ¤¬ÍѰդµ¤ì¤Æ¤¤¤Ê¤¤¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤âɽ¼¨¤µ¤ì¤ë¡£C++ ¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë̾¤ÏÉáÄ̤ϥµ¥Õ¥£¥Ã¥¯¥¹¤¬¡¢.C¤«.cc¡¢.cpp¡¢.c++¡¢.cp¡¢.cxx ¤Î¤É¤ì¤«¤Ë¤Ê¤ë¡£¥×¥ê¥×¥í¥»¥¹ºÑ¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢.ii ¤È¤¤¤¦¥µ¥Õ¥£¥Ã¥¯¥¹¤Ë¤Ê¤ë¡£GCC ¤Ï¤³¤Î¤è¤¦¤Ê̾Á°¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤òǧ¼±¤·¡¢¥³¥ó¥Ñ¥¤¥é¤ò C ¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¤ÈƱ¤¸ÊýË¡¤Çµ¯Æ°¤·¤Æ¤â(gcc ¤È¤¤¤¦Ì¾Á°¤ò»È¤Ã¤Æ¤â)¡¢C++ ¤Î¥×¥í¥°¥é¥à¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤Ê¤¦¡£
¤·¤«¤·¡¢C++ ¥×¥í¥°¥é¥à¤Ï C++ ¸À¸ì¤òÍý²ò¤¹¤ë¥³¥ó¥Ñ¥¤¥é¤À¤±¤Ç¤Ï¤Ê¤¯¡¢¥¯¥é¥¹¥é¥¤¥Ö¥é¥ê¤òɬÍפȤ¹¤ë¤³¤È¤¬Â¿¤¤¡£¤Þ¤¿¡¢¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¡¢É¸½àÆþÎϤ«¤éÆÉ¤ß¹þ¤ó¤À¥×¥í¥°¥é¥à¤ä¡¢C++ ¥×¥í¥°¥é¥à¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹¥µ¥Õ¥£¥Ã¥¯¥¹¤ò»ý¤¿¤Ê¤¤¥Õ¥¡¥¤¥ë¤Ë¤¢¤ë¥×¥í¥°¥é¥à¤ò¡¢C++ ¥×¥í¥°¥é¥à¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤¤¤³¤È¤â¤¢¤ë¤À¤í¤¦¡£¤½¤Î¤è¤¦¤Ê¾ì¹ç¸þ¤±¤Ë¡¢g++ ¤È¤¤¤¦¥×¥í¥°¥é¥à¤¬¤¢¤ê¡¢¥Ç¥Õ¥©¥ë¥È¤Î¸À¸ì¤ò C++ ¤ËÀßÄꤷ¤¿¤¦¤¨¤Ç GCC ¤ò¸Æ¤Ó½Ð¤·¡¢¤µ¤é¤ËC++ ¥é¥¤¥Ö¥é¥ê¤ò¼«Æ°Åª¤Ë¥ê¥ó¥¯¤¹¤ë¡£Â¿¤¯¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢g++ ¤È¤¤¤¦¥¹¥¯¥ê¥×¥È¤Ï¡¢c++ ¤È¤¤¤¦Ì¾Á°¤Ç¤â¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¡£(ÌõÃí: g++ ¤Ï¡¢¸½ºß¤Ï¥¹¥¯¥ê¥×¥È¤Ç¤Ï¤Ê¤¯¡¢¼Â¹Ô·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£)
C++ ¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ï¡¢Â¾¤ÎǤ°Õ¤Î¸À¸ì¤Î¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë»È¤¦¤Î¤ÈƱ¤¸¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤Î¿¤¯¤¬»ÈÍѲÄǽ¤Ç¤¢¤ë¡£¤¢¤ë¤¤¤Ï¡¢C ¤È¤½¤ì¤Ë´Ø·¸¤¹¤ë¸À¸ì¤Ç°ÕÌ£¤Î¤¢¤ë¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤ë¡£¤¢¤ë¤¤¤Ï¡¢C++ ¥×¥í¥°¥é¥à¤Î¤ß¤Ç°ÕÌ£¤ò»ý¤Ä¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤ë¡£C ¤Ë´Ø·¸¤¹¤ë¸À¸ì¸þ¤±¤Î¥ª¥×¥·¥ç¥ó¤ÎÀâÌÀ¤Ï¡¢See Options Controlling C Dialect. C++ ¥×¥í¥°¥é¥à¤Ç¤Î¤ß°ÕÌ£¤ò»ý¤Ä¥ª¥×¥·¥ç¥ó¤ÎÀâÌÀ¤Ï¡¢See Options Controlling C++ Dialect.
°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤¬¼õ¤±ÉÕ¤±¤ë¡¢C(¤¢¤ë¤¤¤Ï¡¢C++ ¤äObjective C ¤Î¤è¤¦¤Ë C ¤«¤éƳ½Ð¤µ¤ì¤¿¸À¸ì)¤ÎÊý¸À¤òÀ©¸æ¤¹¤ë¡£
-ansi
C ¥â¡¼¥É¤Ç¤Ï¡¢ANSI C µ¬³Ê¤Î C ¥×¥í¥°¥é¥à¤òÁ´¤Æ¥µ¥Ý¡¼¥È¤¹¤ë¡£C++ ¥â¡¼¥É¤Ç¤Ï ANSI C++ ¤Ë¹çÃפ·¤Ê¤¤ GNU ¤Î³ÈÄ¥µ¡Ç½¤òºï½ü¤¹¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢ANSI C µ¬³Ê(C ¸À¸ì¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤)¡¢¤¢¤ë¤¤¤Ï ANSI C++ µ¬³Ê(C++ ¸À¸ì¤Î¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤)
¤È¸ß´¹À¤Î¤Ê¤¤ GCC ¤Îµ¡Ç½¤ò¥ª¥Õ¤Ë¤¹¤ë¡£¥ª¥Õ¤Ë¤Ê¤ëµ¡Ç½¤Ï¡¢¥¡¼¥ï¡¼¥É asm¡¢typeof¡¢¥·¥¹¥Æ¥à¤Î·Á¼°¤òÆÃÄꤹ¤ë unix ¤ä vax Åù¤ÎÄêµÁºÑ¥Þ¥¯¥íÅù¤¬¤¢¤ë¡£¤Þ¤¿¡¢¹¥¤Þ¤·¤¯¤Ê¤¤¡¢ÌÇ¿¤Ë»È¤ï¤ì¤ë¤³¤È¤Î¤Ê¤¤ ANSI ¤Î¥È¥ê¥°¥é¥Õ¤Îµ¡Ç½¤ò͸ú¤Ë¤¹¤ë¡£C ¥³¥ó¥Ñ¥¤¥é¤Î¾ì¹ç¤Ï¡¢C++ ·Á¼°¤Î // ¤Ë¤è¤ë¥³¥á¥ó¥È¤ä¥¡¼¥ï¡¼¥É inline ¤ò̵¸ú¤Ë¤¹¤ë¡£C++ ¥³¥ó¥Ñ¥¤¥é¤Î¾ì¹ç¤Ï¡¢-foperator-names ¤¬Í¸ú¤Ë¤Ê¤ë¡£
-ansi ¤ò»ØÄꤷ¤Æ¤â¡¢Ê̤ηÁ¤Î¥¡¼¥ï¡¼¥É __asm__¡¢__extension__¡¢__inline__¡¢__typeof__ ¤Ï»ÈÍѲÄǽ¤Ç¤¢¤ë¡£¤â¤Á¤í¤ó¡¢¤³¤¦¤¤¤Ã¤¿¥¡¼¥ï¡¼¥É¤ò ANSI C ¥×¥í¥°¥é¥à¤Ç»È¤¦¤³¤È¤Ï¤Ê¤¤¤À¤í¤¦¤¬¡¢-ansi ¤Ä¤¤Ç¹Ô¤Ê¤ï¤ì¤ë¥³¥ó¥Ñ¥¤¥ë¤ÎºÝ¤Ë¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤ë²ÄǽÀ¤Î¤¢¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç»È¤¦¤ÈÊØÍø¤Ç¤¢¤ë¡£Ê̤ηÁ¤ÎÄêµÁºÑ¥Þ¥¯¥í¡¢__unix__ ¤ä __vax__ ¤¬¡¢-ansi ¤ÎÍ̵¤Ë´Ø¤ï¤é¤º¡¢»ÈÍѲÄǽ¤Ç¤¢¤ë¡£
-ansi ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤À¤±¤Ç¤Ï¡¢Èó ANSI ¥×¥í¥°¥é¥à¤ò¤¤¤ï¤ì¤Ê¤¯µñÀ䤹¤ë¤³¤È¤Ï¤Ê¤¤¡£µñÀ䤹¤ë¤Ë¤Ï¡¢-ansi ¤Ë²Ã¤¨¤Æ-pedantic ¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¡£See Warning Options.
-ansi ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢¥Þ¥¯¥í __STRICT_ANSI__ ¤¬ÄêµÁºÑ¤È¤Ê¤ë¡£¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¤Ï¡¢¤³¤Î¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤È¡¢ANSI µ¬³Ê¤Ç¤Ï»ÈÍѤ·¤Ê¤¤´Ø¿ô¤ÎÀë¸À¤ä¥Þ¥¯¥í¤ÎÄêµÁ¤ò¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤â¤Î¤â¤¢¤ë¡£¤³¤ì¤Ï¡¢¤½¤Î¤è¤¦¤Ê´Ø¿ô¤ä¥Þ¥¯¥í¤Î̾Á°¤òÊ̤Τâ¤Î¤Ë»È¤Ã¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¥×¥í¥°¥é¥à¤È¤Î´³¾Ä¤òÈò¤±¤ë¤¿¤á¤Ç¤¢¤ë¡£
´Ø¿ô alloca¡¢abort¡¢exit¡¢_exit ¤Ï-ansi ¤¬»ØÄꤵ¤ì¤ë¤ÈÁȤ߹þ¤ß´Ø¿ô¤Ç¤Ï¤Ê¤¯¤Ê¤ë¡£
-flang-isoc9x
restrict ¤Î¥µ¥Ý¡¼¥È¤ò͸ú¤Ë¤¹¤ë¡£
-fstd=
¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ç¤â¡¢°ÊÁ°¤Î C µ¬³Ê¤ÈÌ·½â¤·¤Ê¤¤¸Â¤ê¡¢¤è¤ê¿·¤·¤¤µ¬³Ê¤Î´ö¤Ä¤«¤Îµ¡Ç½¤ò»È¤¦¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£Î㤨¤Ð¡¢-fstd=c9x ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ç¤â__restrict__ ¤ò»È¤Ã¤ÆÎɤ¤¡£
-fno-asm
asm¡¢inline¡¢typeof ¤ò¥¡¼¥ï¡¼¥É¤È¤·¤ÆÇ§¼±¤·¤Ê¤¤¡£¤³¤ì¤é¤Î̾Á°¤Ï¼±Ê̻ҤȤ·¤Æ»ÈÍѲÄǽ¤Ë¤Ê¤ë¡£Âؤï¤ê¤Ë¡¢__asm__¡¢__inline__¡¢__typeof__ ¤¬¥¡¼¥ï¡¼¥É¤È¤·¤Æ»È¤¨¤ë¡£-ansi ¤ò»ØÄꤹ¤ë¤È -fno-asm ¤â͸ú¤Ë¤Ê¤ë¡£
C++ ¤Ç¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥¡¼¥ï¡¼¥É typeof ¤Ë¤À¤±±Æ¶Á¤¬¤¢¤ë¡£C++ ¤Ç¤Ï¡¢asm ¤È inline ¤Ï¡¢µ¬³Ê¤Ë¤¢¤ë¥¡¼¥ï¡¼¥É¤À¤«¤é¤Ç¤¢¤ë¡£¥¡¼¥ï¡¼¥É typeof ¤òǧ¼±¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Ë¤ÏÂå¤ï¤ê¤Ë-fno-gnu-keywords ¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¤âÎɤ¤¡£¤½¤Î¾ì¹ç¤Ï¡¢typeof ¤Î¾¤Ë¡¢headof ¤ÎÍÍ¤Ê C++ ¤Ë¸ÇͤγÈÄ¥¥¡¼¥ï¡¼¥É¤âǧ¼±¤·¤Ê¤¤¤è¤¦¤Ë¤Ê¤ë¡£
-fno-builtin
__builtin_ ¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤Ê¤¤¤â¤Î¤òǧ¼±¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¡£¸½ºß¡¢±Æ¶Á¤ò¼õ¤±¤ë´Ø¿ô¤Ï¡¢abort¡¢abs¡¢alloca¡¢cos¡¢exit¡¢fabs¡¢ffs¡¢labs¡¢memcmp¡¢memcpy¡¢sin¡¢sqrt¡¢strcmp¡¢strcpy¡¢strlen
¤Ç¤¢¤ë¡£
GCC ¤Ï¡¢Ä̾¤¤¤¯¤Ä¤«¤ÎÁȤ߹þ¤ß´Ø¿ô¤ò¤è¤ê¸úΨÎɤ¯°·¤¦¤è¤¦¤ÊÆÃÊ̤ʥ³¡¼¥É¤òÀ¸À®¤¹¤ë¡£Î㤨¤Ð¡¢alloca ¤Î¸Æ¤Ó½Ð¤·¤Ï¥¹¥¿¥Ã¥¯¤òľÀÜÄ´À°¤¹¤ë°ì¸Ä¤ÎÌ¿Îá¤ÇÃÖ¤´¹¤¨¤é¤ì¤¿¤ê¡¢memcpy ¤Î¸Æ¤Ó¤À¤·¤¬¥³¥Ô¡¼¤ò¹Ô¤Ê¤¦¥ë¡¼¥×¤Ë¥¤¥ó¥é¥¤¥óŸ³«¤µ¤ì¤ë¤³¤È¤â¤¢¤ë¡£À¸À®¤µ¤ì¤ë¥³¡¼¥É¤Ï¡¢¾®¤µ¤¯¹â®¤Ç¤¢¤ë¤³¤È¤¬Â¿¤¤¤¬¡¢´Ø¿ô¸Æ¤Ó½Ð¤·¤Ï¤â¤Ï¤ä¸½¤ì¤Ê¤¤¤Î¤Ç¡¢¤³¤¦¤¤¤¦¸Æ¤Ó¤À¤·¤Ë¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¤òÀßÄê¤Ç¤¤Ê¤¯¤Ê¤Ã¤¿¤ê¡¢Ê̤Υ饤¥Ö¥é¥ê¤ò¥ê¥ó¥¯¤¹¤ë¤³¤È¤Ç¤½¤Î´Ø¿ô¤Îưºî¤òÊѤ¨¤ë¤³¤È¤¬¤Ç¤¤Ê¤¯¤Ê¤Ã¤¿¤ê¤¹¤ë¡£
-ansi ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢alloca ¤È ffs ¤ÏÁȤ߹þ¤ß´Ø¿ô¤Ç¤Ï¤Ê¤¯¤Ê¤ë¡£¤³¤ì¤é¤Î´Ø¿ô¤Ï ANSI µ¬³Ê¤Ç¤Ïµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
-fhosted
¥Û¥¹¥È´Ä¶¤Ç¥³¥ó¥Ñ¥¤¥ë¤¬¹Ô¤Ê¤ï¤ì¤Æ¤¤¤ë¤³¤È¤ò¥¢¥µ¡¼¥È¤¹¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢-fbuiltin ¤â°ÅÌۤ˻ØÄꤵ¤ì¤ë¡£¥Û¥¹¥È´Ä¶¤È¤Ï¡¢¤½¤³¤ÇÁ´É¸½à¥é¥¤¥Ö¥é¥ê¤¬ÍøÍѲÄǽ¤Ç¤¢¤ê¡¢main ¤ÎÌá¤êÃÍ·¿¤¬ int ¤Ç¤¢¤ë¤è¤¦¤Ê´Ä¶¤Ç¤¢¤ë¡£Îã¤È¤·¤Æ¤Ï¡¢OS ¤Î¥«¡¼¥Í¥ë°Ê³°¤Ï¤Û¤È¤ó¤É¤Ê¤ó¤Ç¤âÅö¤Æ¤Ï¤Þ¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢-fno-freestanding ¤ÈÅù²Á¤Ç¤¢¤ë¡£
-ffreestanding
¸ÉΩ¤·¤¿´Ä¶¤Ç¥³¥ó¥Ñ¥¤¥ë¤¬¹Ô¤Ê¤ï¤ì¤Æ¤¤¤ë¤³¤È¤ò¥¢¥µ¡¼¥È¤¹¤ë¡£¸ÉΩ¤·¤¿´Ä¶¤È¤Ï¡¢É¸½à¥é¥¤¥Ö¥é¥ê¤¬¤Ê¤¤²ÄǽÀ¤¬¤¢¤ê¡¢¥×¥í¥°¥é¥à¤Îµ¯Æ°¤¬É¬¤º¤·¤â main ¤«¤é»Ï¤Þ¤é¤Ê¤¤²ÄǽÀ¤¬¤¢¤ë´Ä¶¤Ç¤¢¤ë¡£ºÇ¤â¤ï¤«¤ê¤ä¤¹¤¤Îã¤Ï¡¢OS ¤Î¥«¡¼¥Í¥ë¤Ç¤¢¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢-fno-hosted ¥ª¥×¥·¥ç¥ó¤ÈÅù²Á¤Ç¤¢¤ë¡£
-trigraphs
-ansi ¤ò»ØÄꤹ¤ë¤È¡¢-trigraphs ¤¬Í¸ú¤Ë¤Ê¤ë¡£
-traditional
extern Àë¸À¤¬¡¢´Ø¿ôÄêµÁ¤ÎÃæ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤Ã¤Æ¤â¡¢¥°¥í¡¼¥Ð¥ë¤È¤·¤Æ°·¤ï¤ì¤ë¡£¤³¤ì¤Ï¡¢°ÅÌۤδؿôÀë¸À¤â´Þ¤à¡£
typeof¡¢inline¡¢signed¡¢const¡¢volatile ¤òǧ¼±¤·¤Ê¤¤¡£(¤³¤ì¤é¤ÎÂå¤ï¤ê¤È¤·¤Æ¡¢__typeof__¡¢__inline__ Åù¤ò°ú¤Â³¤»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£)
unsigned short ¤È unsigned char ¤Ï¡¢unsigned int ¤Ë³Ê¾å¤²¤µ¤ì¤ë¡£
0xe-0xd ¤ò¡¢Âå¤ï¤ê¤Ë¼°¤È¤·¤Æ¼è¤ê°·¤¦¡£
-fwritable-strings ¥ª¥×¥·¥ç¥ó¤ÈƱ¤¸¸ú²Ì¤Ç¤¢¤ë¡£)
register Àë¸À¤µ¤ì¤Æ¤¤¤Ê¤¤¼«Æ°ÊÑ¿ô¤ÏÁ´¤Æ longjmp ¤Ë¤è¤êÊݸ¤µ¤ì¤ë¡£Ä̾ï¤Ï¡¢GNU C ¤Ï ANSI C ¤Ë½¾¤¦¡£¤Ä¤Þ¤ê¡¢volatile
Àë¸À¤µ¤ì¤Æ¤¤¤Ê¤¤¼«Æ°ÊÑ¿ô¤Ï¡¢Ç˲õ¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£
\x ¤È \a ¤Ï¡¢¤½¤ì¤¾¤ì¥ê¥Æ¥é¥ëʸ»ú¡¢x ¤È a ¤È¤·¤ÆÉ¾²Á¤µ¤ì¤ë¡£-traditional ¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ï¡¢\x ¤Ï¡¢¤¢¤ëʸ»ú¤Î16¿Êɽ¸½¤ÎÀÜÆ¬¼¤È¤Ê¤ê¡¢\a ¤Ï¥Ù¥ë¤òÀ¸À®¤¹¤ë¡£¼«Ê¬¤Î¥×¥í¥°¥é¥à¤Ç¡¢Ä̾ï¤Ï GNU C ¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ç¤¢¤ë̾Á°¤ò¤½¤Î¥×¥í¥°¥é¥à¸ÇͤÎÊ̤ÎÌÜŪ¤Ç»È¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢-traditional
¤Î¾¤Ë -fno-builtin ¤ò»È¤¦É¬Íפ¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
ANSI C ¤Îµ¡Ç½¤ò»È¤Ã¤Æ¤¤¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¾ì¹ç¤Ï¡¢-traditional ¤ò»È¤¦¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£¤¤¤¯¤Ä¤«¤Î¥Ù¥ó¥À¤Ï¡¢ANSI C ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆþ¤ì¤¿¥·¥¹¥Æ¥à¤ò½Ð²Ù¤·»Ï¤á¤Æ¤¤¤ë¤Î¤Ç¡¢¤½¤¦¤¤¤¦¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥·¥¹¥Æ¥à¤Î¥Ø¥Ã¥À¤ò°ì¤Ä¤Ç¤â¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë¤Ï¡¢-traditional
¤Ï»È¤¨¤Ê¤¤¤Î¤Ç¤¢¤ë¡£
-traditional ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È -traditional-cpp ¤â͸ú¤Ë¤Ê¤ë¡£¤³¤ì¤Ë¤Ä¤¤¤Æ¤Ï¼¡¤ÇÀâÌÀ¤¹¤ë¡£
-traditional-cpp
# ¤¬¹ÔƬ¤ËÃÖ¤¯É¬Íפ¬¤¢¤ë¡£
__STDC__ ¤Ï¡¢-traditional ¤ò»ØÄꤹ¤ë¤ÈÄêµÁ¤µ¤ì¤Ê¤¤¤¬¡¢__GNUC__ ¤ÏÄêµÁ¤µ¤ì¤ë¡£(¤Ê¤¼¤Ê¤é¡¢__GNUC__ ¤¬»Ø¼¨¤¹¤ë GNU ¤Î³ÈÄ¥¤Ï¡¢-traditional
¤Ë¤è¤Ã¤Æ±Æ¶Á¤µ¤ì¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£)
-traditional ¤¬»ØÄꤵ¤ì¤ë¤«¤É¤¦¤«¤Ë°Í¸¤·¤Æ°Û¤Ê¤ëưºî¤ò¤¹¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò½ñ¤¯É¬Íפ¬¤¢¤ë¾ì¹ç¤Ï¡¢¤³¤ÎξÊý¤ÎÄêµÁºÑ¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤ë¤³¤È¤Ç¡¢¼¡¤Î»Í¤Ä¤Î¾ì¹ç¤ò¶èÊ̤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤¹¤Ê¤ï¤Á¡¢GNU C¡¢GNU ¤ÎµìÍè¤Î C¡¢Â¾¤Î ANSI C ¥³¥ó¥Ñ¥¤¥é¡¢Â¾¤ÎµìÍè¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ç¤¢¤ë¡£ÄêµÁºÑ¥Þ¥¯¥í __STDC_VERSION__ ¤â¤Þ¤¿¡¢-traditional ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ë¤ÏÄêµÁ¤µ¤ì¤Ê¤¤¡£¤³¤ì¤é¤ò´Þ¤àÄêµÁºÑ¥Þ¥¯¥í¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï See Standard Predefined.
\ ¤ÇÊݸ¤ì¤Æ¤¤¤Ê¤¤¸Â¤ê)¡£(-traditonal ¤òÉÕ¤±¤Ê¤¤¤È¡¢Ê¸»úÎóÄê¿ô¤Ë¤Ï»úÌ̤ɤª¤ê¤Ë²þ¹Ôʸ»ú¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤ë¡£)
-fcond-mismatch
-funsigned-char
char ·¿¤ò¡¢unsigned char ¤Î¤è¤¦¤ËÉ乿¤Ê¤·¤È¤¹¤ë¡£
³Æµ¡¼ï¤Ë¤è¤ê¡¢char ¤Î¥Ç¥Õ¥©¥ë¥È¤¬¤É¤¦¤¢¤ë¤Ù¤¤«¤¬·è¤Þ¤Ã¤Æ¤¤¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢unsigned char ¤Î¤è¤¦¤Ë¤Ê¤ë¤«¡¢signed char ¤Î¤è¤¦¤Ë¤Ê¤ë¤«¤Î¤É¤Á¤é¤«¤Ç¤¢¤ë¡£
ÍýÁÛŪ¤Ë¤Ï¡¢°Ü¿¢À¤ÎÎɤ¤¥×¥í¥°¥é¥à¤Ë¤¹¤ë¤Ê¤é¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÉ乿¤Î°ÕÌ£¤Ë¤è¤Ã¤Æ¡¢É¬¤º signed char ¤« unsigned char ¤Î¤É¤Á¤é¤«¤ò»È¤¦¤Ù¤¤Ç¤¢¤ë¡£¤À¤¬¡¢¤¿¤¯¤µ¤ó¤Î¥×¥í¥°¥é¥à¤¬Ã±¤Ê¤ë char
·¿¤ò»È¤Ã¤Æ½ñ¤«¤ì¤Æ¤ª¤ê¡¢¤½¤ì¤¬½ñ¤«¤ì¤¿¥Þ¥·¥ó¤Ë°Í¸¤·¤Æ¡¢É乿ÉÕ¤¤«¡¢É乿¤Ê¤·¤«¤Ç¤¢¤ë¤«¤òÁÛÄꤷ¤Æ¤¤¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤È¡¢¤³¤ì¤ÎµÕ¤Î¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¡¢¥Ç¥Õ¥©¥ë¥È¤¬È¿ÂФˤʤäƤ¤¤ë¥Þ¥·¥ó¤Ç¥×¥í¥°¥é¥à¤òưºî¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤ë¡£
char ·¿¤Ï¾ï¤Ë signed char ¤È¤â unsigned char ¤È¤â°Û¤Ê¤ë·¿¤Ç¤¢¤ë¡£¤¿¤È¤¨¡¢Æ°ºî¤¬É¬¤º¤É¤Á¤é¤«°ìÊý¤ÈƱ¤¸¤Ç¤¢¤Ã¤Æ¤â¡£
-fsigned-char
char ·¿¤ò¡¢signed char ¤Î¤è¤¦¤ËÉ乿¤Ä¤¤È¤¹¤ë¡£
¤³¤ì¤Ï¡¢-fno-unsigned-char ¤ÈƱ¤¸¤Ç¤¢¤ê¡¢-funsigned-char
¤ÎÈÝÄê·Á¤Ç¤¢¤ë¡£Æ±Íͤˡ¢-fno-signed-char ¤Ï -funsigned-char ¤ÈƱ¤¸¤Ç¤¢¤ë¡£
-fsigned-bitfields
-funsigned-bitfields
-fno-signed-bitfields
-fno-unsigned-bitfields
signed ¤â unsigned
¤â»È¤Ã¤Æ¤¤¤Ê¤¤¤È¤¤Ë¡¢¤½¤Î¥Ó¥Ã¥È¥Õ¥£¡¼¥ë¥É¤¬É乿ÉÕ¤¤È¤Ê¤ë¤«É乿¤Ê¤·¤È¤Ê¤ë¤«¤òÀ©¸æ¤¹¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¤½¤Î¤è¤¦¤Ê¥Ó¥Ã¥È¥Õ¥£¡¼¥ë¥É¤ÏÉ乿ÉÕ¤¤Ç¤¢¤ë¡£²¿¸Î¤Ê¤é¡¢¤½¤¦¤¹¤ë¤È¼óÈø°ì´Ó¤¹¤ë¤«¤é¤Ç¤¢¤ë¡£int ¤Î¤è¤¦¤Ê´ðËÜÀ°¿ô·¿¤ÏÉ乿ÉÕ¤¤Î·¿¤Ç¤¢¤ë¡£
¤À¤¬¡¢-traditional ¤ò»ØÄꤹ¤ë¤È¡¢¥Ó¥Ã¥È¡¼¥Õ¥£¡¼¥ë¥É¤Ï²¿¤¬¤¢¤í¤¦¤ÈÁ´¤ÆÉ乿¤Ê¤·¤Ë¤Ê¤ë¡£
-fwritable-strings
-traditional ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤â¤³¤Îµ¡Ç½¤¬Í¸ú¤Ë¤Ê¤ë¡£
ʸ»úÎóÄê¿ô¤Ë½ñ¤¹þ¤â¤¦¤È¤¹¤ë¤Î¤ÏÁ´¤¯¤Î´Ö°ã¤¤¤Ç¤¢¤ë¡£¡ÖÄê¿ô¡×¤ÏÄê¿ô¤Ç¤¢¤ë¤Ù¤¤Ê¤Î¤À¡£
-fallow-single-precision
-traditional ¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¾ì¹ç¤Ç¤â¡¢Ã±ÀºÅ٤οô³Ø±é»»¤òÇÜÀºÅ٤˳ʾ夲¤·¤Ê¤¤
K&R C ¤Ç¤Ï¡¢¥ª¥Ú¥é¥ó¥É¤Î¥µ¥¤¥º¤Ë´Ø¤ï¤é¤º¤Ë¡¢Á´¤Æ¤ÎÉâÆ°¾®¿ôÅÀ±é»»¤òÇÜÀºÅ٤˳ʾ夲¤¹¤ë¡£¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ë¤è¤Ã¤Æ¤Ï¡¢Ã±ÀºÅÙ¤ÎÊý¤¬ÇÜÀºÅÙ¤è¤ê®¤¤¤³¤È¤¬¤¢¤ë¡£-traditional ¥ª¥×¥·¥ç¥ó¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¾ì¹ç¤Ç¡¢¤«¤Ä¡¢¥ª¥Ú¥é¥ó¥É¤¬Ã±ÀºÅ٤ξì¹ç¤Ë¤ÏñÀºÅ٤α黻¤ò»ÈÍѤ·¤¿¤±¤ì¤Ð¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ì¤ÐÎɤ¤¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï ANSI ¤Þ¤¿¤Ï GNU C ¤Îµ¬Ìó(¥Ç¥Õ¥©¥ë¥È)¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢Æ°ºî¤Ë±Æ¶Á¤Ï¤Ê¤¤¡£
¤³¤ÎÀá¤Ç¤Ï¡¢C++ ¥×¥í¥°¥é¥à¤Î¾ì¹ç¤Ë¤Î¤ß°ÕÌ£¤Î¤¢¤ë¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó¤òÀâÌÀ¤¹¤ë¡£¤À¤¬¡¢GNU ¥³¥ó¥Ñ¥¤¥é¤Î¥ª¥×¥·¥ç¥ó¤ÎÂçÉôʬ¤Ï¡¢¥×¥í¥°¥é¥à¤Î¸À¸ì¤¬²¿¤Ç¤¢¤ë¤«¤Ë´Ø¤ï¤é¤º»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£Î㤨¤Ð¡¢firstClass.C ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò°Ê²¼¤Î¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë½ÐÍè¤ë¡£
g++ -g -frepo -O -c firstClass.C
¤³¤ÎÎã¤Ç¤Ï¡¢-frepo ¤À¤±¤¬¡¢C++ ¥×¥í¥°¥é¥à¤Î¾ì¹ç¤Ë¤À¤±°ÕÌ£¤ò»ý¤Ä¥ª¥×¥·¥ç¥ó¤Ç¤¢¤ë¡£Â¾¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢GCC ¤¬¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤É¤Î¸À¸ì¤Ç¤â»ÈÍѤǤ¤ë¡£
°Ê²¼¤Î¥ê¥¹¥È¤Ï¡¢C++ ¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¤Ë¤Î¤ß°ÕÌ£¤Î¤¢¤ë¥ª¥×¥·¥ç¥ó¤Ç¤¢¤ë¡£
-fno-access-control
-fcheck-new
operatr new ¤Ë¤è¤êÊÖ¤µ¤ì¤ë¥Ý¥¤¥ó¥¿¤¬¥Ì¥ë¤Ç¤Ê¤¤¤³¤È¤ò¡¢³ÎÊݤ·¤¿Îΰè¤òÊѹ¹¤¹¤ëÁ°¤Ë¡¢¸¡ºº¤¹¤ë¡£ºÇ¿·¤Î ANSI C++ ¤Î "Working Paper" ¤Ç¤Ï¡¢operator new ¤Ï·è¤·¤Æ¥Ì¥ë¥Ý¥¤¥ó¥¿¤òÊÖ¤µ¤Ê¤¤¤³¤È¤òÍ׵ᤷ¤Æ¤¤¤ë¤Î¤Ç¡¢¤³¤Î¸¡ºº¤ÏÉáÄ̤ÏɬÍפǤʤ¤¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤ÎÂå¤ï¤ê¤È¤Ê¤ëÊýË¡¤È¤·¤Æ¤Ï¡¢¼«ºî¤Î operator new
¤¬¤Ê¤ó¤éÎã³°¤òÅꤲ¤Ê¤¤¤È»ØÄꤹ¤ëÊýË¡¤¬¤¢¤ë¡£throw() ¤ÈÀë¸À¤¹¤ë¤È¡¢g++ ¤ÏÌá¤êÃͤò¸¡ºº¤¹¤ë¡£new (nothrow) ¤â»²¾È¤Î¤³¤È¡£
-fconserve-space
main() ¤Î½ªÎ»¸å¤Ë¡¢ÉԲIJò¤Ë¤â°Û¾ï½ªÎ»¤·¤¿¤Ê¤é¡¢Æó¤Ä¤ÎÄêµÁ¤¬¥Þ¡¼¥¸¤µ¤ì¤¿¤¿¤á¤ËÆó²óÇ˲õ¤µ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤¬Â¸ºß¤¹¤ë²ÄǽÀ¤¬¤¢¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¤â¤Ï¤ä¤Û¤È¤ó¤É¤Î¥¿¡¼¥²¥Ã¥È¤Ç°ÕµÁ¤¬¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤ë¡£ÊÑ¿ô¤ò¡¢¥³¥â¥ó¤Ë¤¹¤ë¤³¤È¤Ê¤¯ BSS ¤ËÃÖ¤¯ÊýË¡¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë¡£
-fdollars-in-identifiers
$ ¤ò»È¤¦¤³¤È¤òµö¤¹¡£-fno-dollars-in-identifiers
¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¡¢$ ¤òÌÀ¼¨Åª¤Ë»ÈÍѶػߤˤ¹¤ë¤³¤È¤â²Äǽ¤Ç¤¢¤ë¡£(GNU C ¤Ï¡¢¤Û¤È¤ó¤É¤Î¥¿¡¼¥²¥Ã¥È¤Ç¥Ç¥Õ¥©¥ë¥È¤Ç $ ¤òµö¤¹¤¬¡¢2,3 ¤ÎÎã³°¤¬¤¢¤ë¡£)
µìÍè¤Î C ¤Ï¡¢¼±Ê̻ҤΰìÉô¤Ë $ ¤ò»È¤¦¤³¤È¤òµö¤·¤Æ¤¤¤ë¡£¤·¤«¤·¡¢ANSI C ¤È C++ ¤Ï¡¢¼±ÊÌ»ÒÃæ¤Î $ ¤ò¶Ø»ß¤·¤Æ¤¤¤ë¡£
-fno-elide-constructors
-fexternal-templates
#pragma interface ¤È implementation
¤Ë½¾¤ï¤»¤ë¡£¥Æ¥ó¥×¥ì¡¼¥È¤Î¼ÂÂΤ¬À¸À®¤µ¤ì¤ë¤«¡¢¥Æ¥ó¥×¥ì¡¼¥ÈÄêµÁ¤Î°ÌÃ֤ˤϽ¾¤ï¤Ê¤¤¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï See Template Instantiation¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤ÏÇÑ»ßÍ׵᤬½Ð¤Æ¤¤¤ë¡£
-falt-external-templates
-fexternal-templates ¤ÈƱÍͤÀ¤¬¡¢¥Æ¥ó¥×¥ì¡¼¥È¤Î¼ÂÂΤÏÀ¸À®¤µ¤ì¤ë¤«¡¢ºÇ½é¤Ë¼ÂÂ⽤µ¤ì¤¿¾ì½ê¤Ë¤Ï½¾¤ï¤Ê¤¤¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï See Template Instantiation¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤ÏÇÑ»ßÍ׵᤬½Ð¤Æ¤¤¤ë¡£
-ffor-scope
-fno-for-scope
for ¥ë¡¼¥×¼«ÂΤ˸¤é¤ì¤ë¡£¤³¤ì¤Ï¡¢C++ µ¬³Ê¤Î¥É¥é¥Õ¥È¤Çµ¬Äꤵ¤ì¤Æ¤¤¤ëưºî¤Ç¤¢¤ë¡£-fno-for-scope ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ï¡¢for ʸ¤Î½é´ü²½Ê¸¤ÇÀë¸À¤µ¤ì¤¿ÊÑ¿ô¤Î͸úÈϰϤϡ¢for ʸ¤ò°Ï¤à͸úÈϰϤκǸå¤Þ¤Ç¤È¤Ê¤ë¡£¤³¤ì¤Ï¡¢gcc ¤Î¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤ä¡¢Â¾¤Î(¸Å¤¤) C++ ¤Î¼ÂÁõ¤Ç¤Îưºî¤Ç¤¢¤ë¡£
¤É¤Á¤é¤Î¥ª¥×¥·¥ç¥ó¤â»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¤Î¥Ç¥Õ¥©¥ë¥È¤Ïµ¬³Ê¤Ë½¾¤¦¤¬¡¢Ìµ¸ú¤Ç¤¢¤Ã¤¿¤ê¡¢°Û¤Ê¤ëưºî¤Ë¤Ê¤é¤Ê¤¤¸Â¤ê¡¢¸Å¤¤·Á¼°¤Î¥³¡¼¥É¤â·Ù¹ð¤¬¤Ç¤ë¤¬µö¤µ¤ì¤ë¡£
-fno-gnu-keywords
classof¡¢headof¡¢signature¡¢sigof¡¢typeof ¤ò¥¡¼¥ï¡¼¥É¤È¤·¤ÆÇ§¼±¤»¤º¡¢¼±Ê̻ҤȤ·¤Æ»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë¡£¤½¤Î¾ì¹ç¡¢Âå¤ï¤ê¤Ë__classof__¡¢__headof__¡¢__signature__¡¢__sigof__¡¢__typeof__ ¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£-ansi ¤Ï -fno-gnu-keywords ¤ò´Þ¤à¡£
-fguiding-decls
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢-fname-mangling-version-0 ¤â»ØÄꤷ¤¿¤³¤È¤Ë¤Ê¤ë¤Î¤Ç¡¢¤³¤ì°Ê³°¤Î̾Á°¤Î¥¨¥ó¥³¡¼¥ÉÈÇ(name mangling version)
¤È°ì½ï¤Ë¤Ï»È¤¨¤Ê¤¤¡£ABI ¤òÊѹ¹¤¹¤ëÁ´¤Æ¤Î¥ª¥×¥·¥ç¥óƱÍÍ¡¢libgcc.a ¤ò´Þ¤àÁ´¤Æ¤Î C++ ¥³¡¼¥É¤ò¤³¤Î¥ª¥×¥·¥ç¥ó¤ÎÀßÄê¤òƱ°ì¤Ë¤·¤Æ¹½ÃÛ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-fhandle-signatures
signature ¤È sigof ¤òǧ¼±¤¹¤ë¡£¥Ç¥Õ¥©¥ë¥È(-fno-handle-signatures) ¤Ç¤Ïǧ¼±¤·¤Ê¤¤¡£
-fhonor-std
namespace std ¤ò¥Í¡¼¥à¥¹¥Ú¡¼¥¹¤È¤·¤Æ¡¢Ìµ»ë¤»¤º¤Ë¼è¤ê°·¤¦¡£g++ ¤ÎÀΤΥС¼¥¸¥ç¥ó¤È¤Î¸ß´¹À¤Î¤¿¤á¤Ë¡¢GCC ¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï namespace-declarations¡¢using-declarations¡¢using-declarations¡¢using-directives¡¢namespace-names
¤¬¡¢std ¤ò´Þ¤ó¤Ç¤¤¤ì¤Ð¡¢¤½¤ì¤ò̵»ë¤¹¤ë¡£
-fhuge-objects
short int ¤Çɽ¸½²Äǽ¤ÊÂ礤µ¤ò±Û¤¨¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ä¤¤¤Æ²¾ÁÛ´Ø¿ô¸Æ¤Ó½Ð¤·¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£¥æ¡¼¥¶¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤Ù¤¤Ç¤Ê¤¤¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦É¬Íפ¬¤¢¤ë¤È¤¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤¬ÃΤ餻¤Æ¤¯¤ì¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢-fvtable-thunks ¤ò»È¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¾ì¹ç¤Ë¤ÏÌò¤ËΩ¤¿¤Ê¤¤¡£
ABI ¤òÊѹ¹¤¹¤ëÁ´¤Æ¤Î¥ª¥×¥·¥ç¥óƱÍÍ¡¢libgcc ¤ò´Þ¤àÁ´¤Æ¤Î C++ ¥³¡¼¥É¤ò¤³¤Î¥ª¥×¥·¥ç¥ó¤ÎÀßÄê¤òƱ°ì¤Ë¤·¤Æ¹½ÃÛ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-fno-implicit-templates
-fno-implicit-inline-templates
-finit-priority
__attribute__ ((init_priority (n))) ¤ò¥µ¥Ý¡¼¥È¤·¡¢¥Õ¥¡¥¤¥ë¥¹¥³¡¼¥×¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½½ç½ø¤òÀ©¸æ¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¡£ELF ¥¿¡¼¥²¥Ã¥È¤Ç¤Ï¡¢¤³¤Î¤¿¤á¤Ë¤Ï GNU ld 2.10 °Ê¹ß¤¬É¬ÍפǤ¢¤ë¡£
-fno-implement-inlines
#pragma implementation ¤Ë¤è¤êÀ©¸æ¤µ¤ì¤ë¥¤¥ó¥é¥¤¥óŸ³«´Ø¿ô¤ÎŸ³«¥³¡¼¥É¤Î¥³¥Ô¡¼¤òÀ¸À®¤·¤Ê¤¤¡£¤³¤¦¤¹¤ë¤È¡¢¥¤¥ó¥é¥¤¥óŸ³«´Ø¿ô¤¬¡¢¤É¤Î¸Æ¤Ó½Ð¤·¸Ä½ê¤Ç¤â¥¤¥ó¥é¥¤¥óŸ³«¤µ¤ì¤Ê¤¤¤È¡¢¥ê¥ó¥¯»þ¤Î¥¨¥é¡¼¤Ë¤Ê¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢C++ ¥ê¥ó¥±¡¼¥¸¤ÎÀë¸À¤Ë¤Ï±Æ¶Á¤·¤Ê¤¤¡£
-fname-mangling-version-n
template <class T, class U> void foo(T t);
ABI ¤òÊѹ¹¤¹¤ëÁ´¤Æ¤Î¥ª¥×¥·¥ç¥óƱÍÍ¡¢libgcc ¤ò´Þ¤àÁ´¤Æ¤Î C++ ¥³¡¼¥É¤ò¤³¤Î¥ª¥×¥·¥ç¥ó¤ÎÀßÄê¤òƱ°ì¤Ë¤·¤Æ¹½ÃÛ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-foperator-names
and¡¢bitand¡¢bitor¡¢compl¡¢not¡¢or¡¢xor ¤ò¤½¤ì¤é¤¬»²¾È¤¹¤ëµ¹æ¤ÎÊÌ̾¤È¤·¤ÆÇ§¼±¤¹¤ë¡£-ansi ¤Ë¤Ï -foperator-names ¤¬´Þ¤Þ¤ì¤ë¡£
-fno-optional-diags
-fpermissive
-pedantic ¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ï¼Â¼ÁŪ¤Ë -pedantic-errors ¤ò»ØÄꤷ¤Æ¤¤¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¤½¤ì¤òµÕ¤Ë¤¹¤ë¡£¤³¤Îưºî¤È¥ª¥×¥·¥ç¥ó¤Ï¡¢-pedantic
¤Ë¤è¤êÂǤÁ¾Ã¤µ¤ì¤ë¡£-pedatnic ¤Ï GNU C ¤Î¾ì¹ç¤ÈƱÍÍ¤ÎÆ°ºî¤Ë¤Ê¤ë¡£
-frepo
-fno-implicit-templates ¤âÀßÄꤹ¤ë¡£¤â¤Ã¤È¾Ü¤·¤¤¤³¤È¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See Template Instantiation¡£
-fno-rtti
dynamic_cast ¤È typeid)¤Ç»È¤ï¤ì¤ë¾ðÊó¤òÀ¸À®¤·¤Ê¤¤¡£C++ ¸À¸ì¤Î¤³¤ì¤é¤Îµ¡Ç½(¤¢¤ë¤¤¤Ï¡¢dynamic_cast ¤òÆâÉôŪ¤Ë»È¤Ã¤Æ¤¤¤ëÎã³°½èÍý)¤ò»È¤ï¤Ê¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¥¹¥Ú¡¼¥¹¤ò¤¤¤¯¤é¤«ÀáÌó¤Ç¤¤ë¡£
-fstrict-prototype
extern "C" ¤ÎÃæ¤Ç¡¢°ú¿ô¤Ê¤·¤Î´Ø¿ôÀë¸À¡¢Î㤨¤Ð int foo (); ¤ò¡¢°ú¿ô¤ò¼è¤é¤Ê¤¤´Ø¿ô¤ÎÀë¸À¤È¤·¤Æ°·¤¦¡£ÉáÄÌ C ¤Ç¤Ï¡¢¤½¤Î¤è¤¦¤ÊÀë¸À¤Ï´Ø¿ô foo ¤Ï¤É¤ó¤Ê°ú¿ô¤ÎÁȹ礻¤Ç¤â¼è¤ë¤³¤È¤¬¤Ç¤¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£-pedantic ¤Ï¡¢-fno-strict-prototype ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¸Â¤ê¡¢-fstrict-prototype ¤â͸ú¤Ë¤¹¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢°ÅÌۤδؿôÀë¸À¤âÍÞÀ©¤¹¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢C++ ¥ê¥ó¥±¡¼¥¸¤ò»ý¤ÄÀë¸À¤Ë¤Ï¡¢¤â¤Ï¤ä±Æ¶Á¤·¤Ê¤¤¡£
-fsquangle
-fno-squangle
-fsquangle ¤ò»ØÄꤹ¤ë¤È¡¢¼±Ê̻ҤÎ̾Á°¤Î¥Þ¥ó¥°¥ê¥ó¥°¤Î°µ½Ì·Á¤ò͸ú¤Ë¤¹¤ë¡£¤³¤ì¤Ï¡¢ÆÃ¤Ë¡¢Ê£¿ô²ó¸½¤ì¤ë·¿Ì¾¤È¥¯¥é¥¹Ì¾¤òǧ¼±¤·¡¢ÆÃÊ̤Ëû¤¤ ID ¥³¡¼¥É¤ÇÃÖ¤´¹¤¨¤ë¤³¤È¤Ç¡¢Èó¾ï¤ËŤ¤Ì¾Á°¤òû¤¯¤¹¤ë¤Î¤ò½õ¤±¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤Ê¤é¡¢°ì½ï¤Ë»È¤¦¤É¤Î C++ ¥é¥¤¥Ö¥é¥ê¤âƱÍͤˤ³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ç̵¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë(-fno-squangle ¤ò»ØÄꤷ¤¿¤Î¤ÈƱ¤¸)¡£
ABI ¤òÊѹ¹¤¹¤ë¤è¤¦¤ÊÁ´¤Æ¤Î¥ª¥×¥·¥ç¥óƱÍÍ¡¢libgcc.a ¤ò´Þ¤à
Á´¤Æ¤Î C++ ¥³¡¼¥É¤ò¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤ÆÆ±¤¸ÀßÄê¤Ç¹½ÃÛ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-ftemplate-depth-n
-fthis-is-variable
this ¤Ø¤ÎÂåÆþ¤òµö¤¹¡£¥æ¡¼¥¶ÄêµÁ¤Î¥Õ¥ê¡¼¥¹¥È¥¢´ÉÍý¤ò C++ ¤Ë¼è¤ê¹þ¤ó¤À¤³¤È¤Ë¤è¤ê¡¢this ¤Ø¤ÎÂåÆþ¤Ï»þÂåÃÙ¤ì¤Ë¤Ê¤Ã¤¿¡£¤³¤Î¤¿¤á¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥¯¥é¥¹¤Î¥á¥ó¥Ð´Ø¿ôÆâ¤Ç this ¤ËÂåÆþ¤¹¤ë¤³¤È¤Ï̵¸ú¤Ç¤¢¤ë¡£¤¹¤Ê¤ï¤Á¡¢GNU C++ ¤Ï¡¢¥¯¥é¥¹ X ¤Î¥á¥ó¥Ð´Ø¿ôÃæ¤Î this ¤òX * ·¿¤ÎÈóº¸ÊÕÃͤȤ·¤Æ¼è¤ê°·¤¦¡£¤·¤«¤·¡¢°ÊÁ°¤È¤Î¸ß´¹À¤Î¤¿¤á¤Ë¡¢-fthis-is-variable ¤ò»ØÄꤹ¤ë¤³¤È¤Ç͸ú¤È¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
-fvtable-thunks=thunks-version
¥µ¥ó¥¯ ¤ò»È¤Ã¤Æ²¾ÁÛ´Ø¿ô¤Î¥Ç¥£¥¹¥Ñ¥Ã¥Á¥Æ¡¼¥Ö¥ë(vtable)¤ò¼ÂÁõ¤¹¤ë¡£vtable ¤ò¼ÂÁõ¤¹¤ëµìÍè¤ÎÊýË¡(cfront¤ÎÊýË¡)¤Ç¤Ï¡¢²¾ÁÛ´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤È¡¢¸Æ¤Ó½Ð¤·Â¦¤Ç this ¥Ý¥¤¥ó¥¿¤òÄ´À°¤¹¤ë¤¿¤á¤ÎÆó¤Ä¤Î¥ª¥Õ¥»¥Ã¥È¤ò³ÊǼ¤·¤Æ¤¤¤¿¡£¿·¤·¤¤¼ÂÁõÊýË¡¤Ç¤Ï¡¢¤¢¤ë¥µ¥ó¥¯´Ø¿ô¤Ø¤Î°ì¸Ä¤Î¥Ý¥¤¥ó¥¿¤ò³ÊǼ¤¹¤ë¡£¤½¤Î¥µ¥ó¥¯´Ø¿ô¤¬É¬ÍפÊÄ´À°¤ò¹Ô¤Ã¤¿¤¦¤¨¤ÇÌÜŪ¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¡£
¥µ¥ó¥¯¤ÎºÇ½é¤Î¼ÂÁõ(¥Ð¡¼¥¸¥ç¥ó1)¤Ë¤Ï¡¢²¾ÁÛ´ðÄ쥯¥é¥¹¤Ë´Ø¤¹¤ë¥Ð¥°¤¬¤¢¤Ã¤¿¡£¤³¤Î¥Ð¥°¤Ï¡¢¥µ¥ó¥¯¤Î¼ÂÁõ¤Î¥Ð¡¼¥¸¥ç¥ó 2 ¤Ç½¤Àµ¤µ¤ì¤Æ¤¤¤ë¡£¥Ð¡¼¥¸¥ç¥ó¤ò 2 ¤Ë»ØÄꤹ¤ë¤È¡¢¥Ð¡¼¥¸¥ç¥ó 1 ¤Î¥µ¥ó¥¯¤È¤Î¸ß´¹À¤¬Êݤ¿¤ì¤ë¤¬¡¢Í¾Ê¬¤Êµ¡³£¸ì¥³¡¼¥É¤¬¤«¤«¤ë¡£¥Ð¡¼¥¸¥ç¥ó 3 ¤Ë¤Ï¤³¤Î¸ß´¹À¤Ï¤Ê¤¤¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¤Þ¤¿¡¢È¯¸«ÅªÊýË¡¤ò»È¤Ã¤Æ¡¢²¾ÁÛ´Ø¿ô¥Æ¡¼¥Ö¥ë¤ÎÀ¸À®¤òÀ©¸æ¤¹¤ë¡£¤¢¤ë¥¯¥é¥¹¤Ë°ì¤Ä¤Ç¤âÈ󥤥ó¥é¥¤¥ó²¾ÁÛ´Ø¿ô¤¬¤¢¤ì¤Ð¡¢¤½¤ÎÈ󥤥ó¥é¥¤¥ó´Ø¿ô¤Î¤¦¤Á¤ÎÀèÆ¬¤Î°ì¤Ä¤ò´Þ¤àËÝÌõñ°Ì¤Ë¡¢vtable ¤¬¼Í½Ð¤µ¤ì¤ë¡£
ABI ¤òÊѹ¹¤¹¤ëÁ´¤Æ¤Î¥ª¥×¥·¥ç¥óƱÍÍ¡¢libgcc.a ¤ò´Þ¤àÁ´¤Æ¤Î C++ ¥³¡¼¥É¤ò¤³¤Î¥ª¥×¥·¥ç¥ó¤ÎÀßÄê¤òƱ°ì¤Ë¤·¤Æ¹½ÃÛ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¥Ð¡¼¥¸¥ç¥ó 1 ¤È¥Ð¡¼¥¸¥ç¥ó 2 ¤âÈó¸ß´¹¤Ç¤¢¤ë(²¾ÁÛ´Ø¿ô¤òÄêµÁ¤·¤Æ¤¤¤ë²¾ÁÛ´ðÄì¤ò¤â¤Ä¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ)¡¢Á´¤Æ¤Î¥³¡¼¥É¤òƱ¤¸¥Ð¡¼¥¸¥ç¥ó¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Î gcc ¤Ç¤Ï¡¢¥Ð¡¼¥¸¥ç¥ó 2 ¤Î¥µ¥ó¥¯¤¬¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¥¿¡¼¥²¥Ã¥È¤Ï¤Ê¤¤¡£Á´¤Æ¤Î¥¿¡¼¥²¥Ã¥È¤Ç¡¢¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤ÈµìÍè¤Î¼ÂÁõ¤ò»È¤¤¡¢-fvtable-thunks ¤ò»ØÄꤹ¤ë¤È¥Ð¡¼¥¸¥ç¥ó 2 ¤Î¥µ¥ó¥¯¤òÀ¸À®¤¹¤ë¡£
-nostdinc++
¤µ¤é¤Ë¡¢°Ê²¼¤ÎºÇŬ²½¡¢·Ù¹ð¡¢¥³¡¼¥ÉÀ¸À®¤Ë´Ø¤¹¤ë¥ª¥×¥·¥ç¥ó¤ÏC++ ¥×¥í¥°¥é¥à¤Î¾ì¹ç¤Ë¤Î¤ß°ÕÌ£¤ò»ý¤Ä¡£
-fno-default-inline
inline ¤ò²¾Äꤷ¤Ê¤¤¡£See Options That Control Optimization.
¤³¤¦¤¤¤¦´Ø¿ô¤Ï¥¤¥ó¥é¥¤¥ó´Ø¿ô¤È»÷¤¿¥ê¥ó¥±¡¼¥¸¤ò»ý¤Ä¡£Ã±¤Ë¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥¤¥ó¥é¥¤¥óŸ³«¤µ¤ì¤Ê¤¤¤Î¤Ç¤¢¤ë¡£
-Wctor-dtor-privacy (C++ ¤Î¤ß)
-Wnon-virtual-dtor (C++ ¤Î¤ß)
-Wreorder (C++ ¤Î¤ß)
struct A {
int i;
int j;
A(): j (0), i (1) { }
};
¤³¤³¤Ç¥³¥ó¥Ñ¥¤¥é¤Ï¡¢i ¤È j ¤Ë¤Ä¤¤¤Æ¤Î¥á¥ó¥Ð½é´ü²½¤¬¡¢¥á¥ó¥Ð¤ÎÀë¸À½ç½ø¤Ë°ìÃפ¹¤ë¤è¤¦¤ËʤÙÊѤ¨¤é¤ì¤ë¤È¤¤¤¦·Ù¹ð¤ò½Ð¤¹¡£
°Ê²¼¤Î -W... ¥ª¥×¥·¥ç¥ó¤Ï -Wall ¤Ë¤Ï±Æ¶Á¤µ¤ì¤Ê¤¤¡£
-Weffc++ (C++ ¤Î¤ß)
grep -v ¤ò»È¤Ã¤Æ¡¢¤½¤¦¤¤¤¦·Ù¹ð¤ò¼è¤ê½ü¤¯»ö¤¬¤Ç¤¤ë¡£
-Wno-deprecated (C++ ¤Î¤ß)
-Wno-non-template-friend (C++ ¤Î¤ß)
friend foo(int))
¤Ê¤é¡¢C++ ¸À¸ìµ¬³Ê¤Ç¤Ï¤½¤Î¥Õ¥ì¥ó¥É¤¬Ä̾ï¤Î¡¢È󥯥ó¥×¥ì¡¼¥È´Ø¿ô¤òÀë¸À¤¹¤ë¤«ÄêµÁ¤¹¤ë¤³¤È¤òÍ׵ᤷ¤Æ¤¤¤ë¡£(14.5.3Àá¡£)
g++ ¤¬ÌÀ¼¨Åª¤Êµ¬Äê¤ò¼ÂÁõ¤¹¤ëÁ°¤Ï¡¢½¤¾þ»Ò̵¤·¤Î¼±Ê̻Ҥϡ¢¥Æ¥ó¥×¥ì¡¼¥È²½¤µ¤ì¤¿´Ø¿ô¤ÎÆÃÄê¤ÎÆÃ¼ì²½¤È²ò¼á²Äǽ¤Ç¤¢¤Ã¤¿¡£¤³¤Îµ¬³Ê¤Ë¹çÃפ·¤Ê¤¤Æ°ºî¤Ï¤â¤Ï¤ä g++ ¤Î¥Ç¥Õ¥©¥ë¥È¤Îưºî¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢-Wnon-teplate-friend ¤ò»ØÄꤹ¤ë¤È GCC ¤Ï´û¸¤Î¥³¡¼¥É¤ÎÃæ¤«¤éÀøºßŪ¤ËÌäÂê¤Ë¤Ê¤ê¤½¤¦¤Ê¤È¤³¤í¤ò¸¡ºº¤¹¤ë¡£¤³¤ì¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¤³¤Î¿·¤·¤¤Æ°ºî¤Ï -fguiding-decls ¥ª¥×¥·¥ç¥ó¤Ç¤â̵¸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢ÀΤΡ¢»ØÄê̵¤·¤Î¥³¥ó¥Ñ¥¤¥é¤Î¥³¡¼¥É¤ò͸ú¤Ë¤¹¤ë¡£¤¢¤ë¤¤¤Ï¡¢-Wno-non-template-friend ¤ò»ØÄꤹ¤ë¤È¡¢µ¬³Ê¤Ë½àµò¤·¤¿¥³¥ó¥Ñ¥¤¥é¤Î¥³¡¼¥É¤òÊÝ»ý¤¹¤ë¤¬¡¢Ìò¤ËΩ¤Ä·Ù¹ð¤Ï½Ð¤Ê¤¯¤Ê¤ë¡£
-Wold-style-cast (C++ ¤Î¤ß)
static_cast¡¢reinterpret_cast¡¢const_cast) ¤Ï¡¢Í½´ü¤·¤Ê¤¤¸ú²Ì¤ò¼õ¤±¤Ë¤¯¤¤¡£
-Woverloaded-virtual (C++ ¤Î¤ß)
-Wno-pmf-conversions (C++ ¤Î¤ß)
-Wsign-promo (C++ ¤Î¤ß)
-Wsynth (C++ ¤Î¤ß)
struct A {
operator int ();
A& operator = (int);
};
main ()
{
A a,b;
a = b;
}
¤È¤¤¤¦Îã¤Ç¤Ï¡¢g++ ¤Ï¥Ç¥Õ¥©¥ë¥È¤Î A& operator = (const A&); ¤ò¹çÀ®¤¹¤ë¤¬¡¢cfront ¤Ï¥æ¡¼¥¶ÄêµÁ¤Î operator = ¤ò»È¤¦¡£
·Ù¹ð¤È¤Ï¿ÇÃÇ¥á¥Ã¥»¡¼¥¸¤Ç¤¢¤ê¡¢ËÜÍè¤Î¥¨¥é¡¼¤Ç¤Ï¤Ê¤¤¤¬¡¢ÀøºßŪ¤Ê´í¸±À¤¬¤¢¤Ã¤¿¤ê¡¢¸í¤ê¤¬Â¸ºß¤¹¤ë²ÄǽÀ¤Î¤¢¤ë¹½Ê¸¤Ë¤Ä¤¤¤ÆÊó¹ð¤¹¤ë¡£
-W ¤Ç»Ï¤Þ¤ë¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢Â¿¤¯¤ÎÆÃÄê¤Î·Ù¹ð¤òÍ׵᤹¤ë¤³¤È¤¬¤Ç¤¤ë¡£Î㤨¤Ð¡¢-Wimplicit ¤Ï¡¢°ÅÌÛ¤ÎÀë¸À¤Ë¤Ä¤¤¤Æ¤Î·Ù¹ð¤ò½Ð¤¹¤è¤¦Í׵᤹¤ë¡£¤³¤ì¤é¤ÎÆÃÄê¤Î·Ù¹ð¥ª¥×¥·¥ç¥ó¤Ë¤Ï¡¢·Ù¹ð¤òÍ޻ߤ¹¤ë¡¢-Wno- ¤Ç»Ï¤Þ¤ëÈÝÄê·Á¤¬¤¢¤ë¡£Î㤨¤Ð¡¢-Wno-implicit ¤È¤¤¤¦¤Î¤¬¤¢¤ë¡£¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤Ç¤Ï¡¢Æó¤Ä¤Î·Á¼°¤Î¤¦¤Á¤Î¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï̵¤¤Êý¤À¤±¤òÎóµó¤¹¤ë¡£
°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢GCC ¤Ë¤è¤êÀ¸À®¤µ¤ì¤ë·Ù¹ð¤ÎÎ̤ȼïÎà¤òÀ©¸æ¤¹¤ë¡£
-fsyntax-only
-pedantic
ANSI C ¤È ISO C++ ¤Ë§¤Ã¤¿¥×¥í¥°¥é¥à¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤â¤·¤Ê¤¯¤Æ¤â¡¢Àµ¤·¤¯¥³¥ó¥Ñ¥¤¥ë¤¬¹Ô¤Ê¤ï¤ì¤ë(¤Þ¤ì¤Ë¡¢-ansi ¤ò¥ª¥×¥·¥ç¥ó¤òɬÍפȤ¹¤ë¾ì¹ç¤â¤¢¤ë¤¬)¡¢¤·¤«¤·¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ï¡¢GNU ¤Î³ÈÄ¥µ¡Ç½¤È¸Å¤¤·Á¼°¤Î C ¤È C++ ¤Îµ¡Ç½¤â¥µ¥Ý¡¼¥È¤µ¤ì¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¤½¤ì¤é¤ÏµñÀ䤵¤ì¤ë¡£
-pedantic ¤Ï¡¢ÀèÆ¬¤ÈËöÈø¤¬ __ ¤Ç¤¢¤ë̾Á°¤ò»ý¤ÄÊÌ¥¡¼¥ï¡¼¥É¤ò»È¤¦Ê¬¤Ë¤Ï·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½Ð¤µ¤Ê¤¤¡£¡ÖêʳØÅª¡×(pedantic)¤Ê·Ù¹ð¤Ï¡¢__extension__ ¤Ë³¤¯¼°¤Ë¤Ä¤¤¤Æ¤âÍ޻ߤµ¤ì¤ë¡£¤·¤«¤·¡¢¤³¤Î¤è¤¦¤ÊÈ´¤±Æ»¤ò»È¤¦¤Î¤Ï¥·¥¹¥Æ¥à¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ë¤È¤É¤á¤ë¤Ù¤¤Ç¤¢¤ê¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï»È¤ï¤Ê¤¤¤è¤¦¤Ë¤·¤¿¤Û¤¦¤¬Îɤ¤¡£See Alternate Keywords.
¤³¤Î¥ª¥×¥·¥ç¥ó¤ÏÌò¤ËΩ¤Ä¤³¤È¤òÌÜŪ¤È¤·¤Æ¤¤¤Ê¤¤¡£Ã±¤Ë¡¢¤³¤ì¤¬¤Ê¤¤¤È¡¢GCC ¤¬ ANSI ɸ½à¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤Èʸ¶ç¤ò¸À¤¤Î©¤Æ¤ëÇÚ¤òËþ¤µ¤»¤ë¤¿¤á¤À¤±¤Î¤â¤Î¤Ç¤¢¤ë¡£
ÆÉ¼Ô¤ÎÃæ¤Ë¤Ï¡¢-pedantic ¤ò»È¤Ã¤Æ¡¢¥×¥í¥°¥é¥à¤¬¸·Ì©¤Ë ANSI C ¤ËŬ¹ç¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¸¡ºº¤·¤Æ¤ß¤ë¿Í¤¬¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£¤Ç¤â¤¹¤°¤Ë¡¢´üÂÔÄ̤ê¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¤³¤È¤¬Ê¬¤«¤ë¤À¤í¤¦¡£-pedantic ¤Ï¡¢Èó ANSI Ū¤Ê¹½Ê¸¤Î¤¦¤Á¤Î´ö¤Ä¤«¤ò¸«¤Ä¤±¤ë¤À¤í¤¦¡£¤À¤¬¡¢Á´Éô¤Ç¤Ï¤Ê¤¤¡£ANSI C ¤¬¿ÇÃÇ¥á¥Ã¥»¡¼¥¸¤òÍ׵ᤷ¤Æ¤¤¤ë¤â¤Î¤À¤±¤Ê¤Î¤Ç¤¢¤ë¡£
ANSI C ¤ËŬ¹ç¤·¤Ê¤¤ÅÀ¤Ë¤Ä¤¤¤Æ¤Ï¤É¤ó¤Ê¤Þ¤Î¤Ç¤âÊó¹ð¤¹¤ëµ¡Ç½¤Ï¾ì¹ç¤Ë¤è¤Ã¤Æ¤ÏÍÍѤ«¤â¤·¤ì¤Ê¤¤¤¬¡¢ÁêÅö¤Îºî¶ÈÎ̤òɬÍפȤ¹¤ë¤·¡¢-pedantic ¤È¤ÏÁ´¤¯°Û¤Ê¤Ã¤¿¤â¤Î¤Ë¤Ê¤ë¤À¤í¤¦¡£²æ¡¹¤Ï¶á¤¤¾Í褳¤Î¤è¤¦¤Êµ¡Ç½¤ò¥µ¥Ý¡¼¥È¤¹¤ë·×²è¤Ï¤Ê¤¤¡£
-pedantic-errors
-pedantic ¤ÈƱÍͤÀ¤¬¡¢·Ù¹ð¤ÎÂå¤ï¤ê¤Ë¥¨¥é¡¼¤È¤¹¤ë¡£
-w
-Wno-import
#import ¤Î»È¤¤Êý¤Ë´Ø¤¹¤ë·Ù¹ð¤òÍ޻ߤ¹¤ë¡£
-Wchar-subscripts
char ¤Ê¤é·Ù¹ð¤ò½Ð¤¹¡£¤³¤ì¤ÏÎɤ¯¤¢¤ë´Ö°ã¤¤¤Î¸µ¤È¤Ê¤ë¡£¥×¥í¥°¥é¥Þ¤Ï¡¢¤³¤Î·¿¤¬¥Þ¥·¥ó¤Ë¤è¤Ã¤Æ¤ÏÉ乿ÉÕ¤¤Ë¤Ê¤ë¤³¤È¤òÎɤ¯Ëº¤ì¤ë¤«¤é¤Ç¤¢¤ë¡£
-Wcomment
/* ¤¬ /* ·Á¼°¤Î¥³¥á¥ó¥ÈÃæ¤Ë¸½¤ì¤¿¤ê¡¢¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å-²þ¹Ô¤¬ // ·Á¼°¤Î¥³¥á¥ó¥È¤Ë¸½¤ì¤¿¾ì¹ç¤Ë·Ù¹ð¤ò½Ð¤¹¡£
-Wformat
printf ¤ä scanf Åù¤Î´Ø¿ô¤Î¸Æ¤Ó¤À¤·¤ò¸¡ºº¤·¡¢»ØÄꤵ¤ì¤¿°ú¿ô¤Î·¿¤¬¡¢¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤Ç»ØÄꤵ¤ì¤¿¤â¤Î¤È¤¢¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤ë¡£
-Wimplicit-int
-Wimplicit-function-declaration
-Werror-implicit-function-declaration
-Wimplicit
-Wimplicit-int ¤È -Wimplicit-function-declaration ¤ËƱ¤¸¡£
-Wmain
main ¤Î·¿¤ËÉÔÈ÷¤¬¤¢¤ë¾ì¹ç¤Ë·Ù¹ð¤ò½Ð¤¹¡£main ¤Ï¡¢³°Éô¥ê¥ó¥±¡¼¥¸¤Ç¡¢int ¤òÊÖ¤·¡¢Å¬Àڤʷ¿¤Î°ú¿ô¤ò¥¼¥í¸Ä¤«¡¢Æó¸Ä¤«¡¢»°¸Ä¤ò¼è¤ë´Ø¿ô¤È¤¹¤Ù¤¤Ç¤¢¤ë¡£
-Wmultichar
'FOOF' ¤¬»È¤ï¤ì¤¿¾ì¹ç¤Ë·Ù¹ð¤ò½Ð¤¹¡£¤³¤¦¤¤¤¦¤â¤Î¤ÏÉáÄ̤ϥ桼¥¶¤Î¥³¡¼¥É¤Î¥¿¥¤¥Ý¤ò¼¨¤·¤Æ¤ª¤ê¡¢¼ÂÁõÄêµÁ¤ÎÃͤˤʤë¤Î¤Ç¡¢²ÄȤʥ³¡¼¥É¤Ç¤Ï»È¤¦¤Ù¤¤Ç¤Ï¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
-Wparentheses
¤Þ¤¿¡¢¤¢¤ë else ʸ¤¬¤É¤Î if ʸ¤Ë°¤¹¤ë¤«º®Í𤹤ë²ÄǽÀ¤Î¤¢¤ë¹½Ê¸¤Ë¤Ä¤¤¤Æ¤â·Ù¹ð¤¹¤ë¡£°Ê²¼¤Ë¤½¤ÎÎã¤òµó¤²¤ë¡£
{
if (a)
if (b)
foo ();
else
bar ();
}
C ¤Ç¤Ï¡¢¤É¤Î else ʸ¤â²Äǽ¤Ê¤¦¤Á¤ÇºÇ¤âÆâ¦¤Î if ʸ¤Ë½ê°¤¹¤ë¡£¤³¤ì¤Ï¡¢¥×¥í¥°¥é¥Þ¤¬´üÂÔ¤¹¤ë¤â¤Î¤È°ã¤¦¤³¤È¤¬Îɤ¯¤¢¤ë¡£¾å¤ÎÎã¤Ç¤Ï¡¢¥×¥í¥°¥é¥Þ¤¬´üÂÔ¤¹¤ë¤â¤Î¤Ï»ú²¼¤²¤Ç¼¨¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ë¡£¤³¤Î¤è¤¦¤Êº®Íð¤Î²ÄǽÀ¤¬¤¢¤ë¾ì¹ç¤Ï¡¢GNU C ¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢·Ù¹ð¤ò½Ð¤¹¡£·Ù¹ð¤ò½Ð¤µ¤Ê¤¤ÍѤˤ¹¤ë¤Ë¤Ï¡¢ºÇ¤âÆâ¦¤Î if ʸ¤ò³ç¸Ì¤ÇÌÀ¼¨Åª¤Ë³ç¤Ã¤Æ¡¢else ¤¬³°Â¦¤Î if ¤Ë¤Ï°¤¹¤ë½Ñ¤¬Ìµ¤¤¤³¤È¤òÃΤ餻¤ë¡£¤½¤ì¤òÈ¿±Ç¤·¤¿¥³¡¼¥É¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
{
if (a)
{
if (b)
foo ();
else
bar ();
}
}
-Wreturn-type
int ·¿¤Ë¤Ê¤ë´Ø¿ô¤Ë¤Ä¤¤¤Æ·Ù¹ð¤ò½Ð¤¹¡£¤Þ¤¿¡¢Ìá¤êÃÍ·¿¤¬ void ¤Ç¤Ê¤¤´Ø¿ôÆâ¤Ç¡¢Ìá¤êÃͤʤ·¤Î return ʸ¤¬¤¢¤Ã¤¿¤é·Ù¹ð¤ò½Ð¤¹¡£
-Wswitch
switch ʸ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬Îóµó·¿¤Ç¤¢¤ê¡¢¤½¤ÎÎóµó·¿¤ÎÎóµóÄê¿ô¤Î¤¦¤Á¡¢°ì¸Ä°Ê¾å¤Ë¤Ä¤¤¤Æ case ¤¬·ç¤±¤Æ¤¤¤ë¾ì¹ç¤Ë¡¢·Ù¹ð¤ò½Ð¤¹¡£(¥é¥Ù¥ë default ¤¬¤¢¤ì¤Ð¡¢¤³¤Î·Ù¹ð¤Ï¤Ç¤Ê¤¤¡£)
ÎóµóÃͤÎÈϰϳ°¤Î case ¥é¥Ù¥ë¤¬¤¢¤ë¾ì¹ç¤â¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ì¤Ð¡¢¤³¤Î·Ù¹ð¤¬½Ð¤µ¤ì¤ë¡£
-Wtrigraphs
-Wunused
»È¤ï¤ì¤Æ¤¤¤Ê¤¤´Ø¿ô¤Î²¾°ú¿ô¤Ë¤Ä¤¤¤Æ¤Î·Ù¹ð¤ò½Ð¤¹¤Ë¤Ï¡¢-W ¤È -Wunused ¤òξÊý»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¤¢¤ë¼°¤Ë¤Ä¤¤¤Æ¡¢¤³¤Î·Ù¹ð¤ò½Ð¤µ¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢Ã±¤Ë¤½¤Î¼°¤òvoid ¤Ë¥¥ã¥¹¥È¤¹¤ë¡£ÊÑ¿ô¤È²¾°ú¿ô¡¢¥é¥Ù¥ë¤Ë¤Ä¤¤¤Æ¤³¤Î·Ù¹ð¤ò½Ð¤µ¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢unused °À¤ò»È¤¦(see Variable Attributes)¡£
-Wuninitialized
¤³¤Î·Ù¹ð¤Ï¡¢ºÇŬ²½¤òȼ¤¦¥³¥ó¥Ñ¥¤¥ë¤Î¾ì¹ç¤Ë¤Î¤ßȯÀ¸¤¹¤ë¡£¤Ê¤¼¤Ê¤é¡¢¤³¤Î·Ù¹ð¤ò½Ð¤¹¤Ë¤Ï¡¢ºÇŬ²½¤ò¹Ô¤Ê¤Ã¤¿¾ì¹ç¤Ë¤Î¤ß·×»»¤µ¤ì¤ë¡¢¥Ç¡¼¥¿¥Õ¥í¡¼¾ðÊó¤òɬÍפȤ¹¤ë¤«¤é¤Ç¤¢¤ë¡£-O ¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢Ã±¤Ë¤³¤Î·Ù¹ð¤¬½Ð¤Ê¤¤¤À¤±¤Ç¤¢¤ë¡£
¤³¤Î·Ù¹ð¤Ï¡¢¥ì¥¸¥¹¥¿³äÅö¤Î¸õÊä¤È¤Ê¤ëÊÑ¿ô¤ËÂФ·¤Æ¤À¤±½Ð¤µ¤ì¤ë¡£¤³¤Î¤¿¤á¡¢volatile ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤¿¤ê¡¢¥¢¥É¥ì¥¹¤ò¼è¤Ã¤Æ¤¤¤¿¤ê¡¢¥µ¥¤¥º¤¬ 1¡¢2¡¢4¡¢8 ¥Ð¥¤¥È°Ê³°¤ÎÊÑ¿ô¤ËÂФ·¤Æ¤Î¤ßȯÀ¸¤¹¤ë¡£¤Þ¤¿¡¢¹½Â¤ÂΡ¢¶¦ÍÑÂΡ¢ÇÛÎó¤Ë¤Ä¤¤¤Æ¤â¡¢¤¿¤È¤¨¤½¤ì¤é¤¬¥ì¥¸¥¹¥¿¤ËÃÖ¤«¤ì¤Æ¤¤¤Æ¤â·Ù¹ð¤Ï¤Ç¤Ê¤¤¡£
¤½¤ì¼«¿È·è¤·¤Æ»È¤ï¤ì¤ë¤³¤È¤Î¤Ê¤¤Ãͤò·×»»¤¹¤ë¤Î¤Ë¤À¤±»È¤ï¤ì¤ëÊÑ¿ô¤Ë¤Ä¤¤¤Æ¤Ï·Ù¹ð¤¬½Ð¤Ê¤¤¤³¤È¤ËÃí°Õ¡£¤½¤¦¤¤¤¦·×»»¼«ÂΤ¬¡¢·Ù¹ð¤¬½ÐÎϤµ¤ì¤ëÁ°¤Î¥Ç¡¼¥¿¥Õ¥í¡¼²òÀϤǺï½ü¤µ¤ì¤ë¤«¤é¤Ç¤¢¤ë¡£
¤³¤ì¤é¤Î·Ù¹ð¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¤Ê¤¯¤Æ¥ª¥×¥·¥ç¥ó¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢¤½¤Î¥³¡¼¥É¤Ë¥¨¥é¡¼¤¬¤¢¤ë¤è¤¦¤Ë¸«¤¨¤ë¤Î¤Ë¡¢Àµ¤·¤¤¤«¤â¤·¤ì¤Ê¤¤¤È¤¤¤¦Íýͳ¤¬Á´¤ÆÊ¬¤«¤ë¤Û¤É GCC ¤Ï¸¤¯¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£°Ê²¼¤Ë¡¢¤É¤¦¤¤¤¦¤Õ¤¦¤ËȯÀ¸¤¹¤ë¤«¤ÎÎã¤ò°ì¤Ä¼¨¤¹¡£
{
int x;
switch (y)
{
case 1: x = 1;
break;
case 2: x = 4;
break;
case 3: x = 5;
}
foo (x);
}
y ¤ÎÃͤ¬¾ï¤Ë 1¡¢2¡¢3 ¤Î¤É¤ì¤«¤é¤Ê¤é¡¢x ¤Ï¾ï¤Ë½é´ü²½¤µ¤ì¤ë¡£¤À¤¬¡¢GCC ¤Ï¤½¤Î¤³¤È¤òÃΤé¤Ê¤¤¡£¼¡¤ÎÎã¤Ï¤â¤¦°ì¤Ä¤ÎÎɤ¯¤¢¤ë¥±¡¼¥¹¤Ç¤¢¤ë¡£
{
int save_y;
if (change_y) save_y = y, y = new_y;
...
if (change_y) y = save_y;
}
¤³¤Î¾ì¹ç¤Ï¡¢save_y ¤¬»È¤ï¤ì¤ë¤Î¤Ï¡¢Ãͤ¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Î¤ß¤À¤«¤éÌäÂê¤Ï¤Ê¤¤¡£
»È¤Ã¤Æ¤¤¤ë´Ø¿ô¤Î¤¦¤Á¡¢·è¤·¤ÆÌá¤é¤Ê¤¤´Ø¿ô¤òÁ´¤Æ noreturn ¤ÈÀë¸À¤¹¤ë¤È¡¢´ö¤Ä¤«¤Î¸«¤»³Ý¤±¤Î·Ù¹ð¤ò²óÈò¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
-Wunknown-pragmas
-Wall ¤Ë¤è¤Ã¤Æ¤Î¤ß͸ú¤Ë¤Ê¤ë¾ì¹ç¤Ç¤Ï¤Ê¤¤¡£
-Wall
-W ¥ª¥×¥·¥ç¥ó¤òÁȤ߹ç¤ï¤»¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢¥æ¡¼¥¶¤Ë¤è¤Ã¤Æ¤Ïµ¿Ìä¤Ë»×¤¦¤è¤¦¤Ê¹½Ê¸¤Î¤¦¤Á¡¢²óÈò¤·¤¿¤êÍ޻ߤ¹¤ë¤è¤¦½¤Àµ¤¹¤ë¤Î¤¬´Êñ¤Ê¤â¤Î¤Ä¤¤¤Æ¤Ï¡¢¤½¤ì¤¬¥Þ¥¯¥í¤ò»È¤Ã¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤Ã¤Æ¤â¡¢Á´¤Æ¤Ë¤Ä¤¤¤Æ·Ù¹ð¤ò½Ð¤¹¡£°Ê²¼¤Î -W... ¥ª¥×¥·¥ç¥ó¤Ï¡¢-Wall ¤Ë¤Ï´Þ¤Þ¤ì¤Ê¤¤¡£¤³¤ÎÃæ¤Î´ö¤Ä¤«¤Ï¡¢°ìÈ̤ˤϥ桼¥¶¤¬ÌäÂê¤È¤Ï¹Í¤¨¤Ê¤¤¤³¤È¤¬Â¿¤¤¹½Ê¸¤Ë´Ø¤·¤Æ·Ù¹ð¤¹¤ë¤¬¡¢¸¡ºº¤·¤¿¤¯¤Ê¤ë¤³¤È¤â»þ¡¹¤¢¤ë¤è¤¦¤ÊÌäÂê¤Ç¤â¤¢¤ë¡£¤½¤Î¾¤Î¤â¤Î¤Ï¡¢¤¢¤ë¾ì¹ç¤Ë¤Ï²óÈò¤¹¤ë¤³¤È¤¬É¬ÍפÀ¤Ã¤¿¤ê¡¢¤¢¤ë¤¤¤Ï²óÈò¤¹¤ë¤³¤È¤¬Æñ¤·¤¤¹½Ê¸¤Ë¤Ä¤¤¤Æ·Ù¹ð¤¹¤ë¡£¤³¤ì¤é¤Î·Ù¹ð¤Ï¡¢½Ð¤µ¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Î¥³¡¼¥É¤Î´Êñ¤Ê½¤ÀµÊýË¡¤¬¤Ê¤¤¤â¤Î¤Ç¤¢¤ë¡£
-W
longjmp ¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤êÊѤ¨¤é¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£¤³¤Î·Ù¹ð¤ÏºÇŬ²½¥³¥ó¥Ñ¥¤¥ë¤Î¾ì¹ç¤Ë¤Î¤ß²Äǽ¤Ë¤Ê¤ë¡£
¥³¥ó¥Ñ¥¤¥é¤Ï setjmp ¤Î¸Æ¤Ó½Ð¤·¤·¤«Ê¬¤«¤é¤Ê¤¤¡£¤É¤³¤Ç longjmp ¤¬¸Æ¤Ð¤ì¤ë¤«¤òÃΤ뤳¤È¤Ï¤Ç¤¤Ê¤¤¡£¼ÂºÝ¡¢¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤«¤é¤Ï¡¢¥³¡¼¥É¤ÎǤ°Õ¤ÎÅÀ¤Ç¸Æ¤Ó½Ð¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£¤½¤Î·ë²Ì¡¢¼ÂºÝ¤Ë¤Ï²¿¤âÌäÂ꤬¤Ê¤¯¤Æ¤â·Ù¹ð¤ò¼õ¤±¤ë¤³¤È¤¬¤¢¤ë¡£¤³¤ì¤Ï¡¢longjmp ¤¬¡¢¼ÂºÝ¤ËÌäÂê¤òµ¯¤³¤·¤¿²Õ½ê¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤ë¤³¤È¤Ï¤¢¤ê¤¨¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
foo (a)
{
if (a > 0)
return a;
}
x[i,j] ¤Î¤è¤¦¤Ê¼°¤Ï·Ù¹ð¤¬½Ð¤ë¤¬¡¢x[(void)i,j] ¤À¤È½Ð¤Ê¤¤¡£
< ¤ä <= ¤Ç¥¼¥í¤ÈÈæ³Ó¤·¤Æ¤¤¤ë¡£
x<=y<=z ¤Î¤è¤¦¤ÊÈæ³Ó¤¬¸½¤ì¤¿¡£¤³¤ì¤Ï (x<=y ? 1 : 0) <= z ¤ËÅù²Á¤Ç¤¢¤ë¤¬¡¢Ä̾ï¤Î¿ô³ØÅª¤ÊµË¡¤È¤Ï°Û¤Ê¤ë²ò¼á¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
static ¤Î¤è¤¦¤Êµ²±¥¯¥é¥¹»ØÄê»Ò¤¬Àë¸À¤ÎºÇ½é¤Ç¤Ê¤¤¤È¤³¤í¤Ë¤¢¤ë¡£C µ¬³Ê¤Ë¤è¤ì¤Ð¡¢¤³¤Î»È¤¤Êý¤ÏÇѤì¤Ä¤Ä¤¢¤ë¡£
-Wall ¤« -Wunused ¤â¹ç¤ï¤»¤Æ»ØÄꤹ¤ë¤È¡¢Ì¤»ÈÍѤΰú¿ô¤Ë¤Ä¤¤¤Æ·Ù¹ð¤¹¤ë¡£
-Wno-sign-compare ¤â»ØÄꤷ¤¿¤È¤¤Ï·Ù¹ð¤·¤Ê¤¤¡£)
x.h ¤Î½é´ü²½»Ò¤òÃæ³ç¸Ì¤Ç°Ï¤ó¤Ç¤¤¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
struct s { int f, g; };
struct t { struct s h; int i; };
struct t x = { 1, 2, 3 };
x.h ¤¬°ÅÌۤ˥¼¥í¤Ë½é´ü²½¤µ¤ì¤ë¤«¤é¤Ç¤¢¤ë¡£
struct s { int f, g, h; };
struct s x = { 3, 4 };
-Wtraditional
switch ʸ¤Î°ú¿ô¤¬¡¢long ·¿¤Ç¤¢¤ë¡£
static ´Ø¿ô¤ÎÀë¸À¤Î¸å¤Ë static ÈǤ¬Â³¤¯¡£¤³¤Î¹½Ê¸¤Ï¡¢´ö¤Ä¤«¤Î¸Å¤¤ C ¥³¥ó¥Ñ¥¤¥é¤¬¼õ¤±ÉÕ¤±¤Ê¤¤¡£-Wundef
#if À©¸æ»Ò¤ÎÃæ¤Çɾ²Á¤µ¤ì¤ë¾ì¹ç¤Ë·Ù¹ð¤ò½Ð¤¹¡£
-Wshadow
-Wid-clash-len
-Wlarger-than-len
-Wpointer-arith
void ·¿¤Î¡ÖÂ礤µ¡×¤Ë°Í¸¤·¤Æ¤¤¤ë¤â¤ÎÁ´¤Æ¤Ë¤Ä¤¤¤Æ·Ù¹ð¤¹¤ë¡£GNU C ¤Ï¡¢void * ¥Ý¥¤¥ó¥¿¤È´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤Î·×»»¤ËÊØÍø¤Ê¤è¤¦¤Ë¡¢¤³¤ì¤é¤Î·¿¤ÎÂ礤µ¤Ë 1 ¤ò³ä¤êÅö¤Æ¤Æ¤¤¤ë¡£
-Wbad-function-cast
int malloc() ¤¬ anything * ¤Ë¥¥ã¥¹¥È¤µ¤ì¤ë¤È·Ù¹ð¤ò½Ð¤¹¡£
-Wcast-qual
const char * ¤ò char * ¤Ë¥¥ã¥¹¥È¤¹¤ë¤È·Ù¹ð¤ò½Ð¤¹¡£
-Wcast-align
char * ¤ò int * ¤Ë¥¥ã¥¹¥È¤¹¤ë¤È·Ù¹ð¤¬½Ð¤ë¡£
-Wwrite-strings
const char[length] ¤È¤·¡¢¤½¤Îʸ»úÎó¤Î¥¢¥É¥ì¥¹¤òÈóconst¤Î char * ·¿¤Î¥Ý¥¤¥ó¥¿¤Ë¥³¥Ô¡¼¤·¤¿¤È¤¤Ë·Ù¹ð¤ò½Ð¤µ¤»¤ë¤è¤¦¤Ë¤¹¤ë¡£¤³¤Î·Ù¹ð¤Ï¡¢Ê¸»úÎóÄê¿ô¤Ë½ñ¤¹þ¤à²ÄǽÀ¤Î¤¢¤ë¥³¥ó¥Ñ¥¤¥ë»þ¥³¡¼¥É¤ò¸«¤Ä¤±¤ë½õ¤±¤È¤Ê¤ë¡£¤¿¤À¤·¡¢Àë¸À¤È¥×¥í¥È¥¿¥¤¥×¤Ç const ¤òÃí°Õ¿¼¤¯»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤½¤¦¤·¤Ê¤¤¤È¡¢Ã±¤Ë¼ÙËâ¤Ë¤Ê¤ë¤À¤±¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¡¢-Wall ¤Ç¤Ï¤³¤Î·Ù¹ð¤ò½Ð¤µ¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¤¤ë¡£
-Wconversion
¤Þ¤¿¡¢Éé¤ÎÀ°¿ôÄê¿ô¼°¤¬°ÅÌÛ¤ËÉ乿¤Ê¤··¿¤ËÊÑ´¹¤µ¤ì¤ë¤È¤¤â·Ù¹ð¤ò½Ð¤¹¡£Î㤨¤Ð¡¢x ¤¬É乿¤Ê¤·¤Ç¤¢¤ì¤Ð¡¢x = -1 ¤È¤¤¤¦ÂåÆþ¤Ë·Ù¹ð¤ò½Ð¤¹¡£¤·¤«¤·¡¢(unsigned) -1 ¤Î¤è¤¦¤ÊÌÀ¼¨Åª¤Ê¥¥ã¥¹¥È¤Ë¤Ï·Ù¹ð¤ò½Ð¤µ¤Ê¤¤¡£
-Wsign-compare
-W ¤Ë¤è¤Ã¤Æ¤â͸ú¤Ë¤Ê¤ë¡£-W ¤¬½Ð¤¹Â¾¤Î·Ù¹ð¤ò¡¢¤³¤Î·Ù¹ð¤ò½Ð¤µ¤º¤ËÆÀ¤ë¤Ë¤Ï¡¢-W -Wno-sign-compare ¤ò»È¤¦¡£
-Waggregate-return
-Wstrict-prototypes
-Wmissing-prototypes
-Wmissing-declarations
-Wmissing-noreturn
noreturn ¤Î¸õÊä¤Ë¤Ê¤ë²ÄǽÀ¤Î¤¢¤ë´Ø¿ô¤Ë¤Ä¤¤¤Æ·Ù¹ð¤¹¤ë¡£¤³¤ì¤é¤Ï¤¢¤¯¤Þ¤Ç¸õÊä¤Ç¤¢¤Ã¤Æ¡¢ÀäÂÐŪ¤Ê¤â¤Î¤Ç¤Ï¤Ê¤¤¤³¤È¤ËÃí°Õ¡£noreturn °À¤òÄɲ乤ëÁ°¤Ë¡¢´Ø¿ô¤¬¼ÂºÝ¤Ë·è¤·¤ÆÌá¤é¤Ê¤¤¤³¤È¤ò¼«Ê¬¤ÇÃí°Õ¿¼¤¯¸¡¾Ú¤¹¤ëɬÍפ¬¤¢¤ë¡£¤½¤¦¤·¤Ê¤¤¤È¡¢Èù̯¤Ê¥³¡¼¥ÉÀ¸À®¤Î¥Ð¥°¤¬»ý¤Á¹þ¤Þ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£
-Wredundant-decls
-Wnested-externs
extern Àë¸À¤¬´Ø¿ôÆâ¤Ë¤¢¤ë¤È·Ù¹ð¤¹¤ë¡£
-Winline
-finline-functions ¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤È¤¤Ë¡¢¥¤¥ó¥é¥¤¥óŸ³«¤Ç¤¤Ê¤¤´Ø¿ô¤¬¤¢¤ì¤Ð·Ù¹ð¤ò½Ð¤¹¡£
-Wlong-long
long long ·¿¤¬»È¤ï¤ì¤Æ¤¤¤ë¤È·Ù¹ð¤ò½Ð¤¹¡£¤³¤ì¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£¤³¤Î·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½Ð¤µ¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢-Wno-long-long ¤ò»ØÄꤹ¤ë¡£-Wlong-long ¤È-Wno-long-long ¥ª¥×¥·¥ç¥ó¤Ï¡¢-pedantic ¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Î¤ß¡¢¹Í褵¤ì¤ë¡£
-Werror
GCC ¤Ë¤Ï¿§¡¹ÆÃÊ̤ʥª¥×¥·¥ç¥ó¤¬¤¢¤Ã¤Æ¡¢¥æ¡¼¥¶¤Î¥×¥í¥°¥é¥à¤ä GCC ¼«ÂΤò¥Ç¥Ð¥Ã¥°¤¹¤ë¤Î¤Ë»È¤ï¤ì¤ë¡£
-g
stabs ·Á¼°¤ò»È¤Ã¤Æ¤¤¤ë¤Û¤È¤ó¤É¤Î¥·¥¹¥Æ¥à¤Ç¡¢-g ¤ò»ØÄꤹ¤ë¤È¡¢GDB ¤À¤±¤¬»È¤¦¤³¤È¤Î¤Ç¤¤ëÆÃÊ̤ΥǥХå°¾ðÊó¤ò»È¤¦¤è¤¦¤Ë¤Ê¤ë¡£¤³¤ÎÆÃÊ̤ʾðÊó¤Ï GDB ¤Î¾ì¹ç¤Ë¤Ï¥Ç¥Ð¥Ã¥°¤ò¤·¤ä¤¹¤¯¤¹¤ë¤¬¡¢Â¾¤Î¥Ç¥Ð¥Ã¥¬¤ò»È¤¦¾ì¹ç¤Ï¡¢¤ª¤½¤é¤¯¡¢¥Ç¥Ð¥Ã¥¬¤¬Íî¤Á¤¿¤ê¡¢¥×¥í¥°¥é¥à¤òÆÉ¤ß¹þ¤á¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¤À¤í¤¦¡£ÆÃÊ̤ʾðÊó¤òÀ¸À®¤¹¤ë¤«¤É¤¦¤«¤ò¤¢¤ëÄøÅÙÀ©¸æ¤·¤¿¤¤¾ì¹ç¤Ï¡¢-gstabs+¡¢-gstabs¡¢-gxcoff+¡¢-gxcoff¡¢-gdwarf-1+¡¢-gdwarf-1 ¤ò»È¤¦¤³¤È(¸å½Ò»²¾È)¡£
¾¤Î¿¤¯¤Î C ¥³¥ó¥Ñ¥¤¥é¤È°ã¤Ã¤Æ¡¢GCC ¤Ç¤Ï -g ¤ò -O
¤È°ì½ï¤Ë»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£ºÇŬ²½¤µ¤ì¤¿¥³¡¼¥É¤Ë¤è¤ë¥·¥ç¡¼¥È¥«¥Ã¥È¤Î¤¿¤á¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¶Ã¤¯¤è¤¦¤Ê·ë²Ì¤¬»þ¡¹½Ð¤ë¤¬¡£Àë¸À¤·¤¿¤Ï¤º¤ÎÊÑ¿ô¤¬Á´¤¯Â¸ºß¤·¤Ê¤¤¤³¤È¤¬¤¢¤ë¡£À©¸æ¤Îή¤ì¤¬¡¢´Êñ¤Ë¸À¤¨¤Ð¡¢Í½ÁÛ¤·¤Æ¤¤¤Ê¤¤¾ì½ê¤Ë°Üư¤·¤Æ¤·¤Þ¤¦¤³¤È¤¬¤¢¤ë¡£Ê¸¤ÎÃæ¤Ë¤Ï¼Â¹Ô¤µ¤ì¤Ê¤¤¤â¤Î¤â½Ð¤Æ¤¯¤ë¡£¤½¤ì¤é¤Îʸ¤¬¡¢´û¤ËÆþ¼êºÑ¤ß¤Î°ìÄê¤Î·ë²Ì¤äÃͤò·×»»¤·¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë¡£Ê¸¤ÎÃæ¤Ë¤ÏÊ̤ξì½ê¤Ç¼Â¹Ô¤µ¤ì¤ë¤â¤Î¤â¤¢¤ë¡£¥ë¡¼¥×¤Î³°¤Ë°Üư¤·¤¿¤«¤é¤Ç¤¢¤ë¡£
¤½¤ì¤Ë¤â¤«¤«¤ï¤é¤º¡¢ºÇŬ²½¤µ¤ì¤¿½ÐÎϤò¥Ç¥Ð¥Ã¥°¤¹¤ë¤³¤È¤Ï²Äǽ¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¡¢¥Ð¥°¤¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤¥×¥í¥°¥é¥à¤òºÇŬ²½¤¹¤ë¤³¤È¤¬ÂÅÅö¤Ê¤³¤È¤Ë¤Ê¤ë¡£
GCC ¤¬Ê£¿ô¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤ò°·¤¨¤ë¤è¤¦¤ËÀ¸À®¤µ¤ì¤Æ¤¤¤ë¤È¤¤Ï°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤¬Ìò¤ËΩ¤Ä¡£
-ggdb
-gstabs
-gstabs+
-gcoff
-gxcoff
-gxcoff+
-gdwarf
-gdwarf+
-gdwarf-2
-glevel
-ggdblevel
-gstabslevel
-gcofflevel
-gxcofflevel
-gdwarflevel
-gdwarf-2level
¥ì¥Ù¥ë 1 ¤Ï¡¢¥Ç¥Ð¥Ã¥°¤¹¤ëͽÄê¤Î¤Ê¤¤¥×¥í¥°¥é¥à¤Î°ìÉô¤Î¥Ð¥Ã¥¯¥È¥ì¡¼¥¹¤¬¼è¤ì¤ë¤°¤é¤¤¤Î¡¢ºÇ¾®¸Â¤Î¾ðÊó¤òÀ¸À®¤¹¤ë¡£¤³¤Î¾ðÊó¤Ë¤Ï¡¢´Ø¿ô¤È³°ÉôÊÑ¿ô¤Îµ½Ò¤¬´Þ¤Þ¤ì¤ë¤¬¡¢¥í¡¼¥«¥ëÊÑ¿ô¤È¹ÔÈÖ¹æ¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤Ï´Þ¤Þ¤ì¤Ê¤¤¡£
¥ì¥Ù¥ë 3 ¤Ï;ʬ¤Î¾ðÊó¤ò´Þ¤á¤ë¡£Î㤨¤Ð¡¢¥×¥í¥°¥é¥à¤Ë¸ºß¤¹¤ëÁ´¤Æ¤Î¥Þ¥¯¥íÄêµÁ¤Ê¤É¤¬´Þ¤Þ¤ì¤ë¡£¥Ç¥Ð¥Ã¥¬¤ÎÃæ¤Ë¤Ï¡¢-g3 ¤ò»È¤Ã¤¿¾ì¹ç¤Ë¥Þ¥¯¥í¤ÎŸ³«¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤â¤Î¤â¤¢¤ë¡£
-p
prof ¥×¥í¥°¥é¥à¤Ë¤è¤ë²òÀϤËŬ¤·¤¿¥×¥í¥Õ¥¡¥¤¥ë¾ðÊó¤ò½ñ¤½Ð¤¹Í¾Ê¬¤Î¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Ç¡¼¥¿¤òɬÍפȤ¹¤ë¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤Þ¤¿¡¢¥ê¥ó¥¯»þ¤Ë¤â»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-pg
gprof ¥×¥í¥°¥é¥à¤Ë¤è¤ë²òÀϤËŬ¤·¤¿¥×¥í¥Õ¥¡¥¤¥ë¾ðÊó¤ò½ñ¤½Ð¤¹Í¾Ê¬¤Î¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Ç¡¼¥¿¤òɬÍפȤ¹¤ë¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤Þ¤¿¡¢¥ê¥ó¥¯»þ¤Ë¤â»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-a
-g ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤È¡¢´ðËÜ¥Ö¥í¥Ã¥¯¤Î³«»ÏÅÀ¤Î¹ÔÈÖ¹æ¤È¥Õ¥¡¥¤¥ë̾¤âµÏ¿¤µ¤ì¤ë¡£¥Þ¥·¥óµ½Ò¤Ç¾å½ñ¤¤µ¤ì¤Æ¤¤¤Ê¤¤¸Â¤ê¡¢¥Ç¥Õ¥©¥ë¥È¤Îưºî¤Ï¥Æ¥¥¹¥È¥Õ¥¡¥¤¥ë bb.out ¤ËÄɲ乤뤳¤È¤Ç¤¢¤ë¡£
¤³¤Î¥Ç¡¼¥¿¤Ï¡¢tcov ¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤Ç²òÀϤ¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤À¤¬¡¢¤³¤Î¥Ç¡¼¥¿¤Î·Á¼°¤Ï tcov ¤¬ÁÛÄꤷ¤Æ¤¤¤ë¤â¤Î¤Ç¤Ê¤¤¤³¤È¤ËÃí°Õ¤¹¤ë¤³¤È¡£¾ÍèŪ¤Ë¤Ï GNU gprof ¤ò¡¢¤³¤Î¥Ç¡¼¥¿¤ò½èÍý¤Ç¤¤ë¤è¤¦¤Ë³ÈÄ¥¤¹¤ëɬÍפ¬¤¢¤ë¤À¤í¤¦¡£
-Q
-ax
-a ¤¬»ØÄꤵ¤ì¤¿¤È¤¤ËÀ¸À®¤µ¤ì¤ë¤â¤Î¤Î¥¹¡¼¥Ñ¡¼¥»¥Ã¥È¤¬½ÐÎϤµ¤ì¤ë¡£½ÐÎϤËÉÕ¤±²Ã¤ï¤ë¤Î¤Ï¡¢¥¸¥ã¥ó¥×¤¬µ¯¤¤¿¤È¤³¤í¤Î´ðËÜ¥Ö¥í¥Ã¥¯¤Î¥¸¥ã¥ó¥×¸µ¤È¥¸¥ã¥ó¥×Àè¤Î¥¢¥É¥ì¥¹¤È¡¢¥¸¥ã¥ó¥×¤Î¼Â¹Ô²ó¿ô¡¢¤½¤ì¤Ë¥ª¥×¥·¥ç¥ó¤Ç¼Â¹Ô¤µ¤ì¤ë´ðËÜ¥Ö¥í¥Ã¥¯¤Î´°Á´¤ÊÎó¤Ç¤¢¤ë¡£½ÐÎϤϡ¢¥Õ¥¡¥¤¥ë bb.out ¤ËÄɲ䵤ì¤ë¡£
ºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤¯¤Æ¤â°Û¤Ê¤ë¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¤ÎÌ̤ò»î¤¹¤³¤È¤¬¤Ç¤¤ë¡£¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤Ï¡¢¥Õ¥¡¥¤¥ë bb.in ¤«¤é´Ø¿ô̾¤Î¥ê¥¹¥È¤òÆÉ¤ß¹þ¤à¡£¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¤Ï¡¢¥ê¥¹¥È¤Ë¤¢¤ë´Ø¿ô¤ËÆþ¤Ã¤¿»þÅÀ¤Ç³«»Ï¤·¡¢¤½¤Î´Ø¿ô¤Î¼Â¹Ô¤¬½ª¤ï¤Ã¤¿ÅÀ¤Ç½ªÎ»¤¹¤ë¡£¥×¥í¥Õ¥¡¥ê¥ó¥°¤«¤é´Ø¿ô¤ò½ü³°¤¹¤ë¾ì¹ç¤Ï¡¢¤½¤Î̾Á°¤ÎÁ°¤Ë `-' ¤òÉÕ¤±¤ë¡£´Ø¿ô̾¤¬°ì°ÕŪ¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢/path/filename.d:functionname ¤È¤¤¤¦·Á¼°¤Ç½ñ¤¯¤³¤È¤Ç¶èÊ̤Ǥ¤ë¡£¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤Î¼Â¹Ô¤Ë¤è¤ê¡¢ÍøÍѲÄǽ¤Ê¥Ñ¥¹Ì¾¤È¥Õ¥¡¥¤¥ë̾¤¬¥Õ¥¡¥¤¥ë bb.out ¤Ë½ñ¤½Ð¤µ¤ì¤ë¡£
´ö¤Ä¤«¤Î´Ø¿ô̾¤Ë¤ÏÆÃÊ̤ʰÕÌ£¤¬¤¢¤ë¡£
__bb_jumps__
bb.out ¤Ë½ñ¤½Ð¤¹¡£__bb_hidecall__
__bb_showret__
__bb_trace__
bbtrace.gz ¤Ë½ñ¤½Ð¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï gzip ¥×¥í¥°¥é¥à¤ò»È¤Ã¤Æ°µ½Ì¤µ¤ì¤ë¤Î¤Ç¡¢gzip ¤¬ PATH ¤ËÆþ¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£popen ´Ø¿ô¤Î¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Ï bbtrace ¤È¤¤¤¦Ì¾Á°¤Ë¤Ê¤ê¡¢°µ½Ì¤Ï¹Ô¤Ê¤ï¤ì¤Ê¤¤¡£¤½¤¦¤¤¤¦¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¤Û¤ó¤Î¿ôÉäΥץí¥Õ¥¡¥¤¥ê¥ó¥°¤Ç¤â¡¢Èó¾ï¤ËµðÂç¤Ê¥Õ¥¡¥¤¥ë¤¬¤Ç¤¤ë¡£
Ãí°Õ: __bb_hidecall__ ¤È __bb_showret__ ¤Ïbbtrace.gz ¤Ë½ñ¤½Ð¤µ¤ì¤ëÎó¤Ë¤Ï±Æ¶Á¤·¤Ê¤¤¡£°Ê²¼¤Ë¡¢¥Õ¥¡¥¤¥ë bb.in ¤Ç°Û¤Ê¤ë¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¥Ñ¥é¥á¡¼¥¿¤ò»È¤Ã¤¿Ã»¤¤Îã¤ò¼¨¤¹¡£´Ø¿ô foo ¤Ë¤Ï¡¢´ðËÜ¥Ö¥í¥Ã¥¯ 1 ¤È 2 ¤¬¤¢¤ê¡¢´Ø¿ô main ¤Î¥Ö¥í¥Ã¥¯ 3 ¤«¤éÆó²ó¸Æ¤Ó½Ð¤µ¤ì¤ë¤È¤¹¤ë¡£¤½¤Î¸Æ¤Ó½Ð¤·¤Î¸å¡¢¥Ö¥í¥Ã¥¯ 3 ¤ÏÀ©¸æ¤ò main ¤Î¥Ö¥í¥Ã¥¯ 4 ¤Ë°Ü¤¹¡£
__bb_trace__ ¤È main ¤ò¥Õ¥¡¥¤¥ë bb.in ¤ËÆþ¤ì¤Æ¤ª¤¯¤È¡¢0 3 1 2 1 2 4 ¤È¤¤¤¦¥Ö¥í¥Ã¥¯Î󤬥ե¡¥¤¥ë bbtrace.gz ¤Ë½ñ¤½Ð¤µ¤ì¤ë¡£¥Ö¥í¥Ã¥¯ 2 ¤«¤é¥Ö¥í¥Ã¥¯ 3 ¤ØÌá¤ë¤Î¤Ï¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¡£¤³¤ì¤Ï¡¢¥Ö¥í¥Ã¥¯¤ÎÃæ¤Î¤¢¤ëÅÀ¤ØÌá¤ë¤¿¤á¤ÇºÇ¾å°Ì¤ËÌá¤ë¤Î¤Ç¤Ï¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£¥Ö¥í¥Ã¥¯¥¢¥É¥ì¥¹ 0 ¤Ï¾ï¤Ë¡¢À©¸æ¤¬Â¬Äꤷ¤¿´Ø¿ô¤Î¤É¤³¤«³°Â¦¤«¤é¡¢¥È¥ì¡¼¥¹¤Ë°Ü¤Ã¤¿¤³¤È¤ò°ÕÌ£¤¹¤ë¡£-foo ¤ò bb.in ¤ËÆþ¤ì¤ë¤È¡¢´Ø¿ô foo ¤Î¥Ö¥í¥Ã¥¯¤Ï¥È¥ì¡¼¥¹¤«¤é½ü¤«¤ì¤ë¤Î¤Ç¡¢0 3 4 ¤À¤±¤¬»Ä¤ë¡£
__bb_jumps__ ¤È main ¤ò¥Õ¥¡¥¤¥ë bb.in ¤ËÆþ¤ì¤ë¤È¡¢¥¸¥ã¥ó¥×¤ÎÉÑÅÙ¤¬¥Õ¥¡¥¤¥ë bb.out ¤Ë½ñ¤½Ð¤µ¤ì¤ë¡£ÉÑÅ٤ϡ¢¥Ö¥í¥Ã¥¯¤Î¥È¥ì¡¼¥¹¤ò¹½À®¤·¡¢¥È¥ì¡¼¥¹Ãæ¤ÎÎÙ¤ê¹ç¤ï¤»¤Î¥Ö¥í¥Ã¥¯¤ÎÂÐËè¤Ë¥«¥¦¥ó¥¿¤ò¥¤¥ó¥¯¥ê¥á¥ó¥È¤¹¤ë¤³¤È¤ÇÆÀ¤é¤ì¤ë¡£¥È¥ì¡¼¥¹ 0 3 1 2 1 2 4 ¤Ï°Ê²¼¤ÎÎó¤òɽ¼¨¤¹¤ë¡£
Jump from block 0x0 to block 0x3 executed 1 time(s) Jump from block 0x3 to block 0x1 executed 1 time(s) Jump from block 0x1 to block 0x2 executed 2 time(s) Jump from block 0x2 to block 0x1 executed 1 time(s) Jump from block 0x2 to block 0x4 executed 1 time(s)
__bb_hidecall__ ¤òÃÖ¤¯¤È¡¢¸Æ½Ð¤·Ì¿Îá¤Ë¤è¤ëÀ©¸æ¤Î°Üư¤Ï¥È¥ì¡¼¥¹¤«¤é¼è¤ê½ü¤«¤ì¤ë¡£¤¹¤Ê¤ï¤Á¡¢¥È¥ì¡¼¥¹¤Ï»°¤Ä¤ÎÉôʬ¤Ëʬ¤±¤é¤ì¤ë¡£0 3 4 ¤È 0 1 2¡¢¤½¤ì¤Ë 0 1 2 ¤Ç¤¢¤ë¡£__bb_showret__ ¤òÃÖ¤¯¤È¡¢¥ê¥¿¡¼¥óÌ¿Îá¤Ë¤è¤ëÀ©¸æ¤Î°Üư¤¬¥È¥ì¡¼¥¹¤ËÄɲ䵤ì¤ë¡£¥È¥ì¡¼¥¹¤Ï¡¢0 3 1 2 3 1 2 3 4 ¤Ë¤Ê¤ë¡£¤³¤Î¥È¥ì¡¼¥¹¤Ï¡¢bbtrace.gz ¤Ë½ñ¤½Ð¤µ¤ì¤ëÎó¤È¤ÏƱ¤¸¤Ç¤Ê¤¤¤³¤È¤ËÃí°Õ¡£¤³¤ì¤Ï¡¢¥¸¥ã¥ó¥×¤ÎÉÑÅÙ¤ò¿ô¤¨¤ë¤Î¤Ë¤·¤«»È¤ï¤ì¤Ê¤¤¡£
-fprofile-arcs
¥×¥í¥°¥é¥àÃæ¤Î¤¢¤é¤æ¤ë¸Ì¤¬Áàºî¤µ¤ì¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥×¥í¥°¥é¥à¤Ï¡¢-a ¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥×¥í¥°¥é¥à¤è¤ê¤Ï¹â®¤Ç¤¢¤ë¡£-a ¤òÉÕ¤±¤ë¤È¡¢¥×¥í¥°¥é¥àÃæ¤Î¤¢¤é¤æ¤ë´ðËÜ¥Ö¥í¥Ã¥¯¤ËÁàºî¥³¡¼¥É¤òÄɲ乤롣¥È¥ì¡¼¥É¥ª¥Õ¤¬¤¢¤ë¡£gcov ¤Ï¡¢Á´¤Æ¤Îʬ´ô¤Ë¤Ä¤¤¤Æ¼Â¹Ô²ó¿ô¤ò¿ô¤¨¤Æ¤¤¤ëÌõ¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢Áàºî¤µ¤ì¤¿Ê¬´ô¤Î¼Â¹Ô²ó¿ô¤«¤é»Ï¤á¤Æ¡¢¥×¥í¥°¥é¥à¤Îή¤ì¤Î¥°¥é¥Õ¤Ë¤Ä¤¤¤Æ¡¢Á´¥°¥é¥Õ¤¬²ò·è¤¹¤ë¤Þ¤Ç·«¤êÊÖ¤·¹Ô¤Ê¤¦¡£¤³¤Î¤¿¤á¡¢gcov ¤Ï¡¢-a ¤ÇÆÀ¤é¤ì¤ë¾ðÊó¤ò»È¤¦¥×¥í¥°¥é¥à¤è¤ê¤Ï¡¢¤¤¤¯¤é¤«ÃÙ¤¯¤Ê¤ë¡£
-fprofile-arcs ¤ò»ØÄꤹ¤ë¤È¡¢Ê¬´ô³ÎΨ¤ò¸«ÀѤâ¤Ã¤¿¤ê¡¢´ðËÜ¥Ö¥í¥Ã¥¯¤Î¼Â¹Ô²ó¿ô¤ò·×»»¤¹¤ë¤³¤È¤â²Äǽ¤Ë¤Ê¤ë¡£°ìÈ̤ˡ¢´ðËÜ¥Ö¥í¥Ã¥¯¤Î¼Â¹Ô²ó¿ô¤À¤±¤Ç¤Ï¡¢Á´¤Æ¤Îʬ´ô³ÎΨ¤ò¸«ÀѤâ¤ë¤³¤È¤¬½ÐÍè¤ë¤À¤±¤Î¾ðÊó¤ÏÆÀ¤é¤ì¤Ê¤¤¡£¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥×¥í¥°¥é¥à¤¬½ªÎ»¤¹¤ë¤È¤¡¢¸Ì¤Î¼Â¹Ô²ó¿ô¤ò sourcename.da ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ë¥»¡¼¥Ö¤¹¤ë¡£¥ª¥×¥·¥ç¥ó -fbranch-probabilities
(see Options that Control Optimization) ¤ò»ØÄꤷ¤ÆºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¡¢¸«ÀѤâ¤Ã¤¿Ê¬´ô³ÎΨ¤ò»È¤Ã¤ÆºÇŬ²½¤ò¹Ô¤Ê¤¦¡£
-ftest-coverage
gcov ÍѤΥǡ¼¥¿¥Õ¥¡¥¤¥ë¤òºî¤ë(see gcov: a GCC Test Coverage Program).
¤³¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë̾¤Ï¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë̾¤Ç»Ï¤Þ¤ë¡£
sourcename.bb
gcov ¤¬¹ÔÈÖ¹æËè¤Ë´ðËÜ¥Ö¥í¥Ã¥¯¤Î¼Â¹Ô²ó¿ô¤òÂбþ¤µ¤»¤ë¤Î¤Ë»È¤¦¡£
sourcename.bbg
gcov ¤¬¥×¥í¥°¥é¥à¤Î¥Õ¥í¡¼¥°¥é¥Õ¤òºÆ¹½ÃÛ¤¹¤ë¤³¤È¤Ç¡¢sourcename.da ¥Õ¥¡¥¤¥ë¤Ë¤¢¤ë¾ðÊ󤫤顢Á´¤Æ¤Î´ðËÜ¥Ö¥í¥Ã¥¯¤È¸Ì¤Î¼Â¹Ô²ó¿ô¤ò·×»»¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ë¡£(sourcename.da ¤Ï¡¢-fprofile-arcs ¤Î½ÐÎϤǤ¢¤ë¡£)
-Q
-dletters
foo.c.rtl ¤ä foo.c.jump Åù)¡£°Ê²¼¤Ë letters ¤Ë»ØÄê¤Ç¤¤ëʸ»ú¤È¤½¤Î°ÕÌ£¤ò¼¨¤¹¡£
b
file.bp ¤Ë½ÐÎϤ¹¤ë¡£c
file.combine ¤Ë¥À¥ó¥×¤¹¤ë¡£d
file.dbr ¤Ë¥À¥ó¥×¤¹¤ë¡£D
r
file.rtl ¤Ë¥À¥ó¥×¤¹¤ë¡£j
file.jump ¤Ë¥À¥ó¥×¤¹¤ë¡£F
file.addressof ¤Ë¥À¥ó¥×¤¹¤ë¡£f
file.flow ¤Ë¥À¥ó¥×¤¹¤ë¡£g
file.greg ¤Ë¥À¥ó¥×¤¹¤ë¡£G
file.gcse ¤Ë¥À¥ó¥×¤¹¤ë¡£j
file.jump ¤Ë¥À¥ó¥×¤¹¤ë¡£J
file.jump2 ¤Ë¥À¥ó¥×¤¹¤ë¡£k
file.stack ¤Ë¥À¥ó¥×¤¹¤ë¡£l
file.lreg ¤Ë¥À¥ó¥×¤¹¤ë¡£L
file.loop ¤Ë¥À¥ó¥×¤¹¤ë¡£M
file.mach ¤Ë¥À¥ó¥×¤¹¤ë¡£N
file.regmove ¤Ë¥À¥ó¥×¤¹¤ë¡£r
file.rtl ¤Ë¥À¥ó¥×¤¹¤ë¡£R
file.sched2 ¤Ë¥À¥ó¥×¤¹¤ë¡£s
file.cse ¤Ë¥À¥ó¥×¤¹¤ë¡£S
file.sched ¤Ë¥À¥ó¥×¤¹¤ë¡£t
file.cse2
¤Ë¥À¥ó¥×¤¹¤ë¡£a
m
p
x
r ¤È°ì½ï¤Ë»È¤¦¡£y
A
-fdump-unnumbered
-fpretend-float
-save-temps
foo.c ¤ò -c -save-temps ¤òÉÕ¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¡¢foo.o ¤Î¾¤Ë¡¢foo.i ¤È foo.s ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬¤Ç¤¤ë¡£
-print-file-name=library
-print-prog-name=program
-print-file-name ¤È»÷¤Æ¤¤¤Æ¡¢cpp ¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤ò¸¡º÷¤¹¤ë¡£
-print-libgcc-file-name
-print-file-name=libgcc.a ¤ÈƱ¤¸¡£
¤³¤ì¤Ï¡¢-nostdlib ¤ä -nodefaultlibs ¤ò»È¤¤¤¿¤¤¤¬¡¢libgc.a ¤Ï¥ê¥ó¥¯¤·¤¿¤¤¤È¤¤¤¦¤È¤¤ËÊØÍø¤Ç¤¢¤ë¡£¤½¤ì¤Ë¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ì¤ÐÎɤ¤¡£
gcc -nostdlib files... `gcc -print-libgcc-file-name`
-print-search-dirs
¤³¤ì¤Ï gcc ¤¬ installation problem, cannot exec cpp: No such file or directory
¤È¤¤¤¦¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½Ð¤·¤¿¤È¤¤ËÌò¤ËΩ¤Ä¡£¤³¤Î¥¨¥é¡¼¤¬½Ð¤¿¤È¤¤Ë¤Ï¡¢cpp ¤È¤½¤Î¾¤Î¥³¥ó¥Ñ¥¤¥é¤Î¥µ¥Ö¥×¥í¥°¥é¥à¤ògcc ¤¬¤¢¤ë¤ÈÁÛÄꤷ¤Æ¤¤¤ë¾ì½ê¤ËÃÖ¤¯¤«¡¢¤¢¤ë¤¤¤Ï¤½¤ì¤é¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ò´Ä¶ÊÑ¿ô GCC_EXEC_PREFIX ¤Ç»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¡£¤³¤³¤Ç»ØÄꤹ¤ë¥Ç¥£¥ì¥¯¥È¥ê̾¤Ë¤ÏºÇ¸å¤Ë '/' ¤òÉÕ¤±¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤ÆÍߤ·¤¤¡£See Environment Variables.
°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Ï¿§¡¹¤Ê¼ïÎà¤ÎºÇŬ²½¤òÀ©¸æ¤¹¤ë¡£
-O
-O1
-O ¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤ÎÌÜɸ¤Ï¥³¥ó¥Ñ¥¤¥ë¤Î¥³¥¹¥È¤ò¾®¤µ¤¯¤¹¤ë¤³¤È¤È¥Ç¥Ð¥Ã¥°¤¬´üÂԤɤª¤ê¤Î·ë²Ì¤Ë¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£³ÆÊ¸¤ÏÆÈΩ¤·¤Æ¤¤¤ë¡£Ê¸¤Èʸ¤Î´Ö¤Ë¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¤òÀßÄꤷ¤Æ¥×¥í¥°¥é¥à¤ò»ß¤á¤¿¤È¤¡¢¤É¤ÎÊÑ¿ô¤Ë¤â¿·¤¿¤ÊÃͤòÂåÆþ¤Ç¤¤ë¤·¡¢¥×¥í¥°¥é¥à¥«¥¦¥ó¥¿¤òÊѹ¹¤·¤Æ¡¢¤½¤Î´Ø¿ôÆâ¤Î¾¤Î¤É¤Îʸ¤Ë¤âÈô¤Ð¤¹¤³¤È¤¬¤Ç¤¡¢¤½¤·¤Æ¥½¡¼¥¹¥³¡¼¥É¤«¤é´üÂԤǤ¤ë·ë²Ì¤ÈÁ´¤¯Æ±¤¸¤â¤Î¤¬ÆÀ¤é¤ì¤ë¡£
-O ¤ò»ØÄꤷ¤Ê¤¤¤È¡¢register Àë¸À¤·¤¿ÊÑ¿ô¤·¤«¥ì¥¸¥¹¥¿¤Ë³ä¤êÅö¤Æ¤Ê¤¤¡£¥³¥ó¥Ñ¥¤¥ë·ë²Ì¤Î¥³¡¼¥É¤Ï¡¢-O ¤Ê¤·¤Î PCC ¤Çºî¤é¤ì¤ë¤è¤ê¤â¤ä¤ä°¤¤¡£
-O ¤ò»ØÄꤹ¤ë¤È¡¢¥³¡¼¥É¥µ¥¤¥º¤È¼Â¹Ô»þ´Ö¤ò¾®¤µ¤¯¤·¤è¤¦¤È¤¹¤ë¡£
-O ¤ò»ØÄꤹ¤ë¤È¡¢Á´µ¡¼ï¤Ç -fthread-jumps ¤È-fdefer-pop ¤ò͸ú¤Ë¤¹¤ë¡£Ãٱ䥹¥í¥Ã¥È¤Î¤¢¤ëµ¡¼ï¤Ç¤Ï-fdelayed-branch ¤ò¥ª¥ó¤Ë¤·¡¢¥Õ¥ì¡¼¥à¥Ý¥¤¥ó¥¿¤Ê¤·¤Ç¤â¥Ç¥Ð¥Ã¥°¤ò¥µ¥Ý¡¼¥È¤Ç¤¤ëµ¡¼ï¤Ç¤Ï -fomit-frame-pointer ¤ò¥ª¥ó¤Ë¤¹¤ë¡£µ¡¼ï¤Ë¤è¤Ã¤Æ¤Ï¡¢Â¾¤Î¥ª¥×¥·¥ç¥ó¤ò¥ª¥ó¤Ë¤¹¤ë¤â¤Î¤â¤¢¤ë¡£
-O2
-O2 ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢¥ë¡¼¥×Ÿ³«¤ä´Ø¿ô¤Î¥¤¥ó¥é¥¤¥óŸ³«¤ò¹Ô¤Ê¤ï¤Ê¤¤¡£-O ¤ÈÈæ¤Ù¤ë¤È¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥³¥ó¥Ñ¥¤¥ë»þ´Ö¤¬Áý¤¨¡¢À¸À®¥³¡¼¥É¤Î¸úΨ¤¬Îɤ¯¤Ê¤ë¡£
-O2 ¤ò»ØÄꤹ¤ë¤È¡¢¥ë¡¼¥×Ÿ³«¤È´Ø¿ô¤Î¥¤¥ó¥é¥¤¥óŸ³«¡¢¤½¤ì¤Ë¸·Ì©¤Ê¥¨¥¤¥ê¥¢¥·¥ó¥°¤ò½ü¤¤¤¿Á´¤Æ¤ÎºÇŬ²½¤¬Í¸ú¤Ë¤Ê¤ë¡£¤Þ¤¿¡¢Á´¤Æ¤Îµ¡¼ï¤Ç -fforce-mem ¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¡¢¥Ç¥Ð¥Ã¥°¤È´³¾Ä¤·¤Ê¤¤µ¡¼ï¤Ç¤Ï¥Õ¥ì¡¼¥à¥Ý¥¤¥ó¥¿¤Îºï½ü¤ò¹Ô¤Ê¤¦¡£
-O3
-O3 ¤Ï -O2 ¤Ç»ØÄꤵ¤ì¤ëÁ´¤Æ¤ÎºÇŬ²½¤ò¹Ô¤Ê¤¤¡¢¤«¤Ä inline-functions ¥ª¥×¥·¥ç¥ó¤ò¹Ô¤Ê¤¦¡£
-O0
-Os
-Os ¤ò»ØÄꤹ¤ë¤È¡¢ÉáÄ̤ϥ³¡¼¥É¥µ¥¤¥º¤òÂ礤¯¤·¤Ê¤¤ -O2 ¤ÎºÇŬ²½¤òÁ´¤ÆÍ¸ú¤Ë¤¹¤ë¡£¤Þ¤¿¡¢¥³¡¼¥É¥µ¥¤¥º¤ò¾®¤µ¤¯¤¹¤ë¤è¤¦À߷פµ¤ì¤¿¤µ¤é¤Ê¤ëºÇŬ²½¤ò¼Â¹Ô¤¹¤ë¡£
-O ¥ª¥×¥·¥ç¥ó¤òÊ£¿ô»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢ºÇŬ²½¥ì¥Ù¥ë¤Î¿ô»ú¤¬ÉÕ¤¤¤Æ¤¤¤Æ¤â¤¤¤Ê¤¯¤Æ¤â¡¢ºÇ¸å¤Ë»ØÄꤷ¤¿¥ª¥×¥·¥ç¥ó¤¬Í¸ú¤Ë¤Ê¤ë¡£
-fflag ¤È¤¤¤¦·Á¤Î¥ª¥×¥·¥ç¥ó¤Ïµ¡¼ïÆÈΩ¤Î¥Õ¥é¥°¤ò»ØÄꤹ¤ë¡£¤Û¤È¤ó¤É¤Î¥Õ¥é¥°¤Ë¤Ï¡¢¹ÎÄê·Á¤ÈÈÝÄê·Á¤¬¤¢¤ë¡£-ffoo ¤ÎÈÝÄê·Á¤Ï -fno-foo ¤Ç¤¢¤ë¡£°Ê²¼¤Îɽ¤Ç¤Ï¡¢¤É¤Á¤é¤«°ìÊý¤Î·Á¤·¤«Îóµó¤·¤Æ¤¤¤Ê¤¤¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ê¤¤¤Û¤¦¤òÎóµó¤·¤Æ¤¤¤ë¡£¤â¤¦°ìÊý¤Î·Á¼°¤Ï¡¢no- ¤ò¼è¤ê½ü¤¯¤«¡¢Äɲ乤ì¤ÐÎɤ¤¡£
-ffloat-store
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢68000 ¤ÎÍͤʵ¡¼ï¤Ç¡¢¹¥¤Þ¤·¤¯¤Ê¤¤Í¾Ê¬¤ÊÀºÅÙ¤ò»È¤ï¤Ê¤¤¤è¤¦¤Ë¤Ê¤ë¡£68000 ¤Ç¤Ï¡¢(68881 ¤Î)ÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿¤Ï¡¢double ¤¬»ý¤Ä¤ÈÁÛÄꤵ¤ì¤Æ¤¤¤ë¤è¤ê¤â;ʬ¤ÎÀºÅÙ¤òÊÝ»ý¤·¤Æ¤¤¤ë¡£x86 ¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ë¤Ä¤¤¤Æ¤âƱÍͤǤ¢¤ë¡£¤Û¤È¤ó¤É¤Î¥×¥í¥°¥é¥à¤Ë¤È¤Ã¤Æ¤Ï¡¢ÀºÅÙ¤¬Í¾Ê¬¤Ë¹â¤¤¤Î¤ÏÍøÅÀ¤¬²Ã¤ï¤ë¤À¤±¤Ç¤¢¤ë¤¬¡¢´ö¤Ä¤«¤Î¥×¥í¥°¥é¥à¤ÏIEEE ÉâÆ°¾®¿ôÅÀ¤Î¸·Ì©¤ÊÄêµÁ¤òÁÛÄꤷ¤Æ¤¤¤ë¡£¤½¤¦¤¤¤¦¥×¥í¥°¥é¥à¤ËÂФ·¤Æ¤Ï¡¢Å¬Åö¤ÊÃæ´Ö·×»»·ë²Ì¤òÁ´¤ÆÊÑ¿ô¤Ë³ÊǼ¤¹¤ë¤è¤¦¤Ë¥×¥í¥°¥é¥à¤ò½¤Àµ¤·¤Æ¤ª¤¤¤Æ¡¢-ffloat-store ¤ò»È¤¦¤³¤È¡£
-fno-default-inline
-O ÉÕ¤¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¾ì¹ç¡¢¥¯¥é¥¹¥¹¥³¡¼¥×Æâ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥á¥ó¥Ð´Ø¿ô¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¥¤¥ó¥é¥¤¥óŸ³«¤µ¤ì¤ë¡£¤¹¤Ê¤ï¤Á¡¢¥á¥ó¥Ð´Ø¿ô̾¤ÎÁ°¤Ë inline ¤òÉÕ¤±¤ëɬÍפ¬¤Ê¤¤¤Î¤Ç¤¢¤ë¡£
-fno-defer-pop
-fforce-mem
-O2 ¤ò»ØÄꤹ¤ë¤È¤³¤Î¥ª¥×¥·¥ç¥ó¤¬Í¸ú¤Ë¤Ê¤ë¡£
-fforce-addr
-fforce-mem ¤ÈÆ±ÄøÅÙ¤ËÎɤ¤¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£
-fomit-frame-pointer
µ¡¼ï¤Ë¤è¤Ã¤Æ¤Ï¡¢Vax ¤Î¤è¤¦¤Ë¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Î¸ú²Ì¤¬¤Ê¤¤¤â¤Î¤â¤¢¤ë¡£É¸½à¤Î¸Æ¤Ó½Ð¤·¥·¡¼¥±¥ó¥¹¤¬¼«Æ°Åª¤Ë¥Õ¥ì¡¼¥à¥Ý¥¤¥ó¥¿¤ò¼è°·¤¦¤Î¤Ç¡¢¥Õ¥ì¡¼¥à¥Ý¥¤¥ó¥¿¤¬Â¸ºß¤·¤Ê¤¤¿¶¤ê¤ò¤·¤Æ¤â²¿¤â¥»¡¼¥Ö¤µ¤ì¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£¥Þ¥·¥óµ½Ò¥Þ¥¯¥í FRAME_POINTER_REQUIRED ¤¬¡¢¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Ç¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»È¤¨¤ë¤«¤É¤¦¤«¤ò·èÄꤹ¤ë¡£See Registers.
-fno-inline
inline ¤ËÃí°Õ¤òʧ¤ï¤Ê¤¤¡£ÉáÄ̤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢´Ø¿ô¤Î¥¤¥ó¥é¥¤¥óŸ³«¤ò°ìÀڹԤʤ碌¤Ê¤¤¤¿¤á¤Ë»È¤ï¤ì¤ë¡£ºÇŬ²½¤ò¹Ô¤Ê¤ï¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¤É¤Î´Ø¿ô¤â¥¤¥ó¥é¥¤¥óŸ³«¤µ¤ì¤ë¤³¤È¤Ï¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤ÆÍߤ·¤¤¡£
-finline-functions
¤¢¤ë´Ø¿ô¤ËÂФ¹¤ëÁ´¤Æ¤Î¸Æ¤Ó½Ð¤·¤¬Åý¹ç¤µ¤ì¤ë¾ì¹ç¡¢¤½¤Î´Ø¿ô¤¬static ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢ÉáÄ̤Ϥ½¤Î´Ø¿ô¤Ï¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤È¤·¤Æ¤Ï½ÐÎϤµ¤ì¤Ê¤¤¡£
-finline-limit-n
Ãí°Õ¡£µ¿»÷Ì¿Îá¤Ï¡¢º£¤Î¤³¤ÎÆÃÄê¤Îʸ̮¤Ë¤ª¤¤¤Æ¤Ï¡¢´Ø¿ô¤ÎÂ礤µ¤ÎÃê¾ÝŪ¤Ê¼ÜÅÙ¤òɽ¤¹¡£¥¢¥»¥ó¥Ö¥êÌ¿Îá¿ô¤òɽ¤·¡¢¤½¤Î°ÕÌ£¤Ï¤¢¤ë¥ê¥ê¡¼¥¹¤ÈÊ̤Υê¥ê¡¼¥¹¤ÇÊѤï¤ë²ÄǽÀ¤¬¤¢¤ë¡£
-fkeep-inline-functions
static ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ç¤â¡¢¼Â¹Ô»þ¤Ë¸Æ¤Ó½Ð¤·²Äǽ¤ÊÈǤδؿô¤òÊ̸Ĥ˽ÐÎϤ¹¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï extern inline Àë¸À¤µ¤ì¤¿´Ø¿ô¤Ë¤Ï±Æ¶Á¤·¤Ê¤¤¡£
-fkeep-static-consts
static const ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤ëÊÑ¿ô¤¬»²¾È¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤â¡¢¤½¤ÎÊÑ¿ô¤ò½ÐÎϤ¹¤ë¡£
GCC ¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤¹¤ë¡£ºÇŬ²½¤ÎÍ̵¤Ë´Ø¤ï¤é¤º¤Ë¡¢GCC ¤ËÊÑ¿ô¤¬»²¾È¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¸¡ºº¤µ¤»¤¿¤¤¾ì¹ç¤Ï¡¢-fno-keep-static-consts ¥ª¥×¥·¥ç¥ó¤ò»È¤¨¤ÐÎɤ¤¡£
-fno-function-cse
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¥³¡¼¥É¤Î¸úΨ¤¬°¤¯¤Ê¤ë¤¬¡¢¥¢¥»¥ó¥Ö¥é¤Î½ÐÎϤòÊѤˤ¤¤¸¤Ã¤¿¤è¤¦¤Ê¾ì¹ç¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤È¼Â¹Ô¤µ¤ì¤ëºÇŬ²½½èÍý¤¬º®Í𤵤»¤é¤ì¤ë²ÄǽÀ¤¬¤¢¤ë
-ffast-math
sqrt ´Ø¿ô¤Î°ú¿ô¤¬Éé¤Ë¤Ê¤é¤Ê¤¤¤È¤«¡¢ÉâÆ°¾®¿ôÅÀÃͤ¬NaN ¤Ë¤Ê¤ë¤³¤È¤Ï¤Ê¤¤¤È¤¤¤¦²¾Äê¤ò¹Ô¤Ê¤¦¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¤É¤Î -O ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤â͸ú¤Ë¤Ê¤ë¤³¤È¤Ï¤Ê¤¤¡£²¿¸Î¤Ê¤é¡¢IEEE ¤ä ANSI ¤Î¿ô³Ø´Ø¿ô¤Îµ¬Â§¡¿»ÅÍͤ˸·Ì©¤Ë´ð¤Å¤¤¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤Î¾ì¹ç¤Ï¡¢½ÐÎϤ¬Àµ¤·¤¯¤Ê¤¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ë¤«¤é¤Ç¤¢¤ë¡£
°Ê²¼¤Î¥ª¥×¥·¥ç¥ó·²¤Ï¡¢ÆÃÄê¤ÎºÇŬ²½¤òÀ©¸æ¤¹¤ë¡£-O2 ¥ª¥×¥·¥ç¥ó¤Ï¡¢-funroll-loops ¤È -funroll-all-loops¡¢
-fstrict-aliasing ¥ª¥×¥·¥ç¥ó¤ò½ü¤¯¡¢Á´¤Æ¤ÎºÇŬ²½¤ò¼Â¹Ô¤¹¤ë¡£Â¿¤¯¤Îµ¡¼ï¤Ç¤Ï¡¢-O ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢-fthread-jumps ¤È-fdelayed-branch ¥ª¥×¥·¥ç¥ó¤ò͸ú¤Ë¤¹¤ë¤¬¡¢ÆÃÄê¤Îµ¡¼ï¤Ç¤ÏÊ̤ΰ·¤¤¤ò¤¹¤ë¡£
°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¹âÅ٤ʺÇŬ²½¤ò¹Ô¤Ê¤¤¤¿¤¤¤È¤¤¤¦¾ì¹ç¤Ë»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
-fstrength-reduce
-fthread-jumps
-fcse-follow-jumps
else Àá¤Ä¤¤Î if ʸ¤ò¸«¤Ä¤±¤ë¤È¡¢¥Æ¥¹¥È¤µ¤ì¤¿¾ò·ï¤¬µ¶¤Î¤È¤¤Î¥¸¥ã¥ó¥×¤Ë½¾¤¦¡£
-fcse-skip-blocks
-fcse-follow-jumps ¤ËÎɤ¯»÷¤Æ¤¤¤ë¤¬¡¢CSE ¤Ï¾ò·ïŪ¤Ë¥Ö¥í¥Ã¥¯¤òÈô¤Ó±Û¤¹¥¸¥ã¥ó¥×¤Ë½¾¤¦¡£CSE ¤¬ else Àá¤Î¤Ê¤¤if ʸ¤ò¸«¤Ä¤±¤ë¤È¡¢if Àá¤ÎËÜÂΤΤޤï¤ê¤Î¥¸¥ã¥ó¥×¤Ë½¾¤¦¡£
-frerun-cse-after-loop
-frerun-loop-opt
-fgcse
-fexpensive-optimizations
-foptimize-register-moves
-fregmove
-O2 °Ê¾å¤¬»ØÄꤵ¤ì¤¿¤È¤¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤³¤ÎºÇŬ²½¤ò͸ú¤Ë¤¹¤ë¡£
¤Ê¤ª¡¢-fregmove ¤È -foptimize-register-moves ¤ÏƱ¤¸ºÇŬ²½¤Ç¤¢¤ë¡£
-fdelayed-branch
-fschedule-insns
-fschedule-insns2
-fschedule-insns ¤È¤Û¤ÜƱ¤¸¤Ç¡¢°ã¤¤¤Ï¥ì¥¸¥¹¥¿³äÅö¤¬´°Î»¤·¤¿¸å¤Ë¤â¤¦°ìÅÙÌ¿Î᥹¥±¥¸¥å¡¼¥ê¥ó¥°¤Î¥Ñ¥¹¤ò¹Ô¤Ê¤¦¤³¤È¤Ç¤¢¤ë¡£¤³¤ì¤¬¤È¤ê¤ï¤±Ìò¤ËΩ¤Ä¤Î¤Ï¡¢¥ì¥¸¥¹¥¿¿ô¤¬Èæ³ÓŪ¾¯¤Ê¤¯¡¢¥á¥â¥ê¤«¤é¤Î¥í¡¼¥ÉÌ¿Î᤬ʣ¿ô¥µ¥¤¥¯¥ë¤«¤«¤ë¤è¤¦¤Êµ¡¼ï¤Î¾ì¹ç¤Ç¤¢¤ë¡£
-ffunction-sections
-fdata-sections
¥ê¥ó¥«¤ËÌ¿Îá¶õ´Ö¤Î»²¾È¤Î¶É½êÀ¤ò²þÁ±¤¹¤ëºÇŬ²½¤ò¹Ô¤Ê¤¦µ¡Ç½¤¬¤¢¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤ÈÎɤ¤¤À¤í¤¦¡£HP-UX ¤Î²ÔƯ¤¹¤ë HPPA ¥×¥í¥»¥Ã¥µ¤È Solaris 2 ¤Î²ÔƯ¤¹¤ë SPARC ¥×¥í¥»¥Ã¥µ¤Ë¤Ï¤³¤Î¤è¤¦¤ÊºÇŬ²½µ¡Ç½¤Î¤¢¤ë¥ê¥ó¥«¤¬Â¸ºß¤¹¤ë¡£ELF ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë·Á¼°¤ò»È¤Ã¤Æ¤¤¤ë¾¤Î¥·¥¹¥Æ¥à¤ä¡¢ AIX ¤â¾Í褳¤ÎºÇŬ²½µ¡Ç½¤¬²Ã¤ï¤ë²ÄǽÀ¤¬¤¢¤ë¡£
¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤Î¤Ï¡¢»È¤¦¤³¤È¤Ë¤è¤Ã¤ÆÃø¤·¤¤¸æÍø±×¤¬¤¢¤ë¾ì¹ç¤Ë¸Â¤ë¤³¤È¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢¥¢¥»¥ó¥Ö¥é¤È¥ê¥ó¥«¤¬ºî¤ë¡¢¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ä¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤¬Â礤¯¤Ê¤ê¡¢¤½¤Î¤¿¤á¤ËÃÙ¤¯¤Ê¤ë¤³¤È¤â¤¢¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢Á´¤Æ¤Î¥·¥¹¥Æ¥à¤Çgprof ¤¬»È¤¨¤Ê¤¯¤Ê¤ë¡£¤Þ¤¿¡¢-g ¤È¶¦¤Ë»ØÄꤹ¤ë¤È¡¢¥Ç¥Ð¥Ã¥°»þ¤ËÌäÂ꤬À¸¤¸¤ë²ÄǽÀ¤¬¤¢¤ë¡£
-fcaller-saves
¤¤¤¯¤Ä¤«¤Îµ¡¼ï¤Ç¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤¬¾ï¤Ë¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¤½¤¦¤¤¤¦µ¡¼ï¤Ë¤Ï¡¢Âå¤ï¤ê¤Ë»È¤¦¤Ù¤¡¢¸Æ¤Ó½Ð¤·»þÊݸ¥ì¥¸¥¹¥¿¤¬ÉáÄ̤ʤ¤¤Î¤Ç¤¢¤ë¡£
Á´¤Æ¤Îµ¡¼ï¤Ç¡¢ºÇŬ²½¥ì¥Ù¥ë¤ò 2 °Ê¾å¤Ë¤¹¤ë¤È¤³¤Î¥ª¥×¥·¥ç¥ó¤¬¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤Ê¤ë¡£
-funroll-loops
-funroll-loops ¤Ï¡¢-fstrength-reduce ¤È-frerun-cse-after-loop ¤ò´Þ¤à¡£
-funroll-all-loops
-funroll-all-loops ¤Ï¡¢-fstrength-reduce ¤È-frerun-cse-after-loop ¤ò´Þ¤à¡£
-fmove-all-movables
-freduce-all-givs
Ãí°Õ¡£Fortran ¤Ç½ñ¤«¤ì¤¿¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ï-fmove-all-movables ¤È -freduce-all-givs ¤Ï¡¢ºÇŬ²½¤ò¹Ô¤¦¤È¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤Ê¤ë¡£
¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ç¡¢À¸À®¤µ¤ì¤ë¥³¡¼¥É¤¬¤è¤¯¤Ê¤ë¤³¤È¤â¤¢¤ë¤·¡¢°¤¯¤Ê¤ë¤³¤È¤â¤¢¤ë¡£·ë²Ì¤Ï¡¢¥½¡¼¥¹¥³¡¼¥É¤Ç¤Î¥ë¡¼¥×¤Ë¹½Â¤¤Ë¶¯¤¯°Í¸¤¹¤ë¡£
¤³¤ÎÆó¤Ä¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥ë¡¼¥×ºÇŬ²½¤ò²þÎɤ¹¤ë¿§¡¹¤ÊÊýË¡¤Î͸úÀ¤òÃΤëÌòÌܤ¬½ª¤ï¤Ã¤¿¤Ê¤é¡¢¤¤¤Ä¤«ºï½ü¤¹¤ëͽÄê¤Ç¤¢¤ë¡£
¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢ÆÉ¼Ô¤Î¥³¡¼¥É¤ÎÀǽ¤Ë¤É¤ì¤°¤é¤¤¸ú²Ì¤¬¤¢¤Ã¤¿¤«¤ò¡¢²æ¡¹(gcc@gcc.gnu.org ¤È fortran@gnu.org)
¤ËÃΤ餻¤ÆÍߤ·¤¤¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤¬Í¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¤¤ËÃÙ¤¯¤Ê¤Ã¤¿¥³¡¼¥É¤Ë²æ¡¹¤ÏÈó¾ï¤Ë¶½Ì£¤¬¤¢¤ë¡£
-fno-peephole
-fbranch-probabilities
-fprofile-arcs (see Options for Debugging Your Program or gcc)¤òÉÕ¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤¿¸å¡¢Æó²óÌÜ¤Ï -fbranch-probabilities ¤òÉÕ¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¡¢Ê¬´ô¤¬µ¯¤³¤ë·ÐÏ©¤Î¿ä¬¤Ë´ð¤Å¤¯ºÇŬ²½¤ò²þÎɤ¹¤ë¡£
-fbranch-probabilities ¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤Ï REG_EXEC_COUNT
¤È¤¤¤¦¥Î¡¼¥È¤ò³Æ´ðËÜ¥Ö¥í¥Ã¥¯¤ÎºÇ½é¤ÎÌ¿Îá¤ËÉÕ¤±¡¢REG_BR_PROB ¤È¤¤¤¦¥Î¡¼¥È¤ò³Æ JUMP_INSN ¤È CALL_INSN ¤ËÉÕ¤±¤ë¡£¤³¤ì¤é¤ò»È¤Ã¤ÆºÇŬ²½¤ò¸þ¾å¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤ë¡£¸½ºß¡¢¤³¤ì¤é¤Ï°ì²Õ½ê¤Ç¤·¤«»È¤ï¤ì¤Æ¤¤¤Ê¤¤¡£reorg.c ¤Ç¡¢¤¢¤ëʬ´ô¤¬¤É¤Á¤é¤ÎÊý¸þ¤Ëµ¯¤³¤ê¤½¤¦¤«¤ò¿ä¬¤¹¤ëÂå¤ï¤ê¤Ë¡¢REG_BR_PROB ¤ÎÃͤò»È¤Ã¤Æ¤è¤êʬ´ô¤¹¤ëÉÑÅÙ¤¬¹â¤¤Êý¸þ¤òÀµ³Î¤Ë·èÄꤹ¤ë¡£
-fstrict-aliasing
unsigned int ¤Ï int ¤ÎÊÌ̾¤Ë¤Ê¤ê¤¦¤ë¤¬¡¢void* ¤ä double ¤ÎÊÌ̾¤Ë¤Ï¤Ê¤ê¤¨¤Ê¤¤¡£Ê¸»ú·¿¤Ï¾¤Î¤É¤ó¤Ê·¿¤ÎÊÌ̾¤Ë¤â¤Ê¤ê¤¦¤ë¡£
°Ê²¼¤Î¤è¤¦¤Ê¥³¡¼¥É¤Ë¤ÏÆÃÊ̤ËÃí°Õ¤¬É¬ÍפǤ¢¤ë¡£
union a_union {
int i;
double d;
};
int f() {
a_union t;
t.d = 3.0;
return t.i;
}
¶¦ÍÑÂΤΡ¢°ìÈֺǸå¤Ë½ñ¤¹þ¤ß¤¬¹Ô¤ï¤ì¤¿¥á¥ó¥Ð¤È¤Ï°Û¤Ê¤ë¥á¥ó¥Ð¤ÎÃͤò¸Æ¤Ó½Ð¤¹¤È¤¤¤¦¼êË¡(¡Ö·¿¤â¤¸¤ê¡×¡¢type-punning ¤È¸Æ¤Ð¤ì¤ë)¤ÏÎɤ¯¹Ô¤ï¤ì¤Æ¤¤¤ë¡£-fstrict-aliasing ¤ò»ØÄꤷ¤Æ¤â¡¢·¿¤â¤¸¤ê¤Ïµö¤µ¤ì¤ë¤Î¤Ç¡¢¥á¥â¥ê¤Ï¶¦ÍÑÂη¿¤òÄ̤¸¤Æ»²¾È¤µ¤ì¤ë¡£¤³¤Î¤¿¤á¡¢¾åµ¤Î¥³¡¼¥É¤Ï´üÂԤɤª¤ê¤Ëưºî¤¹¤ë¡£¤À¤¬¡¢¼¡¤Î¥³¡¼¥É¤Ï´üÂԤɤª¤ê¤Ë¤Ê¤é¤Ê¤¤¡£
int f() {
a_union t;
int* ip;
t.d = 3.0;
ip = &t.i;
return *ip;
}
¸À¸ì¸ÇͤÎÊÌ̾²òÀϤò¼Â¹Ô¤·¤¿¤¤¸À¸ì¤¬¤¢¤ì¤Ð¡¢¤¢¤ë tree ¥Î¡¼¥É¤¬Í¿¤¨¤é¤ì¤¿¾ì¹ç¤Ë¡¢¤½¤Î¥Î¡¼¥É¤ÎÊÌ̾¥»¥Ã¥È¤ò·×»»¤¹¤ë´Ø¿ô¤òÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ë¡£Î㤨¤Ð¡¢C ¸À¸ì¤Î¥Õ¥í¥ó¥È¥¨¥ó¥É¤Î´Ø¿ô c_get_alias_set ¤ò»²¾È¤Î¤³¤È¡£
°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Ï C ¥×¥ê¥×¥í¥»¥Ã¥µ¤òÀ©¸æ¤¹¤ë¡£C ¥×¥ê¥×¥í¥»¥Ã¥µ¤Ï¡¢³Æ C ¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¡¢¼ÂºÝ¤Î¥³¥ó¥Ñ¥¤¥ë¤ÎÁ°¤Ë¼Â¹Ô¤µ¤ì¤ë¡£
-E ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢Á°½èÍý°Ê³°¤Î¤³¤È¤Ï¤ä¤é¤Ê¤¤¡£°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Î¤¦¤Á´ö¤Ä¤«¤Ï¡¢-E ¤ÈÁȤ߹ç¤ï¤»¤¿¤È¤¤Ë¤À¤±°ÕÌ£¤ò»ý¤Ä¡£²¿¸Î¤Ê¤é¡¢¤½¤ì¤é¤Ï¥×¥ê¥×¥í¥»¥Ã¥µ¤Î½ÐÎϤò¼ÂºÝ¤Î¥³¥ó¥Ñ¥¤¥ë¤Ë¤ÏŬ¤µ¤Ê¤¤¤â¤Î¤Ë¤¹¤ë¤«¤é¤Ç¤¢¤ë¡£
-include file
-D ¥ª¥×¥·¥ç¥ó¤È -U ¥ª¥×¥·¥ç¥ó¤Ï¤É¤ì¤â¡¢-include file ¤ÎÁ°¤Ëɬ¤º½èÍý¤µ¤ì¤ë¡£¤³¤ì¤Ï¡¢¥³¥Þ¥ó¥É¹Ô¤Ë½ñ¤«¤ì¤¿½çÈ֤ˤϴط¸¤·¤Ê¤¤¡£Á´¤Æ¤Î -include ¥ª¥×¥·¥ç¥ó¤È -imacros ¥ª¥×¥·¥ç¥ó¤Ï¡¢½ñ¤«¤ì¤¿½ç¤Ë½èÍý¤µ¤ì¤ë¡£
-imacros file
-imacros file ¤ÎÍ£°ì¤Î¸ú²Ì¤Ï¡¢file ¤Ç¥Þ¥¯¥í¤òÄêµÁ¤·¡¢Àµµ¬¤ÎÆþÎϤǤ½¤ì¤ò»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£
¥³¥Þ¥ó¥É¹Ô¤Ç»ØÄꤷ¤¿ -D ¥ª¥×¥·¥ç¥ó¤È -U ¥ª¥×¥·¥ç¥ó¤Ï¤É¤ì¤â¡¢-imacros file ¤ÎÁ°¤Ëɬ¤º½èÍý¤µ¤ì¤ë¡£¤³¤ì¤Ï¡¢¥³¥Þ¥ó¥É¹Ô¤Ë½ñ¤«¤ì¤¿½çÈ֤ˤϴط¸¤·¤Ê¤¤¡£Á´¤Æ¤Î -include ¥ª¥×¥·¥ç¥ó¤È -imacros ¥ª¥×¥·¥ç¥ó¤Ï¡¢½ñ¤«¤ì¤¿½ç¤Ë½èÍý¤µ¤ì¤ë¡£
-idirafter dir
-I ¤¬²Ã¤¨¤¿¤â¤Î)¤Ë¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï¸«¤Ä¤«¤é¤Ê¤¤¤È¤¤Ë¡¢¸¡º÷¤µ¤ì¤ë¡£
-iprefix prefix
-iwithprefix ¥ª¥×¥·¥ç¥ó¤Î¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤È¤·¤Æ»ØÄꤹ¤ë¡£
-iwithprefix dir
-iprefix ¤Ç»ØÄꤵ¤ì¤¿¤â¤Î¤Ç¤¢¤ë¡£¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤ò¤Þ¤À»ØÄꤷ¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¥³¥ó¥Ñ¥¤¥é¤Î¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿¥Ñ¥¹¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤¬¥Ç¥Õ¥©¥ë¥È¤È¤·¤Æ»È¤ï¤ì¤ë¡£
-iwithprefixbefore dir
-iwithprefix ¤Î¾ì¹ç¤ÈƱ¤¸¤è¤¦¤Ë¡¢prefix ¤È dir ¤ò¤Ä¤Ê¤²¤Æºî¤é¤ì¤ë¡£
-isystem dir
-nostdinc
-I ¤Ç»ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥ê(¤È¡¢Å¬ÀڤǤ¢¤ì¤Ð¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê)
¤À¤±¤ò¸¡º÷¤¹¤ë¡£-I ¤Ë¤Ä¤¤¤Æ¤Ï See Directory Options¡£
-nostdinc ¤È -I- ¤òξÊý»È¤¦¤È¡¢¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤Î¸¡º÷¥Ñ¥¹¤òÌÀ¼¨Åª¤Ë»ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤À¤±¸ÂÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
-undef
-E
-C
-E ¥ª¥×¥·¥ç¥ó¤È¹ç¤ï¤»¤Æ»È¤ï¤ì¤ë¡£
-P
#line À©¸æ»Ò¤òÀ¸À®¤·¤Ê¤¤¤è¤¦¤Ë»Ø¼¨¤¹¤ë¡£-E ¥ª¥×¥·¥ç¥ó¤È¹ç¤ï¤»¤Æ»È¤ï¤ì¤ë¡£
-M
make ¤Î¥ë¡¼¥ë¤ËŬ¤·¤¿½ÐÎϤò¹Ô¤Ê¤¦¤è¤¦¥×¥ê¥×¥í¥»¥Ã¥µ¤Ë»Ø¼¨¤¹¤ë¡£¥×¥ê¥×¥í¥»¥Ã¥µ¤Ï¡¢³Æ¥½¡¼¥¹¥Õ¥¡¥¤¥ëËè¤Ë make ¤Î¥ë¡¼¥ë¤ò°ì¤Ä½ÐÎϤ¹¤ë¡£¤½¤Î¥ë¡¼¥ë¤Î¥¿¡¼¥²¥Ã¥È¤Ï¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ËÂбþ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë̾¤Ç¤¢¤ê¡¢°Í¸¥Õ¥¡¥¤¥ë¤Ï¤½¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤¬#include ¤·¤Æ¤¤¤ëÁ´¤Æ¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë¡£¤³¤Î¥ë¡¼¥ë¤Ï°ì¹Ô¤Ç¤âÎɤ¤¤·¡¢Ä¹¤±¤ì¤Ð \-²þ¹Ô ¤Ç·Ñ³¤·¤Æ¤âÎɤ¤¡£¥ë¡¼¥ë¤Î¥ê¥¹¥È¤Ï¡¢Á°½èÍýºÑ¤ß¤Î C ¥×¥í¥°¥é¥à¤Ç¤Ï¤Ê¤¯¡¢É¸½à½ÐÎϤ˽ÐÎϤµ¤ì¤ë¡£
-M ¤Ë¤Ï -E ¤¬´Þ¤Þ¤ì¤ë¡£
make ¤Î¥ë¡¼¥ë¤Î½ÐÎϤò»ØÄꤹ¤ë¤â¤¦°ì¤Ä¤ÎÊýË¡¤Ï¡¢´Ä¶ÊÑ¿ô DEPENDENCIES_OUTPUT ¤òÀßÄꤹ¤ë¤³¤È¤Ç¤¢¤ë(see Environment Variables)¡£
-MM
-M ¤ÈƱÍͤÀ¤¬¡¢#include "file" ¤Î·Á¼°¤Ç¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¤À¤±¤ò½ÐÎϤ¹¤ë¡£#include <file> ¤Î·Á¼°¤Ç¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤ë¥·¥¹¥Æ¥à¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ï½ü¤«¤ì¤ë¡£
-MD
-M ¤ÈƱÍͤÀ¤¬¡¢°Í¸´Ø·¸¾ðÊó¤Ï¡¢ÆþÎÏ¥Õ¥¡¥¤¥ë̾¤ÎºÇ¸å¤Î ".c" ¤ò".d" ¤ËÃÖ¤´¹¤¨¤¿¥Õ¥¡¥¤¥ë¤Ë½ÐÎϤµ¤ì¤ë¡£¤³¤ì¤Ï¡¢»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤¦¤¨¤Ç¹Ô¤Ê¤ï¤ì¤ë¡£-M ¤ÏÄ̾ï¤Î¥³¥ó¥Ñ¥¤¥ë¤Ï¹Ô¤Ê¤ï¤Ê¤¤¤¬¡¢-MD ¤Ï¹Ô¤Ê¤¦¡£
Mach ¤Ç¤Ï¡¢md ¤È¤¤¤¦¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ò»È¤Ã¤Æ¡¢Ê£¿ô¤Î°Í¸´Ø·¸¥Õ¥¡¥¤¥ë¤ò°ì¸Ä¤Î°Í¸´Ø·¸¤Ë¥Þ¡¼¥¸¤¹¤ë¤³¤È¤¬¤Ç¤¡¢make ¥³¥Þ¥ó¥É¤Ç»È¤¦¤Î¤ËŬ¤·¤¿¤â¤Î¤Ë¤Ê¤ë¡£
-MMD
-MD ¤ÈƱÍͤÀ¤¬¡¢¥æ¡¼¥¶¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¤ß¤ò½ÐÎϤ·¡¢¥·¥¹¥Æ¥à¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ï½ÐÎϤ·¤Ê¤¤¡£
-MG
-MG ¤ò»ØÄꤹ¤ë¤Ê¤é¡¢-M ¤« -MM ¤Î¤É¤Á¤é¤«¤â»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£-MG ¤Ï¡¢-MD ¤ä -MMD ¤ÈÁȤ߹ç¤ï¤»¤ë¤Î¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
-H
-Aquestion(answer)
#if #question(answer) ¤Î¤è¤¦¤ÊÁ°½èÍý¤Î¾ò·ïʸ¤Ç¥Æ¥¹¥È¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£-A- ¤Ï¡¢ÉáÄÌ¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤òµ½Ò¤¹¤ëɸ½à¤ÎɽÌÀ¤ò̵¸ú¤Ë¤¹¤ë¡£
-Dmacro
1 ¤ò¤½¤ÎÄêµÁ¤È¤¹¤ë¡£
-Dmacro=defn
-D ¤Ï¡¢¤É¤Î -U ¥ª¥×¥·¥ç¥ó¤è¤ê¤âÁ°¤Ë½èÍý¤µ¤ì¤ë¡£
-Umacro
-U ¥ª¥×¥·¥ç¥ó¤Ï¡¢Á´¤Æ¤Î -D ¥ª¥×¥·¥ç¥ó¤Î¸å¤Ç¡¢-include ¤È -imacros
¥ª¥×¥·¥ç¥ó¤ÎÁ°¤Ëɾ²Á¤µ¤ì¤ë¡£
-dM
-E ¤ÈÁȤ߹ç¤ï¤»¤Æ»È¤¦¡£
-dD
-dN
-dD ¤ÈƱÍͤÀ¤¬¡¢¥Þ¥¯¥í°ú¿ô¤ÈŸ³«ÆâÍÆ¤¬¾Êά¤µ¤ì¤ë¡£#define name ¤À¤±½ÐÎϤ¹¤ë¡£
-trigraphs
-ansi ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤â¤³¤Î¸ú²Ì¤¬¤¢¤ë¡£
-Wp,option
°Ê²¼¤Î¤è¤¦¤Ë¤·¤Æ¡¢¥¢¥»¥ó¥Ö¥é¤Ë¥ª¥×¥·¥ç¥ó¤òÅϤ¹¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£
-Wa,option
°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤¬¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤Ë¥ê¥ó¥¯¤¹¤ë¤È¤¤Ë´Ø·¸¤·¤Æ¤¯¤ë¡£¥³¥ó¥Ñ¥¤¥é¤¬¥ê¥ó¥¯¤ÎÃʳ¬¤ò¹Ô¤Ê¤ï¤Ê¤¤¤Ê¤é¡¢¤³¤ì¤é¤Ï°ÕÌ£¤¬¤Ê¤¤¡£
object-file-name
-c
-S
-E
-llibrary
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¥³¥Þ¥ó¥É¹Ô¤Î¤É¤³¤ËÃÖ¤¤¤¿¤«¤Ç°ã¤¤¤¬½Ð¤Æ¤¯¤ë¡£¥ê¥ó¥«¤Ï¡¢¥é¥¤¥Ö¥é¥ê¤È¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò»ØÄꤵ¤ì¤¿½çÈ֤˸¡º÷¤·¡¢½èÍý¤¹¤ë¡£¤¹¤Ê¤ï¤Á¡¢foo.o -lz bar.o ¤È¤·¤¿¾ì¹ç¡¢¥é¥¤¥Ö¥é¥ê z ¤Ï¡¢¥Õ¥¡¥¤¥ë foo.o ¤Î¸å¤Ç¡¢bar.o ¤ÎÁ°¤Ë¸¡º÷¤µ¤ì¤ë¡£¤â¤· bar.o ¤¬ z Æâ¤Î´Ø¿ô¤ò»²¾È¤·¤Æ¤¤¤Æ¤â¡¢¤½¤Î´Ø¿ô¤Ï¥í¡¼¥É¤µ¤ì¤Ê¤¤¡£
¥ê¥ó¥«¤Ï¡¢É¸½à¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤«¤é¥é¥¤¥Ö¥é¥ê¤òõ¤¹¡£¼¡¤Ë¡¢¸«¤Ä¤±¤¿¥Õ¥¡¥¤¥ë¤ò¡¢Àµ³Î¤Ê̾Á°¤Ç»ØÄꤵ¤ì¤¿¤«¤Î¤è¤¦¤Ë»È¤¦¡£
¸¡º÷¤µ¤ì¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï¡¢´ö¤Ä¤«¤Îɸ½à¤Î¥·¥¹¥Æ¥à¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Î¾¤Ë¡¢-L ¤Ç»ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥ê¤¬²Ã¤ï¤ë¡£
ÉáÄ̤³¤¦¤·¤Æ¸«¤Ä¤«¤ë¥Õ¥¡¥¤¥ë¤Ï¥é¥¤¥Ö¥é¥ê¥Õ¥¡¥¤¥ë¡¢¤¹¤Ê¤ï¤Á¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò¥á¥ó¥Ð¤È¤¹¤ë¥¢¡¼¥«¥¤¥Ö¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë¡£¥ê¥ó¥«¤Î¥¢¡¼¥«¥¤¥Ö¥Õ¥¡¥¤¥ë¤Î°·¤¤Êý¤Ï¡¢¥¢¡¼¥«¥¤¥Ö¥Õ¥¡¥¤¥ë¤òÁöºº¤·¤Æ¡¢¤³¤ì¤Þ¤Ç¤Ë»²¾È¤µ¤ì¤Æ¤¤¤ë¤¬ÄêµÁ¤Ï¤µ¤ì¤Æ¤¤¤Ê¤¤¥·¥ó¥Ü¥ë¤òÄêµÁ¤·¤Æ¤¤¤ë¥á¥ó¥Ð¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤òõ¤¹¡£¤À¤¬¡¢¤³¤¦¤·¤Æ¸«¤Ä¤±¤¿¥Õ¥¡¥¤¥ë¤¬Ä̾ï¤Î¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤À¤Ã¤¿¾ì¹ç¤Ï¡¢ÉáÄ̤˥ê¥ó¥¯¤µ¤ì¤ë¡£-l ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤Î¤È¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤹ¤ë¤Î¤È¤Î°ã¤¤¤Ï¡¢-l ¤Ï library ¤ÎÁ°¸å¤Ëlib ¤È .a ¤òÉÕ¤±¤Æ¡¢¿§¡¹¤Ê¥Ç¥£¥ì¥¯¥È¥ê¤ò¸¡º÷¤¹¤ë¤È¤¤¤¦ÅÀ¤Ë¤¢¤ë¡£
-lobjc
-l ¥ª¥×¥·¥ç¥ó¤Ï¡¢Objective C ¤Î¥×¥í¥°¥é¥à¤ò¥ê¥ó¥¯¤¹¤ë¤Î¤ËɬÍפǤ¢¤ë¡£
-nostartfiles
-nostdlib ¤ä-nodefaultlibs ¤ò»ØÄꤷ¤Ê¤¤¸Â¤ê¡¢ÉáÄ̤ϻȤï¤ì¤ë¡£
-nodefaultlibs
-nostartfiles ¤ò»ØÄꤷ¤Ê¤¤¸Â¤ê¡¢É¸½à¤Îµ¯Æ°¥Õ¥¡¥¤¥ë¤¬ÉáÄ̤ϻȤï¤ì¤ë¡£GCC ¤Ï System V (¤½¤ì¤Ë ANSI C) ¤Î´Ä¶¸þ¤±¤Ë¤Ïmemcmp¡¢memset¡¢memcpy ¤Î¸Æ½Ð¤·¤òÀ¸À®¤·¡¢BSD ´Ä¶¸þ¤±¤Ë¤Ï bcopy ¤È bzero
¤Î¸Æ½Ð¤·¤òÀ¸À®¤¹¤ë¤À¤í¤¦¡£¤³¤ì¤é¤Î¥¨¥ó¥È¥ê¤ÏÄ̾ï libc Æâ¤Î¥¨¥ó¥È¥ê¤Ç²ò·è¤µ¤ì¤ë¡£¤³¤ì¤é¤Î¥¨¥ó¥È¥ê¡¦¥Ý¥¤¥ó¥È¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤¿»þ¤Ë¤Ï¡¢²¿¤«Â¾¤Î»ÅÁȤߤˤè¤Ã¤ÆÄ󶡤µ¤ì¤ëɬÍפ¬¤¢¤ë¡£
-nostdlib
-nostdlib ¤È -nodefaultslibs ¤Ë±Æ¶Á¤ò¼õ¤±¤Ê¤¤É¸½à¥é¥¤¥Ö¥é¥ê¤Î°ì¤Ä¤Ë libcc.a ¤¬¤¢¤ë¡£¤³¤ì¤Ï¡¢GCC ¤¬ÆâÉôŪ¤Ë»È¤¦¥µ¥Ö¥ë¡¼¥Á¥ó¥é¥¤¥Ö¥é¥ê¤Ç¤¢¤ê¡¢ÆÃÄê¤Îµ¡¼ï¤Îµ¡Ç½¤ÎÉÔ¤䡢´ö¤Ä¤«¤Î¸À¸ì¤ÇÆÃÊ̤ËɬÍפˤʤ뵡ǽ¤òÄ󶡤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£(libgcc.a ¤Ë¤Ä¤¤¤Æ¤Î¤µ¤é¤Ë¾Ü¤·¤¤µÄÏÀ¤Ë¤Ä¤¤¤Æ¤Ï¡¢See Interfacing to GCC Output.)
¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢Â¾¤Îɸ½à¥é¥¤¥Ö¥é¥ê¤ò»È¤¤¤¿¤¯¤Ê¤¤¤È¤¤Ç¤â libgcc.a
¤ÏɬÍפˤʤ롣¸À¤¤´¹¤¨¤ë¤È¡¢-nostdlib ¤ä -nodefaultlibs ¤ò»ØÄꤹ¤ë¤È¤¤Ë¤Ï¡¢ÉáÄÌ¤Ï -lgcc ¤â»ØÄꤹ¤Ù¤¤Ç¤¢¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢GCC ÆâÉô¤Î¥é¥¤¥Ö¥é¥ê¥µ¥Ö¥ë¡¼¥Á¥ó¤ËÂФ¹¤ë̤²ò·è»²¾È¤¬¤Ê¤¯¤Ê¤ë¤³¤È¤òÊݾڤ¹¤ë¡£(Î㤨¤Ð¡¢__main ¤Ï¡¢C++ ¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤¬¸Æ¤Ð¤ì¤ë¤³¤È¤òÊݾڤ¹¤ë¤Î¤Ë»È¤ï¤ì¤ë¡£see collect2¡£)
-s
-static
-shared
-fpic ¤ä-fPIC ¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-symbolic
-Xlinker -z -Xlinker defs ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç)¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ï¡¢Æó¡¢»°¼ïÎष¤«¤Ê¤¤¡£
-Xlinker option
°ú¿ô¤ò¼è¤ë¥ª¥×¥·¥ç¥ó¤òÅϤ·¤¿¤¤¾ì¹ç¤Ï¡¢-Xlinker ¤òÆó²ó»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£°ì¤Ä¤Ï¤½¤Î¥ª¥×¥·¥ç¥óÍѤǡ¢¤â¤¦°ì¤Ä¤Ï°ú¿ôÍѤǤ¢¤ë¡£Î㤨¤Ð¡¢-assert definitions ¤òÅϤ¹¤Ë¤Ï¡¢-Xlinker -assert -Xlinker definitions ¤È½ñ¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£-Xlinker "-assert definitions" ¤È½ñ¤¤¤¿¤Î¤Ç¤Ï¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¡£²¿¸Î¤Ê¤é¡¢¤³¤ì¤Ïʸ»úÎóÁ´ÂΤò°ì¸Ä¤Î°ú¿ô¤È¤·¤ÆÅϤ¹¤Î¤Ç¡¢¥ê¥ó¥«¤¬´üÂÔ¤·¤Æ¤¤¤ë¤Î¤È¤Ï°ã¤Ã¤Æ¤·¤Þ¤¦¤«¤é¤Ç¤¢¤ë¡£
-Wl,option
-u symbol
-u ¤ò¥ª¥×¥·¥ç¥ó¤òÊ£¿ô¡¢°Û¤Ê¤ë¥·¥ó¥Ü¥ë¤ËÂФ·¤Æ»È¤¦¤È¡¢Äɲäǥ饤¥Ö¥é¥ê¥â¥¸¥å¡¼¥ë¤ò¶¯À©Åª¤Ë¥í¡¼¥É¤Ç¤¤ë¡£°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ä¥é¥¤¥Ö¥é¥ê¤ä GCC ¤Î¹½À®Éôʬ¤ò¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤹ¤ë¡£
-Idir
-I ¥ª¥×¥·¥ç¥ó¤òÊ£¿ô²ó»ØÄꤷ¤¿¾ì¹ç¡¢¥Ç¥£¥ì¥¯¥È¥ê¤Ïº¸¤«¤é±¦¤Ø¸¡º÷¤µ¤ì¤ë¡£¥·¥¹¥Æ¥àɸ½à¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¤½¤Î¸å¤Ë¸¡º÷¤µ¤ì¤ë¡£
-I-
-I- ¥ª¥×¥·¥ç¥ó¤ÎÁ°¤Ç -I ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢#include "file" ¤Î·Á¼°¤Î¾ì¹ç¤·¤«¸¡º÷¤µ¤ì¤Ê¤¤¡£#include <file> ¤ËÂФ·¤Æ¤Ï¸¡º÷¤µ¤ì¤Ê¤¤¤Î¤Ç¤¢¤ë¡£
-I- ¤Î¸å¤Ç -I ¤ÇÄɲäǥǥ£¥ì¥¯¥È¥ê¤¬»ØÄꤵ¤ì¤¿¤é¡¢¤³¤ì¤é¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¤¹¤Ù¤Æ¤Î #include ʸ¤Ç¸¡º÷¤µ¤ì¤ë¡£(Ä̾ï¤Ï¡¢-I ¤Ç»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ÏÁ´¤Æ¡¢¤³¤Î¤è¤¦¤Ë»È¤ï¤ì¤ë¡£)
¤µ¤é¤Ë¡¢-I- ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢#include "file"
¤ËÂФ·¤ÆºÇ½é¤Ë¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤È¤·¤Æ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê(¤³¤ì¤Ï¸½ºß¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¤È¤³¤í¤Ç¤¢¤ë)¤ò»È¤¦¤Î¤ò¶Ø¤º¤ë¡£-I- ¤Î¤³¤Î¸ú²Ì¤òÊѤ¨¤ëÊýË¡¤Ï¤Ê¤¤¡£-I. ¤ò»ØÄꤹ¤ë¤È¡¢¥³¥ó¥Ñ¥¤¥é¤¬µ¯Æ°¤·¤¿¤È¤¤Î¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ò¸¡º÷¥Ç¥£¥ì¥¯¥È¥ê¤Ë»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ì¤Ï¡¢¥×¥ê¥×¥í¥»¥Ã¥µ¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¹Ô¤Ê¤¦½èÍý¤ÈÀµ³Î¤ËƱ¤¸¤Ç¤Ï¤Ê¤¤¤¬¡¢½¼Ê¬¤Ê¤³¤È¤¬Â¿¤¤¡£
-I- ¤Ï¡¢¥·¥¹¥Æ¥àɸ½à¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»È¤¦¤³¤È¤Ï˸¤²¤Ê¤¤¡£¤Ä¤Þ¤ê¡¢-I- ¤È -nostdinc ¤ÏÆÈΩ¤Ç¤¢¤ë¡£
-Ldir
-l ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤¿¥é¥¤¥Ö¥é¥ê¤ò¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤Ë¥Ç¥£¥ì¥¯¥È¥ê dir ¤òÄɲ乤롣
-Bprefix
GCC ¤Î¥É¥é¥¤¥Ð¥×¥í¥°¥é¥à¤Ï¡¢¥µ¥Ö¥×¥í¥°¥é¥à cpp¡¢cc1¡¢as¡¢ld ¤Î¾¯¤Ê¤¯¤È¤â°ì¤Ä¤ò¼Â¹Ô¤¹¤ë¡£prefix ¤ò¼Â¹Ô¤ò»î¤ß¤ë³Æ¥×¥í¥°¥é¥à¤Î¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤È¤·¤Æ»î¤¹¡£¤³¤Î»þ¡¢machine/version/ (see Target Options) ¤òÉÕ¤±¤ë¤Î¤ÈÉÕ¤±¤Ê¤¤¤Î¤òξÊý»î¤¹¡£
¼Â¹Ô¤¹¤Ù¤¥µ¥Ö¥×¥í¥°¥é¥àËè¤Ë¡¢GCC ¤Î¥É¥é¥¤¥Ð¤Ï¡¢»ØÄꤵ¤ì¤Æ¤¤¤ì¤Ð¤Þ¤º -B ¤Ë¤è¤ë¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤ò»î¤¹¡£¤½¤Î̾Á°¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¤ê¡¢-B ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥É¥é¥¤¥Ð¤Ïɸ½àŪ¤Ê¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤òÆó¤Ä»î¤¹¡£/usr/lib/gcc/ ¤È /usr/local/lib/gcc-lib/ ¤Ç¤¢¤ë¡£¤³¤Î¤É¤Á¤é¤ò»È¤Ã¤Æ¤â¥Õ¥¡¥¤¥ë̾¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ï¡¢¥×¥í¥°¥é¥à̾¤ò¤½¤Î¤Þ¤Þ»È¤Ã¤Æ¡¢´Ä¶ÊÑ¿ô PATH ¤Ç»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ò¸¡º÷¤¹¤ë¡£
-B ¤Ë¤è¤ë¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤Ï¡¢¥ê¥ó¥«¤¬¥ê¥ó¥¯¤¹¤ë¥é¥¤¥Ö¥é¥ê¤Ë¤âŬÍѤµ¤ì¤ë¥Ç¥£¥ì¥¯¥È¥ê̾¤ò»ØÄꤹ¤ë¡£¤³¤ì¤Ï GCC ¤¬¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¥ê¥ó¥«ÍѤΠ-L ¥ª¥×¥·¥ç¥ó¤ËÊÑ´¹¤¹¤ë¤«¤é¤Ç¤¢¤ë¡£¤Þ¤¿¥×¥ê¥×¥í¥»¥Ã¥µ¤¬¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¥Õ¥¡¥¤¥ë¤Ë¤âŬÍѤµ¤ì¤ë¡£GCC ¤¬¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¥×¥ê¥×¥í¥»¥Ã¥µÍѤΠ-isystem ¥ª¥×¥·¥ç¥ó¤ËÊÑ´¹¤¹¤ë¤«¤é¤Ç¤¢¤ë¡£¤³¤Î¾ì¹ç¡¢GCC ¤Ï include ¤ò¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤ËÄɲ乤롣
¼Â¹Ô»þ¥µ¥Ý¡¼¥È¥Õ¥¡¥¤¥ë libgcc.a ¤â¡¢É¬ÍפǤ¢¤ì¤Ð -B ¤Ë¤è¤ë¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤ò»È¤Ã¤Æ¸¡º÷¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£-B ¤Ç»ØÄꤷ¤¿¾ì½ê¤Ë¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢¾å½Ò¤ÎÆó¤Ä¤Îɸ½à¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤¬»î¤µ¤ì¤ë¡£¤µ¤é¤Ê¤ë¸¡º÷¤Ï¹Ô¤Ê¤ï¤ì¤Ê¤¤¡£¤³¤ì¤é¤Î¼êÃʤǸ«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¥Õ¥¡¥¤¥ë¤Ï¡¢¥ê¥ó¥¯»þ¤Ë¤½¤Î¤Þ¤Þ»Ä¤µ¤ì¤ë¡£
-B ¤Ë¤è¤ë¥×¥ì¥Õ¥£¥Ã¥¯¥¹»ØÄê¤ÈÎɤ¯»÷¤¿¤â¤¦°ì¤Ä¤Î¥×¥ì¥Õ¥£¥Ã¥¯¥¹»ØÄêÊýË¡¤È¤·¤Æ´Ä¶ÊÑ¿ô GCC_EXEC_PREFIX ¤ò»È¤¦ÊýË¡¤¬¤¢¤ë¡£See Environment Variables¡£
-specs=file
specs ¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤ó¤À¸å¤Ëfile ¤ò½èÍý¤·¡¢¥É¥é¥¤¥Ð¥×¥í¥°¥é¥à¤Ç¤¢¤ë gcc ¤¬¡¢cc1 ¤äcc1plus¡¢as¡¢ld Åù¤ËÅϤ¹¤Ù¤¥ª¥×¥·¥ç¥ó¤ò·èÄꤹ¤ë¤È¤¤Ë»È¤¦¥Ç¥Õ¥©¥ë¥È¤òÊѹ¹¤¹¤ë¡£-specs=file ¤Ï¥³¥Þ¥ó¥É¹Ô¤ÇÊ£¿ô»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¡¢¤½¤Î¾ì¹ç¡¢º¸¤«¤é±¦¤Ø½ç¤Ë½èÍý¤µ¤ì¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢GCC ¤Ï¡¢ÆÉ¼Ô¤¬»È¤Ã¤Æ¤¤¤ë¤Î¤ÈƱ¤¸¥¿¥¤¥×¤Îµ¡¼ïÍѤ˥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¡£¤À¤¬¡¢¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤È¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤â¤Ç¤¡¢²¿¤«Â¾¤Î¥¿¥¤¥×¤Îµ¡¼ïÍѤ˥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¢¤ë¡£¼ÂºÝ¡¢¿§¡¹¤Ê¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Î GCC ¤ò¡¢¿§¡¹¤ÊÂоݵ¡¼ï¤ËÂФ·¤Æ¡¢Æ±¤¸¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£¤½¤Î¤É¤ì¤ò»È¤¦¤«¤Ï¡¢-b ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¡£
¤µ¤é¤Ë¡¢GCC ¤ÎµìÈǤȿ·ÈÇ¤âÆ±¤¸¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤½¤Î¤¦¤Á¤Î°ì¤Ä(¤ª¤½¤é¤¯ºÇ¿·ÈÇ)¤¬¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤ë¤¬¡¢Ê̤ÎÈǤò»È¤¤¤¿¤¤¤È¤¤â¤¢¤ë¤À¤í¤¦¡£
-b machine
machine ¤ÎÃͤϡ¢GCC ¤ò¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤È¤·¤Æ¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤·¤¿¤È¤¤Ë»ØÄꤷ¤¿¤Î¤ÈƱ¤¸µ¡¼ï¤Ë¤Ê¤ë¡£Î㤨¤Ð¡¢¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤¬configure i386v ¤È¤·¤Æ¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤µ¤ì¤Æ¤¤¤ë¤Ê¤é¡¢¤³¤ì¤Ï System V ¤Î²ÔƯ¤¹¤ë 80386 ¥Þ¥·¥ó¸þ¤±¤Ë¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤ò°ÕÌ£¤·¡¢¤³¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¸þ¤±¤Î¥³¥ó¥Ñ¥¤¥é¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï-b i386v ¤È»ØÄꤹ¤ë¡£
-b ¤ò»ØÄꤷ¤Ê¤¤¤È¤¤Ï¡¢ÉáÄÌ¤ÏÆÉ¼Ô¤¬»È¤Ã¤Æ¤¤¤ë¤Î¤ÈƱ¤¸·¿¤Îµ¡¼ïÍѤ˥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤Ë¤Ê¤ë¡£
-V version
2.0 ¤Ê¤é¡¢GCC ¤Î¥Ð¡¼¥¸¥ç¥ó 2.0 ¤ò¼Â¹Ô¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
-V ¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Î¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë GCC ¤Î¤¦¤ÁºÇ¿·ÈǤˤʤ롣
-b ¤È -V ¥ª¥×¥·¥ç¥ó¤Î¼ÂºÝ¤Î»ÅÁȤߤϡ¢¥³¥ó¥Ñ¥¤¥ë¤Ë»È¤¦¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤È¥é¥¤¥Ö¥é¥ê¥Õ¥¡¥¤¥ë̾¤Î°ìÉô¤òÊѤ¨¤ë¤³¤È¤Ç¹Ô¤Ê¤ï¤ì¤ë¡£GCC ¤Î¥Ð¡¼¥¸¥ç¥ó¤È¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤È¡¢/usr/local/lib/gcc-lib/machine/version ¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤ËÄ̾ïÃÖ¤«¤ì¤Æ¤¤¤ë¡£
¤³¤Î¤¿¤á¡¢ÆÉ¼Ô¤Î¥µ¥¤¥È¤Ç¡¢-b ¤ä -V ¤Î¸ú²Ì¤ò¥«¥¹¥¿¥Þ¥¤¥º¤¹¤ë¤Ë¤Ï¡¢¤³¤ì¤é¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤òÊѤ¨¤¿¤ê¡¢Ê̤Î̾Á°(¤¢¤ë¤¤¤Ï¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯)¤òÄɲä·¤¿¤ê¤¹¤ì¤ÐÎɤ¤¡£¥Ç¥£¥ì¥¯¥È¥ê /usr/local/lib/gcc-lib/ ¤Ç¡¢80386 ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬¡¢i386v ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¡¢-b 80386 ¤Ï¡¢-b i386v ¤Î¤â¤¦°ì¤Ä¤Î»ØÄêÊýË¡¤Ë¤Ê¤ë¡£
¸«Êý¤Ë¤è¤Ã¤Æ¤Ï¡¢-b ¤ä -V ¤ò»ØÄꤷ¤¿¤«¤é¤È¸À¤Ã¤Æ¡¢´°Á´¤ËÊ̤ʥ³¥ó¥Ñ¥¤¥é¤ËÊѤï¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£ºÇ½é¤Ëµ¯Æ°¤·¤¿ºÇ¾å°Ì¤Î¥É¥é¥¤¥Ð¥×¥í¥°¥é¥à gcc ¤Ï¤½¤Î¤Þ¤Þư¤Â³¤±¡¢¼ÂºÝ¤Î»Å»ö¤ò¹Ô¤Ê¤¦Â¾¤Î¼Â¹Ô·Á¼°(¥×¥ê¥×¥í¥»¥Ã¥µ¡¢¥³¥ó¥Ñ¥¤¥éËÜÂΡ¢¥¢¥»¥ó¥Ö¥é¡¢¥ê¥ó¥«)¤òµ¯Æ°¤¹¤ë¤Î¤Ç¤¢¤ë¡£¤·¤«¤·¡¢¥É¥é¥¤¥Ð¥×¥í¥°¥é¥à¤Ï¼ÂºÝ¤Î»Å»ö¤Ï²¿¤â¤·¤Ê¤¤¤Î¤Ç¡¢¥É¥é¥¤¥Ð¥×¥í¥°¥é¥à¤¬¡¢»ØÄꤷ¤¿¥¿¡¼¥²¥Ã¥È¤È¥Ð¡¼¥¸¥ç¥ó¸þ¤±¤Î¤â¤Î¤Ç¤Ê¤¯¤Æ¤âÉáÄ̤ÏÌäÂê¤Ï¤Ê¤¤¡£
¥É¥é¥¤¥Ð¥×¥í¥°¥é¥à¤¬¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Ë´Ø¤ï¤Ã¤Æ¤¯¤ëÍ£°ì¤ÎÅÀ¤Ï¡¢µ¡¼ï¸ÇÍ¤ÎÆÃÊ̤ʥª¥×¥·¥ç¥ó¤Î¥Ñ¡¼¥¹¤È¼è°·¤¤¤Ç¤¢¤ë¡£¤·¤«¤·¡¢¤³¤ì¤â¾¤Î¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ëƱÍÍ¡¢»ØÄꤷ¤¿¥Ð¡¼¥¸¥ç¥ó¤È¥¿¡¼¥²¥Ã¥Èµ¡¼ïÍѤΥǥ£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Ë¤è¤êÀ©¸æ¤µ¤ì¤ë¤Î¤Ç¤¢¤ë¡£·ë¶É¡¢¥É¥é¥¤¥Ð¥×¥í¥°¥é¥à¤¬°ì¸Ä¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¢¤ì¤Ð¡¢¤É¤Î¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤ä¥Ð¡¼¥¸¥ç¥ó¤ò»ØÄꤷ¤Æ¤âŬ¹ç¤¹¤ë¤Î¤Ç¤¢¤ë¡£
¤¿¤À¤·¡¢¥É¥é¥¤¥Ð¥×¥í¥°¥é¥à¤Î¼Â¹Ô·Á¼°¤Ï¡¢°ì¤Ä½ÅÍפÊÅÀ¤ò¼è¤ê°·¤¦¡£¥Ç¥Õ¥©¥ë¥È¤Î¥Ð¡¼¥¸¥ç¥ó¤È¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¡¢¥É¥é¥¤¥Ð¥×¥í¥°¥é¥à¤Î¼ÂÂΤò¡¢°Û¤Ê¤ë¥¿¡¼¥²¥Ã¥È¤È¥Ð¡¼¥¸¥ç¥ó¸þ¤±¤ËÊÌ¡¹¤Ë¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¡¢Ê̤Î̾Á°¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤âÎɤ¤
¤¿¤È¤¨¤Ð¡¢¥Ð¡¼¥¸¥ç¥ó 2.0 ÍѤΥɥ饤¥Ð¤ò ogcc ¤È¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤·¡¢¥Ð¡¼¥¸¥ç¥ó 2.1 ÍѤΤò gcc ¤È¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤¯¤È¡¢gcc ¤È¤¤¤¦¤Û¤¦¤Î¥³¥Þ¥ó¥É¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¥Ð¡¼¥¸¥ç¥ó 2.1 ¤ò»È¤¤¡¢ogcc ¤Î¥Ç¥Õ¥©¥ë¥È¤Ï 2.0 ¤Ë¤Ê¤ë¡£¤·¤«¤·¡¢¤É¤Á¤é¤Î¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¤â¡¢-V ¥ª¥×¥·¥ç¥ó¤ò»È¤¨¤Ð¤É¤Á¤é¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤â»ØÄê¤Ç¤¤ë¤Î¤Ç¤¢¤ë
°ÊÁ°¡¢É¸½à¤Î¥ª¥×¥·¥ç¥ó -b ¤Ë¤Ä¤¤¤ÆµÄÏÀ¤·¤¿¡£-b ¤Ï¡¢Á´¤¯°Û¤Ê¤ë¥¿¡¼¥²¥Ã¥Èµ¡¼ï¡¢Î㤨¤Ð¡¢Vax ¤È 68000 ¤È 80386
ÍѤΡ¢¥¤¥ó¥¹¥È¡¼¥ëºÑ¤ß¥³¥ó¥Ñ¥¤¥é¤ÎÃæ¤«¤éÁª¤Ö¡£
²Ã¤¨¤Æ¡¢³Æ¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Ë¤Ï -m ¤Ç»Ï¤Þ¤ë¡¢µ¡¼ï¸ÇÍ¤ÎÆÃÊ̤ʥª¥×¥·¥ç¥ó¤¬¤¢¤ê¡¢Î㤨¤Ð¡¢68010 ¤« 68020 ¤«¤È¤¤¤Ã¤¿¡¢¿§¡¹¤Ê¥Ï¡¼¥É¥¦¥§¥¢¤Î¥â¥Ç¥ë¤ä¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤«¤éÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£GCC ¤¬°ì¤Ä¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢»ØÄꤷ¤¿¥ª¥×¥·¥ç¥ó¤Ë½¾¤Ã¤Æ¡¢¤É¤Î¥â¥Ç¥ë¤ä¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ËÂФ·¤Æ¤â¥³¥ó¥Ñ¥¤¥ë¤¬²Äǽ¤Ç¤¢¤ë¡£
GCC ¤Î¤¢¤ë¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ç¤Ï¡¢ÄÉ²Ã¤ÇÆÃÊ̤ʥª¥×¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ë¡£¤³¤ì¤Ï¡¢ÉáÄ̤ϡ¢Æ±¤¸¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¾å¤Î¾¤Î¥³¥ó¥Ñ¥¤¥é¤È¤Î¸ß´¹À¤Î¤¿¤á¤Ë¤¢¤ë¡£
¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Þ¥·¥óµ½ÒÃæ¤Î¥Þ¥¯¥í TARGET_SWITCHES ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£¤½¤Î¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ¤âÆ±¤¸¥Þ¥¯¥í¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¥Ç¥Õ¥©¥ë¥ÈÃͤòÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ 68000 ¥·¥ê¡¼¥º¸þ¤±¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤϡ¢¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó»þ¤Ë68000 ¤Î¤É¤Î·Á¼°¤¬ÁªÂò¤µ¤ì¤¿¤«¤Ë°Í¤ë¡£ºÇ¤â¶¦Ä̤¹¤ëÁªÂò¤Î¥Ç¥Õ¥©¥ë¥È¤Ï°Ê²¼¤ÎÄ̤ꡣ
-m68000
-mc68000
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢68000 ¤ä EC000 ¤Î¥³¥¢¤ò»ý¤Ä¥Þ¥¤¥¯¥í¥³¥ó¥È¥í¡¼¥é¡¢68008¡¢68302¡¢68306¡¢68307¡¢68322¡¢68328¡¢68356 Åù¤ËÂФ·¤Æ»È¤¦¡£
-m68020
-mc68020
-m68881
-nfp ¤¬¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó»þ¤Ë»ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢¤Û¤È¤ó¤É¤Î 68020 ¤Î¥·¥¹¥Æ¥à¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-m68030
-m68040
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢68040 ¤Ç¤Ï¥½¥Õ¥È¥¦¥§¥¢¤Ç¥¨¥ß¥å¥ì¡¼¥È¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ 68881/68882 ¤ÎÌ¿Îá¤ò¶Ø»ß¤¹¤ë¡£ÆÉ¼Ô¤Î 68040 ¥·¥¹¥Æ¥à¤Ë¤³¤ì¤é¤ÎÌ¿Îá¤ò¥¨¥ß¥å¥ì¡¼¥È¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤è¤¦¤Ê¥³¡¼¥É¤¬¤Ê¤±¤ì¤Ð¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤³¤È¡£
-m68060
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢68060 ¤Ç¤Ï¥½¥Õ¥È¥¦¥§¥¢¤Ç¥¨¥ß¥å¥ì¡¼¥È¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ 68881/68882 ¤ÎÌ¿Îá¤ò¶Ø»ß¤¹¤ë¡£ÆÉ¼Ô¤Î 68060 ¥·¥¹¥Æ¥à¤Ë¤³¤ì¤é¤ÎÌ¿Îá¤ò¥¨¥ß¥å¥ì¡¼¥È¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤è¤¦¤Ê¥³¡¼¥É¤¬¤Ê¤±¤ì¤Ð¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤³¤È¡£
-mcpu32
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢CPU32 ¤ä CPU32+ ¤Î¥³¥¢¤ò»ý¤Ä¥Þ¥¤¥¯¥í¥³¥ó¥È¥í¡¼¥é¡¢68330¡¢68331¡¢68332¡¢68333¡¢68334¡¢68336¡¢68340¡¢68341¡¢68349¡¢68360
Åù¤ËÂФ·¤Æ»È¤¦¡£
-m5200
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢5200 ¤Î¥³¥¢¤ò»ý¤Ä¥Þ¥¤¥¯¥í¥³¥ó¥È¥í¡¼¥é¡¢MCF5202¡¢MCF5203¡¢MCF5204¡¢MCF5202 Åù¤Ë»È¤¦¡£
-m68020-40
-m68020-60
-mfpa
-msoft-float
m68k-*-aout ¤È m68k-*-coff ¤Ç¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢¤Ë¤è¤ëÉâÆ°¾®¿ôÅÀ±é»»¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£
-mshort
int ·¿¤ò short int ¤ÈƱ¤¸ 16 ¥Ó¥Ã¥ÈĹ¤È¤¹¤ë¡£
-mnobitfield
-m68000¡¢-mcpu32¡¢-m5200 ¥ª¥×¥·¥ç¥ó¤Ï¡¢-mnobitfield ¤ò°ÅÌۤ˴ޤࡣ
-mbitfield
-m68020 ¥ª¥×¥·¥ç¥ó¤Ï¡¢-mbitfield ¤ò°ÅÌۤ˴ޤࡣ68020 ¸þ¤±¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ò»È¤¦¾ì¹ç¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-mrtd
rtd Ì¿Îá¤ÇÌá¤ë¡£¤³¤ÎÌ¿Îá¤ÏÌá¤ëºÝ¤Ë°ú¿ô¤ò¥Ý¥Ã¥×¤¹¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢¸Æ¤Ó½Ð¤·Â¦¤Ç¤Ï¡¢°ú¿ô¤ò¥Ý¥Ã¥×¤¹¤ëɬÍפ¬¤Ê¤¤¤Î¤ÇÌ¿Îá¤ò°ì¸ÄÀáÌó¤Ç¤¤ë¡£
¤³¤Î¸Æ¤Ó½Ð¤·µ¬Ìó¤Ï¡¢Unix ¤ÇÄ̾ï»È¤ï¤ì¤Æ¤¤¤ë¤â¤Î¤È¸ß´¹À¤¬¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢Unix ¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥é¥¤¥Ö¥é¥ê¤ò¸Æ¤Ó½Ð¤¹É¬Íפ¬¤¢¤ë¤È¤¤Ë¤Ï»È¤¨¤Ê¤¤¡£
¤Þ¤¿¡¢²ÄÊѸĿô¤Î°ú¿ô¤ò¼è¤ëÁ´¤Æ¤Î´Ø¿ô(printf ¤ò´Þ¤à)¤Ë¤Ä¤¤¤Æ´Ø¿ô¥×¥í¥È¥¿¥¤¥×¤òÍѰդ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤½¤¦¤·¤Ê¤¤¤È¡¢¤³¤ì¤é¤Î´Ø¿ô¤ËÂФ¹¤ë¸Æ¤Ó½Ð¤·¥³¡¼¥É¤¬Àµ¤·¤¯À¸À®¤µ¤ì¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
¤µ¤é¤Ë¡¢¤¢¤Þ¤ê¤¿¤¯¤µ¤ó°ú¿ô¤ò¤Ä¤±¤Æ´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤ÈÁ´¤¯Àµ¤·¤¯¤Ê¤¤¥³¡¼¥É¤¬À¸À®¤µ¤ì¤ë¡£(ÉáÄ̤ϡ¢Í¾Ê¬¤Ê°ú¿ô¤Ï̵»ë¤µ¤ì³²¤¬¤Ê¤¤¡£)
rtd Ì¿Îá¤Ï¡¢68010¡¢68020¡¢68030¡¢68040¡¢68060¡¢CPU32 ¤È¤¤¤Ã¤¿¥×¥í¥»¥Ã¥µ¤Ë¤¢¤ë¤¬¡¢68000 ¤ä 5200 ¤Ë¤Ï¤Ê¤¤¡£
-malign-int
-mno-align-int
int¡¢long¡¢long long¡¢float¡¢double¡¢long double ¤ÎÊÑ¿ô¤ò 32¥Ó¥Ã¥È¶³¦¤ËÃÖ¤¯(-malign-int) ¤«¡¢16¥Ó¥Ã¥È¶³¦¤ËÃÖ¤¯(-mno-align-int)¤«¤òÀ©¸æ¤¹¤ë¡£ÊÑ¿ô¤ò 32 ¥Ó¥Ã¥È¶³¦¤ËÀ°Î󤵤»¤ë¤È¡¢32¥Ó¥Ã¥È¥Ð¥¹¤Î¥×¥í¥»¥Ã¥µ¤Ç¤Ï¤¤¤¯¤é¤«¹â®¤Ë¤Ê¤ë¥³¡¼¥É¤òÀ¸À®¤¹¤ë¤¬¡¢¥á¥â¥ê¤ò;ʬ¤Ë¾ÃÈñ¤¹¤ë¡£
Ãí°Õ: -malign-int ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤Ï¾å¤ÇÎóµó¤·¤¿·¿¤ò´Þ¤à¹½Â¤ÂΤò¡¢m68k ÍѤΡ¢¸øÉ½¤µ¤ì¤Æ¤¤¤ë¤Û¤È¤ó¤É¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥Ð¥¤¥Ê¥ê¡¦¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹»ÅÍͤȤϰۤʤ륢¥é¥¤¥á¥ó¥È¤ò¼è¤ë¤è¤¦¤ËÃÖ¤¯¡£
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ Vax ÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-munix
aobleq Åù)¤ò½ÐÎϤ·¤Ê¤¤¡£¤³¤ì¤é¤ÎÌ¿Îá¤Ï¡¢Vax ÍѤΠUnix ¥¢¥»¥ó¥Ö¥é¤¬Ä¹¤¤ÈϰϤò±Û¤¨¤Æ°·¤¦¤³¤È¤¬½ÐÍè¤Ê¤¤¤â¤Î¤Ç¤¢¤ë¡£
-mgnu
-mg
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ SPARC ¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£
-mno-app-regs
-mapp-regs
-mapp-regs ¤ò»ØÄꤹ¤ë¤È¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿¤Î 2 ¡Á 4 ¤ò»È¤¦¥³¡¼¥ÉÀ¸À®¤ò¹Ô¤Ê¤¦¡£¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿¤Î 2 ¡Á 4 ¤Ï SPARC SVR4 ABI ¤¬¥¢¥×¥ê¥±¡¼¥·¥ç¥óÍѤËͽÌ󤷤Ƥ¤¤ë¡£¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
´°Á´¤Ë SVR4 ABI ¤Ë½àµò¤¹¤ë¤Ë¤Ï¡¢´ö¤é¤«¸úΨ¤¬Íî¤Á¤ë¤¬¡¢-mno-app-regs ¤ò»ØÄꤹ¤ë¡£¥é¥¤¥Ö¥é¥ê¤È¥·¥¹¥Æ¥à¥½¥Õ¥È¥¦¥§¥¢¤ò¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
-mfpu
-mhard-float
-mno-fpu
-msoft-float
sparc-*-aout ¤Èsparclite-+-+ ¤Ç¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢¤Ë¤è¤ëÉâÆ°¾®¿ôÅÀ¥µ¥Ý¡¼¥È¤òÄ󶡤·¤Æ¤¤¤ë¡£
-msoft-float ¤ò»ØÄꤹ¤ë¤È¡¢½ÐÎÏ¥Õ¥¡¥¤¥ëÃæ¤Î¸Æ¤Ó½Ð¤·µ¬Ìó¤¬ÊѤï¤ë¡£¤³¤Î¤¿¤á¡¢¥×¥í¥°¥é¥àÁ´ÂΤò¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤¤¤È¤¤¤±¤Ê¤¤¡£ÆÃ¤Ë¡¢GCC ÉÕ°¤Î¥é¥¤¥Ö¥é¥ê¤Ç¤¢¤ë¡¢libgcc.a ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë¡¢-msoft-float ¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤¤¤È¤³¤Î¥é¥¤¥Ö¥é¥ê¤¬Àµ¤·¤¯Æ°ºî¤·¤Ê¤¤¡£
-mhard-quad-float
-msoft-quad-float
¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤ò¼¹É®¤·¤Æ¤¤¤ë»þÅÀ¤Ç¤Ï¡¢4ÇÜÀºÅÙÉâÆ°¾®¿ôÅÀÌ¿Îá¤ò¥Ï¡¼¥É¥¦¥§¥¢¤Ç¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë SPARC ¤Î¼ÂÁõ¤Ï¸ºß¤·¤Ê¤¤¡£Á´¤Æ¤Î¼ÂÁõ¤Ç¡¢¤³¤ì¤é¤ÎÌ¿Îá¤Î¤¦¤Á¤Î°ì¤Ä¤ËÂФ·¤Æ¤Ï¥È¥é¥Ã¥×¥Ï¥ó¥É¥é¤òµ¯Æ°¤·¡¢¤½¤Î¥È¥é¥Ã¥×¥Ï¥ó¥É¥é¤Ç¤½¤ÎÌ¿Îá¤Î¸ú²Ì¤ò¥¨¥ß¥å¥ì¡¼¥È¤·¤Æ¤¤¤ë¡£¥È¥é¥Ã¥×¥Ï¥ó¥É¥é¤Î¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤Ë¤è¤ê¡¢ABI ¤Î¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤¹¤è¤ê¤â¤º¤Ã¤ÈÃÙ¤¯¤Ê¤ë¡£¤³¤Î¤¿¤á¡¢-msoft-quad-float
¥ª¥×¥·¥ç¥ó¤¬¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
-mno-epilogue
-mepilogue
-mepilogue ¤ò»ØÄꤹ¤ë¤È(¥Ç¥Õ¥©¥ë¥È¤Ç»ØÄꤵ¤ì¤ë)¡¢GCC ¤Ï¡¢³Æ´Ø¿ô¤ÎºÇ¸å¤Ëɬ¤º´Ø¿ô¤Î½Ð¸ýÍѤΥ³¡¼¥É¤òÀ¸À®¤¹¤ë¡£´Ø¿ô¤ÎÅÓÃæ¤Ç¤Î½Ð¸ý(Î㤨¤Ð¡¢C ¸À¸ì¤Î return ʸ)¤ËÂФ·¤Æ¤Ï¡¢´Ø¿ô¤ÎºÇ¸å¤Î½Ð¸ý¥³¡¼¥É¤Ø¤Î¥¸¥ã¥ó¥×¤òÀ¸À®¤¹¤ë¡£
-mno-epilogue ¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤Ï´Ø¿ô¤Î½Ð¸ýËè¤Ë½Ð¸ý¥³¡¼¥É¤òŸ³«¤¹¤ë¡£
-mno-flat
-mflat
-mflat ¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤Ï¥»¡¼¥Ö¡¿¥ê¥¹¥È¥¢¤ò¹Ô¤Ê¤¦Ì¿Îá·²¤òÀ¸À®¤»¤º¡¢¡ÖÊ¿¤é¤Ê¡×¤¢¤ë¤¤¤Ï¡¢°ì¸Ä¤Î¥ì¥¸¥¹¥¿¥¦¥£¥ó¥É¥¦¸Æ½Ð¤·µ¬Ìó¤ò»È¤¦¡£¤³¤ÎÊý¼°¤Ç¤Ï¡¢%i7 ¤ò¥Õ¥ì¡¼¥à¥Ý¥¤¥ó¥¿¤È¤·¤Æ»È¤¤¡¢Ä̾ï¤Î¥ì¥¸¥¹¥¿¥¦¥£¥ó¥É¥¦Êý¼°¤È¸ß´¹À¤¬¤¢¤ë¡£¤É¤Á¤é¤Î¥³¡¼¥É¤â¤ª¸ß¤¤¤Ëº®¤¼¤Æ»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£¥í¡¼¥«¥ë¥ì¥¸¥¹¥¿¤ÈÆþÎϥ쥸¥¹¥¿(0-5)¤Ï¡¢°ÊÁ°¤È¤·¤Æ¸Æ½Ð¤·»þ¥»¡¼¥Ö¥ì¥¸¥¹¥¿¤È¤·¤Æ¼è¤ê°·¤ï¤ì¡¢É¬Íפ˱þ¤¸¤Æ¥¹¥¿¥Ã¥¯¤Ë¥»¡¼¥Ö¤µ¤ì¤ë¡£
-mno-flat ¤ò»ØÄꤹ¤ë¤È(¥Ç¥Õ¥©¥ë¥È)¡¢GCC ¤Ï¥»¡¼¥Ö¡¿¥ê¥¹¥È¥¢Ì¿Îá·²¤òÀ¸À®¤·(Ëöü´Ø¿ô¤Ï½ü¤¯)¡¢Ä̾ï¤ÎÁàºî¥â¡¼¥É¤Ë¤Ê¤ë¡£
-mno-unaligned-doubles
-munaligned-doubles
-munaligned-doubles ¤ò»ØÄꤹ¤ë¤È¡¢double ·¿¤¬ 8 ¥Ð¥¤¥È¶³¦¤ËÀ°Î󤵤»¤é¤ì¤ë¤Î¤Ï¡¢Ê̤η¿¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤ä¡¢ÀäÂÐ¥¢¥É¥ì¥¹¤ò»ý¤Ä¾ì¹ç¤Ë¸Â¤é¤ì¤ë¡£¤½¤Î¾¤Î¾ì¹ç¤Ï¡¢4 ¥Ð¥¤¥È¶³¦¤ËÀ°Î󤵤ì¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ÌÇ¿¤Ë¤Ê¤¤¤³¤È¤À¤¬¡¢Â¾¤Î¥³¥ó¥Ñ¥¤¥é¤ÇÀ¸À®¤·¤¿¥³¡¼¥É¤È¤Î¸ß´¹À¤ÎÌäÂê¤ò²óÈò¤Ç¤¤ë¡£¤³¤ì¤Ï¥Ç¥Õ¥©¥ë¥È¤Ë¤Ï¤Ê¤Ã¤Æ¤¤¤Ê¤¤¡£Àǽ¤¬¡¢¤È¤ê¤ï¤±ÉâÆ°¾®¿ôÅÀ¥³¡¼¥É¤Î¾ì¹ç¤Ë°¤¯¤Ê¤ë¤«¤é¤Ç¤¢¤ë¡£
-mv8
-msparclite
¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï(ÉÙ»ÎÄ̤ΠSPARClite ÍѤ˥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ò¹Ô¤Ê¤ï¤Ê¤¤¸Â¤ê)¡¢GCC ¤Ï¡¢SPARC ¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Î v7 ÍѤΥ³¡¼¥É¤òÀ¸À®¤¹¤ë¡£
-mv8 ¤ò»ØÄꤹ¤ë¤È¡¢SPARC v8 ÍѤΥ³¡¼¥É¤òÀ¸À®¤¹¤ë¡£v7 ¤È¤Î°ã¤¤¤Ï¡¢v7 ¤Ë¤Ï¤Ê¤¤¤¬ v8 ¤Ë¤Ï¸ºß¤¹¤ëÀ°¿ô¾è»»¤ÈÀ°¿ô½ü»»Ì¿Îá¤òÀ¸À®¤¹¤ëÅÀ¤Ë¤¢¤ë¡£
-msparclite ¤ò»ØÄꤹ¤ë¤È SPARClite ÍѤΥ³¡¼¥É¤òÀ¸À®¤¹¤ë¡£¤³¤ì¤Ï¡¢À°¿ô¾è»»¤ÈÀ°¿ô½ü»»¡¢¥¹¥¥ã¥ó(ffs)Ì¿Îá¤òÄɲ乤롣¤³¤ì¤é¤ÎÌ¿Îá¤Ï¡¢v7 ¤Ë¤Ï¤Ê¤¤¤¬ SPARClite ¤Ë¸ºß¤¹¤ë¡£
¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤ÏÇÑ»ßÍ׵᤬½Ð¤Æ¤ª¤ê¡¢¾Íè¤Î GCC ¤Î¥ê¥ê¡¼¥¹¤Çºï½ü¤µ¤ì¤ëͽÄê¤Ç¤¢¤ë¡£¤³¤ì¤é¤Ï¡¢-mcpu=xxx ¤ËÃÖ¤´¹¤¨¤é¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡£
-mcypress
-msupersparc
-mcypress ¤ò»ØÄꤹ¤ë¤È(¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë)¡¢GCC ¤Ï Cypress CY7C602 ¤È¤¤¤¦¥Á¥Ã¥×¸þ¤±¤Ë¥³¡¼¥É¤òºÇŬ²½¤¹¤ë¡£¤³¤Î¥Á¥Ã¥×¤Ï¡¢SPARCstation/SPARCserver 3xx ¥·¥ê¡¼¥º¤Ç»È¤ï¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¸ÅÌܤΠSPARCstation 1¡¢2¡¢IPX Åù¤Ë¤âŬ¤·¤Æ¤¤¤ë¡£
GCC ¤Ï SuperSPARC ¥Á¥Ã¥×¸þ¤±¤Ë¥³¡¼¥É¤òºÇŬ²½¤¹¤ë¡£¤³¤Î¥Á¥Ã¥×¤Ï¡¢SPARCstation 10¡¢1000¡¢2000 ¥·¥ê¡¼¥º¤Ç»È¤ï¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢´°Á´¤Ê SPARC v8 Ì¿Î᥻¥Ã¥È¤Ë¤âŬ¤·¤Æ¤¤¤ë¡£
¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤ÏÇÑ»ßÍ׵᤬½Ð¤Æ¤ª¤ê¡¢¾Íè¤Î GCC ¤Î¥ê¥ê¡¼¥¹¤Çºï½ü¤µ¤ì¤ëͽÄê¤Ç¤¢¤ë¡£¤³¤ì¤é¤Ï¡¢-mcpu=xxx ¤ËÃÖ¤´¹¤¨¤é¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡£
-mcpu=cpu_type
v7¡¢cypress¡¢v8¡¢supersparc¡¢sparclite¡¢hypersparc¡¢sparclite86x¡¢f930¡¢f934¡¢sparclet¡¢tsc701¡¢v9¡¢ultrasparc ¤Ç¤¢¤ë¡£
¥Ç¥Õ¥©¥ë¥È¤ÎÌ¿Î᥹¥±¥¸¥å¡¼¥ê¥ó¥°¥Ñ¥é¥á¡¼¥¿¤Ï¡¢¥¢¡¼¥¥Æ¥¯¥Á¥ã¤òÁªÂò¤¹¤ëÃͤËÂФ·¤Æ»È¤ï¤ì¤ë¤Î¤Ç¤¢¤Ã¤Æ¡¢¼ÂÁõ¤ËÂФ·¤Æ»È¤ï¤ì¤ë¤Î¤Ç¤Ï¤Ê¤¤¡£¤³¤ì¤é¤Ï¡¢v7¡¢v8¡¢sparclite¡¢sparclet¡¢v9 ¤Ç¤¢¤ë¡£
¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥¢¡¼¥¥Æ¥¯¥Á¥ã¤È¤½¤ì¤ËÂбþ¤¹¤ë¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¼ÂÁõ¤Î¥ê¥¹¥È¤ò°Ê²¼¤Ë¼¨¤¹¡£
v7: cypress
v8: supersparc, hypersparc
sparclite: f930, f934, sparclite86x
sparclet: tsc701
v9: ultrasparc
-mtune=cpu_type
-mcpu=cpu_type ¤¬¹Ô¤Ê¤¦¤è¤¦¤ÊÌ¿Î᥻¥Ã¥È¤ä¥ì¥¸¥¹¥¿¥»¥Ã¥È¤ÎÀßÄê¤Ï¹Ô¤Ê¤ï¤Ê¤¤¡£
-mcpu=
cpu_type ¤Ë»È¤¨¤ë¤Î¤ÈƱ¤¸Ãͤ¬ -mtune=cpu_type
¤ËÂФ·¤Æ¤â»È¤¨¤ë¡£¤¿¤À¤·°ÕÌ£¤Î¤¢¤ëÃͤϡ¢ÆÃÄê¤Î CPU ¤Î¼ÂÁõ¤òÁª¤Ö¤â¤Î¤À¤±¤Ç¤¢¤ë¡£¤½¤ì¤Ï¼¡¤ÎÄ̤ꡣcypress¡¢supersparc¡¢hypersparc¡¢f930¡¢f934¡¢sparclite86x¡¢tsc701¡¢ultrasparc¡£
-malign-loops=num
-malign-loops ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Î¥Ç¥Õ¥©¥ë¥È¤Ï 2 ¤Ç¤¢¤ë¡£
-malign-jumps=num
-malign-jumps ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Î¥Ç¥Õ¥©¥ë¥È¤Ï 2 ¤Ç¤¢¤ë¡£
-malign-functions=num
-malign-functions ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Î¥Ç¥Õ¥©¥ë¥È¤Ï¡¢32 ¥Ó¥Ã¥È¤Î SPARC ¤Î¾ì¹ç¤Ï 2 ¤Ç¡¢64 ¥Ó¥Ã¥È¤Î SPARC ¤Î¾ì¹ç¤Ï 5 ¤Ç¤¢¤ë¡£
SPARCLET ¥×¥í¥»¥Ã¥µ¤Ç¤Ï¡¢°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬¾åµ¤Ë²Ã¤¨¤Æ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£
-mlittle-endian
-mlive-g0
%g0 ¤òÉáÄ̤Υ쥸¥¹¥¿¤È¤·¤Æ¼è¤ê°·¤¦¡£GCC ¤ÏɬÍפ˱þ¤¸¤Æ¡¢°ú¤Â³¤¡¢¤³¤Î¥ì¥¸¥¹¥¿¤ò¾å½ñ¤¤¹¤ë¤¬¡¢¾ï¤Ë 0 ¤òÆÉ¤ß½Ð¤¹¤È¤¤¤¦ÁÛÄê¤Ï¹Ô¤Ê¤ï¤Ê¤¤¡£
-mbroken-saverestore
save Ì¿Îá¤È restore Ì¿Îá¤Î¼«ÌÀ¤Ç¤Ê¤¤·Á¤ò»È¤ï¤Ê¤¤¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£SPARCLET ¥×¥í¥»¥Ã¥µ¤Î½é´ü¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢°ú¿ôÉÕ¤¤Îsave Ì¿Îá¤È restore Ì¿Îá¤òÀµ¤·¤¯°·¤¨¤Ê¤¤¡£°ú¿ô¤Ê¤·¤Ê¤éÀµ¤·¤¯°·¤¦¤³¤È¤¬¤Ç¤¤ë¡£°ú¿ô¤Ê¤·¤Î save Ì¿Îá¤Ï¡¢¸½ºß¤Î¥¦¥£¥ó¥É¥¦¥Ý¥¤¥ó¥¿¤ò¥¤¥ó¥¯¥ê¥á¥ó¥È¤¹¤ë¤¬¡¢¿·¤·¤¤¥¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤Ï³ä¤êÅö¤Æ¤Ê¤¤¡£¥¦¥£¥ó¥É¥¦¤Î¥ª¡¼¥Ð¥Õ¥í¡¼¤Î¥È¥é¥Ã¥×¥Ï¥ó¥É¥é¤¬¡¢¤³¤Î¾ì¹ç¤ò¡¢³ä¤ê¹þ¤ß¥Ï¥ó¥É¥é¤ÈƱ¤¸¤è¤¦¤ËÀµ¤·¤¯°·¤¦¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤ë¡£64¥Ó¥Ã¥È´Ä¶¤Î SPARC V9 ¥×¥í¥»¥Ã¥µ¤Ç¤Ï¾åµ¤Ë²Ã¤¨¤Æ°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£
-mlittle-endian
-m32
-m64
-mcmodel=medlow
-mcmodel=medmid
-mcmodel=medany
-mcmodel=embmedany
-mstack-bias
-mno-stack-bias
-mstack-bias ¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤Ï¥¹¥¿¥Ã¥¯¥Ý¥¤¥ó¥¿¤È¡¢¤½¤ì¤Ë¤â¤·¤¢¤ì¤Ð¥Õ¥ì¡¼¥à¥Ý¥¤¥ó¥¿¤Ï¡¢¥¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤Î»²¾È¤òºî¤ë¤È¤¤Ë¡¢¥ª¥Õ¥»¥Ã¥È¤Ë -2047 ¤ò²Ã¤¨¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤ÈÁÛÄꤹ¤ë¡£Convex ¸þ¤±¤Ë¤Ï°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mc1
__convex__c1__ ¤¬ÄêµÁ¤µ¤ì¤ë¡£
-mc2
__convex__c2__ ¤¬ÄêµÁ¤µ¤ì¤ë¡£
-mc32
__convex__c32__ ¤¬ÄêµÁ¤µ¤ì¤ë¡£
-mc34
__convex__c34__ ¤¬ÄêµÁ¤µ¤ì¤ë¡£
-mc38
__convex__c38__ ¤¬ÄêµÁ¤µ¤ì¤ë¡£
-margcount
-mnoargcount
-mvolatile-cache
-mvolatile-nocache
-mlong32
-mlong64
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ AMD Am29000 ÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mdw
DW ¥Ó¥Ã¥È¤¬Î©¤Ã¤Æ¤¤¤ë¡¢¤¹¤Ê¤ï¤Á¥Ð¥¤¥È±é»»¤ÈȾ¸ì±é»»¤¬¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤è¤êľÀÜ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤³¤È¤òÁÛÄꤷ¤¿¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-mndw
DW ¥Ó¥Ã¥È¤¬Î©¤Ã¤Æ¤¤¤Ê¤¤¤³¤È¤òÁÛÄꤷ¤¿¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£
-mbw
-mnbw
-mnbw ¤Ï -mndw ¤ò´Þ¤à¡£
-msmall
call Ì¿Î᤬¡¢const¡¢consth¡¢calli ¤È¤¤¤¦Ì¿ÎáÎó¤ÎÂå¤ï¤ê¤Ë»È¤ï¤ì¤ë¡£
-mnormal
call Ì¿Îá¤òÀ¸À®¤·¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï calli Ì¿Îá¤òÀ¸À®¤¹¤ë¡£¤³¤ì¤Ï¡¢³Æ¥Õ¥¡¥¤¥ë¤¬ 256 KB ̤Ëþ¤Ç¤¢¤ì¤Ðưºî¤¹¤ë¡£¤³¤Î¾ì¹ç¡¢¼Â¹Ô·Á¼°Á´ÂÎ¤Ï 256KB ¤è¤êÂ礤¯¤Æ¤âÎɤ¤¡£¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-mlarge
calli Ì¿Îá¤ò»È¤¦¡£°ì¸Ä¤Î¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤È¤¤Ë256KB ¤è¤êÂ礤ʥ³¡¼¥É¤Ë¤Ê¤ê¤½¤¦¤Ê¤é¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¡£
-m29050
-m29000
-mkernel-registers
gr96-gr127 ¤Ø¤Î»²¾È¤ÎÂå¤ï¤ê¤Ë¡¢¥ì¥¸¥¹¥¿ gr64-gr95
¤Ø¤Î»²¾È¤òÀ¸À®¤¹¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥æ¡¼¥¶¥â¡¼¥É¤Î¥³¡¼¥É¤Ç»È¤ï¤ì¤ë¤â¤Î¤È¤ÏʬΥ¤·¤¿¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿¤Î¥»¥Ã¥È¤òɬÍפȤ¹¤ë¥«¡¼¥Í¥ë¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¤¤Ï¡¢-f ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¥ì¥¸¥¹¥¿Ì¾¤Ï¡¢Ä̾ï¤Î¥æ¡¼¥¶¥â¡¼¥É¤Î̾Á°¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-muser-registers
gr96-gr127 ¤ò»È¤¦¡£¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-mstack-check
-mno-stack-check
__msp_check ¤Ø¤Î¸Æ½Ð¤·¤òÁÞÆþ¤¹¤ë(ÁÞÆþ¤·¤Ê¤¤)¡£¤³¤ì¤Ï¥«¡¼¥Í¥ë¥³¡¼¥É¤ÇÎɤ¯»È¤ï¤ì¤ë¡£
-mstorem-bug
-mno-storem-bug
-mstorem-bug ¤ò»ØÄꤹ¤ë¤È¡¢mstrim Ì¿Îá¤È storem Ì¿Îá¤òʬΥ¤·¤Æ°·¤¨¤Ê¤¤ 29k ¥×¥í¥»¥Ã¥µ(29050 ¤ò½ü¤¯¡¢¸½»þÅÀ¤Ç¤Î¤Û¤È¤ó¤É¤Î 29000 ¥Á¥Ã¥×)¤ò¼è¤ê°·¤¦¡£
-mno-reuse-arg-regs
-mreuse-arg-regs
-mno-reuse-arg-regs ¤ò»ØÄꤹ¤ë¤È¡¢ÆþÎϰú¿ô¥ì¥¸¥¹¥¿¤Ï°ú¿ô¤ò¤½¤Î¤Þ¤Þ¥³¥Ô¡¼¤¹¤ë¤¿¤á¤Ë¤·¤«»È¤ï¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¡£¤³¤ì¤Ï¡¢Àë¸À¤µ¤ì¤¿¤â¤Î¤è¤ê¤â¾¯¤Ê¤¤°ú¿ô¤Ç´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë¤Î¤ò¸¡½Ð¤¹¤ë¼ê½õ¤±¤Ë¤Ê¤ë¡£
-mno-impure-text
-mimpure-text
-mimpure-text ¤ò¡¢-shared ¤Ë²Ã¤¨¤Æ»ØÄꤹ¤ë¤È¡¢µýÍ¥ª¥Ö¥¸¥§¥¯¥È¤ò¥ê¥ó¥¯¤¹¤ë¤È¤¤Ë¥ê¥ó¥«¤Ë -assert pure-text
¥ª¥×¥·¥ç¥ó¤òÅϤµ¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¡£
-msoft-float
-mno-multm
°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤¬¡¢Advanced RISC Machines (ARM) ¥¢¡¼¥¥Æ¥¯¥Á¥ãÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë
-mapcs-frame
-fomit-frame-pointer ¤ò»ØÄꤹ¤ë¤È¡¢Ëöü´Ø¿ô¤ËÂФ·¤Æ¤Ï¥¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤¬À¸À®¤µ¤ì¤Ê¤¯¤Ê¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ï -mno-apcs-frame ¤Ç¤¢¤ë¡£
-mapcs
-mapcs-frame ¤ÎÊÌ̾¤Ç¤¢¤ë¡£
-mapcs-26
-m2 ¥ª¥×¥·¥ç¥ó¤È-m3 ¥ª¥×¥·¥ç¥ó¤òÃÖ¤´¹¤¨¤ë¤â¤Î¤Ç¤¢¤ë¡£
-mapcs-32
-m6 ¥ª¥×¥·¥ç¥ó¤òÃÖ¤´¹¤¨¤ë¤â¤Î¤Ç¤¢¤ë¡£
-mapcs-stack-check
__rt_stkovf_split_small ¤« __rt_stkovf_split_big ¤Î¤É¤Á¤é¤«¤¬¸Æ¤Ð¤ì¤ë¡£¤É¤Á¤é¤¬¸Æ¤Ð¤ì¤ë¤«¤ÏɬÍפȤ¹¤ë¥¹¥¿¥Ã¥¯¥¹¥Ú¡¼¥¹Î̤ˤè¤ë¡£¼Â¹Ô»þ¥·¥¹¥Æ¥à¤Ï¤³¤ì¤é¤Î´Ø¿ô¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ï¡¢-mno-apcs-stack-check ¤Ç¤¢¤ë¡£À¸À®¤µ¤ì¤ë¥³¡¼¥É¤¬¾®¤µ¤¤¤«¤é¤Ç¤¢¤ë¡£
-mapcs-float
-mno-apcs-float ¤Ç¤¢¤ë¡£À°¿ô¤·¤«´Þ¤Þ¤Ê¤¤¥³¡¼¥É¤Ï¡¢-mapcs-float ¤ò»ØÄꤹ¤ë¤È¤ï¤º¤«¤Ë¥µ¥¤¥º¤¬Â礤¯¤Ê¤ë¤¿¤á¤Ç¤¢¤ë¡£
-mapcs-reentrant
-fpic ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤Î¤ËÅù²Á¤Ç¤¢¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ï¡¢-mno-apcs-reentrant ¤Ç¤¢¤ë¡£
-mthumb-interwork
-mno-thumb-interwork ¤Ç¤¢¤ë¡£-mthumb-interwork ¤ò»ØÄꤹ¤ë¤È¤ï¤º¤«¤Ë¥³¡¼¥É¤¬Â礤¯¤Ê¤ë¤¿¤á¤Ç¤¢¤ë¡£
-mno-sched-prolog
-sched-prolog ¤Ç¤¢¤ë¡£
-mhard-float
-msoft-float
-msoft-float ¤ò»ØÄꤹ¤ë¤È¡¢½ÐÎÏ¥Õ¥¡¥¤¥ëÃæ¤Î¸Æ¤Ó½Ð¤·µ¬Ìó¤¬ÊѤï¤ë¡£¤³¤Î¤¿¤á¡¢¥×¥í¥°¥é¥àÁ´ÂΤò¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤¤¤È¤¤¤±¤Ê¤¤¡£ÆÃ¤Ë¡¢GCC ÉÕ°¤Î¥é¥¤¥Ö¥é¥ê¤Ç¤¢¤ë¡¢libgcc.a ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë¡¢-msoft-float ¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤¤¤È¤³¤Î¥é¥¤¥Ö¥é¥ê¤¬Àµ¤·¤¯Æ°ºî¤·¤Ê¤¤¡£
-mlittle-endian
-mbig-endian
-mwords-little-endian
32107654 ¤È¤¤¤¦·Á¤Ç¤¢¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤Î¤Ï¡¢¥Ó¥Ã¥°¡¦¥¨¥ó¥Ç¥£¥¢¥ó¤Î ARM ¥×¥í¥»¥Ã¥µÍѤΥ³¡¼¥É¤Ç¡¢GCC ¤Î 2.8 °ÊÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤ÇÀ¸À®¤µ¤ì¤¿¤â¤Î¤È¤Î¸ß´¹À¤¬É¬Íפʾì¹ç¤À¤±¤Ë¤¹¤Ù¤¤Ç¤¢¤ë¡£
-mshort-load-bytes
short·¿)¤ò¥í¡¼¥É¤¹¤ë¤Î¤Ë¡¢À°Î󤷤Ƥ¤¤Ê¤¤¥¢¥É¥ì¥¹¤«¤é¸ì¤ò¥í¡¼¥É¤¹¤ë¤³¤È¤Ç¹Ô¤Ê¤¦¤³¤È¤ò¤·¤Ê¤¤¡£¥¿¡¼¥²¥Ã¥È¤ÎÃæ¤Ë¤Ï¡¢MMU ¤¬¡¢À°Î󤷤Ƥ¤¤Ê¤¤¥¢¥É¥ì¥¹¤«¤é¤Î¥í¡¼¥É¤ò¥È¥é¥Ã¥×¤¹¤ë¤è¤¦ÀßÄꤵ¤ì¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¡¢¤½¤¦¤¤¤¦´Ä¶¤Ç¤â°ÂÁ´¤Ê¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£
-mno-short-load-bytes
short·¿Åù)¤ò¥í¡¼¥É¤¹¤ë¤Î¤Ë¡¢À°Î󤷤Ƥ¤¤Ê¤¤¥¢¥É¥ì¥¹¤«¤é¸ì¤ò¥í¡¼¥É¤¹¤ë¤³¤È¤Ç¹Ô¤Ê¤¦¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢¸úΨ¤ÎÎɤ¤¥³¡¼¥É¤¬ÆÀ¤é¤ì¤ë¤¬¡¢MMU ¤Ï¤³¤ì¤é¤ÎÌ¿Îá¤ò¥È¥é¥Ã¥×¤¹¤ë¤è¤¦¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ë¡£
-mshort-load-words
-mno-short-load-bytes ¤ÎÊÌ̾¤Ç¤¢¤ë¡£
-mno-short-load-words
-mshort-load-bytes ¤ÎÊÌ̾¤Ç¤¢¤ë¡£
-mbsd
-ansi ¤¬»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-mxopen
-mno-symrename
symrename ¤ò¡¢¥³¡¼¥É¤¬¥¢¥»¥ó¥Ö¥ë¤µ¤ì¤¿¸å¤Ç¼Â¹Ô¤·¤Ê¤¤¡£ÉáÄ̤ϡ¢RISC iX C ¥é¥¤¥Ö¥é¥ê¤È¥ê¥ó¥¯¤¹¤ë¤¿¤á¤Î²¼½àÈ÷¤È¤·¤Æ¡¢É¸½à¤Î¥·¥ó¥Ü¥ë¤ò¤¤¤¯¤é¤«½¤Àµ¤¹¤ëɬÍפ¬¤¢¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¤½¤Î½¤Àµ²áÄø¤òÍ޻ߤ¹¤ë¡£¸å½èÍý¥×¥í¥°¥é¥à¤Ï¡¢GCC ¤¬¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤È¤·¤Æ¹½ÃÛ¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï·è¤·¤Æ¼Â¹Ô¤µ¤ì¤Ê¤¤¡£
-mcpu=<name>
-mtune=<name>
-mtune= ¤Ï -mcpu= ¤ÎÊÌ̾¤Ç¤¢¤ê¡¢¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Î GCC ¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¤¢¤ë¡£
-march=<name>
-mcpu= ¥ª¥×¥·¥ç¥ó¤ÈÁȤ߹ç¤ï¤»¤Æ¡¢¤¢¤ë¤¤¤Ï-mcpu= ¥ª¥×¥·¥ç¥ó¤ÎÂå¤ï¤ê¤Ë»È¤¦¤³¤È¤¬½ÐÍè¤ë¡£»ØÄê¤Ç¤¤ë̾Á°¤Ï¡¢armv2¡¢armv2a¡¢armv3¡¢armv3m¡¢armv4¡¢armv4t ¤Ç¤¢¤ë¡£
-mfpe=<number>
-mfp=<number>
-mfp= ¤Ï-mfpe= ¤ÎÊÌ̾¤Ç¤¢¤ê¡¢¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Î GCC ¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë¤¢¤ë¡£
-mstructure-size-boundary=<n>
-mabort-on-noreturn
-mthumb-interwork
-mno-thumb-interwork ¤Ç¤¢¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¤ï¤º¤«¤Ë¥³¡¼¥É¤¬¾®¤µ¤¯¤Ê¤ë¤¿¤á¤Ç¤¢¤ë¡£
-mtpcs-frame
-mno-tpcs-frame ¤Ç¤¢¤ë¡£
-mtpcs-leaf-frame
-mno-tpcs-leaf-frame ¤Ç¤¢¤ë¡£
-mlittle-endian
-mbig-endian
-mstructure-size-boundary=<n>
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ Matushita MN10200 ¥¢¡¼¥¥Æ¥¯¥Á¥ã¸þ¤±¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mrelax
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢¥·¥ó¥Ü¥ê¥Ã¥¯¥Ç¥Ð¥Ã¥°¤¬¤Ç¤¤Ê¤¯¤Ê¤ë¡£
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬¾¾²¼ MN10300 ¥¢¡¼¥¥Æ¥¯¥Á¥ãÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mmult-bug
-mno-mult-bug
-mrelax
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢¥·¥ó¥Ü¥ê¥Ã¥¯¥Ç¥Ð¥Ã¥°¤¬¤Ç¤¤Ê¤¯¤Ê¤ë¡£
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬»°É© M32R/D ¥¢¡¼¥¥Æ¥¯¥Á¥ãÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mcode-model=small
ld24 Ì¿Îá¤Ç¥í¡¼¥É²Äǽ¤Ç¤¢¤ë)¡¢Á´¤Æ¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢bl Ì¿Îá¤ÇÅþã²Äǽ¤Ç¤¢¤ë¤ÈÁÛÄꤹ¤ë¡£¤³¤ì¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
ÆÃÄê¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥É¥ì¥¹²ÄǽÀ¤Ï¡¢model °À¤ÇÀßÄê²Äǽ¤Ç¤¢¤ë¡£
-mcode-model=medium
seth/add3 Ì¿Îá¤òÀ¸À®¤¹¤ë)¡¢Á´¤Æ¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢bl Ì¿Îá¤ÇÅþã²Äǽ¤Ç¤¢¤ë¤ÈÁÛÄꤹ¤ë¡£
-mcode-model=large
seth/add3 Ì¿Îá¤òÀ¸À®¤¹¤ë)¡¢¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢bl Ì¿Îá¤Ç¤ÏÅþã¤Ç¤¤Ê¤¤²ÄǽÀ¤¬¤¢¤ë¤ÈÁÛÄꤹ¤ë(GCC ¤Ï¡¢¤µ¤é¤ËÃÙ¤¤ seth/add3/jl Ì¿ÎáÎó¤òÀ¸À®¤¹¤ë)¡£
-msdata=none
.data¡¢bss¡¢.rodata ¤Î¤É¤ì¤«°ì¤Ä¤ËÃÖ¤«¤ì¤ë(section °À¤¬»ØÄꤵ¤ì¤ì¤Ð¤½¤Î¸Â¤ê¤Ç¤Ï¤Ê¤¤)¡£¤³¤ì¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
¾®¥Ç¡¼¥¿Îΰè¤Ï¡¢¥»¥¯¥·¥ç¥ó .sdata ¤È .sbss ¤«¤é¤Ê¤ë¡£section °À¤Ç¤³¤Î¤É¤Á¤é¤«¤Î¥»¥¯¥·¥ç¥ó¤ò»ØÄꤹ¤ì¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò¾®¥Ç¡¼¥¿Îΰè¤ËÌÀ¼¨Åª¤ËÃÖ¤¯¤³¤È¤¬¤Ç¤¤ë¡£
-msdata=sdata
-msdata=use
-G num
-msdata ¥ª¥×¥·¥ç¥ó¤Çsdata ¤« use ¤Î¤É¤Á¤é¤«¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
Á´¤Æ¤Î¥â¥¸¥å¡¼¥ë¤Ï¡¢-G num ¤ÇƱ¤¸Ãͤò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£num ¤ÎÃͤ¬°ã¤Ã¤Æ¤¤¤ë¤È¡¢Àµ¤·¤¯Æ°ºî¤¹¤ë¤«¤É¤¦¤«¤ï¤«¤é¤Ê¤¤¡£Æ°ºî¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¥ê¥ó¥«¤¬¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½Ð¤¹¤Ï¤º¤Ç¤¢¤ë¡£Àµ¤·¤¯¤Ê¤¤¥³¡¼¥É¤ÏÀ¸À®¤µ¤ì¤Ê¤¤¡£
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ Motorola 88k ¥¢¡¼¥¥Æ¥¯¥Á¥ãÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-m88000
-m88100
-m88110
-mbig-pic
-fPIC ¤ò»È¤ª¤¦¡£
-midentify-revision
ident µ¿»÷Ì¿Îá¤òÆþ¤ì¤Æ¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë̾¡¢¥³¥ó¥Ñ¥¤¥é̾¤È¤½¤Î¥Ð¡¼¥¸¥ç¥ó¡¢¥¿¥¤¥à¥¹¥¿¥ó¥×¡¢¥³¥ó¥Ñ¥¤¥é¤Ø¤Î¥ª¥×¥·¥ç¥ó¤òµÏ¿¤¹¤ë¡£
-mno-underscores
-mocs-debug-info
-mno-ocs-debug-info
-mocs-frame-position
-mocs-frame-position ¤ò»È¤Ã¤Æ¤¤¤ë¡£Â¾¤Î 88k ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ï -mno-ocs-frame-position ¤Ç¤¢¤ë¡£
-mno-ocs-frame-position
-moptimize-arg-area
-mno-optimize-arg-area
-moptimize-arg-area ¤ò»ØÄꤹ¤ë¤ÈºÇŬ²½¤Ë¤è¤ê»ÈÍÑ¥á¥â¥ê¤òÀáÌ󤹤롣¤À¤¬¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï 88open ¤Î»ÅÍͤËÈ¿¤¹¤ë¡£¤½¤ÎÈ¿ÂФΥª¥×¥·¥ç¥ó -mno-optimze-arg-area ¤Ï¡¢88open µ¬³Ê¤Ë°ìÃפ¹¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢°ú¿ôÎΰè¤ÎºÇŬ²½¤Ï¹Ô¤Ê¤ï¤Ê¤¤¡£
-mshort-data-num
r0 ÁêÂФˤ¹¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢Ãͤò¥í¡¼¥É¤¹¤ë¤Î¤¬°ì¸Ä¤ÎÌ¿Îá¤Ç¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ë(ÉáÄ̤ÏÌ¿ÎáÆó¸ÄɬÍפǤ¢¤ë)¡£¤É¤Î¥Ç¡¼¥¿»²¾È¤¬±Æ¶Á¤ò¼õ¤±¤ë¤«¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë num ¤ÇÄ´À°¤Ç¤¤ë¡£Î㤨¤Ð¡¢-mshort-data-512 ¤È»ØÄꤹ¤ë¤È¡¢±Æ¶Á¤ò¼õ¤±¤ë¥Ç¡¼¥¿»²¾È¤Ï512 ¥Ð¥¤¥È̤Ëþ¤ÎÊѰ̤ò´Þ¤à¤â¤Î¤Ç¤¢¤ë¡£-mshort-data-num ¤Ï¡¢num ¤¬ 64k ¤è¤êÂ礤¤¤È¸ú²Ì¤¬¤Ê¤¤¡£
-mserialize-volatile
-mno-serialize-volatile
MC88110 ¥×¥í¥»¥Ã¥µ¤Ë¤è¤ê¤Ê¤µ¤ì¤ë¥á¥â¥ê»²¾È¤Î½ç½ø¤Ï¡¢¤½¤Î»²¾È¤òɬÍפȤ¹¤ëÌ¿Îá¤Î½ç½ø¤Ë¤Ïɬ¤º¤·¤â°ìÃפ·¤Ê¤¤¡£ÆÃ¤Ë¡¢¥í¡¼¥ÉÌ¿Îá¤ÏÀè¹Ô¤¹¤ë¥¹¥È¥¢Ì¿Îá¤è¤ê¤âÀè¤Ë¼Â¹Ô¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£¤³¤Î¤è¤¦¤ÊʤÙÂØ¤¨¤Ï¡¢Ã༡Ū¤Ê´øÈ¯À¥á¥â¥ê»²¾È¤Î°ì´ÓÀ¤ò¡¢¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ¤Î¾ì¹ç¤Ë¤ÏÇˤ롣°ì´ÓÀ¤¬Êݾڤµ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¾ì¹ç¤Ï¡¢GNU C ¤ÏɬÍפ˱þ¤¸¤ÆÆÃÊ̤ÊÌ¿Îá¤òÀ¸À®¤·¡¢¶¯À©Åª¤ËŬÀÚ¤Ê½ç½ø¤Ç¼Â¹Ô¤µ¤»¤ë¤è¤¦¤Ë¤¹¤ë¡£
MC88100 ¥×¥í¥»¥Ã¥µ¤Ï¥á¥â¥ê»²¾È¤ÎʤÙÂØ¤¨¤ò¹Ô¤Ê¤ï¤Ê¤¤¤Î¤Ç¡¢¾ï¤ËÃ༡Ū¤Ê°ì´ÓÀ¤òÄ󶡤¹¤ë¡£¤À¤¬¡¢GNU C ¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢ -m88100
¤ò»ØÄꤷ¤¿¾ì¹ç¤Ç¤â¡¢ÆÃÊ̤ÊÌ¿Îá¤òÀ¸À®¤·¡¢°ì´ÓÀ¤òÊݾڤ¹¤ë¤Î¤Ç¡¢¤½¤ÎÀ¸À®¥³¡¼¥É¤Ï M88110 ¥×¥í¥»¥Ã¥µ¤Ç¤â¼Â¹Ô²Äǽ¤Ç¤¢¤ë¡£M88100 ¥×¥í¥»¥Ã¥µ¤Ç¤·¤«¼Â¹Ô¤·¤Ê¤¤¤Ä¤â¤ê¤Ê¤é¡¢-mno-serialize-volatile ¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
°ì´ÓÀ¤òÊݾڤ¹¤ë¤¿¤á¤ËÀ¸À®¤µ¤ì¤¿Í¾Ê¬¤Î¥³¡¼¥É¤Ï¡¢ÆÉ¼Ô¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¼Â¹Ô®Å٤˱ƶÁ¤òµÚ¤Ü¤¹²ÄǽÀ¤¬¤¢¤ë¡£Êݾڤ·¤Ê¤¯¤Æ¤âÂç¾æÉפǤ¢¤ë¤³¤È¤¬È½¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢-mno-serialize-volatile ¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
-msvr4
-msvr3
-msvr4)¡¢¥ª¥Õ¤Ë¤¹¤ë(-msvr3¡£¤³¤ì¤Ï°Ê²¼¤Î»ö¹à¤òÀ©¸æ¤¹¤ë¡£
-msvr4 ¤ò»ØÄꤹ¤ë¤È¡¢C ¥×¥ê¥×¥í¥»¥Ã¥µ¤¬¡¢SVR4 ¤Ç»È¤ï¤ì¤Æ¤¤¤ë#pragma weak ¤òǧ¼±¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¡£-msvr4 ¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤Ï SVR4 ¤Ç»È¤ï¤ì¤Æ¤¤¤ëÄɲäÎÀë¸ÀÀ©¸æ»Ò¤òȯ¹Ô¤¹¤ë¡£
-msvr4 ¤Ï¡¢m88k-motorola-sysv4 ¤È m88k-dg-dgux ¤È¤¤¤¦ m88k ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£-msvr3 ¤Ï¡¢¤½¤Î¾¤ÎÁ´¤Æ¤Î m88k ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ç¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
-mversion-03.00
-mno-check-zero-division
-mcheck-zero-division
MC88100 ¥×¥í¥»¥Ã¥µ¤Î´ö¤Ä¤«¤Î¥â¥Ç¥ë¤Ç¤Ï¡¢ÆÃÄê¤Î¾ò·ï²¼¤Ç¥¼¥í¤Ë¤è¤ëÀ°¿ô½ü»»¤ò¥È¥é¥Ã¥×¤Ç¤¤Ê¤¤¤³¤È¤¬¤¢¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¤½¤¦¤¤¤¦¥×¥í¥»¥Ã¥µ¤Ç¼Â¹Ô¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ï¡¢GCC ¤Ï¥¼¥í¤Ë¤Ê¤ë½ü¿ô¤òÌÀ¼¨Åª¤Ë¸¡ºº¤·¡¢¸¡½Ð¤µ¤ì¤¿¾ì¹ç¤Ë¤ÏÎã³°ÈÖ¹æ 503 ¤Ç¥È¥é¥Ã¥×¤¹¤ë¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£-mno-check-zero-division ¤ò»È¤¦¤È¡¢MC88100 ¥×¥í¥»¥Ã¥µ¤Ç¼Â¹Ô¤¹¤ë¤è¤¦¤ËÀ¸À®¤µ¤ì¤¿¥³¡¼¥É¤ËÂФ·¡¢¤³¤ÎÍͤʸ¡ºº¤ò¹Ô¤Ê¤ï¤Ê¤¤¡£
GNU C ¤Ï¡¢MC88110 ¥×¥í¥»¥Ã¥µ¤¬¡¢¥¼¥í¤Ë¤è¤ëÀ°¿ô½ü»»¤¬µ¯¤³¤Ã¤¿¾ì¹çÁ´¤Æ¤òÀµ¤·¤¯¸¡½Ð¤Ç¤¤ë¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤ë¡£-m88110 ¤ò»ØÄꤷ¤¿¤È¤¤Ï¡¢-mcheck-zero-division ¤â -mno-check-zero-division ¤â¤É¤Á¤é¤â̵»ë¤µ¤ì¡¢½ü¿ô¤¬¥¼¥í¤Ë¤Ê¤ë¤«¤É¤¦¤«¤òÌÀ¼¨Åª¤Ë¸¡ºº¤¹¤ë¥³¡¼¥É¤ÏÀ¸À®¤µ¤ì¤Ê¤¤¡£
-muse-div-instruction
MC88100 ¥×¥í¥»¥Ã¥µ¤Ç¤Ï¡¢É乿ÉÕ¤¤ÎÀ°¿ô½ü»»Ì¿Îá(div)¤Ï¡¢¥ª¥Ú¥é¥ó¥É¤¬Éé¤Î¾ì¹ç¤Ï OS¤Ø¤Î¥È¥é¥Ã¥×¤òȯÀ¸¤¹¤ë¡£OS ¤ÏÆ©²áŪ¤Ë±é»»¤ò´°Î»¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤¬¡¢¼Â¹Ô»þ´Ö¤¬Èó¾ï¤Ë¤«¤«¤ë¤³¤È¤Ë¤Ê¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢MC88100 ¥×¥í¥»¥Ã¥µ¤Ç¼Â¹Ô¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ï¡¢GCC ¤ÏÉ乿ÉÕ¤À°¿ô½ü»»¤ò¡¢É乿¤Ê¤·À°¿ô½ü»»Ì¿Îá(divu)¤ò»È¤Ã¤Æ¥¨¥ß¥å¥ì¡¼¥È¤¹¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢OS ¤Ø¤Î¥È¥é¥Ã¥×¤È¤¤¤¦Âç¤¤Ê¥Ú¥Ê¥ë¥Æ¥£¤ò²óÈò¤·¤Æ¤¤¤ë¡£¤³¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤Î¥³¥¹¥È¤Ï¡¢¼Â¹Ô»þ´Ö¤È¥³¡¼¥É¥µ¥¤¥º¤ÎξÌ̤Ǿ®¤µ¤¯¤Ê¤Ã¤Æ¤¤¤ë¡£ÆÉ¼Ô¤Î¥×¥í¥°¥é¥à¤Ç¡¢½ÅÍפÊÉ乿ÉÕ¤À°¿ô½ü»»¤¬Æó¤Ä¤ÎÉé¤Ç¤Ê¤¤¥ª¥Ú¥é¥ó¥É¤ËÂФ·¤Æ¼Â¹Ô¤µ¤ì¤ëÈϰϤʤ顢div Ì¿Îá¤òľÀܻȤ¦¤Î¤¬Ë¾¤Þ¤·¤¤¡£
MC88110 ¥×¥í¥»¥Ã¥µ¤Î¾ì¹ç¤Ï¡¢div Ì¿Îá(divs Ì¿Îá¤È¤·¤Æ¤âÃΤé¤ì¤Æ¤¤¤ë)¤Ï¡¢OS ¤Ø¤Î¥È¥é¥Ã¥×¤òȯÀ¸¤¹¤ë¤³¤È¤Ê¤¯¡¢Éé¤Î¥ª¥Ú¥é¥ó¥É¤ò½èÍý¤¹¤ë¡£-m88110 ¤¬»ØÄꤵ¤ì¤¿¤È¤¤Ï¡¢-muse-div-instruction ¤Ï̵»ë¤µ¤ì¡¢div Ì¿Î᤬É乿ÉÕ¤À°¿ô½ü»»¤Ë»È¤ï¤ì¤ë¡£
INT_MIN ¤ò -1 ¤Ç³ä¤Ã¤¿·ë²Ì¤Ï̤ÄêµÁ¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤ÆÍߤ·¤¤¡£ÆÃ¤Ë¡¢¤³¤Î¤è¤¦¤Ê³ä¤ê»»¤Îưºî¤Ï¡¢-muse-div-instruction ¤ÎÍ̵¤ÇÊѤï¤Ã¤Æ¤¯¤ë¡£
-mtrap-large-shift
-mhandle-large-shift
-mwarn-passed-structs
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ IBM RS/6000 ¤È PowerPC ÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mpower
-mno-power
-mpower2
-mno-power2
-mpowerpc
-mno-powerpc
-mpowerpc-gpopt
-mno-powerpc-gpopt
-mpowerpc-gfxopt
-mno-powerpc-gfxopt
-mpowerpc64
-mno-powerpc64
rios ¥Á¥Ã¥×¥»¥Ã¥È¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤¿Ì¿Î᥻¥Ã¥È¤Ç¤¢¤ë¡£PowerPC Ì¿Î᥻¥Ã¥È¤Ï¡¢¥â¥È¥í¡¼¥é¤Î¥Þ¥¤¥¯¥í¥×¥í¥»¥Ã¥µ MPC5xx¡¢MPC6xx¡¢MPC8xx ¤È IBM ¤Î¥Þ¥¤¥¯¥í¥×¥í¥»¥Ã¥µ 4xx ¤Î¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ç¤¢¤ë¡£
¤É¤Á¤é¤Î¥¢¡¼¥¥Æ¥¯¥Á¥ã¤â¾Êý¤Î¥µ¥Ö¥»¥Ã¥È¤Ë¤Ï¤Ê¤Ã¤Æ¤¤¤Ê¤¤¡£¤·¤«¤·¡¢Î¾Êý¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¶¦Ä̤ÎÌ¿Îá¤ÎÂ礤ʥµ¥Ö¥»¥Ã¥È¤¬¤¢¤ë¡£POWER ¥¢¡¼¥¥Æ¥¯¥Á¥ã¤ò¥µ¥Ý¡¼¥È¤¹¤ë¥×¥í¥»¥Ã¥µ¤Ë¤Ï MQ ¥ì¥¸¥¹¥¿¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£
¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¡¢¼«Ê¬¤Î¥×¥í¥»¥Ã¥µ¤ÇÍøÍѲÄǽ¤ÊÌ¿Îá¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤϡ¢GCC ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó»þ¤Ë·èÄꤵ¤ì¤ë¡£-mcpu=cpu_type ¤ò»ØÄꤹ¤ë¤È¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Î»ØÄê¤ò¾å½ñ¤¤¹¤ë¡£¾å¤ËÎóµó¤·¤¿¥ª¥×¥·¥ç¥ó¤Ç¤Ï¤Ê¤¯¡¢-mcpu=cpu_type ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤³¤È¤ò¤ª´«¤á¤¹¤ë¡£
-mpower ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢POWER ¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ë¤Î¤ß¸ºß¤¹¤ëÌ¿Îá¤òÀ¸À®¤·¤¿¤ê¡¢MQ ¥ì¥¸¥¹¥¿¤ò»È¤¦¤³¤È¤ò GCC ¤Ëµö¤¹¡£-mpower2 ¤ò»ØÄꤹ¤ë¤È¡¢-power ¤ò´Þ¤ó¤À¤¦¤¨¤Ë¡¢POWER2 ¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ë¤Ï¸ºß¤¹¤ë¤¬¡¢¸µ¡¹¤Î POWER ¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ë¤Ï¸ºß¤·¤Ê¤¤Ì¿Îá¤òÀ¸À®¤¹¤ë¤³¤È¤ò GCC ¤Ëµö¤¹¡£
-mpowerpc ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢PowerPC ¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Î32¥Ó¥Ã¥ÈÈǤΥµ¥Ö¥»¥Ã¥È¤Ë¤Î¤ß¸ºß¤¹¤ëÌ¿Îá¤ÎÀ¸À®¤ò GCC ¤Ëµö¤¹¡£-mpowerpc-gpopt ¤ò»ØÄꤹ¤ë¤È¡¢-mpowerpc ¤ò´Þ¤ó¤À¤¦¤¨¤Ë¡¢PowerPC ¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Î General Purpose ¥°¥ë¡¼¥×¤Î¥ª¥×¥·¥ç¥ó¤ÎÌ¿Îá¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ë¡£¤³¤ì¤Ë¤Ï¡¢ÉâÆ°¾®¿ôÅÀÊ¿Êýº¬Ì¿Îá¤â´Þ¤Þ¤ì¤ë¡£-mpowerpc-gfxopt ¤ò»ØÄꤹ¤ë¤È¡¢-mpowerpc ¤ò´Þ¤ó¤À¤¦¤¨¤Ë¡¢PowerPC ¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Î Graphics ¥°¥ë¡¼¥×¤Î¥ª¥×¥·¥ç¥ó¤ÎÌ¿Îá¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ë¡£¤³¤ì¤Ë¤ÏÉâÆ°¾®¿ôÅÀÁªÂòÌ¿Îá¤â´Þ¤Þ¤ì¤ë¡£
-mpowerpc64 ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤Ï´°Á´¤Ê PowerPC64 ¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ë¤¢¤ë 64 ¥Ó¥Ã¥ÈÌ¿Îá¤òÄɲäÇÀ¸À®¤·¡¢GPR ¤ò 64 ¥Ó¥Ã¥È¤ÎÇܸìÎ̤Ȥ·¤Æ¼è¤ê°·¤¦¡£¥Ç¥Õ¥©¥ë¥È¤Ï -mno-powerpc64 ¤Ç¤¢¤ë¡£
-mno-power ¤È -mno-powerpc ¤ÎξÊý¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤ÏξÊý¤Î¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ë¶¦Ä̤¹¤ëÌ¿Î᥵¥Ö¥»¥Ã¥È¤Ë²Ã¤¨¤Æ´ö¤Ä¤«¤ÎÆÃÊ̤ÊAIX ¶¦Ḁ̈⡼¥É¸Æ½Ð¤·Ì¿Îá¤Î¤ß¤ò»È¤¤¡¢MQ ¥ì¥¸¥¹¥¿¤Ï»È¤ï¤Ê¤¤¤è¤¦¤Ë¤Ê¤ë¡£-mpower ¤È -mpowerpc ¤òξÊý»ØÄꤹ¤ë¤È¡¢¤É¤Á¤é¤Î¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Î¤É¤ÎÌ¿Îá¤Ç¤â»È¤¦¤³¤È¤¬²Äǽ¤Ë¤Ê¤ê¡¢MQ ¥ì¥¸¥¹¥¿¤â»È¤¦¤è¤¦¤Ë¤Ê¤ë¡£Motorola MPC601 ¤Ë¤Ï¤³¤ÎξÊý¤ò»ØÄꤹ¤ë¤³¤È¡£
-mnew-mnemonics
-mold-mnemonics
-mnew-mnemonisc ¤ò»ØÄꤹ¤ë¤È¡¢PowerPC ¥¢¡¼¥¥Æ¥¯¥Á¥ã¸þ¤±¤ËÄêµÁ¤µ¤ì¤¿¥¢¥»¥ó¥Ö¥é¥Ë¡¼¥â¥Ë¥Ã¥¯¤ò»È¤Ã¤Æ½ÐÎϤ¹¤ë¡£°ìÊý¡¢-mold-mnemonisc ¤ò»ØÄꤹ¤ë¤È¡¢POWER ¥¢¡¼¥¥Æ¥¯¥Á¥ãÍѤËÄêµÁ¤µ¤ì¤¿¥¢¥»¥ó¥Ö¥é¥Ë¡¼¥â¥Ë¥Ã¥¯¤ò»ÈÍѤ¹¤ë¡£°ì¤Ä¤Î¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ç¤·¤«ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤Ì¿Îá¤Ï¡¢¥Ë¡¼¥â¥Ë¥Ã¥¯¤Ï°ì¼ïÎष¤«¤Ê¤¤¡£GCC ¤Ï¡¢°ì¼ïÎष¤«¤Ê¤¤¥Ë¡¼¥â¥Ë¥Ã¥¯¤Ï¡¢¤É¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤¿¤«¤Ë´Ø·¸¤Ê¤¯¡¢¤½¤ì¤ò»È¤¦¡£
GCC ¤Ç¤Ï»È¤ï¤ì¤Æ¤¤¤ë¥¢¡¼¥¥Æ¥¯¥Á¥ã¤ËŬ¤·¤¿¥Ë¡¼¥â¥Ë¥Ã¥¯¤ò¥Ç¥Õ¥©¥ë¥È¤Ç»È¤¦¡£-mcpu=cpu_type ¤ò»ØÄꤹ¤ë¤È¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤ÎÃͤ¬ÊѤï¤ë¤³¤È¤â¤¢¤ë¡£¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤òºî¤ë¤Î¤Ç¤Ê¤¤¸Â¤ê¡¢ÉáÄÌ¤Ï -mnew-mnemonics ¤ä -mold-mnemonics ¤ò»ØÄꤹ¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢Âå¤ï¤ê¤Ë¥Ç¥Õ¥©¥ë¥È¤ò¼õ¤±Æþ¤ì¤ë¤è¤¦¤Ë¤¹¤Ù¤¤Ç¤¢¤ë¡£
-mcpu=cpu_type
rs6000¡¢rios1¡¢rios2¡¢rsc¡¢601¡¢602¡¢603¡¢603e¡¢604¡¢604e¡¢620¡¢740¡¢750¡¢power¡¢power2¡¢powerpc¡¢403¡¢505¡¢801¡¢821¡¢823¡¢860¡¢common
¤Ç¤¢¤ë¡£-mcpu=power¡¢-mcpu=power2¡¢-mcpu=powerpc ¤Ï¡¢POWER¡¢POWER2¡¢¤½¤ì¤Ë½ã¿è¤Ê PowerPC(¤Ä¤Þ¤ê¡¢MPC601 ¤Ï´Þ¤Þ¤Ê¤¤)
¥¢¡¼¥¥Æ¥¯¥Á¥ã¤ÎÈÆÍѤε¡¼ï¤ò»ØÄꤹ¤ë¡£¥¹¥±¥¸¥å¡¼¥ê¥ó¥°ÍѤˤϡ¢Å¬ÀÚ¤ÊÈÆÍÑ¥×¥í¥»¥Ã¥µ¥â¥Ç¥ë¤òÁÛÄꤹ¤ë¡£
¥ª¥×¥·¥ç¥ó -mcpu=rios1¡¢-mcpu=rios2¡¢-mcpu=rsc¡¢-mcpu=power¡¢-mcpu=power2 ¤Î¤É¤ì¤«¤ò»ØÄꤹ¤ë¤È¡¢-mpower ¥ª¥×¥·¥ç¥ó¤¬Í¸ú¤Ë¤Ê¤ê¡¢-mpowerpc ¥ª¥×¥·¥ç¥ó¤¬Ìµ¸ú¤Ë¤Ê¤ë¡£-mcpu=601 ¤ò»ØÄꤹ¤ë¤È¡¢-mpower ¤È -mpowerpc ¤ÎξÊý¤¬Í¸ú¤Ë¤Ê¤ë¡£-mcpu=602¡¢-mcpu=603,
-mcpu=603e¡¢-mcpu=604¡¢-mcpu=604e,
-mcpu=620¡¢-mcpu=403¡¢-mcpu=505¡¢-mcpu=801,
-mcpu=821¡¢-mcpu=823¡¢-mcpu=860¡¢-mcpu=powerpc ¤Î¤É¤ì¤«¤ò»ØÄꤹ¤ë¤È¡¢-mpowerpc ¥ª¥×¥·¥ç¥ó¤ò͸ú¤Ë¤·¡¢-mpower ¥ª¥×¥·¥ç¥ó¤ò̵¸ú¤Ë¤¹¤ë¡£Á´¤¯Æ±Íͤˡ¢-mcpu=403¡¢-mcpu=505¡¢-mcpu=821¡¢-mcpu=860¡¢-mcpu=powerpc ¤ò»ØÄꤹ¤ë¤È¡¢-mpowerpc ¤ò͸ú¤Ë¤·¡¢-mpower ¤ò̵¸ú¤Ë¤¹¤ë¡£-mcpu=common ¤Ï¡¢-mpower ¤È -mpowerpc ¤ÎξÊý¤ò̵¸ú¤Ë¤¹¤ë¡£
AIX ¥Ð¡¼¥¸¥ç¥ó 4 °Ê¹ß¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç -mcpu=common ¤òÁªÂò¤·¡¢¥³¡¼¥É¤¬RS/6000 ¤È PowerPC °ì²¤ÎÁ´¥á¥ó¥Ð¤Çưºî¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¤½¤Î¾ì¹ç¡¢GCC ¤ÏξÊý¤Î¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ë¶¦Ä̤Υµ¥Ö¥»¥Ã¥È¤Ë¡¢´ö¤Ä¤«¤ÎÆÃÊÌ¤Ê AIX ¶¦Ḁ̈⡼¥É¸Æ¤Ó½Ð¤·¤ò²Ã¤¨¤¿¤â¤Î¤À¤±¤ò»È¤¤¡¢MQ ¥ì¥¸¥¹¥¿¤Ï»È¤ï¤Ê¤¤¡£GCC ¤Ï¡¢¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤ÎºÝ¤Ë¤ÏÈÆÍÑ¤Î¥×¥í¥»¥Ã¥µ¥â¥Ç¥ë¤òÁÛÄꤹ¤ë¡£
-mcpu=rios1¡¢-mcpu=rios2¡¢-mcpu=rsc¡¢-mcpu=power¡¢-mcpu=power2
¤Î¤É¤ì¤«¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤â¡¢new-mnemonics ¥ª¥×¥·¥ç¥ó¤ò̵¸ú¤Ë¤¹¤ë¡£-mcpu=601¡¢-mcpu=602¡¢-mcpu=603¡¢-mcpu=603e¡¢-mcpu=604¡¢620¡¢403¡¢-mcpu=powerpc
¤Î¤É¤ì¤«¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤â¡¢new-mnemonics ¥ª¥×¥·¥ç¥ó¤ò͸ú¤Ë¤¹¤ë¡£
-mcpu=403¡¢-mcpu=821¡¢-mcpu=860 ¤Î¤É¤ì¤«¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤â -msoft-float ¥ª¥×¥·¥ç¥ó¤ò͸ú¤Ë¤¹¤ë¡£
-mtune=cpu_type
-mcpu=cpu_type ¤¬¤ä¤ëÀßÄê¤Ï¹Ô¤Ê¤ï¤Ê¤¤¡£cpu_type ¤ÎÃͤȤ·¤Æ¤Ï¡¢-mcpu=cpu_type ¤Ë»È¤Ã¤¿¤Î¤ÈƱ¤¸¤â¤Î¤ò¡¢-mtune=cpu_type ¤ËÂФ·¤Æ»È¤¦¡£-mtune=cpu_type ¥ª¥×¥·¥ç¥ó¤Ï¡¢-mcpu=cpu_type
¥ª¥×¥·¥ç¥ó¤¬ÀßÄꤷ¤¿¤â¤Î¤ò¡¢Ì¿Î᥹¥±¥¸¥å¡¼¥ê¥ó¥°¤Î¥Ñ¥é¥á¡¼¥¿¤Ç¾å½ñ¤¤¹¤ë¡£
-mfull-toc
-mno-fp-in-toc
-mno-sum-in-toc
-mminimal-toc
-mfull-toc ¥ª¥×¥·¥ç¥ó¤¬¥Ç¥Õ¥©¥ë¥È¤ÇÁª¤Ð¤ì¤Æ¤¤¤ë¡£¤½¤Î¾ì¹ç¡¢GCC ¤Ï¡¢¥×¥í¥°¥é¥àÆâ¤Î°ì°ÕŪ¤Ç¼«Æ°ÊÑ¿ô¤Ç¤Ê¤¤ÊÑ¿ô¤Î»²¾È°ì¤ÄËè¤Ë¡¢¾¯¤Ê¤¯¤È¤â°ì¤Ä¤ÎTOC ¥¨¥ó¥È¥ê¤ò³ä¤êÅö¤Æ¤ë¡£GCC ¤Ï¡¢ÉâÆ°¾®¿ôÅÀÄê¿ô¤â TOC ¤ËÃÖ¤¯¡£¤À¤¬¡¢TOC ¤ËÆþ¤ì¤é¤ì¤ë¥¨¥ó¥È¥ê¿ô¤Ï¡¢16,384 ¤·¤«¤Ê¤¤¡£
¥ê¥ó¥«¤¬¡¢ÍøÍѲÄǽ¤Ê TOC ¶õ´Ö¤¬°î¤ì¤¿¤È¤¤¤¦¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½Ð¤·¤¿¾ì¹ç¤Ï¡¢TOC ¤Î»ÈÍÑÎ̤ò -mno-fp-in-toc ¥ª¥×¥·¥ç¥ó¤ä-mno-sum-in-toc ¥ª¥×¥·¥ç¥ó¤Ç¸º¤é¤¹¤³¤È¤¬¤Ç¤¤ë¡£-mno-fp-in-toc ¤ò»ØÄꤹ¤ë¤È¡¢ÉâÆ°¾®¿ôÅÀÄê¿ô¤ò TOC ¤ËÃÖ¤¯¤Î¤ò»ß¤á¤ë¡£-mno-sum-in-toc ¤ò»ØÄꤹ¤ë¤È¡¢¤¢¤ë¥¢¥É¥ì¥¹¤È¤¢¤ëÄê¿ô¤ÎϤò TOC ¤ËÃÖ¤¯ÊѤï¤ê¤Ë¡¢¼Â¹Ô»þ¤Ë¤½¤ÎϤò·×»»¤¹¤ë¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£¤³¤ÎÆó¤Ä¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¤É¤Á¤é¤«»ØÄꤷ¤Æ¤âÎɤ¤¤·¡¢Î¾Êý»ØÄꤷ¤Æ¤âÎɤ¤¡£¤É¤Á¤é¤â¡¢TOC ¶õ´Ö¤òÊݸ¤¹¤ë¤³¤È¤ÎÂå½þ¤È¤·¤Æ¡¢¤Û¤ó¤Î¤Á¤ç¤Ã¤È¤À¤±¡¢¥³¡¼¥É¤¬ÃÙ¤¯¡¢Â礤¯¤Ê¤ë¡£
ξÊý»ØÄꤷ¤Æ¤â¤Þ¤À TOC ¤¬Â¤ê¤Ê¤¤¤È¤¤¤¦¾ì¹ç¤Ï¡¢Âå¤ï¤ê¤Ë-mminimal-toc ¤ò»ØÄꤹ¤ë¤³¤È¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤Ï¡¢³Æ¥Õ¥¡¥¤¥ë¤Ë°ì¤Ä¤·¤« TOC ¥¨¥ó¥È¥ê¤òºî¤é¤Ê¤¤¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ÃÙ¤¯¡¢Â礤ʥ³¡¼¥É¤òÀ¸À®¤¹¤ë¤¬¡¢TOC ¶õ´Ö¤ÏÈó¾ï¤Ë¤ï¤º¤«¤·¤«»È¤ï¤Ê¤¤¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤Î¤Ï¡¢¤¢¤Þ¤êÉÑÈˤ˼¹Ԥµ¤ì¤Ê¤¤¥³¡¼¥É¤·¤«Æþ¤Ã¤Æ¤¤¤Ê¤¤¥Õ¥¡¥¤¥ë¤Ë¸Â¤ë¤Î¤¬Îɤ¤¤À¤í¤¦¡£
-maix64
-maix32
long ·¿¡¢¤½¤ì¤Ë¤½¤ì¤é¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤Î¤ËɬÍפʥ¤¥ó¥Õ¥é¥¹¥È¥é¥¯¥Á¥ã¤¬Í¸ú¤Ë¤Ê¤ë¡£-maix64 ¤ò»ØÄꤹ¤ë¤È¡¢-mpwoerpc64 ¤È -mpowerpc ¤â°Å¤Ë»ØÄꤵ¤ì¤ë¡£°ìÊý¡¢-maix32 ¤ò»ØÄꤹ¤ë¤È 64¥Ó¥Ã¥È ABI ¤ò̵¸ú¤Ë¤·¡¢°Å¤Ë -mno-powerpc64 ¤ò»ØÄꤹ¤ë¡£GCC ¤Î¥Ç¥Õ¥©¥ë¥È¤Ï-maix32 ¤Ç¤¢¤ë¡£
-mxl-call
-mno-xl-call
-mthreads
-mpe
/usr/lpp/ppe.poe/)¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£É¸½à¤Î°ÌÃ֤ˤʤ¤¾ì¹ç¤Ï¡¢-specs= ¥ª¥×¥·¥ç¥ó¤ÇŬÀڤʥǥ£¥ì¥¯¥È¥ê°ÌÃÖ¤ò»ØÄꤹ¤ë¤è¤¦¤Ë specs ¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤¤¹¤ëɬÍפ¬¤¢¤ë¡£Parallel Environment ¤Ï¥¹¥ì¥Ã¥É¤ò¥µ¥Ý¡¼¥È»ØÄê°Ì¤Ê¤Î¤Ç¡¢-mpe ¥ª¥×¥·¥ç¥ó¤È -mthreads ¥ª¥×¥·¥ç¥ó¤Ï¸ß´¹À¤¬¤Ê¤¤¡£
-msoft-float
-mhard-float
-msoft-float ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢¥½¥Õ¥È¥¦¥§¥¢ÉâÆ°¾®¿ôÅÀ¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤¬Ä󶡤µ¤ì¤Æ¤ª¤ê¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤¬¥ê¥ó¥¯»þ¤Ë GCC ¤ËÅϤµ¤ì¤ë¡£
-mmultiple
-mno-multiple
-mmultiple ¤ò»È¤ï¤Ê¤¤¤³¤È¡£¤³¤ì¤é¤ÎÌ¿Îá¤Ï¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¥â¡¼¥É¤Ç¤ÏÀµ¤·¤¯Æ°ºî¤·¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£Îã³°¤Ï PPC740 ¤È PPC750 ¤Ç¡¢¤³¤ì¤é¤ÎÌ¿Îá¤ò¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¥â¡¼¥É¤Ç»È¤¦¤³¤È¤òµö¤·¤Æ¤¤¤ë¡£
-mstring
-mno-string
-mstring ¥ª¥×¥·¥ç¥ó¤ò»È¤ï¤Ê¤¤¤³¤È¡£¤³¤ì¤é¤ÎÌ¿Îá¤Ï¡¢¥ê¥È¥ë¡¦¥¨¥ó¥Ç¥£¥¢¥ó¡¦¥â¡¼¥É¤Î¥×¥í¥»¥Ã¥µ¤Ç¤Ïưºî¤·¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£Îã³°¤Ï PPC740 ¤È PPC750 ¤Ç¡¢¤³¤ì¤é¤ÎÌ¿Îá¤ò¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¥â¡¼¥É¤Ç»È¤¦¤³¤È¤òµö¤·¤Æ¤¤¤ë¡£
-mupdate
-mno-update
-mno-upate ¤ò»ØÄꤹ¤ë¤È¡¢¥¹¥¿¥Ã¥¯¥Ý¥¤¥ó¥¿¤¬¹¹¿·¤µ¤ì¤ë¤Î¤ÈľÁ°¤Î¥Õ¥ì¡¼¥à¤Î¥¢¥É¥ì¥¹¤¬¹¹¿·¤µ¤ì¤ë¤Î¤È´Ö¤Ë´Ö¤¬¤¢¤¡¢³ä¤ê¹þ¤ß¤ä¥·¥°¥Ê¥ë¤ò±Û¤¨¤Æ¥¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤òÊ⤲ó¤ë¥³¡¼¥É¤¬¤¢¤ë¤È¡¢Àµ¤·¤¯¤Ê¤¤¥Ç¡¼¥¿¤ò¼õ¤±¼è¤ë²ÄǽÀ¤¬¤¢¤ë¡£
-mfused-madd
-mno-fused-madd
-mno-bit-align
-mbit-align
Î㤨¤Ð¡¢Ä¹¤µ¤¬ 1 ¤Î unsigned ¤Î¥Ó¥Ã¥È¥Õ¥£¡¼¥ë¥É 8 ¸Ä¤À¤±¤·¤«´Þ¤Þ¤Ê¤¤¹½Â¤ÂΤϡ¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢4¥Ð¥¤¥È¶³¦¤ËÀ°¹ç¤µ¤ì¡¢Â礤µ¤¬4¥Ð¥¤¥È¤Ë¤Ê¤ë¡£-mno-bit-align ¤ò»È¤¦¤È¡¢¤³¤Î¹½Â¤ÂÎ¤Ï 1 ¥Ð¥¤¥È¶³¦¤ËÀ°¹ç¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¡¢Â礤µ¤â 1 ¥Ð¥¤¥È¤Ë¤Ê¤ë¡£
-mno-strict-align
-mstrict-align
-mrelocatable
-mno-relocatable
-mrelocatable ¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤Ê¤é¡¢°ì½ï¤Ë¥ê¥ó¥¯¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È¤ÏÁ´¤Æ -mrelocatable ¤« -mrelocatable-lib ¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-mrelocatable-lib
-mno-relocatable-lib
-mrelocatable-lib ¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥â¥¸¥å¡¼¥ë¤Ï¡¢-mrelocatable ¤ä -mrelocatable-lib ¤Ê¤·¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥â¥¸¥å¡¼¥ë¤Ç¤â¡¢-mrelocatable ÉÕ¤¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥â¥¸¥å¡¼¥ë¤Ç¤â¥ê¥ó¥¯²Äǽ¤Ç¤¢¤ë¡£
-mno-toc
-mtoc
-mlittle
-mlittle-endian
-mlittle-endian ¥ª¥×¥·¥ç¥ó¤Ï -mlittle ¥ª¥×¥·¥ç¥ó¤ÈƱ¤¸¤Ç¤¢¤ë¡£
-mbig
-mbig-endian
-mbig-endian ¥ª¥×¥·¥ç¥ó¤Ï -mbig ¥ª¥×¥·¥ç¥ó¤ÈƱ¤¸¤Ç¤¢¤ë¡£
-mcall-sysv
powerpc-*-eabiaix ¤Ç¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤ë¡£
-mcall-sysv-eabi
-mcall-sysv ¤È -meabi ¤ÎξÊý¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¡£
-mcall-sysv-noeabi
-mcall-sysv ¤È -mno-eabi ¤ÎξÊý¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¡£
-mcall-aix
powerpc-*-eabiaix ¤Ç¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤·¤¿¾ì¹ç¤Ï¡¢¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤ë¡£
-mcall-solaris
-mcall-linux
-mprototype
-mno-prototype
-mprototype ¤ò»ØÄꤹ¤ë¤È¡¢¥×¥í¥È¥¿¥¤¥×Àë¸À¤µ¤ì¤¿²ÄÊÑ¿ô°ú¿ô´Ø¿ô¤Ø¤Î¸Æ½Ð¤·¤Ç¤Î¤ß¡¢¥Ó¥Ã¥È 6 ¤òΩ¤Æ¤¿¤êÍî¤È¤·¤¿¤ê¤¹¤ë¡£
-msim
sim-crt0.o ¤Ç¤¢¤ê¡¢É¸½à C ¥é¥¤¥Ö¥é¥ê¤Ï libsim.a ¤È libc.a ¤Ç¤¢¤ë¤³¤È¤ò²¾Äꤹ¤ë¡£¤³¤ì¤Ï¡¢powerpc-*-eabisim ¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-mmvme
crt0.o ¤Ç¤¢¤ê¡¢É¸½à C ¥é¥¤¥Ö¥é¥ê¤Ï libmvmem.a ¤È libc.a ¤Ç¤¢¤ë¤³¤È¤ò²¾Äꤹ¤ë¡£
-mads
crt0.o ¤Ç¤¢¤ê¡¢É¸½à C ¥é¥¤¥Ö¥é¥ê¤Ï libads.a ¤È libc.a ¤Ç¤¢¤ë¤³¤È¤ò²¾Äꤹ¤ë¡£
-myellowknife
crt0.o ¤Ç¤¢¤ê¡¢É¸½à C ¥é¥¤¥Ö¥é¥ê¤Ï libyka.a ¤È libc.a ¤Ç¤¢¤ë¤³¤È¤ò²¾Äꤹ¤ë¡£
-memb
eabi ³ÈÄ¥ºÆÇÛÃÖ¾ðÊ󤬻Ȥï¤ì¤ë¤³¤È¤ò»Ø¼¨¤¹¤ë¡£
-meabi
-mno-eabi
-meabi ¤òÁª¤Ö¤È¡¢¥¹¥¿¥Ã¥¯¤Ï 8 ¥Ð¥¤¥È¶³¦¤ËÀ°¹ç¤¬¹Ô¤Ê¤ï¤ì¡¢´Ø¿ô __eabi ¤¬ main ¤«¤é¸Æ¤Ó½Ð¤µ¤ì¡¢eabi ´Ä¶¤ÎÀßÄ꤬¹Ô¤Ê¤ï¤ì¡¢¤µ¤é¤Ë -msdata ¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤¿¾ì¹ç¡¢r2 ¤È r13 ¤ÎξÊý¤ò»È¤¤¡¢Æó¤Ä¤Î¾®¤µ¤Ê¥Ç¡¼¥¿Îΰè¤ò»Ø¤¹¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ë¡£-mno-eabi ¤òÁª¤Ö¤È¡¢¥¹¥¿¥Ã¥¯¤Ï 16 ¥Ð¥¤¥È¶³¦¤ËÀ°¹ç¤¬¹Ô¤Ê¤ï¤ì¡¢main ¤«¤é½é´ü²½´Ø¿ô¤ò¸Æ¤Ó½Ð¤µ¤º¡¢-msdata ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤â¡¢r13 ¤À¤±¤¬»È¤ï¤ì¡¢¾®¤µ¤Ê¥Ç¡¼¥¿Îΰè¤ò°ì¸Ä¤·¤«»Ø¤µ¤Ê¤¤¡£-meabi ¥ª¥×¥·¥ç¥ó¤Ï¡¢GCC ¤ò powerpc*-*-eabi* ¥ª¥×¥·¥ç¥ó¤Î¤É¤ì¤«°ì¤Ä¤ò»È¤Ã¤Æ¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤·¤¿¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤Ê¤ë¡£
-msdata=eabi
const ¤Î¥°¥í¡¼¥Ð¥ë¥Ç¡¼¥¿¤ÈÀÅŪ¥Ç¡¼¥¿¤ò¥»¥¯¥·¥ç¥ó .sdata2 ¤ËÃÖ¤¯¡£.sdata2 ¥»¥¯¥·¥ç¥ó¤Ï¥ì¥¸¥¹¥¿ r2 ¤¬»Ø¤¹¡£¾®¤µ¤Ê½é´ü²½ºÑ¤ß¤ÇÈó const ¤Î¥°¥í¡¼¥Ð¥ë¥Ç¡¼¥¿¤ÈÀÅŪ¥Ç¡¼¥¿¤ò¥»¥¯¥·¥ç¥ó .sdata ¤ËÃÖ¤¯¡£.sdata ¥»¥¯¥·¥ç¥ó¤Ï¥ì¥¸¥¹¥¿ r13 ¤¬»Ø¤¹¡£¾®¤µ¤ÊÈó½é´ü²½¥°¥í¡¼¥Ð¥ë¥Ç¡¼¥¿¤ÈÀÅŪ¥Ç¡¼¥¿¤ò¥»¥¯¥·¥ç¥ó .sbss ¥»¥¯¥·¥ç¥ó¤ËÃÖ¤¯¡£.sbss ¤Ï¡¢¥»¥¯¥·¥ç¥ó .sdata ¤Îľ¸å¤ËÃÖ¤«¤ì¤ë¡£¥ª¥×¥·¥ç¥ó -msdata=eabi ¤Ï¡¢-mrelocatable ¥ª¥×¥·¥ç¥ó¤È¤Ï¸ß´¹À¤¬¤Ê¤¤¡£-msdata=eabi ¤Ï¤Þ¤¿¡¢-memb ¥ª¥×¥·¥ç¥ó¤âÀßÄꤹ¤ë¡£
-msdata=sysv
.sdata ¤ËÃÖ¤¯¡£.sdata ¥»¥¯¥·¥ç¥ó¤Ï¥ì¥¸¥¹¥¿ r13 ¤¬»Ø¤¹¡£¾®¤µ¤ÊÈó½é´ü²½¥°¥í¡¼¥Ð¥ë¥Ç¡¼¥¿¤ÈÀÅŪ¥Ç¡¼¥¿¤ò¥»¥¯¥·¥ç¥ó .sbss ¤ËÃÖ¤¯¡£.sbss ¤Ï¡¢¥»¥¯¥·¥ç¥ó .sdata ¤Îľ¸å¤ËÃÖ¤«¤ì¤ë¡£¥ª¥×¥·¥ç¥ó -msdata=sysv ¤Ï¡¢-mrelocatable ¥ª¥×¥·¥ç¥ó¤È¤Ï¸ß´¹À¤¬¤Ê¤¤¡£
-msdata=default
-msdata
-meabi ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢-msdata=eabi ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤ÈƱ¤¸¤è¤¦¤Ë¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¡£-meabi ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢-msdata=sysv ¤ÈƱ¤¸¤è¤¦¤Ë¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¡£
-msdata-data
.sdata ¤ËÃÖ¤¡¢¾®¤µ¤ÊÈó½é´ü²½¥°¥í¡¼¥Ð¥ë¥Ç¡¼¥¿¤ÈÀÅŪ¥Ç¡¼¥¿¤ò¥»¥¯¥·¥ç¥ó .sbss ¤ËÃÖ¤¯¡£¤·¤«¤·¡¢¤³¤Î¾®¤µ¤Ê¥Ç¡¼¥¿¤ò»²¾È¤¹¤ë¤Î¤Ë¥ì¥¸¥¹¥¿ r13 ¤ò»È¤ï¤Ê¤¤¡£¤³¤ì¤Ï¡¢Â¾¤Î -msdata ¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤ë¡£
-msdata=none
-mno-sdata
.data ¤ËÃÖ¤¡¢Á´¤Æ¤ÎÈó½é´ü²½¥Ç¡¼¥¿¤ò¥»¥¯¥·¥ç¥ó .bss ¤ËÃÖ¤¯¡£
-G num
-G num ¤Ï¡¢¥ê¥ó¥«¤Ë¤âÅϤµ¤ì¤ë¡£Á´¤Æ¤Î¥â¥¸¥å¡¼¥ë¤òƱ¤¸ÃͤΠ-G num ¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
-mregnames
-mno-regnames
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ IBM RT PC ÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-min-line-mul
-mcall-lib-mul
lmul$$ ¤ò¸Æ¤Ó½Ð¤¹¡£
-mfull-fp-blocks
-mminimum-fp-blocks
-mfp-arg-in-fpregs
varargs.h ¤È stdargs.h ¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¡¢ÉâÆ°¾®¿ôÅÀ±é»»¤È°ì½ï¤Ë»È¤¦¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£
-mfp-arg-in-gregs
-mhc-struct-return
-fpcc-struct-return ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤³¤È¡£
-mnohc-struct-return
-fpcc-struct-return ¥ª¥×¥·¥ç¥ó¤«-mhc-struct-return ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¡£°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬¡¢MIPS ·Ï¥³¥ó¥Ô¥å¡¼¥¿ÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mcpu=cpu type
r2000¡¢r3000¡¢r3900¡¢r4000¡¢r4100¡¢r4300¡¢r4400¡¢r4600¡¢r4650¡¢r5000¡¢r6000¡¢r8000¡¢orion ¤Î¤É¤ì¤«¤Ç¤¢¤ë¡£¤µ¤é¤Ë¡¢r2000¡¢r3000¡¢r4000¡¢r5000¡¢r6000
¤Ï¡¢r2k(¤¢¤ë¤¤¤Ï r2K)¡¢r3k Åù¤Î¤è¤¦¤Ë¾Êά¤Ç¤¤ë¡£¤¢¤ëÆÃÄê¤Î cpu type ¤òÁª¤Ö¤È¤½¤ÎÆÃÄê¤Î¥Á¥Ã¥×¤ËŬ¤·¤¿¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤ò¹Ô¤Ê¤¦°ìÊý¤Ç¡¢-mipsX ¤ä -mabi ¤ò»ØÄꤷ¤Ê¤¤¸Â¤ê¡¢MIPS ISA(Instruction Set Architecture¡¢Ì¿Î᥻¥Ã¥È¥¢¡¼¥¥Æ¥¯¥Á¥ã)¤Î¥ì¥Ù¥ë 1 ¤Ë¹ç¤ï¤Ê¤¤¥³¡¼¥É¤Ï²¿¤âÀ¸À®¤·¤Ê¤¤¡£
-mips1
r3000 ¤¬¡¢¤³¤Î ISA ¥ì¥Ù¥ë¤Î¥Ç¥Õ¥©¥ë¥È¤Î CPU ¥¿¥¤¥×¤Ç¤¢¤ë¡£
-mips2
r6000 ¤¬¡¢¤³¤Î ISA ¥ì¥Ù¥ë¤Î¥Ç¥Õ¥©¥ë¥È¤Î CPU ¥¿¥¤¥×¤Ç¤¢¤ë¡£
-mips3
r4000 ¤¬¡¢¤³¤Î ISA ¥ì¥Ù¥ë¤Î¥Ç¥Õ¥©¥ë¥È¤Î CPU ¥¿¥¤¥×¤Ç¤¢¤ë¡£
-mips4
r8000 ¤Ï¡¢¤³¤Î ISA ¥ì¥Ù¥ë¤Î¥Ç¥Õ¥©¥ë¥È¤Î cpu type ¤Ç¤¢¤ë¡£
-mfp32
-mfp64
-mips3 ¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤¿¤È¤¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-mgp32
-mgp64
-mips3 ¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤¿¤È¤¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-mint64
-mlong32 ¤ò»²¾È¤Î¤³¤È¡£
-mlong64
-mlong32 ¤ò»²¾È¤Î¤³¤È¡£
-mlong32
-mlong32¡¢-mlong64¡¢-mint64 ¤Î¤É¤ì¤â»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢int¡¢long¡¢¥Ý¥¤¥ó¥¿¤Î¥µ¥¤¥º¤Ï¡¢ABI ¤ÈÁªÂò¤µ¤ì¤¿ ISA ¤Ë°Í¸¤¹¤ë¡£-mabi=64 ¤Î¾ì¹ç¡¢int ¤Ï 32 ¥Ó¥Ã¥ÈÉý¤Ç long ¤Ï 64 ¥Ó¥Ã¥ÈÉý¤Ç¤¢¤ë¡£-mabi=eabi ¤Î¾ì¹ç¡¢-mips1 ¤« -mips2 ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤È¡¢int ¤È long ¤Ï 32 ¥Ó¥Ã¥ÈÉý¤Ë¤Ê¤ë¡£-mabi=eabi ¤Î¾ì¹ç¡¢¤½¤ì¤è¤ê¹â¤¤ ISA ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤È¡¢int ¤Ï 32 ¥Ó¥Ã¥ÈÉý¤Ç¡¢long ¤¬ 64 ¥Ó¥Ã¥ÈÉý¤Ë¤Ê¤ë¡£¥Ý¥¤¥ó¥¿·¿¤ÎÉý¤Ï¡¢long ¤ÎÉý¤ÈÈÆÍѥ쥸¥¹¥¿¤ÎÉý¤Î¾®¤µ¤¤¤Û¤¦¤Ë¤Ê¤ë(¤³¤ì¤Ï¡¢ISA ¤Ë°Í¸¤¹¤ë)¡£
-mabi=32
-mabi=o64
-mabi=n32
-mabi=64
-mabi=eabi
32 ¤ËÂФ·¤Æ¤Ï -mips1 ¤Ç¤¢¤ê¡¢n32 ¤ËÂФ·¤Æ¤Ï-mips3¡¢¤½¤Î¾¤ËÂФ·¤Æ¤Ï -mips4 ¤Ç¤¢¤ë¡£µÕ¤Ë¡¢-mips1 ¤« -mips2 ¤ò»ØÄꤹ¤ë¤È¥Ç¥Õ¥©¥ë¥È¤Î ABI ¤Ï 32
¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Ï 64 ¤Ë¤Ê¤ë¡£
-mmips-as
mips-tfile ¤òµ¯Æ°¤¹¤ë¡£¤³¤ì¤Ï¡¢OSF/rose ¥ª¥Ö¥¸¥§¥¯¥È·Á¼°¤ò»È¤Ã¤Æ¤¤¤ë¡¢OSF/1 »²¾È¥×¥é¥Ã¥È¥Õ¥©¡¼¥à°Ê³°¤ÎÁ´¤Æ¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£-gstabs ¤« -gstabs+ ¤Î¤É¤Á¤é¤«¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢mips-tfile ¥×¥í¥°¥é¥à¤¬¡¢MIPS ECOFF Æâ¤Ë stabs ·Á¼°¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤òÊñ¤ß¹þ¤à¡£
-mgas
--with-gnu-as ¤¬»ØÄꤵ¤ì¤¿¤È¤¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¤â¤¢¤ë¡£
-msplit-addresses
-mno-split-addresses
gcc ¤¬¡¢¥¢¥É¥ì¥¹¤Î¾å°Ì¥Ó¥Ã¥È¤ò̵ÂÌ¤Ë¥í¡¼¥É¤·¤Ê¤¤¤è¤¦¤ËºÇŬ²½¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ë¡£¤³¤ÎºÇŬ²½¤Ë¤Ï¡¢GNU as ¤È GNU ld ¤¬É¬Íפˤʤ롣¤³¤ÎºÇŬ²½¤Ï¡¢GNU as ¤È GNU ld ¤¬É¸½à¤Î¥Ä¡¼¥ë¤Ç¤¢¤ë´ö¤Ä¤«¤ÎÁȤ߹þ¤ß¥¿¡¼¥²¥Ã¥È¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤Ê¤ë¡£
-mrnames
-mno-rnames
-mrnames ¤ò»ØÄꤹ¤ë¤È¡¢¥ì¥¸¥¹¥¿Ì¾¤È¤·¤Æ¡¢¥Ï¡¼¥É¥¦¥§¥¢Ì¾¤ÎÂå¤ï¤ê¤Ë¡¢MIPS ¤Î¥½¥Õ¥È¥¦¥§¥¢Ì¾(Î㤨¤Ð¡¢$4 ¤ÎÂå¤ï¤ê¤Ë a0)¤ò»È¤Ã¤¿¥³¡¼¥É¤ò½ÐÎϤ¹¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥¢¥»¥ó¥Ö¥é¤ÏAlgorithmics ¤Î¥¢¥»¥ó¥Ö¥é¤À¤±¤Ç¤¢¤ë¡£
-mgpopt
-mno-gpopt
-mgpopt ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢Á´¤Æ¤Î¥Ç¡¼¥¿Àë¸À¤ò¡¢¥Æ¥¥¹¥È¥»¥¯¥·¥ç¥ó¤ÎÌ¿ÎáÉôʬ¤ÎÁ°¤Ë½ñ¤½Ð¤¹¡£¤³¤ì¤Ë¤è¤ê MIPS ¤Î¥¢¥»¥ó¥Ö¥é¤¬¾®¤µ¤¤¥°¥í¡¼¥Ð¥ë¤ª¤è¤ÓÀÅŪ¥Ç¡¼¥¿¹àÌܤËÂФ·¡¢Æó¸ì¤Ç¤Ï¤Ê¤¯¡¢°ì¸ì¤Ë¤è¤ë¥á¥â¥ê»²¾È¤òÀ¸À®¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ë¡£ºÇŬ²½¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¤³¤ì¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤Ê¤ë¡£
-mstats
-mno-stats
-mstats ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢È󥤥ó¥é¥¤¥ó´Ø¿ô¤¬½èÍý¤µ¤ì¤ëÅ٤ˡ¢É¸½à¥¨¥é¡¼½ÐÎϤ˰ì¹Ô½ÐÎϤ·¡¢¥×¥í¥°¥é¥à¤ÎÅý·×¾ðÊó(¥»¡¼¥Ö¤µ¤ì¤¿¥ì¥¸¥¹¥¿¿ô¡¢¥¹¥¿¥Ã¥¯¤ÎÂ礤µÅù)¤òɽ¼¨¤¹¤ë¡£
-mmemcpy
-mno-memcpy
-mmemcpy ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢Á´¤Æ¤Î¥Ö¥í¥Ã¥¯°Üư¤ËÂФ·¡¢¥¤¥ó¥é¥¤¥ó¥³¡¼¥É¤òÀ¸À®¤¹¤ëÂå¤ï¤ê¤Ë¡¢Å¬ÀÚ¤Êʸ»úÎó´Ø¿ô(memcpy ¤«bcopy)¤ò¸Æ¤Ó½Ð¤¹¤è¤¦¤Ë¤¹¤ë¡£
-mmips-tfile
-mno-mips-tfile
-mno-mips-tfile ¤ò»ØÄꤹ¤ë¤È¡¢MIPS ¤Î¥¢¥»¥ó¥Ö¥é¤¬¥Ç¥Ð¥Ã¥°¾ðÊó¤òÄɲä·¤¿¸å¤Î¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ËÂФ·¡¢mips-tfile ¥×¥í¥°¥é¥à¤Ë¤è¤ë¸å½èÍý¤ò¹Ô¤Ê¤ï¤Ê¤¤¡£mips-tfile ¤ò¼Â¹Ô¤·¤Æ¤ª¤«¤Ê¤¤¤È¡¢¥Ç¥Ð¥Ã¥¬¤«¤é¥í¡¼¥«¥ëÊÑ¿ô¤Î¾ðÊ󤬰·¤¨¤Ê¤¯¤Ê¤ë¡£¤µ¤é¤Ë¡¢stage2
¤È stage3 ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ï¡¢¥¢¥»¥ó¥Ö¥é¤ËÅϤµ¤ì¤¿°ì»þ¥Õ¥¡¥¤¥ë̾¤¬¡¢¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ëÆâ¤ËËä¤á¹þ¤Þ¤ì¤¿·Á¤ÇÆþ¤Ã¤Æ¤¤¤ë¡£¤³¤Î¤¿¤á¡¢stage2 ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È stage3
¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬Æ±¤¸¤Ë¤Ê¤ë¤³¤È¤Ï¤Ê¤¤¡£-mno-mips-tfile ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤Î¤Ï¡¢mips-tfile ¥×¥í¥°¥é¥à¤Ë¥Ð¥°¤¬¤¢¤ê¡¢¥³¥ó¥Ñ¥¤¥ë¤¬¹Ô¤¨¤Ê¤¤¾ì¹ç¤Ë¤À¤±¤Ë½Ñ´ï¤Ç¤¢¤ë¡£
-msoft-float
-mhard-float
-mabicalls
-mno-abicalls
.abicalls¡¢.cpload¡¢.cprestore ¤òÀ¸À®¤¹¤ë(¤¢¤ë¤¤¤ÏÀ¸À®¤·¤Ê¤¤)¡£
-mlong-calls
-mno-long-calls
JALR Ì¿Îá¤Ç¹Ô¤¦¡£¤³¤Î¤¿¤á¤Ë¤Ï¡¢¸Æ½Ð¤·¤ÎÁ°¤Ë¡¢´Ø¿ô¤Î¥¢¥É¥ì¥¹¤ò¥ì¥¸¥¹¥¿¤Ë¥í¡¼¥É¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦É¬Íפ¬¤¢¤ë¤Î¤Ï¡¢¸½ºß¤Î 512 ¥á¥¬¥Ð¥¤¥È¤Î¥»¥°¥á¥ó¥È¤Î³°Â¦¤Î´Ø¿ô¤ò¡¢¥Ý¥¤¥ó¥¿·Ðͳ¤Ç¤Ê¤¯¸Æ¤Ó½Ð¤¹¾ì¹ç¤Ç¤¢¤ë¡£
-mhalf-pic
-mno-half-pic
-membedded-pic
-mno-embedded-pic
-membedded-data
-mno-embedded-data
-msingle-float
-mdouble-float
-msingle-float ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢r4650 ¥Á¥Ã¥×¤Î¤è¤¦¤Ë¡¢ÉâÆ°¾®¿ôÅÀ¥³¥×¥í¥»¥Ã¥µ¤¬Ã±ÀºÅٱ黻¤·¤«¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤ÈÁÛÄꤹ¤ë¡£-mdouble-float ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ÇÜÀºÅٱ黻¤ò»È¤¦¤è¤¦¤Ë¤Ê¤ë¡£¤³¤Á¤é¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-mmad
-mno-mad
r4650 ¥Á¥Ã¥×¤Î¾ì¹ç¤Î¤è¤¦¤Ë¡¢mad¡¢madu¡¢mul
Ì¿Îá¤ò»È¤¦¤³¤È¤òµö¤¹¡£
-m4650
-msingle-float¡¢-mmad¡¢¤½¤ì¤Ë¾¯¤Ê¤¯¤È¤â¸½ºß¤Î¤È¤³¤í¤Ç¤Ï¡¢-mcpu=r4650 ¤ò͸ú¤Ë¤¹¤ë¡£
-mips16
-mno-mips16
-mentry
-mips16 ¤ò°ì½ï¤Ë¤·¤«»È¤¨¤Ê¤¤¡£
-EL
-EB
-G num
-G num ¥ª¥×¥·¥ç¥ó¤Ï¥¢¥»¥ó¥Ö¥é¤È¥ê¥ó¥«¤Ë¤âÅϤµ¤ì¤ë¡£Á´¤Æ¤Î¥â¥¸¥å¡¼¥ë¤Ï¡¢Æ±¤¸ÃͤΠ-G num ¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-nocpp
.s ¤Î¤â¤Î)¤ò¥¢¥»¥ó¥Ö¥ë¤¹¤ë¤È¤¤Ë¡¢¥¢¥»¥ó¥Ö¥é¤Î¥×¥ê¥×¥í¥»¥Ã¥µ¤ò¼Â¹Ô¤·¤Ê¤¤¤è¤¦¤Ë»Ø¼¨¤¹¤ë¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Þ¥·¥óµ½Ò¤Î TARGET_SWITCHES ¥Þ¥¯¥í¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£¤³¤é¤ì¤Î¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥È¤â¡¢¤³¤Î¥Þ¥¯¥í¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¥Ç¥Õ¥©¥ë¥È¤òÊѹ¹¤¹¤ë¤¬²Äǽ¤Ç¤¢¤ë¡£
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬¡¢i386 ¥·¥ê¡¼¥º¸þ¤±¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mcpu=cpu type
i386 | i486 | i586 | i686
|
pentium | pentiumpro | k6
|
¤¢¤ëÆÃÄê¤Î cpu type ¤òÁª¤Ö¤È¤½¤ÎÆÃÄê¤Î¥Á¥Ã¥×¸þ¤±¤ËŬÀڤ˥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤ò¹Ô¤¦°ìÊý¤Ç¡¢GCC ¤Ï¡¢-march=cpu type ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤È i386 ¾å¤Çưºî¤·¤Ê¤¤¥³¡¼¥É¤Ï°ìÀÚÀ¸À®¤·¤Ê¤¤¡£i586 ¤Ï pentium ¤Ë¡¢i686 ¤Ï pentiumpro ¤ËƱ¤¸¤Ç¤¢¤ë¡£k6 ¤Ï¡¢Intel ¤Î¥Á¥Ã¥×¤ËÂФ¹¤ë AMD ¤Î¥Á¥Ã¥×¤Ç¤¢¤ë¡£
-march=cpu type
-mcpu ¤ËÂФ¹¤ë¤â¤Î¤ËƱ¤¸¤Ç¤¢¤ë¡£¤µ¤é¤Ë¸À¤¦¤Ê¤é¡¢-march=cpu type ¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤Ï¡¢-mcpu=cpu type ¤¬´Þ¤Þ¤ì¤ë¡£
-m386
-m486
-mpentium
-mpentiumpro
-mieee-fp
-mno-ieee-fp
-msoft-float
´Ø¿ô¤ÎÉâÆ°¾®¿ôÅÀ¤ÎÌá¤êÃͤò 80387 ¤Î¥ì¥¸¥¹¥¿¡¦¥¹¥¿¥Ã¥¯¤ËÃÖ¤¯µ¡¼ï¤Ç¤Ï¡¢-msoft-float ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ç¤â¡¢¤¤¤¯¤é¤«ÉâÆ°¾®¿ôÅÀ¥ª¥Ú¥³¡¼¥É¤¬½ÐÎϤµ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£
-mno-fp-ret-in-387
Ä̾ï¤Î¸Æ½Ð¤·µ¬Ìó¤Ç¤Ï¡¢FPU ¤¬Ìµ¤¤¾ì¹ç¤Ç¤â¡¢´Ø¿ô¤Ï float ·¿¤Èdouble ·¿¤ÎÃͤò FPU ¥ì¥¸¥¹¥¿¤ÇÊÖ¤¹¡£OS ¤¬ FPU ¤ò¥¨¥ß¥å¥ì¡¼¥È¤¹¤Ù¤¤Ç¤¢¤ë¤È¤¤¤¦¹Í¤¨Êý¤Ç¤¢¤ë¡£
-mno-fp-ret-in-387 ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢Âå¤ï¤ê¤Ë¡¢float ·¿¤Èdouble ·¿¤ÎÃͤòÄ̾ï¤Î CPU ¤Î¥ì¥¸¥¹¥¿¤ËÆþ¤ì¤ÆÊÖ¤¹¡£
-mno-fancy-math-387
sin¡¢cos¡¢sqrt
Ì¿Îá¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤â¤Î¤¬¤¢¤ë¡£¤½¤Î¾ì¹ç¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¡¢¤³¤ì¤é¤ÎÌ¿Îá¤òÀ¸À®¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ÏFreeBSD ¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£GCC ¤Î¥Ð¡¼¥¸¥ç¥ó 2.6.1 °Ê¹ß¤Ï¡¢-ffast-math ¥ª¥×¥·¥ç¥ó¤â»ØÄꤷ¤Ê¤¤¸Â¤ê¡¢¤³¤ì¤é¤ÎÌ¿Îá¤ÏÀ¸À®¤µ¤ì¤Ê¤¤¡£
-malign-double
-mno-align-double
double ·¿¡¢long double ·¿¡¢long long ·¿¤ÎÊÑ¿ô¤òÆó¸ì¶³¦¤ËÀ°Î󤹤뤫¡¢°ì¸ì¶³¦¤ËÀ°Î󤹤뤫¤ò»ØÄꤹ¤ë¡£double ·¿¤ÎÊÑ¿ô¤òÆó¸ì¶³¦¤ËÀ°Î󤵤»¤ë¤È¡¢Pentium ¥×¥í¥»¥Ã¥µ¤Ç¤Ï¥á¥â¥ê¤ò;ʬ¤Ë¿©¤¦¤â¤Î¤Î¡¢¤¤¤¯¤é¤«¹â®¤Ê¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£
Ãí°Õ¡£-malign-double ¤ò»È¤Ã¤¿¾ì¹ç¤Ï¡¢¾åµ¤Î·¿¤ò´Þ¤à¹½Â¤ÂΤϡ¢À°Îó¤Î»ÅÊý¤¬¡¢386 ÍÑ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥Ð¥¤¥Ê¥ê¡¦¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹»ÅÍͽñ¤Î¤â¤Î¤È¤Ï°Û¤Ê¤ë¡£
-msvr3-shlib
-mno-svr3-shlib
bss ¤ËÃÖ¤¯¤« data ¤ËÃÖ¤¯¤«¤òÀ©¸æ¤¹¤ë¡£-msvr3-shlib ¤ò»ØÄꤹ¤ë¤È bss ¤ËÃÖ¤¯¡£¤³¤ÎÆó¤Ä¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢System V Release 3 ¤Ç¤Î¤ß°ÕÌ£¤¬¤¢¤ë¡£
-mno-wide-multiply
-mwide-multiply
mul ¤È imul ¤ò»È¤Ã¤Æ¡¢32¥Ó¥Ã¥È¤Î¥ª¥Ú¥é¥ó¥É¤«¤élong long ¤Î¾è»»¤ÈÄê¿ô¤Ë¤è¤ë 32¥Ó¥Ã¥È½ü»»¤ò¹Ô¤Ã¤Æ¡¢eax:edx ¤Ë 64 ¥Ó¥Ã¥È¤Î·ë²Ì¤òÀ¸À®¤¹¤ë¤«¤É¤¦¤«¤òÀ©¸æ¤¹¤ë¡£
-mrtd
ret num Ì¿Îá¤ÇÌá¤ë¡£¤³¤ÎÌ¿Îá¤Ï¡¢Ìá¤ë¤È¤¤Ë°ú¿ô¤ò¥Ý¥Ã¥×¤¹¤ë¡£¤³¤ì¤Ë¤è¤ê¸Æ½Ð¤·Â¦¤Ç°ìÌ¿ÎáÀáÌó¤Ç¤¤ë¡£¸Æ½Ð¤·Â¦¤Ç°ú¿ô¤ò¥Ý¥Ã¥×¤¹¤ëɬÍפ¬¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
¸Ä¡¹¤Î´Ø¿ô¤¬¤³¤Î¸Æ½Ð¤·µ¬Ìó¤Ç¸Æ¤Ð¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï´Ø¿ô°À stdcall
¤ò»ØÄꤹ¤ì¤ÐÎɤ¤¡£¤Þ¤¿¡¢´Ø¿ô°À cdecl ¤ò»È¤¦¤È¤ò-mrtd ¥ª¥×¥·¥ç¥ó¤ò¾å½ñ¤¤Ç¤¤ë¡£See Function Attributes¡£
Ãí°Õ¡£¤³¤Î¸Æ½Ð¤·µ¬Ìó¤ÏÄ̾ï Unix ¤Ç»È¤ï¤ì¤Æ¤¤¤ë¤â¤Î¤È¤Ï¸ß´¹À¤¬¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢Unix ¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥é¥¤¥Ö¥é¥ê¤ò¸Æ¤Ó½Ð¤¹É¬Íפ¬¤¢¤ë¤È¤¤Ë¤Ï»ÈÍѤǤ¤Ê¤¤¡£
¤Þ¤¿¡¢²ÄÊÑ¿ô°ú¿ô(printf ¤ò´Þ¤à)¤ò¼è¤ë´Ø¿ôÁ´¤Æ¤Ë´Ø¿ô¥×¥í¥È¥¿¥¤¥×¤òÄ󶡤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤½¤¦¤·¤Ê¤¤¤È¡¢¤½¤ì¤é¤Î´Ø¿ô¤Î¸Æ½Ð¤·¤ËÂФ·¡¢Àµ¤·¤¯¤Ê¤¤¥³¡¼¥É¤¬À¸À®¤µ¤ì¤Æ¤·¤Þ¤¦¡£
¤µ¤é¤Ë¡¢°ú¿ô¤¬¤¿¤¯¤µ¤ó¤¢¤ê¤¹¤®¤ë´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È½ÅÂç¤Ê¸í¤ê¤Î¤¢¤ë¥³¡¼¥É¤¬À¸À®¤µ¤ì¤ë¡£(ÉáÄÌ¡¢°ú¿ô¤¬Í¾Ê¬¤Ë¤¢¤ë¾ì¹ç¤ÏÌäÂê¤Ê¤¯Ìµ»ë¤µ¤ì¤ë¡£)
-mreg-alloc=regs
a ¤Ï EAX ¤ò³ä¤êÅö¤Æ¤ë¡£b ¤Ï EBX¡¢c ¤Ï ECX¡¢d ¤Ï EDX¡¢S ¤ÏESI¡¢D ¤Ï EDI¡¢B ¤Ï EBP ¤ò³ä¤êÅö¤Æ¤ë¡£
-mregparm=num
regparm ¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£See Function Attributes.
·Ù¹ð:¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¡¢¤«¤Ä num ¤¬¥¼¥í¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢¤É¤ó¤Ê¥é¥¤¥Ö¥é¥ê¤â´Þ¤á¤Æ¡¢Á´¤Æ¤Î¥â¥¸¥å¡¼¥ë¤òƱ¤¸ÃͤǺî¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¥·¥¹¥Æ¥à¤Î¥é¥¤¥Ö¥é¥ê¤È¥¹¥¿¡¼¥È¥¢¥Ã¥×¥â¥¸¥å¡¼¥ë¤âÎã³°¤Ç¤Ï¤Ê¤¤¡£
-malign-loops=num
-malign-loops ¤¬»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¢gas 2.8 °Ê¹ß¤ò»È¤ï¤Ê¤¤¸Â¤ê¥Ç¥Õ¥©¥ë¥È¤Ï 2 ¤Ç¤¢¤ë¡£gas 2.8 °Ê¹ß¤Î¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ï¡¢8 ¥Ð¥¤¥È¤è¤êÎ¥¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¥ë¡¼¥×¤ò 16 ¥Ð¥¤¥È¶³¦¤ËÀ°Î󤹤롣
-malign-jumps=num
-malign-jumps ¤ò»ØÄꤷ¤Ê¤¤¤È¡¢¥Ç¥Õ¥©¥ë¥È¤Ï386 ¤ÇºÇŬ²½¤ò¹Ô¤¦¾ì¹ç¤Ï 2 ¤Ç¤¢¤ê¡¢486 ¤Ë¤Ä¤¤¤Æ¤Ï gas 2.8 °Ê¹ß¤ò»È¤ï¤Ê¤¤¸Â¤ê 4 ¤Ç¤¢¤ë¡£gas 2.8 °Ê¹ß¤Î¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ï¡¢8 ¥Ð¥¤¥È¤è¤êÎ¥¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¥ë¡¼¥×¤ò 16 ¥Ð¥¤¥È¶³¦¤ËÀ°Î󤹤롣
-malign-functions=num
-malign-functions ¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤Ï¡¢386 ÍѤ˺ÇŬ²½¤¹¤ë¾ì¹ç¤Ï 2 ¤Ç¡¢486 ÍѤ˺ÇŬ²½¤¹¤ë¾ì¹ç¤Ï 4 ¤Ç¤¢¤ë¡£
-mpreferred-stack-boundary=num
-mpreferred-stack-boundary ¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¢¥Ç¥Õ¥©¥ë¥È¤Ï 4(16¥Ð¥¤¥È¤« 128 ¥Ó¥Ã¥È)¤Ç¤¢¤ë¡£
¥¹¥¿¥Ã¥¯¤Ï 4 ¥Ð¥¤¥È¶³¦¤ËÀ°Î󤵤»¤ëɬÍפ¬¤¢¤ë¡£Pentium ¤È PentiumPro ¤Ç¤Ï¡¢double ¤È long double ¤ÎÃͤÏ8 ¥Ð¥¤¥È¶³¦¤ËÀ°Î󤹤ë¤Ù¤¤Ç¤¢¤ë¡£¤½¤¦¤·¤Ê¤¤¤È¡¢¼Â¹Ô»þ¤Ë¼Â¹Ô®ÅÙ¤Î¥Ú¥Ê¥ë¥Æ¥£¤¬Èó¾ï¤ËÂ礤¯¤Ê¤ë¡£Pentium III ¤Ç¤Ï¡¢¥¹¥È¥ê¡¼¥ß¥ó¥° SIMD ³ÈÄ¥(SSE) ¥Ç¡¼¥¿·¿ __m128 ¤Ï¡¢16 ¥Ð¥¤¥È¶³¦¤ËÀ°Î󤷤Ƥª¤«¤Ê¤¤¤ÈƱÍÍ¤Î¥Ú¥Ê¥ë¥Æ¥£¤ò¼õ¤±¤ë¡£
¥¹¥¿¥Ã¥¯¾å¤Î¤³¤ì¤é¤ÎÃͤΥ¢¥é¥¤¥ó¥á¥ó¥È¤¬Å¬Àڤˤʤ뤳¤È¤òÊݾڤ¹¤ë¤¿¤á¤Ë¡¢¥¹¥¿¥Ã¥¯¶³¦¤Ï¡¢¥¹¥¿¥Ã¥¯¤Ë³ÊǼ¤µ¤ì¤¿Ç¤°Õ¤ÎÃͤÇɬÍפˤʤë¤À¤±¤ÎÂ礤µ¤Î¥¢¥é¥¤¥á¥ó¥È¤ËÀ°Î󤵤»¤ëɬÍפ¬¤¢¤ë¡£¤µ¤é¤Ë¡¢³Æ´Ø¿ô¤Ï¡¢¥¹¥¿¥Ã¥¯¤Î¥¢¥é¥¤¥á¥ó¥È¤òÊݤĤ褦¤ËÀ¸À®¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¥¹¥¿¥Ã¥¯¶³¦¤ò¹â¤¯¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿´Ø¿ô¤ò¥¹¥¿¥Ã¥¯¶³¦¤òÄ㤯¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿´Ø¿ô¤«¤é¸Æ¤Ó½Ð¤¹¤Î¤Ï¡¢¤Û¤È¤ó¤É¤Î¾ì¹ç¥¹¥¿¥Ã¥¯¤ÎÀ°Îó¤¬Àµ¤·¤¯¤Ê¤¯¤Ê¤ë¡£¥³¡¼¥ë¥Ð¥Ã¥¯¤ò»È¤¦¥é¥¤¥Ö¥é¥ê¤Ï¾ï¤Ë¥Ç¥Õ¥©¥ë¥È¤ÎÀßÄê¤ò»È¤¦¤³¤È¤ò¤ª¾©¤á¤¹¤ë¡£
¥¢¥é¥¤¥á¥ó¥È¤ò;ʬ¤Ë¼è¤ì¤Ð¡¢¥¹¥¿¥Ã¥¯¥¹¥Ú¡¼¥¹¤â;ʬ¤Ë»È¤¦¡£¥¹¥¿¥Ã¥¯¥¹¥Ú¡¼¥¹¤Î»ÈÍÑÎ̤ËÃí°Õ¤·¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤¥³¡¼¥É¡¢Î㤨¤Ð¡¢ÁȤ߹þ¤ß¥·¥¹¥Æ¥à¤ä OS ¤Î¥«¡¼¥Í¥ëÅù¤Ï¡¢-mpreferred-stack-boundary=2 ¤È»ØÄꤷ¤Æ¡¢¹¥¤Þ¤·¤¤¥¢¥é¥¤¥ó¥á¥ó¥È¤ò¾®¤µ¤¯¤¹¤ë¤Î¤¬Îɤ¤¤À¤í¤¦¡£
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ HPPA ¥·¥ê¡¼¥º¸þ¤±¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-march=architecture type
1.0¡¢PA 1.1 ¤Ë¤Ï 1.1¡¢PA 2.0 ¤Ë¤Ï2.0 ¤Ç¤¢¤ë¡£HP-UX ¤Î /usr/lib/sched.models ¤ò»²¾È¤·¤Æ¡¢¼«Ê¬¤Îµ¡¼ïÍѤÎŬÀڤʥ¢¡¼¥¥Æ¥¯¥Á¥ã¤Î¥ª¥×¥·¥ç¥ó¤ò·è¤á¤ÆÍߤ·¤¤¡£¥¢¡¼¥¥Æ¥¯¥Á¥ãÈֹ椬¾®¤µ¤¤¤â¤ÎÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥³¡¼¥É¤Ï¡¢Â礤¤¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ç¤âưºî¤¹¤ë¤¬¡¢µÕ¤Ïưºî¤·¤Ê¤¤¡£
PA 2.0 ¤Î¥µ¥Ý¡¼¥È¤Ï¸½ºß GAS ¤Î¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È¤Î 19990413 °Ê¹ß¤¬É¬ÍפǤ¢¤ë¡£binutils ¤Î¼¡¤Î¥ê¥ê¡¼¥¹(¸½ºß¤Ï 2.9.1)¤Ç¡¢¤ª¤½¤é¤¯PA 2.0 ¤Î¥µ¥Ý¡¼¥È¤¬Æþ¤ë¤À¤í¤¦¡£
-mpa-risc-1-0
-mpa-risc-1-1
-mpa-risc-2-0
-march=1.0¡¢-march=1.1¡¢-march=2.0
¤ÎÊÌ̾¤Ç¤¢¤ë¡£
-mbig-switch
-mjump-in-delay
-mdisable-fpregs
-mdisable-indexing
-mno-space-regs
¤³¤Î¤è¤¦¤Ê¥³¡¼¥É¤Ï¡¢¥ì¥Ù¥ë 0 ¤Î PA ¥·¥¹¥Æ¥à¤ä¥«¡¼¥Í¥ë¤ËŬ¤·¤Æ¤¤¤ë¡£
-mfast-indirect-calls
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¶¦Í¥é¥¤¥Ö¥é¥ê¤ä´Ø¿ôÆâ´Ø¿ô¤¬¤¢¤ë¾ì¹ç¤Ë¤ÏÀµ¤·¤¯Æ°ºî¤·¤Ê¤¤¡£
-mspace
-mlong-load-store
+k ¥ª¥×¥·¥ç¥ó¤ÈÅù²Á¤Ç¤¢¤ë¡£
-mportable-runtime
-mgas
-mschedule=cpu type
700¡¢7100¡¢7100LC¡¢7200¡¢8000 ¤Ç¤¢¤ë¡£HP-UX ¥·¥¹¥Æ¥à¤Î /usr/lib/sched.models ¤ò»²¾È¤·¤Æ¡¢ÆÉ¼Ô¤Îµ¡¼ï¤ËŬ¤·¤¿¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¡¦¥ª¥×¥·¥ç¥ó¤ò·è¤á¤ÆÍߤ·¤¤¡£
-mlinker-opt
-msoft-float
hppa1.1-*-pro ¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢¤Ë¤è¤ëÉâÆ°¾®¿ôÅÀ¥µ¥Ý¡¼¥È¤òÄ󶡤·¤Æ¤¤¤ë¡£
-msoft-float ¤ò»ØÄꤹ¤ë¤È¡¢½ÐÎÏ¥Õ¥¡¥¤¥ëÃæ¤Î¸Æ¤Ó½Ð¤·µ¬Ìó¤¬ÊѤï¤ë¡£¤³¤Î¤¿¤á¡¢¥×¥í¥°¥é¥àÁ´ÂΤò¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤¤¤È¤¤¤±¤Ê¤¤¡£ÆÃ¤Ë¡¢GCC ÉÕ°¤Î¥é¥¤¥Ö¥é¥ê¤Ç¤¢¤ë¡¢libgcc.a ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë¡¢-msoft-float ¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤¤¤È¤³¤Î¥é¥¤¥Ö¥é¥ê¤¬Àµ¤·¤¯Æ°ºî¤·¤Ê¤¤¡£
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ Intel 960 ¤Î¼ÂÁõÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mcpu type
ka¡¢kb¡¢mc¡¢ca¡¢cf¡¢sa¡¢sb¡£¥Ç¥Õ¥©¥ë¥È¤Ï kb ¤Ç¤¢¤ë¡£
-mnumerics
-msoft-float
-mnumerics ¥ª¥×¥·¥ç¥ó¤Ï¡¢¥×¥í¥»¥Ã¥µ¤¬ÉâÆ°¾®¿ôÅÀÌ¿Îá¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤³¤È¤ò»Ø¼¨¤¹¤ë¡£-msoft-float ¥ª¥×¥·¥ç¥ó¤Ï¡¢ÉâÆ°¾®¿ôÅÀ¥µ¥Ý¡¼¥È¤òÁÛÄꤷ¤Æ¤Ï¤Ê¤é¤Ê¤¤¤È¤¤¤¦¤³¤È¤ò»Ø¼¨¤¹¤ë¡£
-mleaf-procedures
-mno-leaf-procedures
call ƱÍÍ bal Ì¿Îá¤Ç¤â¸Æ½Ð¤·²Äǽ¤Ë¤Ê¤ë¤è¤¦¤ËËöü¥×¥í¥·¡¼¥¸¥ã¤ò½¤Àµ¤¹¤ë¤³¤È¤ò»î¤ß¤ë(»î¤ß¤Ê¤¤)¡£¤³¤ì¤Ï¡¢bal Ì¿Î᤬¥¢¥»¥ó¥Ö¥é¤ä¥ê¥ó¥«¤ÇÃÖ¤´¹¤¨²Äǽ¤Ê¾ì¹ç¤ÏÌÀ¼¨Åª¤Ê¸Æ½Ð¤·¤Ë¤Ä¤¤¤Æ¤Ï¥³¡¼¥É¤Î¸úΨ¤¬Îɤ¯¤Ê¤ë¡£¤·¤«¤·¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¡¢Î㤨¤Ð´Ø¿ô¥Ý¥¤¥ó¥¿·Ðͳ¤Î¸Æ½Ð¤·¤ä¡¢¤³¤Î¤è¤¦¤ÊºÇŬ²½¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¥ê¥ó¥«¤ò»È¤¦¾ì¹ç¤Ë¤Ï¥³¡¼¥É¤Î¸úΨ¤¬°¤¯¤Ê¤ë¡£
-mtail-call
-mno-tail-call
-mno-tail-call ¤Ç¤¢¤ë¡£
-mcomplex-addr
-mno-complex-addr
-mcomplex-addr ¤Ë¤Ê¤ë¡£
-mcode-align
-mno-code-align
-mic-compat
-mic2.0-compat
-mic3.0-compat
-masm-compat
-mintel-asm
-mstrict-align
-mno-strict-align
-mold-align
-mstrict-align ¤â´Þ¤Þ¤ì¤ë
-mlong-double-64
long double ·¿¤ò 64 ¥Ó¥Ã¥ÈÉâÆ°¾®¿ôÅÀ¿ô¤È¤·¤Æ¼ÂÁõ¤¹¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¢long double ¤Ï 80 ¥Ó¥Ã¥ÈÉâÆ°¾®¿ôÅÀ¿ô¤Ç¼ÂÁõ¤µ¤ì¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬Â¸ºß¤¹¤ëÍ£°ì¤ÎÍýͳ¤Ï¡¢fp-bit.c ¤Ë¤Ï¤Þ¤À 128 ¥Ó¥Ã¥È¤Î long double ¥µ¥Ý¡¼¥È¤¬¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¡¢¥½¥Õ¥È¥¦¥§¥¢¤Ë¤è¤ëÉâÆ°¾®¿ôÅÀ±é»»¤ò¹Ô¤¦¥¿¡¼¥²¥Ã¥È¤ò»ÈÍѤ¹¤ë¿Í¤Ë¤·¤«Ìò¤ËΩ¤¿¤Ê¤¤¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢»È¤ï¤Ê¤¤¤è¤¦¤Ë¤ª¾©¤á¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬¡¢DEC Alpha ¤Î¼ÂÁõ¸þ¤±¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mno-soft-float
-msoft-float
-msoft-float ¤ò»ØÄꤹ¤ë¤È¡¢libgcc1.c ¤Ë¤¢¤ë´Ø¿ô¤¬ÉâÆ°¾®¿ôÅÀ±é»»¤ò¼Â¹Ô¤¹¤ë¤Î¤Ë»È¤ï¤ì¤ë¡£ÉâÆ°¾®¿ôÅÀ±é»»¤ò¥¨¥ß¥å¥ì¡¼¥È¤¹¤ë¥ë¡¼¥Á¥ó¤ÇÃÖ¤´¹¤¨¤ë¤«¡¢¤½¤Î¤è¤¦¤Ê¥¨¥ß¥å¥ì¡¼¥È¤ò¹Ô¤¦¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤¹¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤«¤·¤Ê¤¤¸Â¤ê¡¢¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤ÏÉâÆ°¾®¿ôÅÀ±é»»¤òȯ¹Ô¤¹¤ë¡£ÉâÆ°¾®¿ôÅÀ±é»»¤Ê¤·¤Î Alpha ¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¦¤Ê¤é¡¢¥é¥¤¥Ö¥é¥ê¤¬¤½¤ì¤é¤Î¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤µ¤Ê¤¤¤è¤¦¤Ë¹½ÃÛ¤µ¤ì¤ë¤³¤È¤òÊݾڤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
ÉâÆ°¾®¿ôÅÀ±é»»¤Ê¤·¤Î Alpha ¤Î¼ÂÁõ¤Ç¤âÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿¤¬É¬ÍפǤ¢¤ë¤³¤È¤ËÃí°Õ¡£
-mfp-reg
-mno-fp-regs
-mno-fp-regs ¤ò»ØÄꤹ¤ë¤È -msoft-float ¤¬°ÅÌۤ˻ØÄꤵ¤ì¤ë¡£ÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿¥»¥Ã¥È¤¬»È¤ï¤ì¤Ê¤¤¾ì¹ç¡¢ÉâÆ°¾®¿ôÅÀ¥ª¥Ú¥é¥ó¥É¤Ï¤½¤ì¤¬À°¿ô¤Ç¤¢¤ë¤«¤Î¤è¤¦¤ËÀ°¿ô¥ì¥¸¥¹¥¿¤ËÆþ¤ì¤ÆÅϤµ¤ì¡¢ÉâÆ°¾®¿ôÅÀ¤Î·ë²Ì¤Ï$f0 ¤ÎÂå¤ï¤ê¤Ë $0 ¤ÇÊÖ¤µ¤ì¤ë¡£¤³¤ì¤Ïɸ½à¤Î¸Æ½Ð¤·¥·¡¼¥±¥ó¥¹¤È¤Ï°ã¤¦¤Î¤Ç¡¢-mno-fp-regs ÉÕ¤¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥³¡¼¥É¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤ë´Ø¿ô¤Ç¡¢ÉâÆ°¾®¿ôÅÀ°ú¿ô¤äÌá¤êÃͤò»ý¤Ä¤â¤Î¤â¤Þ¤¿¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»È¤ï¤ì¤ë¤Î¤Ï¡¢ÉáÄ̤ϡ¢ÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿¤ò»È¤ï¤º¡¢¤½¤ì¤æ¤¨¤ËÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿¤ò¥»¡¼¥Ö¡¿¥ê¥¹¥È¥¢¤¹¤ëɬÍפΤʤ¤¥«¡¼¥Í¥ë¤ò¹½ÃÛ¤¹¤ë¤È¤¤Ç¤¢¤ë¡£
-mieee
_IEEE_FP ¤¬¥³¥ó¥Ñ¥¤¥ë»þ¤ËÄêµÁ¤µ¤ì¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢-D_IEEE_FP -mfp-trap-mode=su -mtrap-precision=i
-mieee-conformant ¤Î¾Êά·Á¤Ç¤¢¤ë¡£¤³¤Î·ë²ÌÀ¸À®¤µ¤ì¤ë¥³¡¼¥É¤Ï´ö¤é¤«¸úΨ¤¬Íî¤Á¤ë¤¬¡¢ÈóÀµµ¬²½¿ô¤È¡¢Èó¿ô¤ÈÀµÉé¤Î̵¸ÂÂç¤Î¤è¤¦¤Ê IEEE ¤ÎÎã³°ÃͤòÀµ¤·¤¯¥µ¥Ý¡¼¥È¤Ç¤¤ë¡£Â¾¤Î Alpha ÍÑ¥³¥ó¥Ñ¥¤¥é¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤ò -ieee_with_no_inexact ¤È¸Æ¤ó¤Ç¤¤¤ë¡£
-mieee-with-inexact
-mieee ¤ÈƱÍͤÀ¤¬¡¢À¸À®¤µ¤ì¤¿¥³¡¼¥É¤Ï IEEE ¤Î inexact flag
¤Î°Ý»ý¤â¹Ô¤¦¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò͸ú¤Ë¤¹¤ë¤È¡¢À¸À®¤µ¤ì¤¿¥³¡¼¥É¤Ï´°Á´¤Ë½àµò¤·¤¿ IEEE ¤Î¿ô³Ø±é»»¤ò¼ÂÁõ¤¹¤ë¤³¤È¤Ë¤Ê¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢-D_IEEEFP -D_IEEE_FP_INEXACT ¤Ë²Ã¤¨¤Æ¡¢-mieee-conformant¡¢-mfp-trap-mode=sui¡¢-mtrap-precision=i ¤Î»°¤Ä¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤â¤Î¤Î¾Êά·Á¤Ç¤¢¤ë¡£Alpha ¤Î¼ÂÁõ¤ÎÃæ¤Ë¤Ï¤³¤¦¤·¤ÆÆÀ¤é¤ì¤¿¥³¡¼¥É¤¬¡¢¥Ç¥Õ¥©¥ë¥È¤ÇÀ¸À®¤µ¤ì¤ë¥³¡¼¥É¤è¤ê¤âÈó¾ï¤ËÃÙ¤¯¤Ê¤ë¤â¤Î¤¬¤¢¤ë¡£inexact flag ¤Ë°Í¸¤¹¤ë¤è¤¦¤Ê¥³¡¼¥É¤ÏÌÇ¿¤Ë¤Ê¤¤¤Î¤Ç¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤òÉáÄ̤ϻØÄꤷ¤Ê¤¯¤ÆÎɤ¤¤Ï¤º¤Ç¤¢¤ë¡£Â¾¤Î Alpha ÍÑ¥³¥ó¥Ñ¥¤¥é¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤ò-ieee_with_inexact ¤È¤·¤Æ¤¤¤ë¡£
-mfp-trap-mode=trap mode
-fptmtrap mode ¤È¸À¤Ã¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ë¡£trap mode ¤Ë¤Ï°Ê²¼¤Î»Í¤Ä¤ÎÃͤΤ¦¤Á°ì¤Ä¤òÀßÄê²Äǽ¤Ç¤¢¤ë¡£
n
u
n ¤Ç͸ú¤Ë¤Ê¤ë¥È¥é¥Ã¥×¤Ë²Ã¤¨¤Æ¡¢¥¢¥ó¥À¡¼¥Õ¥í¡¼¤Ë¤è¤ë¥È¥é¥Ã¥×¤¬Í¸ú¤Ë¤Ê¤ë¡£
su
u ¤ÈƱÍͤÀ¤¬¡¢Ì¿Îá¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢Êä´°(¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢Alpha ¤Î¥¢¡¼¥¥Æ¥¯¥Á¥ã¥Þ¥Ë¥å¥¢¥ë¤ò»²¾È¤Î¤³¤È)¤ËÂФ·¤Æ°ÂÁ´¤Ç¤¢¤ë¤È¤Î°õ¤¬¤Ä¤±¤é¤ì¤ë¡£
sui
su ¤ÈƱÍͤÀ¤¬¡¢ÉÔÀµ³Î¤Ê¥È¥é¥Ã¥×¤âƱ¤¸¤¯Í¸ú¤Ë¤Ê¤ë¡£-mfp-rounding-mode=rounding mode
-fprmrounding mode ¤È¸À¤Ã¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ë¡£rounding mode ¤Ï°Ê²¼¤Î¤É¤ì¤«°ì¤Ä¤Ç¤¢¤ë¡£
n
m
c
d
d ¤ÏÀµ¤Î̵¸ÂÂç¤Ë¸þ¤«¤Ã¤Æ¤Î´Ý¤á¤ËÂбþ¤¹¤ë¡£-mtrap-precision=trap precision
p
f
i
¾¤Î Alpha ÍÑ¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¤³¤ì¤é¤ËÅù²Á¤Ê¥ª¥×¥·¥ç¥ó -scope_safe ¤ä-resumption_safe ¤òÍѰդ·¤Æ¤¤¤ë¡£
-mieee-conformant
-mtrap-precision=i¤È¡¢-mfp-trap-mode=su ¤« -mfp-trap-mode=sui ¤Î¤É¤Á¤é¤«¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Î¸ú²Ì¤Ï¡¢À¸À®¤µ¤ì¤¿¥¢¥»¥ó¥Ö¥ê¥Õ¥¡¥¤¥ë¤Î´Ø¿ô¥×¥í¥í¡¼¥°Éô¤Ë .eflag 48 ¤È¤¤¤¦¹Ô¤ò°ì¹Ô²Ã¤¨¤ë¤À¤±¤Ç¤¢¤ë¡£DEC Unix ¤Ç¤Ï¡¢¤³¤ì¤Ë¤Ï¡¢ IEEEŬ¹ç¿ô³Ø¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤¬¥ê¥ó¥¯¤µ¤ì¤ë¤È¤¤¤¦¸ú²Ì¤¬¤¢¤ë¡£
-mbuild-constants
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È GCC ¤Ï¡¢¤¿¤È¤¨¡¢¤µ¤é¤ËÌ¿Îá¿ô¤¬Áý¤¨¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤â(ºÇÂç¤Ç6¸Ä)¡¢Á´¤Æ¤ÎÀ°¿ôÄê¿ô¤òÌ¿Îᥳ¡¼¥É¤Ç¹½ÃÛ¤¹¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦ÂåɽŪ¤Ê¾ì¹ç¤Ï¡¢¶¦Í¥é¥¤¥Ö¥é¥ê¤ÎưŪ¥í¡¼¥À¤ò¹½ÃÛ¤¹¤ë¤È¤¤Ç¤¢¤ë¡£Æ°Åª¥í¡¼¥À¤Ï¤½¤ì¼«¿È¶¦Í¥é¥¤¥Ö¥é¥ê¤Ç¤¢¤ê¡¢ÊÑ¿ô¤äÄê¿ô¤ò¼«Ê¬¼«¿È¤Î¥Ç¡¼¥¿¥»¥°¥á¥ó¥È¤«¤é¸«¤Ä¤±¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤ëÁ°¤Ë¡¢¥á¥â¥êÃæ¤Ç¼«Ê¬¼«¿È¤òºÆÇÛÃÖ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-malpha-as
-mgas
-malpha-as)¤«¡¢GNU ¥¢¥»¥ó¥Ö¥é(-mgas)¤Ë¥¢¥»¥ó¥Ö¥ë¤µ¤ì¤ë¥³¡¼¥É¤òÀ¸À®¤¹¤ë¤«¤òÁªÂò¤¹¤ë¡£
-mbwx
-mno-bwx
-mcix
-mno-cix
-mmax
-mno-max
-mcpu= ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤷ¤¿CPU ·¿¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëÌ¿Î᥻¥Ã¥È¤«¡¢²¿¤â»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¤ÏGCC ¤Î¹½ÃÛ¤ò¹Ô¤Ã¤¿ CPU ¤Î¤â¤Î¤Ë¤Ê¤ë¡£
-mcpu=cpu_type
EV ·Á¼°¤Î̾Á°¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤ë¤·¡¢¤½¤ì¤ËÂбþ¤¹¤ë CPU ¥Á¥Ã¥×ÈÖ¹æ¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤ë¡£GCC ¤Ï¡¢EV4 ¤È EV5 ¥·¥ê¡¼¥º¤Î¥×¥í¥»¥Ã¥µÍѤΥ¹¥±¥¸¥å¡¼¥ê¥ó¥°¡¦¥Ñ¥é¥á¡¼¥¿¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤ª¤ê¡¢Ì¿Î᥻¥Ã¥È¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤϥ桼¥¶¤¬»ØÄꤷ¤¿¥×¥í¥»¥Ã¥µ¤«¤éÁªÂò¤¹¤ë¡£¥×¥í¥»¥Ã¥µ·¿¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ï¡¢GCC ¤Ï¡¢GCC ¤Î¹½ÃÛ¤ò¹Ô¤Ã¤¿¥×¥í¥»¥Ã¥µ¤ò¥Ç¥Õ¥©¥ë¥È¤Ë¤¹¤ë¡£
cpu_type ¤ÎÃͤȤ·¤Æ»È¤¨¤ë¤Î¤Ï°Ê²¼¤ÎÄ̤ꡣ
ev4
21064
ev5
21164
ev56
21164a
pca56
21164pc
21164PC
ev6
21264
-mmemory-latency=time
time ¤È¤·¤ÆÍ¸ú¤ÊÃͤϰʲ¼¤ÎÄ̤ê¤Ç¤¢¤ë¡£
number
L1
L2
L3
main
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬¡¢Clipper ¤Î¼ÂÁõÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mc300
-mc400
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬¡¢H8/300 ¤Î¼ÂÁõÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mrelax
-relax ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¡£¤è¤ê¾Ü¤·¤¤ÀâÌÀ¤Ë¤Ä¤¤¤Æ¤Ï¡¢See H8/300, ¤ò»²¾È¡£
-mh
-ms
-mint32
int ·¿¤Î¥Ç¡¼¥¿¤ò¥Ç¥Õ¥©¥ë¥È¤Ç 32 ¥Ó¥Ã¥È¤Ë¤¹¤ë¡£
-malign-300
-malign-300 ¤Ï¡¢¤½¤ì¤é¤ò 2 ¥Ð¥¤¥È¶³¦¤ËÀ°¹ç¤¹¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢h8/300 ¤Ç¤Ï²¿¤Î¸ú²Ì¤â¤Ê¤¤¡£°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬¡¢SH ¤Î¼ÂÁõÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-m1
-m2
-m3
-m3e
-mb
-ml
-mdalign
-mdalign ¤ò»ØÄꤷ¤ÆºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤ª¤«¤Ê¤¤¤Èưºî¤·¤Ê¤¤¤À¤í¤¦¡£
-mrelax
-relax ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¡£°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤¬ System V Release 4 ¤Ç¤ÏÄɲäǻȤ¨¤ë¡£¤³¤ì¤é¤Ï¡¢System V Relase 4 ¥·¥¹¥Æ¥à¤Î¾¤Î¥³¥ó¥Ñ¥¤¥é¤È¤Î¸ß´¹À¤Î¤¿¤á¤Ë¤¢¤ë¡£
-G
-symbolic ¤« -shared ¤ò»È¤¦¤³¤È¤¬¿ä¾©¤µ¤ì¤ë¡£
-Qy
.ident
¤ËÆþ¤ì¤Æ½ÐÎϤ¹¤ë¡£
-Qn
.ident Ì¿Îá¤ò½ÐÎÏ¥Õ¥¡¥¤¥ë¤ËÄɲ乤ë¤Î¤ò»ß¤á¤ë(¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë)¡£
-YP,dirs
-l ¤Ç»ØÄꤵ¤ì¤¿¥é¥¤¥Ö¥é¥ê¤Ë¤Ä¤¤¤Æ¥Ç¥£¥ì¥¯¥È¥ê dirs ¤À¤±¤ò¸¡º÷¤·¡¢Â¾¤Î¾ì½ê¤ò¸¡º÷¤·¤Ê¤¤¡£
-Ym,dir
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬¡¢TMS320C3x/C4x ¤Î¼ÂÁõÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mcpu=cpu_type
c30¡¢c31¡¢c32¡¢c40¡¢c44 ¤Ç¤¢¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ï c40 ¤Ç¤¢¤ê¡¢TMS320C40 ÍѤΥ³¡¼¥É¤òÀ¸À®¤¹¤ë¡£
-mbig-memory
-mbig
-msmall-memory
-msmall
-mbk
-mno-bk
-mdb
-mno-db
-mdp-isr-reload
-mparanoid
-mmpyi
-mno-mpyi
-mmpyi ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤È¡¢¥é¥¤¥Ö¥é¥ê¸Æ½Ð¤·¤ÎÂå¤ï¤ê¤Ë¡¢Ê¿Êý±é»»¤¬¥¤¥ó¥é¥¤¥ó¤Ç¹Ô¤ï¤ì¤ë¡£
-mfast-fix
-mno-fast-fix
-mrptb
-mno-rptb
-mrpts=count
-mno-rpts
-mloop-unsigned
-mno-loop-unsigned
-mti
-mregparm
-mmemparm
-mparallel-insns
-mno-parallel-insns
-mparallel-mpy
-mno-parallel-mpy
-mparallel-insns ¤â»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¡¢ÊÂÎóÌ¿Îá MPY||ADD ¤È MPY||SUB ¤ÎÀ¸À®¤òµö¤¹¡£¤³¤ì¤é¤ÎÌ¿Îá¤Ï¥ì¥¸¥¹¥¿¤ÎÀ©Ì󤬤¤Ä¤¤¤Î¤Ç¡¢Â礤ʴؿô¤Î¥³¡¼¥ÉÀ¸À®¤ò¤ä¤ê¤Ë¤¯¤¯¤¹¤ë¡£
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ V850 ¤Î¼ÂÁõÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-mlong-calls
-mno-long-calls
-mno-ep
-mep
ep ¥ì¥¸¥¹¥¿¤Ë¥³¥Ô¡¼¤¹¤ë¤Î¤Ë¡¢Æ±¤¸¥¤¥ó¥Ç¥Ã¥¯¥¹¥Ý¥¤¥ó¥¿¤ò¡¢4²ó°Ê¾å»È¤Ã¤Æ¤¤¤ë´ðËÜ¥Ö¥í¥Ã¥¯¤ÎºÇŬ²½¤ò¹Ô¤Ê¤ï¤Ê¤¤(ºÇŬ²½¤ò¹Ô¤Ê¤¦)¡£ºÇŬ²½¤ò¹Ô¤Ê¤¦¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç -mep ¤¬Í¸ú¤Ë¤Ê¤ë¡£
-mno-prolog-function
-mprolog-function
-mprolog-function ¥ª¥×¥·¥ç¥ó¤Ï¡¢ºÇŬ²½¤ò¹Ô¤Ê¤¦¾ì¹ç¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤Ê¤ë¡£
-mspace
-mep ¥ª¥×¥·¥ç¥ó¤È -mprolog-function ¥ª¥×¥·¥ç¥ó¤ò¥ª¥ó¤Ë¤¹¤ë¤À¤±¤Ç¤¢¤ë¡£
-mtda=n
ep ¥ì¥¸¥¹¥¿¤¬»Ø¤·¼¨¤¹¡¢Èù¾®¥Ç¡¼¥¿Îΰè¤ËÃÖ¤¯¡£¤³¤ÎÈù¾®¤Ê¥Ç¡¼¥¿Îΰè¤Ï¡¢Á´Éô¤Ç 256 ¥Ð¥¤¥È¤Þ¤ÇÊÝ»ý¤Ç¤¤ë(¥Ð¥¤¥È»²¾ÈËè¤Ë 128 ¥Ð¥¤¥È¤Ç¤¢¤ë)¡£
-msda=n
gp ¥ì¥¸¥¹¥¿¤¬»Ø¤·¼¨¤¹¡¢¾®¤µ¤Ê¥Ç¡¼¥¿Îΰè¤ËÃÖ¤¯¡£¤³¤Î¾®¤µ¤Ê¥Ç¡¼¥¿Îΰè¤Ë¤Ï¡¢64K¥Ð¥¤¥È¤Þ¤ÇÊÝ»ý¤Ç¤¤ë¡£
-mzda=n
-mv850
-mbig-switch
°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤¬ ARC ¼ÂÁõÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-EL
-EB
-mmangle-cpu
-mcpu=cpu
-mcpu=base ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤ª¤ê¡¢¤³¤ì¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-mtext=text section
-mdata=data section
-mrodata=readonly data section
section °À¤Ç¾å½ñ¤²Äǽ¤Ç¤¢¤ë¡£See Variable Attributes¡£
°Ê²¼¤Î -m ¥ª¥×¥·¥ç¥ó¤¬ 32000 ¥·¥ê¡¼¥º¸þ¤±¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤϡ¢GCC ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó»þ¤Ë32000 ¤Î¤É¤Î·¿¤¬ÁªÂò¤µ¤ì¤¿¤«¤Ë°Í¸¤¹¤ë¡£ºÇ¤â¶¦Ä̤¹¤ëÁªÂò¸þ¤±¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤϰʲ¼¤Ë¼¨¤µ¤ì¤Æ¤¤¤ë¡£
-m32032
-m32032
-m32332
-m32332
-m32532
-m32532
-m32081
-m32381
-m32081 ¤â´Þ¤à¡£32381 ¤Ï¡¢32332 ¤È 32532 ¤È¤¤¤¦ CPU ¤È¤Î¤ß¸ß´¹¤Ç¤¢¤ë¡£¤³¤ì¤Ï¡¢ pc532-netbsd ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-mmulti-add
polyF ¤È dotF ¤òÀ¸À®¤¹¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢-m32381 ¥ª¥×¥·¥ç¥ó¤¬Í¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Î¤ß»ÈÍѤǤ¤ë¡£¤³¤ì¤é¤ÎÌ¿Îá¤ò»È¤¦¤Ë¤Ï¡¢°ìÈ̤ˤÏÀǽ¤Ë°¤¤±Æ¶Á¤òÍ¿¤¨¤ë¤è¤¦¤Ê¡¢¥ì¥¸¥¹¥¿³äÅö¤ÎÊѹ¹¤òɬÍפȤ¹¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢ÆÃ¤Ë¾è»»-²Ã»»Ì¿Îá¤òÂçÎ̤˻Ȥ¤¤½¤¦¤Ê¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë¤À¤±Í¸ú¤Ë¤¹¤Ù¤¤À¤í¤¦¡£
-mnomulti-add
polyF ¤È dotF ¤òÀ¸À®¤·¤Ê¤¤¡£¤³¤ì¤ÏÁ´¤Æ¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£
-msoft-float
-mnobitfield
-mbitfield
-mrtd
ret num Ì¿Îá¤ÇÌá¤ë¡£¤³¤ÎÌ¿Îá¤ÏÌá¤ëºÝ¤Ë°ú¿ô¤ò¥Ý¥Ã¥×¤¹¤ë¡£
¤³¤Î¸Æ½Ð¤·µ¬Ìó¤ÏÄ̾ï Unix ¤Ç»È¤ï¤ì¤Æ¤¤¤ë¤â¤Î¤È¤Ï¸ß´¹À¤¬¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢Unix ¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥é¥¤¥Ö¥é¥ê¤ò¸Æ¤Ó½Ð¤¹É¬Íפ¬¤¢¤ë¤È¤¤Ë¤Ï»ÈÍѤǤ¤Ê¤¤¡£
¤Þ¤¿¡¢²ÄÊÑ¿ô°ú¿ô(printf ¤ò´Þ¤à)¤ò¼è¤ë´Ø¿ôÁ´¤Æ¤Ë´Ø¿ô¥×¥í¥È¥¿¥¤¥×¤òÄ󶡤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤½¤¦¤·¤Ê¤¤¤È¡¢¤½¤ì¤é¤Î´Ø¿ô¤Î¸Æ½Ð¤·¤ËÂФ·¡¢Àµ¤·¤¯¤Ê¤¤¥³¡¼¥É¤¬À¸À®¤µ¤ì¤Æ¤·¤Þ¤¦¡£
¤µ¤é¤Ë¡¢°ú¿ô¤¬¤¿¤¯¤µ¤ó¤¢¤ê¤¹¤®¤ë´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È½ÅÂç¤Ê¸í¤ê¤Î¤¢¤ë¥³¡¼¥É¤¬À¸À®¤µ¤ì¤ë¡£(ÉáÄÌ¡¢°ú¿ô¤¬Í¾Ê¬¤Ë¤¢¤ë¾ì¹ç¤ÏÌäÂê¤Ê¤¯Ìµ»ë¤µ¤ì¤ë¡£)
¤³¤Î¥ª¥×¥·¥ç¥ó¤Î̾Á°¤Ï¡¢680x0 ¤Î rtd Ì¿Îᤫ¤é¼è¤Ã¤¿¤â¤Î¤Ç¤¢¤ë¡£
-mregparam
¤³¤Î¸Æ½Ð¤·µ¬Ìó¤ÏÄ̾ï Unix ¤Ç»È¤ï¤ì¤Æ¤¤¤ë¤â¤Î¤È¤Ï¸ß´¹À¤¬¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢Unix ¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥é¥¤¥Ö¥é¥ê¤ò¸Æ¤Ó½Ð¤¹É¬Íפ¬¤¢¤ë¤È¤¤Ë¤Ï»ÈÍѤǤ¤Ê¤¤¡£
-mnoregparam
-msb
-mnosb
-mhimem ¤« -fpic ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤È¤¤Ï¾ï¤Ë°ÅÌۤ˴ޤޤì¤ë¡£
-mhimem
-mnohimem
°Ê²¼¤Ï¡¢µ¡¼ïÆÈΩ¤Î¥ª¥×¥·¥ç¥ó¤Ç¡¢¥³¡¼¥ÉÀ¸À®¤Ë¤ª¤¤¤Æ»È¤ï¤ì¤ë¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹µ¬Ìó¤òÀ©¸æ¤¹¤ë¡£
°Ê²¼¤Î¤Û¤È¤ó¤É¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ï¹ÎÄê·Á¤ÈÈÝÄê·Á¤ÎξÊý¤Î·Á¼°¤¬¤¢¤ë¡£-ffoo ¤ÎÈÝÄê·Á¤Ï -fno-foo ¤Ç¤¢¤ë¡£°Ê²¼¤Îɽ¤Ç¤Ï¡¢¤É¤Á¤é¤«°ìÊý¤Î·Á¤·¤«Îóµó¤·¤Æ¤¤¤Ê¤¤¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ê¤¤¤Û¤¦¤òÎóµó¤·¤Æ¤¤¤ë¡£¤â¤¦°ìÊý¤Î·Á¼°¤Ï¡¢no- ¤ò¼è¤ê½ü¤¯¤«¡¢Äɲ乤ì¤ÐÎɤ¤¡£
-fexceptions
-fpcc-struct-return
struct ¤È union ¤ÎÃͤò¡¢¥ì¥¸¥¹¥¿¤Ç¤Ï¤Ê¤¯¡¢Â礤ʤâ¤Î¤Î¾ì¹ç¤ÈƱÍͤ˥á¥â¥ê¤ËÆþ¤ì¤ÆÊÖ¤¹¡£¤³¤Îµ¬Ìó¤Ï¸úΨ¤Ç¤ÏÎô¤ë¤¬¡¢GCC ¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥Õ¥¡¥¤¥ë¤È¾¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥Õ¥¡¥¤¥ë¤Î´Ö¤ÇÁê¸ß¤Ë¸Æ¤Ó½Ð¤·¤¬²Äǽ¤Ë¤Ê¤ë¤È¤¤¤¦ÍøÅÀ¤¬¤¢¤ë¡£
¹½Â¤ÂΤò¥á¥â¥ê¤ËÆþ¤ì¤ÆÊÖ¤¹µ¬Ìó¤Î¾ÜºÙ¤Ï¡¢¥¿¡¼¥²¥Ã¥È¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Þ¥¯¥í¤Ë°Í¸¤¹¤ë¡£
¾®¤µ¤¤¹½Â¤ÂΡ¢¶¦ÍÑÂΤȤϡ¢¤½¤ÎÂ礤µ¤È¥¢¥é¥¤¥ó¥á¥ó¥È¤¬À°¿ô·¿¤Î¤É¤ì¤«¤Ë°ìÃפ¹¤ë¤â¤Î¤Ç¤¢¤ë¡£
-freg-struct-return
struct ¤È union ¤ÎÃͤò²Äǽ¤Ê¾ì¹ç¤Ë¤Ï¥ì¥¸¥¹¥¿¤ÇÊÖ¤¹µ¬Ìó¤ò»È¤¦¡£¤³¤ÎÊýË¡¤Ï¡¢¾®¤µ¤Ê¹½Â¤ÂΤˤĤ¤¤Æ¤Ï -fpcc-struct-return
¤è¤ê¤â¸úΨ¤¬Îɤ¤¡£
-fpcc-struct-return ¤â¤½¤ÎµÕ¤Î -freg-struct-return ¤â»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ï¡¢¥¿¡¼¥²¥Ã¥È¤Çɸ½à¤Îµ¬Ì󤬥ǥե©¥ë¥È¤È¤Ê¤ë¡£É¸½à¤Îµ¬Ì󤬤ʤ¤¾ì¹ç¤Ï¡¢GCC ¤¬É¸½à¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¤¢¤ë¥¿¡¼¥²¥Ã¥È¤ò½ü¤¤¤Æ¡¢-fpcc-struct-return ¤ò¥Ç¥Õ¥©¥ë¥È¤È¤¹¤ë¡£GCC ¤¬É¸½à¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢²æ¡¹¤Ëɸ½à¤Îµ¬Ìó¤òÁª¤Ö¸¢Íø¤¬¤¢¤ë¤Î¤Ç¡¢¸úΨ¤ÎÎɤ¤¡¢¥ì¥¸¥¹¥¿¤ÇÊÖ¤¹¤Û¤¦¤òÁª¤Ö¡£
-fshort-enums
enum ·¿¤ËÂФ·¤Æ¡¢¤½¤Î·¿¤ÇÀë¸À¤µ¤ì¤Æ¤¤¤ë²Äǽ¤ÊÈϰϤÎÃͤòɽ¤¹¤Î¤ËɬÍפʥХ¤¥È¿ô¤·¤«³ä¤êÅö¤Æ¤Ê¤¤¡£¤â¤Ã¤ÈÀµ³Î¤Ë¸À¤¨¤Ð¡¢¤½¤Î¾ì¹ç¤Î enum ·¿¤Ï¡¢¤½¤ì¤ò¼ý¤á¤ë¤Î¤Ë½¼Ê¬¤Ç¡¢¤«¤Ä¡¢ºÇ¾®¤ÎÀ°¿ô·¿¤ËƱ¤¸¤Ç¤¢¤ë¡£
-fshort-double
double ¤Î¥µ¥¤¥º¤È¤·¤Æ float ¤ÈƱ¤¸¥µ¥¤¥º¤ò»È¤¦¡£
-fshared-data
const ÊÑ¿ô¤ò¡¢¥×¥é¥¤¥Ù¡¼¥È¤Ê¥Ç¡¼¥¿¤È¤¹¤ë¤Î¤Ç¤Ê¤¯¡¢¶¦Í¥Ç¡¼¥¿¤È¤¹¤ë¤³¤È¤òÍ׵᤹¤ë¡£¤³¤Î¤³¤È¤Ë¤è¤ë°ã¤¤¤Ï¡¢¶¦Í¥Ç¡¼¥¿¤ÏƱ°ì¤Î¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ëÊ£¿ô¤Î¥×¥í¥»¥¹´Ö¤Ç¶¦Í¤µ¤ì¤ë¤¬¡¢¥×¥é¥¤¥Ù¡¼¥È¤Ê¥Ç¡¼¥¿¤Ï¡¢¥×¥í¥»¥¹Ëè¤Ë¥³¥Ô¡¼¤ò»ý¤Ä¤è¤¦¤Ê¡¢ÆÃÄê¤ÎOS ¤Î¸µ¤Ç¤·¤«°ÕÌ£¤ò»ý¤¿¤Ê¤¤¡£
-fno-common
extern ¤Ê¤·¤Ç)
Àë¸À¤µ¤ì¤Æ¤¤¤ë¤È¡¢¥ê¥ó¥¯»þ¤Ë¥¨¥é¡¼¤È¤Ê¤ë¡£¤³¤ì¤¬Í£°ìÌò¤ËΩ¤Ä¤Î¤Ï¡¢¾ï¤Ë¤³¤Î¤è¤¦¤Êưºî¤ò¤¹¤ë¾¤Î¥·¥¹¥Æ¥à¤Ç¤Î¥×¥í¥°¥é¥à¤Îưºî¤ò¸¡¾Ú¤·¤¿¤¤¤È¤¤À¤í¤¦¡£
-fno-ident
#ident À©¸æ»Ò¤ò̵»ë¤¹¤ë¡£
-fno-gnu-linker
collect2 ¥×¥í¥°¥é¥à¤ò»È¤Ã¤Æ¡¢¥·¥¹¥Æ¥à¤Î¥ê¥ó¥«¤¬¥³¥ó¥¹¥È¥é¥¯¥¿¤È¥Ç¥¹¥È¥é¥¯¥¿¤ò¼è¤ê¹þ¤à¤è¤¦¤Ë¤¹¤ë¤³¤È¤âɬÍפȤʤ롣(collect2 ¤Ï GCC ¤ÎÇÛÉÛʪ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¡£)
collect2 ¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¥·¥¹¥Æ¥à¤ËÂФ·¤Æ¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¥É¥é¥¤¥Ð¤Ç¤¢¤ë gcc ¤Ï¼«Æ°Åª¤Ë¤½¤¦¤¹¤ë¤è¤¦¤Ë¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤µ¤ì¤ë¡£
-finhibit-size-directive
.size ¤ä¡¢¤¢¤ë¤¤¤Ï´Ø¿ô¤¬ÅÓÃæ¤Çʬ³ä¤µ¤ì¡¢Ê¬³ä¤µ¤ì¤¿Æó¤Ä¤ÎÉôʬ¤¬¥á¥â¥êÃæ¤ÇÎ¥¤ì¤¿¾ì½ê¤ËÃÖ¤«¤ì¤¿¾ì¹ç¤ËÌäÂê¤È¤Ê¤ë¤è¤¦¤Ê¤â¤Î¤ò½ÐÎϤ·¤Ê¤¤¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï crtstuff.c ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë»È¤ï¤ì¤ë¡£¤½¤Î¾¤Î¾ì¹ç¤Ë¤ÏɬÍפʤ¤¤Ï¤º¤Ç¤¢¤ë¡£
-fverbose-asm
¥Ç¥Õ¥©¥ë¥È¤Î -fno-verbose-asm ¤Ï¡¢Í¾Ê¬¤Î¾ðÊó¤ò½Ð¤µ¤º¡¢Æó¤Ä¤Î¥¢¥»¥ó¥Ö¥é¥Õ¥¡¥¤¥ë¤òÈæ³Ó¤¹¤ë¤È¤¤ÏÊØÍø¤Ç¤¢¤ë¡£
-fvolatile
-fvolatile-global
-fvolatile-static
-fpic
-fpic ¤¬Æ°ºî¤·¤Ê¤¤¤È¤¤¤¦¤³¤È¤ò¼¨¤¹¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò¥ê¥ó¥«¤¬½Ð¤¹¡£¤½¤Î¾ì¹ç¡¢Âå¤ï¤ê¤Ë -fPIC ¤ò»È¤Ã¤ÆºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¡£(¤³¤ÎºÇÂçÃͤϡ¢m88k ¤Ç¤Ï 16k¡¢SPARC ¤Ç¤Ï 8k¡¢m68k ¤È RS/6000 ¤Ç¤Ï32k ¤Ç¤¢¤ë¡£386 ¤Ë¤Ï¤³¤ÎÀ©¸Â¤Ï¤Ê¤¤¡£)
°ÌÃÖÆÈΩ¥³¡¼¥É¤ÏÆÃÊ̤ʥµ¥Ý¡¼¥È¤òɬÍפȤ·¡¢¤½¤Î¤¿¤á¤Ë°ìÄê¤Îµ¡¼ï¤Ç¤·¤«Æ°ºî¤·¤Ê¤¤¡£386 ¤Î¾ì¹ç¤Ï¡¢GCC ¤Ï System V ¤Ë¤Ä¤¤¤Æ¤Ï PIC ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤¬¡¢Sun 386i ¤Ë¤Ä¤¤¤Æ¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¡£IBM RS/6000 ¸þ¤±¤ËÀ¸À®¤µ¤ì¤¿¥³¡¼¥É¤Ï¾ï¤Ë°ÌÃÖÆÈΩ¤Ç¤¢¤ë¡£
-fPIC
°ÌÃÖÆÈΩ¥³¡¼¥É¤ÏÆÃÊ̤ʥµ¥Ý¡¼¥È¤òɬÍפȤ·¡¢¤½¤Î¤¿¤á¤Ë°ìÄê¤Îµ¡¼ï¤Ç¤·¤«Æ°ºî¤·¤Ê¤¤¡£
-ffixed-reg
reg ¤Ï¥ì¥¸¥¹¥¿¤Î̾Á°¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¼õ¤±ÉÕ¤±¤ë¥ì¥¸¥¹¥¿Ì¾¤Ïµ¡¼ï°Í¸¤Ç¤¢¤ê¡¢¥Þ¥·¥óµ½Ò¥Þ¥¯¥í¥Õ¥¡¥¤¥ë¤Î REGISTER_NAMES ¤È¤¤¤¦¥Þ¥¯¥í¤ÇÄêµÁ¤µ¤ì¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤ÏÈÝÄê·Á¤¬¤Ê¤¤¡£»°¤Ä¤ÎÁªÂò»è¤Î¤¦¤Á¤Î°ì¤Ä¤ò»ØÄꤹ¤ë¤«¤é¤Ç¤¢¤ë¡£
-fcall-used-reg
¤³¤Î¥Õ¥é¥°¤ò¥Õ¥ì¡¼¥à¥Ý¥¤¥ó¥¿¤ä¥¹¥¿¥Ã¥¯¥Ý¥¤¥ó¥¿¤ËÂФ·¤Æ»È¤¦¤Î¤Ï¸í¤ê¤Ç¤¢¤ë¡£¤³¤Î¥Õ¥é¥°¤ò¡¢¤½¤Î¾¤Î¡¢¥Þ¥·¥ó¤Î¼Â¹Ô¥â¥Ç¥ë¤Ë¤ª¤¤¤Æ¸ÇÄꤷ¤¿¹¤¯ÃΤé¤ì¤Æ¤¤¤ëÌò³ä¤ò»ý¤Ä¥ì¥¸¥¹¥¿¤ËÂФ·¤Æ»È¤¦¤È¡¢Ç˲õŪ¤Ê·ë²Ì¤ò¤â¤¿¤é¤¹¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤ÏÈÝÄê·Á¤¬¤Ê¤¤¡£»°¤Ä¤ÎÁªÂò»è¤Î¤¦¤Á¤Î°ì¤Ä¤ò»ØÄꤹ¤ë¤«¤é¤Ç¤¢¤ë¡£
-fcall-saved-reg
¤³¤Î¥Õ¥é¥°¤ò¥Õ¥ì¡¼¥à¥Ý¥¤¥ó¥¿¤ä¥¹¥¿¥Ã¥¯¥Ý¥¤¥ó¥¿¤ËÂФ·¤Æ»È¤¦¤Î¤Ï¸í¤ê¤Ç¤¢¤ë¡£¤³¤Î¥Õ¥é¥°¤ò¡¢¤½¤Î¾¤Î¡¢¥Þ¥·¥ó¤Î¼Â¹Ô¥â¥Ç¥ë¤Ë¤ª¤¤¤Æ¸ÇÄꤷ¤¿¹¤¯ÃΤé¤ì¤Æ¤¤¤ëÌò³ä¤ò»ý¤Ä¥ì¥¸¥¹¥¿¤ËÂФ·¤Æ»È¤¦¤È¡¢Ç˲õŪ¤Ê·ë²Ì¤ò¤â¤¿¤é¤¹¡£
¤³¤Î¥Õ¥é¥°¤ò´Ø¿ô¤ÎÌá¤êÃͤòÆþ¤ì¤ë¥ì¥¸¥¹¥¿¤ËÂФ·¤Æ»È¤¦¤È¡¢Ê̤μïÎà¤ÎÇ˲õŪ¤Ê·ë²Ì¤Ë¤Ê¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤ÏÈÝÄê·Á¤¬¤Ê¤¤¡£»°¤Ä¤ÎÁªÂò»è¤Î¤¦¤Á¤Î°ì¤Ä¤ò»ØÄꤹ¤ë¤«¤é¤Ç¤¢¤ë¡£
-fpack-struct
-fcheck-memory-usage
Checker ¤Î¤è¤¦¤Ê¡¢ÉÔÀµ¤Ê¥á¥â¥ê»²¾È¤ò¸¡ÃΤ¹¤ë¥×¥í¥°¥é¥à¤ËŬ¤·¤¿¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£
ÉáÄ̤ϡ¢¤³¤ÎÁ´¤Æ¤Î¥³¡¼¥É¤ò¤³¤Î¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤«¡¢¤¢¤ë¤¤¤ÏÁ´¤¯ÉÕ¤±¤º¤Ë¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥³¡¼¥É¤ÈÉÕ¤±¤Ê¤¤¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥³¡¼¥É¤òº®¤¼¤ë¾ì¹ç¤Ï¡¢ÉûºîÍѤ¬¤¢¤ê¡¢¤«¤Ä¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥³¡¼¥É¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤ëÁ´¤Æ¤Î¥³¡¼¥É¤Ï¡¢¤½¤ì¼«¿È¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤³¤È¤òÊݾڤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¥é¥¤¥Ö¥é¥ê´Ø¿ô¤Î¤¦¤ÁÉûºîÍѤΤ¢¤ë¤â¤Î(Î㤨¤Ð¡¢read)¤ò»È¤¦¤È¤¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤½¤Î¥é¥¤¥Ö¥é¥ê´Ø¿ô¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ëÌõ¤Ë¤Ï¤¤¤«¤Ê¤¤¤³¤È¤â¤¢¤ë¤À¤í¤¦¡£¤½¤Î¾ì¹ç¤Ï¡¢-fprefix-function-name
¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¡¢ÆÉ¼Ô¤Î¥³¡¼¥É¤òÊñ¤ß¹þ¤ß¡¢Â¾¤Î´Ø¿ô¤¬¤¢¤¿¤«¤â-fcheck-memory-usage ¥ª¥×¥·¥ç¥ó¤Ä¤¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤«¤Î¤è¤¦¤Ë¤¹¤ë¤³¤È¤ò GCC ¤ËÍ׵᤹¤ë¡£¤³¤ì¤Ï¡¢¡Ö¥¹¥¿¥Ö¡×¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤Æ¹Ô¤Ê¤ï¤ì¤ë¡£¥¹¥¿¥Ö¤Ï¸¡Ãδï¤Ë¤è¤êÄ󶡤µ¤ì¤ë¡£ÆÉ¼Ô¤Î¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë¤¢¤é¤æ¤ë´Ø¿ô¤ËÂФ·¤Æ¥¹¥¿¥Ö¤ò¸«¤Ä¤±¤¿¤ê¡¢¹½ÃÛ¤¹¤ë¤³¤È¤¬ÉÔ²Äǽ¤Ê¾ì¹ç¤Ï¡¢-fprefix-function-name
¥ª¥×¥·¥ç¥ó¤Ê¤·¤Ç -fcheck-memory-usage ¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¤¤Ï¡¢¥á¥â¥ê¸¡ºº¤ò͸ú¤Ë¤·¤¿´Ø¿ôÆâ¤Çasm ¤ä __asm__ ¤È¤¤¤¦¥¡¼¥ï¡¼¥É¤ò»È¤¦¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£GCC ¤Ï asm ʸ¤¬¹Ô¤¦¤³¤È¤òÍý²ò¤Ç¤¤º¡¢¤½¤Î¤¿¤áŬÀڤʥ³¡¼¥É¤¬À¸À®¤Ç¤¤Ê¤¤¤Î¤Ç¡¢µñÀ䤵¤ì¤ë¡£¤¿¤À¤·¡¢´Ø¿ô°Àno_check_memory_usage ¤òÉÕ¤±¤ë¤È´Ø¿ôÆâ¤Î¥á¥â¥ê¸¡ºº¤¬Ìµ¸ú¤Ë¤Ê¤ê¡¢asm ʸ¤ò¤½¤¦¤¤¤¦´Ø¿ôÆâ¤ËÃÖ¤¯¤³¤È¤¬²Äǽ¤Ë¤Ê¤ë¡£¸¡ºº¤µ¤ì¤¿´Ø¿ôÆâ¤Ç¸¡ººÌµ¤·¤Î´Ø¿ô¤ò¥¤¥ó¥é¥¤¥óŸ³«¤¹¤ë¤Î¤Ïµö¤µ¤ì¤Æ¤¤¤ë¡£¥¤¥ó¥é¥¤¥ó´Ø¿ô¤Ç¤Î¥á¥â¥ê¥¢¥¯¥»¥¹¤Ï¸¡ºº¤µ¤ì¤Ê¤¤¤¬¡¢¤½¤Î·ë²Ì¸¡ºº¤µ¤ì¤ë¡£
ÆÉ¼Ô¤Î asm ʸ¤ò¸¡ººÌµ¤·¤Î¥¤¥ó¥é¥¤¥ó´Ø¿ô¤Ë°Üư¤¹¤ë¤¬¡¢¤½¤ì¤é¤¬¥á¥â¥ê¤ò¥¢¥¯¥»¥¹¤¹¤ë¤Ê¤é¡¢¥¤¥ó¥é¥¤¥ó´Ø¿ôÆâ¤Î¥µ¥Ý¡¼¥È¥³¡¼¥É¤Î¸Æ½Ð¤·¤òÄɲ䷤ơ¢Ç¤°Õ¤ÎÆÉ¤ß½Ð¤·¡¢½ñ¤½Ð¤·¡¢¥³¥Ô¡¼¤¬¹Ô¤ï¤ì¤ë¤³¤È¤ò»Ø¼¨¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ì¤é¤Î¸Æ½Ð¤·¤Ï¡¢¾å¤ÇÀâÌÀ¤·¤¿¥¹¥¿¥Ö¤Ç¹Ô¤ï¤ì¤ë¤â¤Î¤Ë»÷¤¿¤â¤Î¤Ë¤Ê¤ë¤À¤í¤¦¡£
-fprefix-function-name
°Ê²¼¤Î¥³¡¼¥É¤ò -fprefix-function-name ÉÕ¤¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È
extern void bar (int);
void
foo (int a)
{
return bar (a + 5);
}
GCC ¤Ï¥³¡¼¥É¤¬°Ê²¼¤Î¤è¤¦¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤«¤Î¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¡£
extern void prefix_bar (int);
void
prefix_foo (int a)
{
return prefix_bar (a + 5);
}
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï -fcheck-memory-usage ¤È¹ç¤ï¤»¤Æ»È¤¦¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤ë¡£
-finstrument-functions
__builtin_return_address ¤Ï¸½ºß¤Î´Ø¿ô¤ò±Û¤¨¤Æ¤Ïưºî¤·¤Ê¤¤¤Î¤Ç¡¢¸Æ½Ð¤·Â¦¾ðÊó¤Ï¤½¤ì°Ê³°¤Î¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°´Ø¿ô¤«¤é¤ÏÍøÍѤǤ¤Ê¤¤¡£)
void __cyg_profile_func_enter (void *this_fn, void *call_site); void __cyg_profile_func_exit (void *this_fn, void *call_site);
°ìÈÖÌܤΰú¿ô¤Ï¡¢¸½ºß¤Î´Ø¿ô¤Î³«»Ï¥¢¥É¥ì¥¹¤Ç¤¢¤ë¡£¤³¤ì¤Ï¡¢¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤«¤éÀµ³Î¤Ë¸¡º÷¤Ç¤¤ë¤â¤Î¤Ç¤¢¤ë¡£
¤³¤ÎÆÃÊ̽èÍý¤Ï¡¢Â¾¤Î´Ø¿ôÆâ¤Ë¥¤¥ó¥é¥¤¥óŸ³«¤µ¤ì¤¿´Ø¿ô¤ËÂФ·¤Æ¤â¹Ô¤ï¤ì¤ë¡£¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¸Æ½Ð¤·¤¬¡¢¤É¤³¤Ç¥¤¥ó¥é¥¤¥ó´Ø¿ô¤ËÆþ¤ê¡¢¤É¤³¤Ç½Ð¤¿¤«¤ò³µÇ°Åª¤Ë¼¨¤¹¡£¤³¤ì¤Ï¡¢¥¤¥ó¥é¥¤¥ó´Ø¿ô¤ËÂФ·¡¢¥¢¥É¥ì¥¹¤ò¼è¤ë¤³¤È¤¬²Äǽ¤ÊÈǤ¬ÍøÍѲÄǽ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£¤¢¤ë´Ø¿ô¤ò»ÈÍѤ·¤Æ¤¤¤ë¤È¤³¤í¤¬Á´¤Æ¥¤¥ó¥é¥¤¥óŸ³«¤µ¤ì¤ë¤Î¤Ê¤é¡¢¤³¤ì¤Ï¥³¡¼¥É¥µ¥¤¥º¤ò¤µ¤é¤ËÁý¤ä¤¹¤³¤È¤Ë¤Ê¤ë¡£ÆÉ¼Ô¤Î C ¥³¡¼¥É¤Çextern inline ¤ò»ØÄꤹ¤ë¤Ê¤é¡¢¥¤¥ó¥é¥¤¥ó´Ø¿ô¤Î¥¢¥É¥ì¥¹¼èÆÀ²ÄǽÈǤòÄ󶡤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£(²¿¤Ï¤È¤â¤¢¤ì¡¢¤³¤ì¤¬ÉáÄ̤ξì¹ç¤À¤¬¡¢ºÇŬ²½¤Ë¤è¤ê¾ï¤Ë´Ø¿ô¤¬¥¤¥ó¥é¥¤¥óŸ³«¤µ¤ì¤ë¤Ê¤é¡¢±¿¤¬Îɤ±¤ì¤Ð¡¢static ÈǤòÄ󶡤·¤Ê¤¯¤Æ¤âºÑ¤à¤«¤â¤·¤ì¤Ê¤¤¡£)
´Ø¿ô¤Ë°À no_instrument_function ¤ò»ØÄꤹ¤ë¤È¡¢¤³¤ÎÆÃÊ̽èÍý¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£¤³¤ì¤ÏÎ㤨¤Ð¡¢¾å¤Ë¼¨¤·¤¿¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°´Ø¿ô¤ä¡¢¹âÍ¥ÀèÅ٤γä¤ê¹þ¤ß¥ë¡¼¥Á¥ó¡¢¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°´Ø¿ô¤«¤é°ÂÁ´¤Ë¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤¤Ê¤¤´Ø¿ô(¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¥ë¡¼¥Á¥ó¤¬½ÐÎϤò¤ª¤³¤Ê¤Ã¤¿¤ê¡¢¥á¥â¥ê¤ò³ÎÊݤ¹¤ë¤Ê¤é¡¢¤ª¤½¤é¤¯¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤¬³ºÅö¤¹¤ë)Åù¤Ë»È¤ï¤ì¤ë¡£
-fstack-check
-fargument-alias
-fargument-noalias
-fargument-noalias-global
-fargument-alias ¤Ï¡¢°ú¿ô(²¾°ú¿ô)¤¬¤ª¸ß¤¤¤ËÊÌ̾¤Ë¤Ê¤Ã¤Æ¤¤¤ë²ÄǽÀ¤¬¤¢¤ë¤³¤È¡¢¤½¤ì¤Ë¥°¥í¡¼¥Ð¥ë¥Ç¡¼¥¿¤ÎÊÌ̾¤Ë¤Ê¤Ã¤Æ¤¤¤ë²ÄǽÀ¤¬¤¢¤ë¤³¤È¤ò»ØÄꤹ¤ë¡£-fargument-noalias ¤Ï°ú¿ô¤Ï¤ª¸ß¤¤¤ËÊÌ̾¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤Ï¤Ê¤¤¤¬¡¢¥°¥í¡¼¥Ð¥ë¥Ç¡¼¥¿¤ÎÊÌ̾¤Ë¤Ê¤Ã¤Æ¤¤¤ë²ÄǽÀ¤¬¤¢¤ë¤³¤È¤ò»ØÄꤹ¤ë¡£-fargument-noaliase-global ¤Ï¡¢°ú¿ô¤Ï¤ª¸ß¤¤¤ËÊÌ̾¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤¤·¡¢¥°¥í¡¼¥Ð¥ë¥Ç¡¼¥¿¤ÎÊÌ̾¤Ë¤â¤Ê¤Ã¤Æ¤¤¤Ê¤¤¤³¤È¤ò»ØÄꤹ¤ë¡£
¤½¤ì¤¾¤ì¤Î¸À¸ì¤Ï¡¢¤½¤Î¸À¸ì¤Îµ¬³Ê¤ÇɬÍפȤµ¤ì¤ë¥ª¥×¥·¥ç¥ó¤Ï¤Ê¤ó¤Ç¤¢¤ì¡¢¼«Æ°Åª¤Ë»È¤¦¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¤½¤¦¤¤¤¦¥ª¥×¥·¥ç¥ó¤òÆÉ¼Ô¼«¿È¤¬»È¤¦É¬ÍפϤʤ¤¤Ï¤º¤Ç¤¢¤ë¡£
-fleading-underscore
-fno-leading-underscore
¤Ï¡¢C ¤Î¥·¥ó¥Ü¥ë¤Î¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ëÃæ¤Ç¤Îɽ¸½ÊýË¡¤ò¶¯À©Åª¤ËÊѹ¹¤¹¤ë¡£»È¤¤Æ»¤Î°ì¤Ä¤Ï¡¢¸Å¤¤¥¢¥»¥ó¥Ö¥ê¥³¡¼¥É¤È¥ê¥ó¥¯¤¹¤ë¤Î¤ò½õ¤±¤ë¤³¤È¤Ë¤¢¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¤¤Ï¼«Ê¬¤¬²¿¤ò¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤Î¤«¤òÍý²ò¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ë¤È¤¤¤¦¤³¤È¡¢¤½¤ì¤ËÁ´¤Æ¤Î¥¿¡¼¥²¥Ã¥È¤¬¤³¤Î¥ª¥×¥·¥ç¥ó¤ò´°Á´¤Ë¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ëÌõ¤Ç¤Ï¤Ê¤¤¤È¤¤¤¦¤³¤È¤ËÃí°Õ¤·¤ÆÍߤ·¤¤¡£
¤³¤ÎÀá¤Ç¤Ï¡¢GCC ¤Îưºî¤Ë´Ø·¸¤¹¤ë´Ä¶ÊÑ¿ô¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë¡£¤³¤ì¤é¤Î´Ä¶ÊÑ¿ô¤Î¤¦¤Á¤Î¤¤¤¯¤Ä¤«¤Î»Å»ö¤Ï¡¢¿§¡¹¤Ê¼ïÎà¤Î¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤ë¤È¤¤Ë»È¤¦¥Ç¥£¥ì¥¯¥È¥ê¤ä¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤¢¤ë¡£¤Þ¤¿¤¤¤¯¤Ä¤«¤Ï¡¢¥³¥ó¥Ñ¥¤¥ë´Ä¶¤Î¾¤Î¦Ì̤ò»ØÄꤹ¤ë¤Î¤Ë»È¤ï¤ì¤ë¡£
¤Þ¤¿¡¢¸¡º÷¾ì½ê¤ò»ØÄꤹ¤ë¤Î¤Ë -B¡¢-I¡¢-L
(see Directory Options)Åù¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤³¤È¤¬½ÐÍè¤ë¤³¤È¤ËÃí°Õ¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢´Ä¶ÊÑ¿ô¤Ç»ØÄꤵ¤ì¤¿¾ì½ê¤è¤ê¤âÍ¥À褹¤ë¡£¤Þ¤¿¡¢´Ä¶ÊÑ¿ô¤Ë¤è¤ë»ØÄê¤Ï¡¢GCC ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤¿¾ì½ê¤è¤ê¤âÍ¥À褹¤ë¡£See Driver¡£
LANG
LC_CTYPE
LC_MESSAGES
LC_ALL
LC_TYPE ¤È LC_MESSAGES ¤òÄ´¤Ù¤ë¡£¤³¤ì¤é¤Î¥í¥±¡¼¥ë¡¦¥«¥Æ¥´¥ê¤Ë¤Ï¡¢ÆÉ¼Ô¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëǤ°Õ¤ÎÃͤòÀßÄê¤Ç¤¤ë¡£ÂåɽŪ¤ÊÃͤϡ¢±Ñ¹ñ(United Kingdom)¤Î±Ñ¸ì¤òɽ¤¹ en_UK ¤Ç¤¢¤ë¡£
´Ä¶ÊÑ¿ô LC_CTYPE ¤Ï¡¢Ê¸»ú¤ÎʬÎà¤ò»ØÄꤹ¤ë¡£GCC ¤Ï¤³¤ì¤ò»È¤Ã¤Æ¡¢Ê¸»úÎóÃæ¤Îʸ»ú¤Î¶³¦¤ò·èÄꤹ¤ë¡£¤³¤ì¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥Þ¥ë¥Á¥Ð¥¤¥È¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÇɬÍפˤʤ롣¤³¤ì¤é¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ç¤Ï¡¢Ê¸»ú¤Î¶³¦¤¬¤ï¤«¤é¤Ê¤¤¤È¡¢Ê¸»úÎó¤Î½ªÎ»¤ä¥¨¥¹¥±¡¼¥×¤È¤·¤Æ²ò¼á¤µ¤ì¤Æ¤·¤Þ¤¦¤è¤¦¤Ê°úÍÑʸ»ú¤ä¥¨¥¹¥±¡¼¥×ʸ»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£
´Ä¶ÊÑ¿ô LC_MESSAGES ¤Ï¡¢¿ÇÃÇ¥á¥Ã¥»¡¼¥¸¤Ç»È¤¦¤Ù¤¸À¸ì¤ò»ØÄꤹ¤ë¡£
´Ä¶ÊÑ¿ô LC_ALL ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤È¡¢LC_CTYPE ¤ÈLC_MESSAGES ¤ÎÃͤò¾å½ñ¤¤¹¤ë¡£ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢LC_CTYPE ¤È LC_MESSAGES ¤Î¥Ç¥Õ¥©¥ë¥È¤Ï¡¢´Ä¶ÊÑ¿ô LANG ¤ÎÃͤȤʤ롣¤³¤ì¤é¤Î¤É¤ÎÊÑ¿ô¤âÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢GCC ¤ÏÅÁÅýŪ¤Ê C ¤Î±Ñ¸ì¤Îưºî¤ò¥Ç¥Õ¥©¥ë¥È¤Ë¤¹¤ë¡£
TMPDIR
TMPDIR ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢¤½¤ÎÃͤǰì»þ¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤹ¤ë¡£GCC ¤Ï°ì»þ¥Õ¥¡¥¤¥ë¤ò»È¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤Î°ì¤Ä¤Î¥¹¥Æ¡¼¥¸¤Î½ÐÎϤòÊÝ»ý¤¹¤ë¡£¤½¤ì¤¬¼¡¤Î¥¹¥Æ¡¼¥¸¤ÎÆþÎϤȤ·¤Æ»È¤ï¤ì¤ë¡£Î㤨¤Ð¡¢¥×¥ê¥×¥í¥»¥Ã¥µ¤Î½ÐÎϤϡ¢¥³¥ó¥Ñ¥¤¥éËÜÂÎ¤Ø¤ÎÆþÎϤˤʤ롣
GCC_EXEC_PREFIX
GCC_EXEC_PREFIX ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤È¡¢¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤ê¼Â¹Ô¤µ¤ì¤ë¥µ¥Ö¥×¥í¥°¥é¥à¤Î̾Á°¤Î¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤ò»ØÄꤹ¤ë¡£¤³¤Î¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤ò¥µ¥Ö¥×¥í¥°¥é¥à̾¤ÈÁȤ߹ç¤ï¤»¤ë¤È¤¤Ë¥¹¥é¥Ã¥·¥å¤ÏÊä¤ï¤ì¤Ê¤¤¤¬¡¢´õ˾¤¹¤ë¤Ê¤é¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤ÎºÇ¸å¤Ë¥¹¥é¥Ã¥·¥å¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
GCC ¤¬»ØÄꤵ¤ì¤¿¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤ò»È¤Ã¤Æ¥µ¥Ö¥×¥í¥°¥é¥à¤ò¸«¤Ä¤±¤é¤ì¤Ê¤«¤Ã¤¿»þ¤Ë¤Ï¡¢¥µ¥Ö¥×¥í¥°¥é¥à¤¬Ä̾ïÃÖ¤«¤ì¤ë¾ì½ê¤òõ¤¹¡£
GCC_EXEC_PREFIX ¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï prefix/lib/gcc-lib/
¤Ç¤¢¤ê¡¢prefix ¤Ï¡¢configure ¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤·¤¿¤È¤¤Îprefix ¤ÎÃͤǤ¢¤ë¡£
-B ¤Ç»ØÄꤷ¤¿¤½¤Î¾¤Î¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤Ï¡¢¤³¤Î¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤è¤ê¤âÍ¥À褹¤ë¡£
¤³¤Î¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤Ï¡¢¥ê¥ó¥¯»þ¤Ë»È¤ï¤ì¤ë crt0.o ¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤òõ¤¹¤Î¤Ë¤â»È¤ï¤ì¤ë¡£
¤µ¤é¤Ë¡¢¤³¤Î¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤Ï¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤Ù¤¥Ç¥£¥ì¥¯¥È¥ê¤ò¸«¤Ä¤±¤ë¤È¤¤ËÊѤï¤Ã¤¿»È¤ï¤ìÊý¤ò¤¹¤ë¡£Ä̾/usr/local/lib/gcc-lib
¤Ç(Àµ³Î¤Ë¤Ï¡¢GCC_INCLUDE_DIR ¤ÎÃͤÇ)»Ï¤Þ¤ë̾Á°¤Îɸ½à¤Î¥Ç¥£¥ì¥¯¥È¥êËè¤Ë¡¢¤½¤Î̾Á°¤Î»Ï¤Þ¤ê¤ò»ØÄꤵ¤ì¤¿¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤ËÃÖ¤´¹¤¨¤Æ¡¢Ê̤Υǥ£¥ì¥¯¥È¥ê̾¤òÀ¸À®¤¹¤ë¡£¤Ä¤Þ¤ê¡¢-Bfoo/ ¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤Ï¡¢ÉáÄ̤ʤé /usr/local/lib/bar ¤òõ¤¹¤È¤³¤í¤ò¡¢foo/bar ¤òõ¤¹¤Î¤Ç¤¢¤ë¡£¤³¤ÎÊ̤Υǥ£¥ì¥¯¥È¥ê¤ÏºÇ½é¤Ë¸¡º÷¤µ¤ì¤ë¡£É¸½à¤Î¥Ç¥£¥ì¥¯¥È¥ê¤¬¼¡¤Ë¸¡º÷¤µ¤ì¤ë¡£
COMPILER_PATH
COMPILER_PATH ¤ÎÃͤϥ³¥í¥ó¤Ç¶èÀڤ俥ǥ£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤Ç¤¢¤ê¡¢PATH ¤ËÎɤ¯»÷¤Æ¤¤¤ë¡£GCC ¤Ï¡¢GCC_EXEC_PREFIX ¤ò»È¤Ã¤Æ¥µ¥Ö¥×¥í¥°¥é¥à¤ò¸«¤Ä¤±¤é¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¡¢¤³¤ì¤Ç»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¥µ¥Ö¥×¥í¥°¥é¥à¤òõ¤¹¡£
LIBRARY_PATH
LIBRARY_PATH ¤ÎÃͤϥ³¥í¥ó¤Ç¶èÀڤ俥ǥ£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤Ç¤¢¤ê¡¢PATH ¤ËÎɤ¯»÷¤Æ¤¤¤ë¡£¥Í¥¤¥Æ¥£¥Ö¥³¥ó¥Ñ¥¤¥é¤È¤·¤Æ¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ò¹Ô¤Ê¤Ã¤¿¾ì¹ç¤Ï¡¢GCC ¤Ï¡¢ÆÃÊ̤ʥê¥ó¥«¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤ë¤È¤¤Ë¡¢GCC_EXEC_PREFIX ¤ò»È¤Ã¤Æ¤â¸«¤Ä¤±¤é¤ì¤Ê¤¤¤È¤¤Ï¡¢¤³¤Î¤è¤¦¤Ë»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ò»È¤¦¡£GCC ¤ò»È¤Ã¤Æ¥ê¥ó¥¯¤ò¹Ô¤Ê¤¦¤È¤¤â¡¢-l ¤Ç»ØÄꤵ¤ì¤¿Ä̾ï¤Î¥é¥¤¥Ö¥é¥ê¤òõ¤¹¤È¤¤Ë¡¢¤³¤ì¤é¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò»È¤¦(¤¿¤À¤·¡¢-L ¤Ç»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤¬¤Þ¤º¸¡º÷¤µ¤ì¤ë)¡£
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
PATH ¤Î¤è¤¦¤Ë¡¢¥³¥í¥ó¤Ç¶èÀڤ俥ǥ£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤Ç¤¢¤ë¡£GCC ¤¬¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òõ¤¹¤È¤¡¢»ÈÍѤ·¤Æ¤¤¤ë¸À¸ì¸þ¤±¤ÎÊÑ¿ô¤ËÎóµó¤µ¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê¤«¤éõ¤¹¡£¤³¤ì¤Ï¡¢-I ¤Ç»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Î¸¡º÷¤Î¸å¤Ç¡¢É¸½à¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¥Ç¥£¥ì¥¯¥È¥ê¤Î¸¡º÷¤ÎÁ°¤Ë¹Ô¤Ê¤ï¤ì¤ë¡£
DEPENDENCIES_OUTPUT
-M ¥ª¥×¥·¥ç¥ó¤Ë¤è¤ë½ÐÎϤËÎɤ¯»÷¤Æ¤¤¤ë¤¬¡¢ÆÈΩ¤·¤¿¥Õ¥¡¥¤¥ë¤Ë½ÐÎϤµ¤ì¡¢Ä̾ï¤Î¥³¥ó¥Ñ¥¤¥ë·ë²Ì¤ËÄɲ䵤ì¤ë·Á¤Ç½ÐÎϤµ¤ì¤ë¡£
DEPENDENCIES_OUTPUT ¤ÎÃͤÏñ¤Ê¤ë¥Õ¥¡¥¤¥ë̾¤Ç¤âÎɤ¯¡¢¤½¤Î¾ì¹ç¤Ï Make ÍѤΥ롼¥ë¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤Ë½ñ¤«¤ì¤ë¡£Make ¤Î¥¿¡¼¥²¥Ã¥È̾¤Ï¥½¡¼¥¹¥Õ¥¡¥¤¥ë̾¤«¤é¿ä¬¤¹¤ë¡£¤¢¤ë¤¤¤Ï¡¢¤³¤ÎÊÑ¿ô¤ÎÃͤÏfile target ¤È¤¤¤¦·Á¤Ç¤âÎɤ¤¡£¤³¤Î¾ì¹ç¡¢¥Õ¥¡¥¤¥ë file ¤Ë½ñ¤½Ð¤µ¤ì¤ë¥ë¡¼¥ë¤Ï¡¢¥¿¡¼¥²¥Ã¥È̾¤È¤·¤Ætarget ¤ò»È¤¦¡£
LANG
LANG ¤ÎÃͤȤ·¤Æ°Ê²¼¤Î¤â¤Î¤¬Ç§¼±¤µ¤ì¤ë¡£
C-JIS
C-SJIS
C-EUCJP
LANG ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¤ê¡¢¾åµ°Ê³°¤ÎÃͤˤʤäƤ¤¤ë¾ì¹ç¤Ï¡¢GCC ¤Ï¥Ç¥Õ¥©¥ë¥È¤Î¥í¥±¡¼¥ë¤ÇÄêµÁ¤µ¤ì¤ë mblen ¤È mbtowc ¤ò»È¤Ã¤Æ¡¢¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤òǧ¼±¤·ÊÑ´¹¤¹¤ë¡£
protoize ¥×¥í¥°¥é¥à¤Ï¡¢GNU C ¤ÎÁªÂòŪ¤ÊÉôʬ¤Ç¤¢¤ë¡£¤³¤ì¤ò»È¤Ã¤Æ¥×¥í¥È¥¿¥¤¥×Àë¸À¤ò¥×¥í¥°¥é¥à¤ËÄɲ乤뤳¤È¤¬¤Ç¤¡¢°ì¤Ä¤ÎÌÌ¤Ç¥×¥í¥°¥é¥à¤ò ANSI C ¤ËÊÑ´¹¤¹¤ë¡£Ãç´Ö¤Î¥×¥í¥°¥é¥à unprotoize ¤Ï¡¢¤½¤ÎµÕ¤ò¹Ô¤Ê¤¦¡£¸«¤Ä¤«¤Ã¤¿¥×¥í¥È¥¿¥¤¥×Àë¸À¤«¤é°ú¿ô·¿¤ò¼è¤ê½ü¤¯¡£
¤³¤Î¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ï¡¢¥³¥Þ¥ó¥É¹Ô°ú¿ô¤È¤·¤Æ°ìÁȤΥ½¡¼¥¹¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤ÎÆó¤Ä¤ÎÊÑ´¹¥×¥í¥°¥é¥à¤Ï¡¢¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤É¤ó¤Ê´Ø¿ô¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¤òÄ´¤Ù¤ë¤³¤È¤«¤é»Ï¤á¤ë¡£foo ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ½¸¤á¤é¤ì¤¿¾ðÊóÍÕ¡¢foo.X ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Ë¥»¡¼¥Ö¤µ¤ì¤ë¡£
¤³¤ÎÁöºº¤Î¸å¤Ë¼ÂºÝ¤ÎÊÑ´¹¤ò¹Ô¤Ê¤¦¡£»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤ÏÁ´¤ÆÊÑ´¹Âоݤλñ³Ê¤ò»ý¤Ä¡£¤½¤ì¤«¤é¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë(¥½¡¼¥¹¤Ç¤¢¤ìñ¤Ê¤ë¥Ø¥Ã¥À¤Ç¤¢¤ì)¤âƱÍͤ˻ñ³Ê¤ò»ý¤Ä¡£
¤·¤«¤·¡¢»ñ³Ê¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤¬Á´¤ÆÊÑ´¹¤µ¤ì¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢protoize ¤È unprotoize ¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë¥½¡¼¥¹¤È¥Ø¥Ã¥À¤À¤±¤òÊÑ´¹¤¹¤ë¡£ÊÑ´¹¤¹¤Ù¤¥Õ¥¡¥¤¥ë¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê¤òÄɲ乤ë¤Ë¤Ï¡¢-d directory ¥ª¥×¥·¥ç¥ó¤ò»È¤¨¤ÐÎɤ¤¡£¤Þ¤¿¡¢ÆÃÄê¤Î¥Õ¥¡¥¤¥ë¤ò½ü³°¤¹¤ë¤Ë¤Ï¡¢-x file ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¡£¥Õ¥¡¥¤¥ë¤Ï¡¢»ñ³Ê¤ò»ý¤Á¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤¬»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê̾¤Î°ì¤Ä¤Ë¥Þ¥Ã¥Á¤·¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î̾Á°¤¬½ü³°¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¡¢ÊÑ´¹¤µ¤ì¤ë¡£
protoize ¤¬¹Ô¤Ê¤¦´ðËÜŪ¤ÊÊÑ´¹¤Ï¡¢¤Û¤È¤ó¤É¤Î´Ø¿ôÄêµÁ¤È´Ø¿ô¤ÎÀë¸À¤ò¡¢°ú¿ô¤Î·¿¤ò»ØÄꤹ¤ë¤è¤¦¤Ë½ñ¤´¹¤¨¤ë¤³¤È¤Ç¤¢¤ë¡£½ñ¤´¹¤¨¤¬¹Ô¤Ê¤ï¤ì¤Ê¤¤¤Î¤Ï¡¢varargs ´Ø¿ô¤À¤±¤Ç¤¢¤ë¡£
protoize ¤Ï¥ª¥×¥·¥ç¥ó¤Ç¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤Ë¥×¥í¥È¥¿¥¤¥×Àë¸À¤ò¤Þ¤È¤á¤ÆÁÞÆþ¤·¡¢´Ø¿ô¤ÎÄêµÁ¤ÎÁ°¤Ë¸½¤ì¤ë¸Æ¤Ó½Ð¤·¤ÇÍøÍѤǤ¤ë¤è¤¦¤Ë¤¹¤ë¡£¤¢¤ë¤¤¤Ï¡¢Ì¤ÄêµÁ¤Î´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤ë¥Ö¥í¥Ã¥¯Æâ¤Ç¥Ö¥í¥Ã¥¯¥¹¥³¡¼¥×¤Î¥×¥í¥È¥¿¥¤¥×Àë¸À¤òÁÞÆþ¤¹¤ë¤³¤È¤â¤Ç¤¤ë¡£
unprotoize ¤¬¹Ô¤Ê¤¦´ðËÜŪ¤ÊÊÑ´¹¤Ï¡¢¤Û¤È¤ó¤É¤Î´Ø¿ô¤ÎÀë¸À¤«¤é¡¢°ú¿ô¤Î·¿¤ò¼è¤ê½ü¤¯¤è¤¦¤Ë½ñ¤´¹¤¨¤ë¤³¤È¤È´Ø¿ôÄêµÁ¤ò ANSI °ÊÁ°¤Î¸Å¤¤·Á¼°¤Ë½ñ¤´¹¤¨¤ë¤³¤È¤Ç¤¢¤ë¡£
¤É¤Á¤é¤ÎÊÑ´¹¥×¥í¥°¥é¥à¤â¡¢ÊÑ´¹ÉÔ²Äǽ¤Ê´Ø¿ô¤ÎÀë¸À¤äÄêµÁ¤¬¤¢¤ë¤È·Ù¹ð¤ò½Ð¤¹¡£-q ¤ò»ØÄꤹ¤ë¤È¡¢¤³¤Î·Ù¹ð¤ò½Ð¤µ¤Ê¤¤¤è¤¦¤Ë¤Ç¤¤ë¡£
protoize ¤ä unprotoize ¤«¤é¤Î½ÐÎϤϡ¢¸µ¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤òÃÖ¤´¹¤¨¤ë¡£¸µ¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ï¡¢.save ¤Ç½ª¤ï¤ë¥Õ¥¡¥¤¥ë̾¤ËÃÖ¤´¹¤¨¤é¤ì¤ë¡£´û¤Ë .save ¤¬¤Ä¤¤¤¿¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Æ¤¤¤ì¤Ð¡¢Êѹ¹Á°¤Î¥Õ¥¡¥¤¥ë¤Ïñ¤Ë¼Î¤Æ¤é¤ì¤ë¡£
protoize ¤È unprotoize ¤Ï¤É¤Á¤é¤â¡¢GCC ¼«¿È¤Ë°Í¸¤·¤Æ¤¤¤ë¡£GCC ¤ò»È¤Ã¤Æ¥×¥í¥°¥é¥à¤òÁöºº¤·¡¢´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤ò½¸¤á¤Æ¤¤¤ë¤Î¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¡¢GCC ¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤Ê¤¤¤È¡¢¤É¤Á¤é¤Î¥×¥í¥°¥é¥à¤âưºî¤·¤Ê¤¤¡£
°Ê²¼¤Ë¡¢protoize ¤È unprotoize ¤Ç»È¤¨¤ë¥ª¥×¥·¥ç¥ó¤Îɽ¤ò¼¨¤¹¡£¤É¤Î¥ª¥×¥·¥ç¥ó¤â¡¢ÆÃ¤Ë½Ò¤Ù¤Æ¤¤¤Ê¤¤¸Â¤ê¡¢¤É¤Á¤é¤Î¥×¥í¥°¥é¥à¤Ç¤â»È¤¨¤ë¡£
-B directory
SYSCALLS.c.X ¤ò¡¢Ä̾ï¤Î¥Ç¥£¥ì¥¯¥È¥ê(ÉáÄ̤Ï/usr/local/lib)¤ÎÂå¤ï¤ê¤Ë¡¢directory ¤«¤éõ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢É¸½à¤Î¥·¥¹¥Æ¥à´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Î¥×¥í¥È¥¿¥¤¥×¾ðÊ󤬯þ¤Ã¤Æ¤¤¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï protoize ¤Ë¤À¤±Å¬ÍѤµ¤ì¤ë¡£
-c compilation-options
gcc ¤ò¼Â¹Ô¤·¤Æ .X ¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤È¤¤Î¥ª¥×¥·¥ç¥ó¤È¤·¤Æ»È¤¦¡£¤µ¤é¤ËÆÃÊ̤ʥª¥×¥·¥ç¥ó -aux-info
¤¬¾ï¤ËÅϤµ¤ì¡¢gcc ¤Ë .X ¥Õ¥¡¥¤¥ë¤ò½ñ¤½Ð¤¹¤³¤È¤ò»Ø¼¨¤¹¤ë¡£
¥³¥ó¥Ñ¥¤¥ëÍѤΥª¥×¥·¥ç¥ó·²¤Ï¡¢°ì¸Ä¤Î°ú¿ô¤È¤·¤Æ protoize ¤äunprotoize ¤ËÍ¿¤¨¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤ËÃí°Õ¡£gcc ¤Î¥ª¥×¥·¥ç¥ó¤òÊ£¿ô»ØÄꤷ¤¿¤¤¤È¤¤Ï¡¢¥³¥ó¥Ñ¥¤¥ë¥ª¥×¥·¥ç¥ó·²Á´ÂΤò°úÍÑÉä¤Ç°Ï¤ó¤Ç¡¢¥·¥§¥ë¤Ë°ì¸Ä¤Î°ú¿ô¤Ë¸«¤¨¤ë¤è¤¦¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
»ÈÍѤǤ¤Ê¤¤ gcc ¤ÎÆÃÄê¤Î¥ª¥×¥·¥ç¥ó¤¬¤¤¤¯¤Ä¤«¤¢¤ë¡£¤½¤ì¤ò»È¤¦¤È½ÐÎϤμïÎबÀµ¤·¤¯¤Ê¤¯¤Ê¤ë¡£¤½¤Î¥ª¥×¥·¥ç¥ó¤È¤Ï¡¢-g¡¢-O¡¢-c¡¢-S¡¢-o ¤Ç¤¢¤ë¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤ò compilation-options ¤ËÆþ¤ì¤ë¤È¡¢¤½¤ì¤Ï̵»ë¤µ¤ì¤ë¡£
-C
.c ¤Ç¤Ï¤Ê¤¯ .C ¤Ç½ª¤ï¤ë¤è¤¦¤Ë¤¹¤ë¡£¤³¤ì¤Ï¡¢C ¤Î¥×¥í¥°¥é¥à¤ò C++ ¤ËÊÑ´¹¤¹¤ë¤È¤¤Ë»È¤¨¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï protoize ¤Ç¤Î¤ß»ÈÍѤǤ¤ë¡£
-g
protoize ¤Ç¤Î¤ß»ÈÍѤǤ¤ë¡£
-i string
protoize ¤Ç¤Î¤ß»ÈÍѤǤ¤ë¡£
unprotoize ¤Ï¡¢´Ø¿ô¤Î¥×¥í¥È¥¿¥¤¥×·Á¼°¤ÎÄêµÁ¤ò¸Å¤¤·Á¼°¤Î´Ø¿ôÄêµÁ¤ËÊÑ´¹¤¹¤ë¡£¸Å¤¤·Á¼°¤Ç¤Ï¡¢°ú¿ô¤Ï°ú¿ô¥ê¥¹¥È¤ÈºÇ½é¤Î { ¤Î´Ö¤ÇÀë¸À¤µ¤ì¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢unprotoize ¤Ï¶õÇò5¸Ä¤Ç¥¤¥ó¥Ç¥ó¥È¤¹¤ë¡£Âå¤ï¤ê¤Ë¶õÇò°ì¸Ä¤Ç¥¤¥ó¥Ç¥ó¥È¤·¤¿¤¤¾ì¹ç¤Ï¡¢-i " " ¤È¤¹¤ë¡£
-k
.X ¥Õ¥¡¥¤¥ë¤òÊݸ¤¹¤ë¡£ÉáÄ̤ϡ¢ÊÑ´¹¤¬½ª¤ï¤Ã¤¿¸å¤Ëºï½ü¤µ¤ì¤ë¡£
-l
protoize ¤Ë -l ¤ò»ØÄꤹ¤ë¤È¡¢Àë¸À̵¤·¤Ç´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë¥Ö¥í¥Ã¥¯Ëè¤Ë¤½¤Î´Ø¿ô¤Î¥×¥í¥È¥¿¥¤¥×Àë¸À¤òÁÞÆþ¤¹¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢protoize ¤Ç¤À¤±»È¤¨¤ë¡£
-n
-n ¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¹Ô¤Ê¤ï¤ì¤¿¤Ç¤¢¤í¤¦ÊÑ´¹¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òɽ¼¨¤¹¤ë¤À¤±¤Ç¤¢¤ë¡£
-N
.save ¥Õ¥¡¥¤¥ë¤òºî¤é¤Ê¤¤¡£¸µ¤Î¥Õ¥¡¥¤¥ëñ¤Ëºï½ü¤µ¤ì¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ÏÃí°Õ¤·¤Æ»È¤¦¤³¤È¡£
-p program
gcc ¤È¤¤¤¦Ì¾Á°¤¬»È¤ï¤ì¤ë¡£
-q
-v
gcc ¤Î -v ¤ÈƱ¤¸¤è¤¦¤Ë¡¢¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤¹¤ë¡£¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Î¤¦¤Á¤Î°ì¤Ä¤À¤±ÆÃÊ̤ʥ³¥ó¥Ñ¥¤¥é¥ª¥×¥·¥ç¥ó¤òɬÍפȤ¹¤ë¾ì¹ç¤Ï¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ë .X ¥Õ¥¡¥¤¥ë¤òÆÃÊ̤ËÀ¸À®¤¹¤ëɬÍפ¬¤¢¤ë¡£¤½¤ì¤Ë¤Ï¡¢¤½¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¡¢gcc ¤ËŬÀڤʥª¥×¥·¥ç¥ó¤È -aux-info¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤Æ¼Â¹Ô¤¹¤ë¡£¤½¤Î¸å¡¢protoize ¤òÁ´¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¼Â¹Ô¤¹¤ë¡£protoize ¤Ï´û¤Ë¸ºß¤¹¤ë .X ¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ¹¤ë¡£¤½¤ì¤¬¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤è¤ê¿·¤·¤¤¤«¤é¤Ç¤¢¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ë¡£
gcc -Dfoo=bar file1.c -aux-info protoize *.c
protoize ¥³¥Þ¥ó¥É¤Î¤½¤Î¾¤Î»È¤¤Êý¤Î¾ì¹ç¤Ï¡¢ÆÃÊ̤ʥե¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ë¡£¤³¤ì¤Ï¡¢.X ¥Õ¥¡¥¤¥ë¤¬´û¤Ë¸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ç¤âɬÍפǤ¢¤ë¡£¤½¤¦¤·¤Æ¤ª¤«¤Ê¤¤¤È¡¢ÊÑ´¹¤µ¤ì¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
protoize ¤ò¤¦¤Þ¤¯»È¤¤¤³¤Ê¤¹¤¿¤á¤Î¤µ¤é¤Ê¤ë¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢See Protoize Caveats.
°Ê²¼¤Î¾ðÊó¤Î¤Û¤È¤ó¤É¤Ï¡¢¸Å¤¤¤â¤Î¤Ç¡¢EGCS ¤Î¥¤¥ó¥¹¥È¡¼¥ë¼ê½ç¤ÇÃÖ¤´¹¤¨¤é¤ì¤Æ¤¤¤ë¡£Îò»ËŪ¤Ê»²¾ÈÌÜŪ¤Ç¤Î¤ß¤³¤³¤ËÄ󶡤¹¤ë¡£
configure ¤¬ºî¤ê½Ð¤¹¥Õ¥¡¥¤¥ëãcollect2 ¤Î»ÅÁȤߤ³¤³¤Ç¤Ï¡¢GNU CC ¤ò GNU ¥·¥¹¥Æ¥à¡¢¤¢¤ë¤¤¤Ï Unix ¥·¥¹¥Æ¥à¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤¿¤á¤Î¼ê½ç¤òÀâÌÀ¤¹¤ë¡£VMS ¤Î¾ì¹ç¤Ï¡¢VMS Install ¤ò»²¾È¤Î¤³¤È¡£¤³¤ÎÀá¤Ç¤Ï¡¢¥½¡¼¥¹¤ÎÃÖ¤«¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ç¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤Ê¤¦¤³¤È¤ò²¾Äꤹ¤ë¡£¥½¡¼¥¹¥Ç¥£¥ì¥¯¥È¥ê¤È¤ÏÊ̤Υǥ£¥ì¥¯¥È¥ê¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢Other Dir ¤ò»²¾È¤Î¤³¤È¡£
MSDOS ¤Ç¤Ï¡¢GNU C ¼«¿È¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£GNU C ¼«¿È°Ê³°¤Î MSDOS ¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¡¢´°Á´¤Ê DJGPP ¥Ñ¥Ã¥±¡¼¥¸¤òÆþ¼ê¤¹¤ëɬÍפ¬¤¢¤ë¡£DJGPP ¤Ï¡¢¥½¡¼¥¹¤À¤±¤Ç¤Ê¤¯¥Ð¥¤¥Ê¥ê¤ò´Þ¤ó¤Ç¤ª¤ê¡¢¤µ¤é¤Ë¾¤ËɬÍפʥġ¼¥ë¤ä¥é¥¤¥Ö¥é¥ê¤òÁ´¤Æ´Þ¤ó¤Ç¤¤¤ë¡£
make distclean ¤ò¼Â¹Ô¤·¤ÆÀµ¤·¤¯¤Ê¤¤²ÄǽÀ¤Î¤¢¤ë¥Õ¥¡¥¤¥ë¤òÁ´¤Æ¾Ã¤¹¤è¤¦¤Ë¤¹¤ë¡£¤³¤Î½èÍý¤Ç¾Ã¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¤Î°ì¤Ä¤Ë Makefile ¤¬¤¢¤ë¡£make distclean ¤ò¼Â¹Ô¤·¤Æ¡¢Makefile ¤¬Â¸ºß¤·¤Ê¤¤¤È¤¤¤¦¥¨¥é¡¼¤¬½Ð¤¿¤é¡¢¶²¤é¤¯¡¢¤¹¤Ç¤Ë¥Õ¥¡¥¤¥ë¤Î¾Ãµî¤¬Å¬Àڤ˹Ԥʤï¤ì¤Æ¤¤¤¿¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
PATH ¤Ç¡¢É¬¤º /usr/bin ¤¬/usr/ucb¤ÎÁ°¤ËÍè¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¡£/usr/ucb ¤Ë¤¢¤ë cc ¤Ï¡¢¥Ð¥°¤¬¤¢¤ë¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¡£
c-parse.c ¤È cexp.c ¤¬c-parse.y ¤È cexp.y ¤è¤ê¤â¿·¤·¤¯¡¢.y ¥Õ¥¡¥¤¥ë¤òÊѹ¹¤¹¤ëͽÄ꤬¤Ê¤±¤ì¤Ð¡¢¤³¤ì¤ÏɬÍפʤ¤¡£)
"Sept 8, 1998" ¤è¤ê¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Î Bison ¤Ï¡¢c-parse.c ¤òÀµ¤·¤¯À¸À®¤Ç¤¤Ê¤¤¡£
as¡¢ld Åù¤ÎŬÀÚ¤Ê̾Á°¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢GNU CC ¤¬ enquire ¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤ËŬÀڤʥġ¼¥ë¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ë¡£
¥·¥¹¥Æ¥àɸ½à¤Î¥Ä¡¼¥ë¤è¤ê¤âÀè¤ËÍè¤ë¤è¤¦¤ËÀßÄꤷ¤¿¤¦¤¨¤Ç¡¢°ú¤Â³¤¯¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤Ê¤¦¤³¤È¤â¤Ç¤¤ë¡£
configure ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô¤µ¤»¤ë¤È¤¤Ë¹Ô¤Ê¤¦¡£
¥Ó¥ë¥É¥Þ¥·¥ó¤È¤Ï¡¢ÆÉ¼Ô¤¬»È¤Ã¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤¢¤ê¡¢¥Û¥¹¥È¥Þ¥·¥ó¤È¤Ï¡¢¤Ç¤¤¿¥³¥ó¥Ñ¥¤¥é¤ò¼Â¹Ô¤µ¤»¤¿¤¤¥·¥¹¥Æ¥à(ÉáÄ̤ϥӥë¥É¥Þ¥·¥ó)¤Ç¤¢¤ê¡¢¥¿¡¼¥²¥Ã¥È¥Þ¥·¥ó¤È¤Ï¤½¤ì¸þ¤±¤Ë¥³¥ó¥Ñ¥¤¥é¤Ë¥³¡¼¥É¤òÀ¸À®¤µ¤»¤¿¤¤¥·¥¹¥Æ¥à¤Î¤³¤È¤Ç¤¢¤ë¡£
¥³¥ó¥Ñ¥¤¥é¼«¿È¤¬Æ°ºî¤¹¤ë¥Þ¥·¥ó¸þ¤±¤Î¥³¡¼¥É¤òÀ¸À®¤¹¤ë¥³¥ó¥Ñ¥¤¥é(¥Í¥¤¥Æ¥£¥Ö¥³¥ó¥Ñ¥¤¥é)¤ò¹½ÃÛ¤¹¤ë¾ì¹ç¤Ï¡¢ÉáÄÌ¤Ï configure ¤Ë²¿¤â°ú¿ô¤ò»ØÄꤹ¤ëɬÍפϤʤ¤¡£µ¡¼ï¤ò¿ä¬¤·¡¢¤½¤ì¤ò¹½ÃÛ¥Þ¥·¥ó¤ª¤è¤Ó¥Û¥¹¥È¥Þ¥·¥ó¡¢¥¿¡¼¥²¥Ã¥È¥Þ¥·¥ó¤È¤·¤Æ»È¤¦¡£¤³¤Î¤¿¤á¡¢configure ¤¬º£¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ò¿ä¬¤Ç¤¤Ê¤«¤Ã¤¿¤ê¡¢¿ä¬¤¬´Ö°ã¤Ã¤Æ¤¤¤Ê¤¤¸Â¤ê¡¢¥Í¥¤¥Æ¥£¥Ö¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¤È¤¤Ë¤Ï¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפ¬¤Ê¤¤¡£
¿ä¬¤¬¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¾ì¹ç¤Ï¡¢¹½ÃÛ¥Þ¥·¥ó¤Î ¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó̾
¤ò --host ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¡£¥Û¥¹¥È¤È¥¿¡¼¥²¥Ã¥È¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¥Û¥¹¥È¥Þ¥·¥ó¤ÈƱ¤¸¤Ë¤Ê¤ë¡£(¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¾ì¹ç¤Ï¡¢Cross-Compiler¡£)
°Ê²¼¤ËÎã¤ò¼¨¤¹¡£
./configure --host=sparc-sun-sunos4.1
¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó̾¤Ï¡¢Àµµ¬Ì¾¤Ç¤â¾Êά·Á¤Ç¤âÎɤ¤¡£
¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ÎÀµµ¬Ì¾¤Ï»°¤Ä¤ÎÉôʬ¤ò¥À¥Ã¥·¥å¤Ç¶èÀڤ俤â¤Î¤«¤é¤Ê¤ë¡£cpu-company-system ¤È¤¤¤¦·Á¼°¤Ë¤Ê¤ë¡£(»°¤Ä¤ÎÉôʬ¤Ï¤µ¤é¤Ë¤½¤ÎÃæ¤Ë¥À¥Ã¥·¥å¤ò´Þ¤ó¤Ç¤âÎɤ¤¡£configure
¤Ï¡¢¤É¤Î¥À¥Ã¥·¥å¤¬¤É¤ÎÌò³ä¤ò²Ì¤¿¤¹¤«¤ò¶èÊ̤Ǥ¤ë¡£)
Î㤨¤Ð¡¢m68k-sun-sunos4.1 ¤Ï Sun 3 ¤ò»ØÄꤹ¤ë¡£
¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Î°ìÉô¤ò¥Ë¥Ã¥¯¥Í¡¼¥à¤Þ¤¿¤ÏÊÌ̾¤ÇÃÖ¤´¹¤¨¤ë¤³¤È¤â¤Ç¤¤ë¡£Î㤨¤Ð¡¢sun3 ¤Ï m68k-sun ¤òɽ¤¹¤Î¤Ç¡¢sun3-sunos4.1 ¤È¤·¤Æ¤â Sun 3 ¤ò»ØÄꤷ¤¿¤³¤È¤Ë¤Ê¤ë¡£¤³¤ì¤ò¤µ¤é¤Ë´Êñ¤Ë¤·¤Æ sun3-sunos ¤È¤·¤Æ¤âÎɤ¤¡£¤Ê¤¼¤Ê¤é¡¢SunOS ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï¥Ç¥Õ¥©¥ë¥È¤¬¥Ð¡¼¥¸¥ç¥ó 4 ¤Ç¤¢¤ë¤È²¾Äꤵ¤ì¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë¡£
¥·¥¹¥Æ¥à¥¿¥¤¥×¤Î¤É¤ì¤Ë¤Ç¤â¡¢¤½¤·¤Æ CPU ¥¿¥¤¥×¤Î´ö¤Ä¤«¤Ë¤Ï¤½¤Î¸å¤Ë¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£ÂçÉôʬ¤Î¾ì¹ç¤Ï¡¢¥Ð¡¼¥¸¥ç¥ó¤Ï´Ø·¸¤Ê¤¯¡¢Ìµ»ë¤µ¤ì¤ë¡£¤³¤Î¤¿¤á¡¢ÃΤäƤ¤¤ë¾ì¹ç¤Ë¤Ï¥Ð¡¼¥¸¥ç¥ó¤ò»ØÄꤷ¤Æ¤âÎɤ¤¡£
¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó̾¤Î°ìÍ÷¤È¿¤¯¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤ÎÃí°Õ½ñ¤¤Ë¤Ä¤¤¤Æ¤Ï¡¢Configurations ¤ò»²¾È¤Î¤³¤È¡£
configure ¤ò¼Â¹Ô¤¹¤ë¤È¤¡¢¥Ï¡¼¥É¥¦¥§¥¢¤È¥½¥Õ¥È¥¦¥§¥¢¤òµ½Ò¤¹¤ëÆÃÄê¤Î¥ª¥×¥·¥ç¥ó¤òÄɲäǻØÄꤹ¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤¡£¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Î°ìÉô¤òÆÈΩ¤Ë»ØÄê¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¤½¤ì¤Ï¡¢--with-gnu-as¡¢--with-gnu-ld¡¢--with-stabs¡¢--nfp ¤Ç¤¢¤ë¡£
--with-gnu-as
configure ¤Î¼Â¹Ô»þ¤Ë --with-gnu-as ¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤½¤Î»Ý¤òÀë¸À¤¹¤ëɬÍפ¬¤¢¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤â¡¢GAS ¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ï¹Ô¤Ê¤ï¤Ê¤¤¡£GNU CC ¤Î½ÐÎϤò GAS ¤Ç½èÍý¤Ç¤¤ë¤è¤¦¤Ë½¤Àµ¤¹¤ë¤À¤±¤Ç¤¢¤ë¡£GAS ¤Î¹½Ãۤȥ¤¥ó¥¹¥È¡¼¥ë¤ÏÆÉ¼Ô¤ÎÀÕǤ¤Ç¤¢¤ë¡£
µÕ¤Ë¡¢GAS ¤ò»È¤¦¤³¤È¤ò´õ˾¤»¤º¡¢¹½ÃÛ»þ¤Ë --with-gnu-as ¤ò»ØÄꤷ¤Ê¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢GAS ¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤¹¤ë¤Î¤ÏÆÉ¼Ô¤ÎÀÕǤ¤Ç¤¢¤ë¡£GNU CC ¤Ï¡¢as ¤È¤¤¤¦Ì¾Á°¤Î¥×¥í¥°¥é¥à¤ò¿§¡¹¤Ê¥Ç¥£¥ì¥¯¥È¥ê¤«¤éõ¤¹¡£¤â¤·¸«¤Ä¤±¤¿¥×¥í¥°¥é¥à¤¬ GAS ¤Ç¤¢¤ì¤Ð¡¢GAS ¤¬¼Â¹Ô¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡£GNU CC ¤¬»È¤Ã¤Æ¤¤¤ë¥¢¥»¥ó¥Ö¥é¤¬¤É¤³¤Ë¤¢¤ë¤Î¤«¤ï¤«¤é¤Ê¤¤¾ì¹ç¤Ï¡¢-v ¤ò»ØÄꤷ¤Æ¼Â¹Ô¤·¤Æ¤ß¤è¤¦¡£
GAS ¤ò»È¤¦¤«¤É¤¦¤«¤Ë¤è¤Ã¤Æ°ã¤¤¤¬À¸¤¸¤ë¥·¥¹¥Æ¥à¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë¡£hppa1.0-any-any¡¢ hppa1.1-any-any¡¢i386-any-sysv¡¢ i386-any-isc¡¢
i860-any-bsd¡¢ m68k-bull-sysv¡¢ m68k-hp-hpux¡¢m68k-sony-bsd¡¢
m68k-altos-sysv¡¢ m68000-hp-hpux¡¢ m68000-att-sysv¡¢any-lynx-lynxos¡¢mips-any)¡£¤³¤ì¤é°Ê³°¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢--with-gnu-as ¤Ï²¿¤Î¸ú²Ì¤â¤Ê¤¤¡£
¾å¤ËÎóµó¤·¤¿¥·¥¹¥Æ¥à¤Ç¤Ï(HP-PA, i386 ¾å¤Î ISC¡¢mips-sgi-irix5.* ¤ò½ü¤¯)¡¢GAS ¤ò»È¤¦¾ì¹ç¤Ë¤Ï GNU ¥ê¥ó¥«¤â»È¤¦¤Ù¤¤Ç¤¢¤ë(--with-gnu-ld ¤ò»ØÄꤹ¤ë)¡£
--with-gnu-ld
--with-gnu-ld ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç¤Ï¡¢GNU ¥ê¥ó¥«¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤è¤¦¤È¤Ï¤·¤Ê¤¤¡£Ã±¤Ë¡¢GNU CC ¤Î¿¶¤ë¤Þ¤¤¤ò GNU ¥ê¥ó¥«¤È¶¨Ä´¤·¤ÆÆ°ºî¤¹¤ë¤è¤¦¤Ë½¤Àµ¤¹¤ë¤À¤±¤Ç¤¢¤ë¡£
--with-stabs
Ä̾GNU CC ¤Ï¡¢ECOFF ·Á¼°¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤ò¥Ç¥Õ¥©¥ë¥È¤Ç»È¤¦¡£BSD stabs ¤ÎÊý¤¬Îɤ±¤ì¤Ð¡¢GNU CC ¤ò¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤¹¤ëºÝ¤Ë--with-stabs ¤ò»ØÄꤹ¤ë¡£
GNU CC ¤ò¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤¹¤ë¤µ¤¤¤Ë¡¢¤É¤Á¤é¤ò¥Ç¥Õ¥©¥ë¥È¤È¤·¤ÆÁª¤ó¤À¤«¤Ë´Ø¤ï¤é¤º¡¢¥æ¡¼¥¶¤Ï -gcoff ¥ª¥×¥·¥ç¥ó¤È -gstabs+
¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¡¢ÆÃÄê¤Î¥³¥ó¥Ñ¥¤¥ëËè¤Ë¥Ç¥Ð¥Ã¥°¾ðÊó·Á¼°¤òÌÀ¼¨Åª¤Ë»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
--with-stabs ¤Ï¡¢i386 ¾å¤Î ISC ¥·¥¹¥Æ¥à¤Ç¤Ï¡¢--with-gas ¤â»ØÄꤵ¤ì¤¿¤È¤¤Ë͸ú¤Ë¤Ê¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¡¢COFF ½ÐÎϤÎÃæ¤ËËä¤á¹þ¤à·Á¤Î stabs ¥Ç¥Ð¥Ã¥°¾ðÊó¤ò»È¤¦¤³¤È¤òÁªÂò¤¹¤ë¡£¤³¤Î¼ïÎà¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤Ï C++ ¤â¥µ¥Ý¡¼¥È¤¹¤ë¡£Ä̾ï¤Î COFF ¥Ç¥Ð¥Ã¥°¾ðÊó¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¡£
--with-stabs ¤Ï¡¢i386 ¾å¤Î SVR4 ¤Ç¤â͸ú¤Ç¤¢¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¡¢ELF ½ÐÎϤÎÃæ¤ËËä¤á¹þ¤à·Á¤Î stabs ¥Ç¥Ð¥Ã¥°¾ðÊó¤ò»È¤¦¤³¤È¤òÁªÂò¤¹¤ë¡£C++ ¥³¥ó¥Ñ¥¤¥é¤Ï¸½ºß(2.6.0)¡¢i386 ¾å¤Î SVR4 ¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤ÇÄ̾ï»È¤ï¤ì¤Æ¤¤¤ë DWARF ¥Ç¥Ð¥Ã¥°¾ðÊó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢stabs ¤òưºî¤¹¤ëÁªÂò»è¤È¤Ê¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢gas ¤È gdb ¤òɬÍפȤ¹¤ë¡£Ä̾ï¤Î SVR4 ¤Î¥Ä¡¼¥ë¤Ç¤Ï¡¢stabs ¤òÀ¸À®¤·¤¿¤ê¡¢²ò¼á¤Ç¤¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
--nfp
m68k-sun-sunosn ¤ä m68k-isi-bsd ¤¬¤¢¤ë¡£Â¾¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢º£¤Î¤È¤³¤í --nfp ¤Ï²¿¤Î¸ú²Ì¤â¤Ê¤¤¤¬¡¢¤½¤ì¤ò»È¤Ã¤Æ°ã¤¤¤ò½Ð¤¹¤ÈÊØÍø¤Ê¥·¥¹¥Æ¥à¤¬¤ª¤½¤é¤¯Â¾¤Ë¤â¤¢¤ë¤À¤í¤¦¡£
--enable-haifa
--disable-haifa
--enable-haifa ¤ò»ØÄꤹ¤ë¤È¡¢¤¢¤ë¼Â¸³Åª¤ÊÌ¿Î᥹¥±¥¸¥å¡¼¥é(IBM Haifa Äó¶¡)¤ò»È¤¦¤è¤¦¤Ë¤¹¤ë¡£¤³¤ì¤Ë¤è¤êÀ¸À®¤µ¤ì¤ë¥³¡¼¥É¤¬Îɤ¯¤Ê¤ë¤³¤È¤â¤¢¤ì¤Ð¡¢Îɤ¯¤Ê¤é¤Ê¤¤¤³¤È¤â¤¢¤ë¡£Îɤ¯¤Ê¤ë¤³¤È¤¬Ê¬¤«¤Ã¤Æ¤¤¤ë¤¤¤¯¤Ä¤«¤Îµ¡¼ï¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤³¤Îµ¡Ç½¤¬Í¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¤½¤Î¾ì¹ç¡¢Ìµ¸ú¤Ë¤¹¤ë¤Ë¤Ï --disable-haifa ¥ª¥×¥·¥ç¥ó¤ò»È¤¨¤ÐÎɤ¤¡£configure ¤ò¼Â¹Ô¤¹¤ë¤È¡¢Haifa ¥¹¥±¥¸¥å¡¼¥é¤¬Í¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤òɽ¼¨¤¹¤ë¡£
--enable-threads=type
posix ¤ò»ØÄꤹ¤ë¤³¤È¤Ç͸ú¤Ë¤Ê¤ë¡£type ¤Î²Äǽ¤ÊÃͤϡ¢single¡¢posix¡¢win32¡¢solaris¡¢irix¡¢mach ¤Ç¤¢¤ë¡£
--enable-checking
configure ¥¹¥¯¥ê¥×¥È¤Ï¡¢GNU CC ¤ËÅý¹ç¤µ¤ì¤ë¾¤Î¥³¥ó¥Ñ¥¤¥é¤ò¡¢¥½¡¼¥¹¥Ç¥£¥ì¥¯¥È¥ê¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤«¤éõ¤¹¡£Î㤨¤Ð¡¢C++ ¸þ¤±¤Î GNU ¥³¥ó¥Ñ¥¤¥é¤Ï¡¢G++ ¤È¸Æ¤Ð¤ì¤Æ¤ª¤ê¡¢cp ¤È¤¤¤¦¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë¡£configure ¤Ï Makefile ¤Ë¥ë¡¼¥ë¤òÁÞÆþ¤·¤Æ¡¢¤³¤ì¤é¤Î¥³¥ó¥Ñ¥¤¥é¤òÁ´¤Æ¹½ÃÛ¤¹¤ë¤è¤¦¤Ë¤¹¤ë¡£
°Ê²¼¤Ë¡¢configure ¤¬ÀßÄꤹ¤ë¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ»Ä¤é¤ºÀâÌÀ¤¹¤ë¡£ÉáÄ̤ϡ¢°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤ËÃí°Õ¤òʧ¤¦É¬ÍפϤʤ¤¡£
config.h ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤¬ºî¤é¤ì¤ë¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢ÆÉ¼Ô¤¬¥³¥ó¥Ñ¥¤¥é¤ò¼Â¹Ô¤¹¤ëµ¡¼ï¤ÎºÇ¾å°Ì¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë¤ò #include ¤Ç¼è¤ê¹þ¤à(see Config)¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¥Û¥¹¥Èµ¡¼ï¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òÄêµÁ¤¹¤ëÀÕǤ¤ò»ý¤Ä¡£tm.h ¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¡£
ºÇ¾å°Ì¥ì¥Ù¥ë¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë¤Ï¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥êconfig ¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¡£¤½¤Î̾Á°¤Ï¾ï¤Ë xm-something.h
¤Ç¤¢¤ë¡£ÉáÄÌ¤Ï xm-machine.h ¤Ç¤¢¤ë¤¬¡¢´ö¤Ä¤«Îã³°¤¬¤¢¤ë¡£
¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢config.h ¤òŬÀڤʥե¡¥¤¥ë¤ò»²¾È¤·¤Æ¤¤¤ë #include À©¸æ»Ò¤ò´Þ¤à¤è¤¦¤ËÀßÄꤹ¤ëɬÍפ¬¤¢¤ë¤À¤í¤¦¡£
tconfig.h ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬ºî¤é¤ì¤ë¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤ÎºÇ¾å°Ì¥ì¥Ù¥ë¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¤½¤Îµ¡¼ï¤Çưºî¤¹¤Ù¤¤¢¤ë¼ï¤Î¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤Ë»È¤ï¤ì¤ë¡£
tm.h ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬ºî¤é¤ì¤ë¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¥¿¡¼¥²¥Ã¥È¥Þ¥·¥ó¤Î¥Þ¥·¥óµ½Ò¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê config ¤ËÃÖ¤¯É¬Íפ¬¤¢¤ê¡¢¤½¤Î¥Õ¥¡¥¤¥ë̾¤Ï machine.h ¤Ç¤¢¤ë¤³¤È¤¬Â¿¤¤¡£--enable-nls
--disable-nls
--enable-nls ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤ÈÊì¹ñ¸ì¥µ¥Ý¡¼¥È(Native Language
Support, NLS)¤ò͸ú¤Ë¤¹¤ë¡£NLS ¤ò»È¤¦¤È¡¢GCC ¤Ï¡¢¹ç½°¹ñ¤Ç»È¤ï¤ì¤Æ¤¤¤ë±Ñ¸ì°Ê³°¤Î¸À¸ì¤Ç¿ÇÃÇ¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ¹¤ë¡£¥á¥Ã¥»¡¼¥¸¤òËÝÌõ¤·¤¿¤â¤Î¤Ï¤Þ¤ÀÍøÍѲÄǽ¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Î¼ç¤Ê¥æ¡¼¥¶¤Ï¡¢GCC ¤Î¿ÇÃÇ¥á¥Ã¥»¡¼¥¸¤òËÝÌõ¤·¤Æ¤¤¤ë¿Í¡¹¤Ç¤¢¤ê¡¢ËÝÌõºî¶È·ë²Ì¤Î³Îǧ¤Ë»È¤Ã¤Æ¤¤¤ë¡£°ìÅÙËÝÌõ¤¬Â·¤¨¤Ð¡¢Êì¹ñ¸ì¥µ¥Ý¡¼¥È¤ò¥Ç¥Õ¥©¥ë¥È¤Ç͸ú¤Ë¤¹¤ëͽÄê¤Ç¤¢¤ë¡£--disable-nls ¥ª¥×¥·¥ç¥ó¤Ç NLS ¤ò̵¸ú¤Ë¤Ç¤¤ë¡£
--with-included-gettext
gettext ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦¤³¤È¤ò¤Þ¤º»î¤ß¡¢¤½¤ì¤¬½¼Ê¬¤Ê¤â¤Î¤Ç¤Ê¤¤¾ì¹ç¤Ë¤À¤±¡¢GCC ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë GNU gettext ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦¡£--with-included-gettext ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ÉÕ°¤Î GNU gettext ¤òÍ¥À褵¤»¤ë¡£
--with-catgets
gettext ¤Ï¤Ê¤¤¤¬¡¢¤ä¤äÎô¤ë catgets ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ê¤é¤¢¤ë¤È¤¤¤¦¾ì¹ç¡¢GCC ¤Î¹½ÃÛ¼ê½ç¤Ç¤ÏÉáÄÌ¡¢catgets ¤Ï̵»ë¤·¤Æ¡¢Âå¤ï¤ê¤Ë GCC ¤ËÉÕ°¤ÎGNU gettext ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦¡£--with-catgets ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢¤½¤Î¾ì¹ç¤Ë¥Û¥¹¥È¤Î catgets ¤ò»È¤¦¡£
configure ¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë¾¤ÎÆÃÄê¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¡£
/usr/local/lib ¤Ç¤¢¤ë¡£¤É¤³¤«Ê̤ξì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤¤¤È¤¤Ï¡¢configure ¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë --prefix=dir ¤ò»ØÄꤹ¤ë¡£¤³¤³¤Ç dir ¤Ï¡¢°ì¤Ä¤ÎÎã³°¤ò½ü¤¯Á´¤Æ¤ÎÌÜŪ¤Ë¤Ä¤¤¤Æ¡¢/usr/local ¤ÎÂå¤ï¤ê¤Ë»È¤¦¥Ç¥£¥ì¥¯¥È¥ê̾¤Ç¤¢¤ë¡£°ì¤Ä¤ÎÎã³°¤È¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê /usr/local/include ¤Ç¤¢¤ê¡¢¥³¥ó¥Ñ¥¤¥é¤ò¤É¤³¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤«¤Ë´Ø·¸¤Ê¤¯¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¸¡º÷¤ò¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÂФ·¤Æ¹Ô¤Ê¤¦¡£¤³¤Î̾Á°¤ò¾å½ñ¤¤·¤¿¤¤¤È¤¤Ï¡¢°Ê²¼¤Î --with-local-prefix ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¡£¤³¤³¤Ç»ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤¹¤ëɬÍפϤʤ¤¤¬¡¢¤½¤Î¿Æ¥Ç¥£¥ì¥¯¥È¥ê¤Ï¸ºß¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
/usr/local/include ¤ÎÂå¤ï¤ê¤Ë¤Ë¡¢dir/include
¤ò¸¡º÷¤µ¤»¤¿¤¤¤È¤¤Ï¡¢--with-local-prefix=dir ¤ò»ØÄꤹ¤ë¡£
--with-local-prefix ¤ò»ØÄꤹ¤ë¤Î¤Ï¡¢ÆÉ¼Ô¤Î¥µ¥¤¥È¤¬¡¢¥µ¥¤¥È¸ÇͤΥե¡¥¤¥ë¤òÃÖ¤¯¾ì½ê¤Ë¤Ä¤¤¤ÆÊ̤ε¬Ìó(/usr/local °Ê³°)¤Ë¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤À¤±¤¹¤Ù¤¤Ç¤¢¤ë¡£
--with-local-prefix ¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï --prefix ¤ÎÃͤˤè¤é¤º¤Ë /usr/local ¤Ç¤¢¤ë¡£--prefix ¤ò»ØÄꤷ¤Æ¤â¡¢GNU CC ¤¬¥í¡¼¥«¥ë¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òõ¤·¤Ë¹Ô¤¯¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï±Æ¶Á¤¬¤Ê¤¤¡£¤³¤ì¤Ïľ´Ñ¤ËÈ¿¤¹¤ë¤è¤¦¤À¤¬¡¢ÏÀÍý¤ËŬ¤Ã¤Æ¤¤¤ë¡£
--prefix ¤ÎÌÜŪ¤Ï GNU CC ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¾ì½ê¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤¢¤ë¡£/usr/local/include ¤Ë¤¢¤ë¥í¡¼¥«¥ë¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ï--ÆÉ¼Ô¤¬¤½¤³¤Ë²¿¤«ÃÖ¤¤¤¿¾ì¹ç-GNU CC ¤Î°ìÉô¤Ç¤Ï¤Ê¤¤¤Î¤Ç¤¢¤ë¡£¤½¤³¤Ë¤¢¤ë¤â¤Î¤Ï¾¤Î¥×¥í¥°¥é¥à--¿ʬ¤¿¤¯¤µ¤ó¤Î¥×¥í¥°¥é¥à¤Î°ìÉô¤Ç¤¢¤ë¡£(GNU CC ¤Ï¼«Ê¬¼«Ê¬¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ï--prefix ¤ÎÃͤ˴ð¤Å¤¯Ê̤Υǥ£¥ì¥¯¥È¥ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¡£)
--with-local-prefix ¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤϡ¢--prefix ¤ÎÃͤ˴ؤï¤é¤º /usr/local ¤Ç¤¢¤ë¡£--prefix ¤ò»ØÄꤷ¤Æ¤â¡¢GNU CC ¤¬¥í¡¼¥«¥ë¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï±Æ¶Á¤·¤Ê¤¤¡£¤³¤ì¤Ï°ì¸«¤¹¤ë¤ÈÊѤ˻פ¨¤ë¤«¤â¤·¤ì¤Ê¤¤¤¬¡¢¼ÂºÝ¤Ë¤ÏÏÀÍýŪ¤Êµ¢·ë¤Ç¤¢¤ë¡£
--with-local-prefix ¤È¤·¤Æ /usr ¤ò»ØÄꤷ¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£--with-local-prefix ¤Ç»ØÄꤹ¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¥·¥¹¥Æ¥à¤Îɸ½à¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò°ìÀÚ´Þ¤ó¤Ç¤¤¤Æ¤Ï¤Ê¤é¤Ê¤¤¤Î¤Ç¤¢¤ë¡£¤â¤·´Þ¤ó¤Ç¤¤¤ë¤È¡¢¤¢¤ë¼ï¤Î¥×¥í¥°¥é¥à¤ÏÀµ¤·¤¯¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Ê¤¤(¤¢¤ë¥¿¡¼¥²¥Ã¥È¤Ç¤Î GNU Emacs ¤ò´Þ¤à)¡£¤³¤ì¤Ï¡¢fixincludes ¥¹¥¯¥ê¥×¥È¤Ë¤è¤ê½¤Àµ¤¬¤Ê¤µ¤ì¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤¤·¡¢Ãæ¿È¤ò¾Ã¤·¤Æ¤·¤Þ¤¦¤«¤é¤Ç¤¢¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤¦¿Íã¤Ï¡¢²¿¤Î¤¿¤á¤Î¥ª¥×¥·¥ç¥ó¤«¤ò¸í²ò¤·¤Æ»È¤Ã¤Æ¤¤¤ë¤È¤¤¤¦Ä§¸õ¤¬¤¢¤ë¡£¿Í¡¹¤Ï¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¡¢¤Þ¤ë¤Ç GNU CC ¤Î°ìÉô¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¾ì½ê¤ò»ØÄꤹ¤ë¤â¤Î¤Ç¤¢¤ë¤«¤Î¤è¤¦¤Ë»È¤Ã¤Æ¤¤¤ë¡£¿Í¡¹¤¬¤½¤¦¹Í¤¨¤ë¤Î¤Ï¡¢¤ª¤½¤é¤¯¡¢GNU CC ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤È¤¤Ë¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥ê¤¬¼ÂºÝ¤Ëºî¤é¤ì¤ë¤«¤é¤À¤í¤¦¡£
make LANGUAGES=c ¤ò¼Â¹Ô¤¹¤ë¡£
LANGUAGES=c ¤Ï¡¢C ¥³¥ó¥Ñ¥¤¥é¤Î¤ß¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤ò»ØÄꤹ¤ë¡£ÆÃ¤Ë»ØÄꤷ¤Ê¤±¤ì¤ÐÄ̾ï¤Ï¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¸À¸ìÁ´¤Æ¤Î¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¡£¸½ºß¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤Î¤Ï¡¢C¡¢C++¡¢Objective C ¤Ç¤¢¤ë¡£¤·¤«¤·¡¢GNU C ¥³¥ó¥Ñ¥¤¥é°Ê³°¤Î¾¤Î¥³¥ó¥Ñ¥¤¥é¤ò»È¤Ã¤Æ¹½ÃÛ¤¹¤ë¾ì¹ç¤Ë¡¢Àµ¤·¤¯Æ°ºî¤¹¤ë¤³¤È¤¬Êݾڤµ¤ì¤ë¤Î¤Ï C ¤À¤±¤Ç¤¢¤ë¡£¤µ¤é¤ËÉÕ¤±²Ã¤¨¤ë¤Ê¤é¡¢C °Ê³°¤Î¤â¤Î¤ò¤³¤Î¥¹¥Æ¡¼¥¸¤Ç¹½ÃÛ¤¹¤ë¤Î¤Ï»þ´Ö¤Î̵Â̤Ǥ¢¤ë¡£
°ìÈ̤ˡ¢¹½ÃÛ¤·¤¿¤¤¸À¸ì¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢°ú¿ô LANGUAGES="list" ¤òÄɲ乤롣¤³¤³¤Ç list ¤Ï¡¢c¡¢c++¡¢objective-c ¤Î¤¦¤Á¤«¤é°ì¤Ä°Ê¾åÁª¤ó¤Çʤ٤¿¤â¤Î¤Ç¤¢¤ë¡£GNU CC ¤Î¥½¡¼¥¹¥Ç¥£¥ì¥¯¥È¥ê¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ë²¿¤«ÄɲøÀ¸ì¤Î GNU ¥³¥ó¥Ñ¥¤¥é¤Î¥½¡¼¥¹¤ò»ý¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢¤½¤Î̾Á°¤ò¥ê¥¹¥È¤Ë»ØÄꤷ¤Æ¤âÎɤ¤¡£
insn-emit.c ¤Ç "statement not reached" ¤È¤¤¤¦·Ù¹ð¤¬½Ð¤ë¤«¤â¤·¤ì¤Ê¤¤¤¬¡¢Ìµ»ë¤·¤ÆÎɤ¤¡£¤½¤ì¤ÇÌäÂê¤Ï¤Ê¤¤¡£¤½¤ì¤«¤é¡¢genopinit.c ¤ä¡¢¤â¤·¤«¤¹¤ë¤È¤½¤ì°Ê³°¤Î¥Õ¥¡¥¤¥ë¤Ç¤â½Ð¤ë¤«¤âÃΤì¤Ê¤¤¤¬¡¢"unknown escape sequence" ¤È¤¤¤¦·Ù¹ð¤âÌäÂ꤬¤Ê¤¤¡£Æ±Íͤˡ¢insn-emit.c ¤È insn-recog. ¤Î"constant is so large that it is unsigned"¡¢ enquire.o ¤ÎÈæ³Ó¤¬¾ï¤Ë 0 ¤Ë¤Ê¤ë»Ý¤Î·Ù¹ð¡¢¤½¤ì¤Ë cexp.y ¤Ç¤Î¥·¥Õ¥È²ó¿ô¤¬·¿¤ÎÂ礤µ¤ò±Û¤¨¤Æ¤¤¤ë¤È¤¤¤¦¤â̵»ë¤·¤ÆÎɤ¤¡£¤½¤ì°Ê³°¤Î¥³¥ó¥Ñ¥¤¥ë¥¨¥é¡¼¤ÏÌäÂê¤Îµ¯¤¤ë¥Þ¥·¥ó¤ä OS ¤Ø¤Î°Ü¿¢¤Î¥Ð¥°¤Î²ÄǽÀ¤¬¤¢¤ë¤Î¤Ç¡¢Ä´¤Ù¤ÆÊó¹ð¤¹¤Ù¤¤Ç¤¢¤ë(see Bugs)¡£
¥³¥ó¥Ñ¥¤¥é¤ÎÃæ¤Ë¤Ï¡¢¥Ð¥°¤äÀ©¸Â¤Î¤¿¤á¤Ë GNU CC ¤ò¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤Ê¤¤¤â¤Î¤¬¤¢¤ë¡£Î㤨¤Ð¡¢Microsoft ¤Î¥³¥ó¥Ñ¥¤¥é¤Ï¥Þ¥¯¥í¥¹¥Ú¡¼¥¹¤ò»È¤¤ÀڤäƤ·¤Þ¤¦¤È¸À¤ï¤ì¤Æ¤¤¤ë¡£¤¤¤¯¤Ä¤«¤Î Ultrix ¤Î¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¼°¶õ´Ö¤ò»È¤¤ÀڤäƤ·¤Þ¤¤¡¢ÌäÂ꤬µ¯¤¤¿¤È¤³¤í¤Çʸ¤ò¤¤¤¯¤Ä¤«¤Ëʬ³ä¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
make stage1
´ØÏ¢¥Õ¥¡¥¤¥ë¤Ï stage1 ¤È¤¤¤¦Ì¾Á°¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Üư¤µ¤ì¤ë¡£¥¤¥ó¥¹¥È¡¼¥ë¤¬´°Î»¤·¤¿¤Ê¤é¡¢¤³¤³¤ËÃÖ¤«¤ì¤¿¥Õ¥¡¥¤¥ë¤òrm -r stage1 ¤Ç¾Ã¤·¤Æ¤âÎɤ¤¡£
stage1 ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¡£¤½¤Î¾ì¹ç¡¢¥Õ¥¡¥¤¥ë̾¤Ï as¡¢ld ÅùŬÀڤʤâ¤Î¤Ë¤¹¤ë¡£¤³¤¦¤¹¤ë¤³¤È¤Ç¡¢¥¹¥Æ¡¼¥¸1 ¤Î¥³¥ó¥Ñ¥¤¥é¤¬Â³¤¯¥¹¥Æ¡¼¥¸¤ÇŬÀڤʥġ¼¥ë¤ò¸«¤Ä¤±¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¡£
¤¢¤ë¤¤¤Ï¡¢¸å³¤Î¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤Ê¤¦¤Î¤Ë¡¢´Ä¶ÊÑ¿ô PATH ¤ÎÃͤò¡¢É¬Í×¤Ê GNU ¥Ä¡¼¥ë¤¬¥·¥¹¥Æ¥àɸ½à¤Î¥Ä¡¼¥ë¤ÎÁ°¤ËÍè¤ë¤è¤¦¤ËÀßÄꤷ¤Æ¹Ô¤Ê¤Ã¤Æ¤âÎɤ¤¡£
make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2"
¤³¤Î²áÄø¤Ï¡¢¥¹¥Æ¡¼¥¸2 ¥³¥ó¥Ñ¥¤¥é¤ÎºîÀ®¤È¸Æ¤Ð¤ì¤ë¡£
¾å¤Ë¼¨¤·¤¿¥³¥Þ¥ó¥É¤Ï¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¸À¸ìÁ´¤Æ¤¬»È¤¨¤ë¥³¥ó¥Ñ¥¤¥é¤òºîÀ®¤¹¤ë¡£Á´Éô¤Î¸À¸ì¤ÏÍפé¤Ê¤¤¾ì¹ç¤Ï¡¢ºîÀ®¤·¤¿¤¤¸À¸ì¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢°ú¿ô¤Ë LANGUAGES="list" ¤òÄɲ乤롣list ¤Ï¡¢c¡¢c++¡¢objective-c¡¢proto
¤Î¤É¤ì¤«°ì¤Ä°Ê¾å¤Î̾Á°¤ò»ØÄꤹ¤ë¡£Ì¾Á°¤Ï¶õÇò¤Ç¶èÀڤ롣proto ¤Ï¡¢protoize ¤È unprototize ¥×¥í¥°¥é¥à¤òɽ¤¹¡£¤³¤ì¤é¤ÏÆÈΩ¤·¤¿¸À¸ì¤Ç¤Ï¤Ê¤¤¤¬¡¢¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤«¤É¤¦¤«¤òLANGUAGES ¤Ç»ØÄê¤Ç¤¤ë¡£
¥¹¥Æ¡¼¥¸3¥³¥ó¥Ñ¥¤¥é¤òºîÀ®¤¹¤ë¤Ê¤é¡¢¥¹¥Æ¡¼¥¸2 ¤Ç¤Ï C ¸À¸ì¤Î¤ßºîÀ®¤¹¤ì¤Ð½¼Ê¬¤Ç¤¢¤ë¡£
¥¹¥Æ¡¼¥¸2 ¥³¥ó¥Ñ¥¤¥é¤¬°ìö½ÐÍè¤Æ¤·¤Þ¤¨¤Ð¡¢¥Ç¥£¥¹¥¯¥¹¥Ú¡¼¥¹¤¬ÉÔ¤¹¤ë¤è¤¦¤Ê¾ì¹ç¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê stage1 ¤òºï½ü¤·¤Æ¤âÎɤ¤¡£
68000 ¤ä 68020 ¤Î¥·¥¹¥Æ¥à¤Ç¡¢ÉâÆ°¾®¿ôÅÀ¥Ï¡¼¥É¥¦¥§¥¢¤¬¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤ÇÉâÆ°¾®¿ôÅÀ¥Ï¡¼¥É¥¦¥§¥¢¤¬Ìµ¤¤¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤ëtm.h ¤òÁªÂò¤·¤Ê¤¤¸Â¤ê¡¢Âå¤ï¤ê¤Ë°Ê²¼¤Î¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤Ê¤¦¤³¤È¡£
make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2 -msoft-float"
stage1 ¤Ç¤ä¤Ã¤¿¤Î¤ÈƱ¤¸¤è¤¦¤Ë¡¢ stage2 ¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤¡¢°Ê²¼¤ò¼Â¹Ô¤¹¤ë¡£
make stage2 make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O2"
¤³¤Î²áÄø¤Ï¥¹¥Æ¡¼¥¸3¥³¥ó¥Ñ¥¤¥é¤ÎºîÀ®¤È¸Æ¤Ð¤ì¤ë¡£-B ¥ª¥×¥·¥ç¥ó°Ê³°¤Ï¡¢¥¹¥Æ¡¼¥¸2¥³¥ó¥Ñ¥¤¥é¤òºî¤Ã¤¿¤È¤¤ÈƱ¤¸¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤è¤¦¤Ë¤¹¤ë¡£¤¿¤À¡¢LANGUAGES ¥ª¥×¥·¥ç¥ó¤ÏƱ¤¸¤Ç¤¢¤ëɬÍפϤʤ¤¡£¾å¤Ç¼¨¤·¤¿¥³¥Þ¥ó¥É¹Ô¤Ï¡¢¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ëÁ´¸À¸ìÍѤΥ³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¡£Á´¸À¸ì¤ÏÍפé¤Ê¤¤¾ì¹ç¤Ï¡¢¹½ÃÛ¤·¤¿¤¤¸À¸ì¤ò¡¢Á°½Ò¤·¤¿¤è¤¦¤Ë¡¢°ú¿ôLANGUAGES="list" ¤ò²Ã¤¨¤ë¤³¤È¤Ç»ØÄê¤Ç¤¤ë¡£
¾¤ËɬÍ×¤Ê GNU ¥Ä¡¼¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Ê¤¯¤Æ¤âÎɤ¤¾ì¹ç¤Ï¡¢stage1¡¢stage2¤òºî¤Ã¤Æ¡¢¥³¥ó¥Ñ¥¤¥é¤òÆó²ó¹½ÃÛ¤¹¤ëÂå¤ï¤ê¤Ë¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¹Ô¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
make bootstrap LANGUAGES=language-list BOOT_CFLAGS=option-list
µ¡¼ï¤Ë¤è¤Ã¤Æ¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Î°ÕÌ£¤Î¤¢¤ëÈæ³Ó¤¬ÉÔ²Äǽ¤Ê¾ì¹ç¤¬¤¢¤ë¡£¾ï¤Ë¡Ö°Û¤Ê¤Ã¤Æ¤·¤Þ¤¦¡×¤è¤¦¤Ë¸«¤¨¤ë¡£¤³¤ì¤Ï¡¢º£¤Î¤È¤³¤í¡¢Solaris ¤È ELF ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë·Á¼°¤ò»ÈÍѤ·¤Æ¤¤¤ë´ö¤Ä¤«¤Î¥·¥¹¥Æ¥à¤¬Åö¤Æ¤Ï¤Þ¤ë¡£SGI ¤Î Irix ¤Î´ö¤Ä¤«¤Î¥Ð¡¼¥¸¥ç¥ó¤È¡¢Alpha ¥·¥¹¥Æ¥à¾å¤Î DEC Unix(OSF/1) ¤Ç¤Ï¡¢-save-temps ¤ò»ØÄꤷ¤Ê¤¤¤È¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤òÈæ³Ó¤Ç¤¤Ê¤¤¤À¤í¤¦¡£Èæ³Ó¤Ë¼ºÇÔ¤·¤¿¤Ê¤é¡¢¤³¤ì¤é¤Î¸Ä¡¹¤Î¥·¥¹¥Æ¥à¤ÎÀâÌÀ¤ò¸«¤ÆÍߤ·¤¤¡£Â¾¤Î¥·¥¹¥Æ¥à¤Ç¤âƱ¤¸¤è¤¦¤ÊÌäÂ꤬µ¯¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
¥Õ¥¡¥¤¥ë¤ÎÈæ³Ó¤ò¹Ô¤Ê¤¦¤Ë¤Ï¼¡¤Î¥³¥Þ¥ó¥É¤ò»È¤¦¡£
make compare
¤³¤ì¤Ï¡¢¥¹¥Æ¡¼¥¸2 ¤È¥¹¥Æ¡¼¥¸3¤Ç°Û¤Ê¤ë¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤ÆÃΤ餻¤Æ¤¯¤ì¤ë¡£²¿¤«°ã¤¤¤¬¤¢¤ì¤Ð¡¢¤½¤ì¤¬Ìµ³²¤«¤É¤¦¤«¤Ë´Ø¤ï¤é¤º¡¢¥¹¥Æ¡¼¥¸ 2 ¤Î¥³¥ó¥Ñ¥¤¥é¤¬ GNU CC ¤òÀµ¤·¤¯¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤«¤Ã¤¿¤È¤¤¤¦¤³¤È¤ò°ÕÌ£¤·¡¢¤½¤ì¤æ¤¨ÀøºßŪ¤Ë½ÅÂç¤Ç¡¢Ä´ºº¤·¤¿¤¦¤¨¤ÇÊó¹ð(see Bugs)¤ò¹Ô¤Ê¤¦¤Ù¤¥Ð¥°¤¬Â¸ºß¤¹¤ë²ÄǽÀ¤¬¤¢¤ë¡£
¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Ë¥¿¥¤¥à¥¹¥¿¥ó¥×¤òÁÞÆþ¤·¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤¬Èæ³Ó¤ò¹Ô¤Ê¤¦Â®¤¤ÊýË¡¤Ç¤¢¤ë(Bourne ¥·¥§¥ë¤ò»È¤Ã¤Æ¤¤¤ë)¡£
for file in *.o; do cmp $file stage2/$file done
MIPS ¤Î¥Þ¥·¥ó¤Ç -mno-mips-tfile ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤·¤¿¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë¤òÈæ³Ó¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£
make install ¤ò¼Â¹Ô¤¹¤ë¡£¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤Î¤ÈƱ¤¸ÃͤòCC ¤È CFLAGS¡¢LANGUAGES ¤ËÂФ·¤Æ»È¤¦¤è¤¦¤Ë¤¹¤ë¡£Æ±¤¸Ãͤˤ¹¤ëÍýͳ¤Î°ì¤Ä¤Ï¡¢Make ¤ÎÃæ¤Ë¤Ï¥Ð¥°¤Î¤¿¤á¤Ë¡¢¤³¤ÎÃʳ¬¤ÇÉÔɬÍפ˥ե¡¥¤¥ë¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤â¤Î¤¬¤¢¤ë¤¿¤á¤Ç¤¢¤ë¡£¤³¤ì¤é¤ÎÊÑ¿ô¤ÎÃͤòƱ¤¸¤Ë¤·¤Æ¤ª¤±¤Ð¡¢Å¬Àڤ˺ƥ³¥ó¥Ñ¥¤¥ë¤¬¹Ô¤Ê¤ï¤ì¤ë¡£
Î㤨¤Ð¡¢¥¹¥Æ¡¼¥¸2 ¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤·¤Æ¤¢¤ì¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¹Ô¤ò»È¤¨¤ÐÎɤ¤¡£
make install CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" LANGUAGES="list"
¤³¤ì¤Ï¡¢¥Õ¥¡¥¤¥ë cc1¡¢cpp¡¢libgcc.a ¤ò¥Ç¥£¥ì¥¯¥È¥ê /usr/local/lib/gcc-lib/target/version ¤Ë¤¢¤ë¥Õ¥¡¥¤¥ë cc1¡¢cpp¡¢libgcc.a ¤Ë¥³¥Ô¡¼¤¹¤ë¡£¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Î¥É¥é¥¤¥Ð¥×¥í¥°¥é¥à¤¬¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤òõ¤¹¾ì½ê¤Ç¤¢¤ë¡£¤³¤³¤Ç¡¢target ¤Ï¡¢configure ¤ò¼Â¹Ô¤·¤¿¤È¤¤Ë»ØÄꤷ¤¿¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Î¥¿¥¤¥×¤ÎÀµµ¬·Á¤Ç¤¢¤ê¡¢version ¤Ï¡¢GNU CC ¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤Ç¤¢¤ë¡£¤³¤Î̾Á°ÉÕ¤ÎÊýË¡¤Ë¤è¤ê¡¢¿§¡¹¤Ê¥Ð¡¼¥¸¥ç¥ó¤ä¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤¬¶¦Â¸²Äǽ¤Ë¤Ê¤ë¡£¤³¤ì¤Ï¤Þ¤¿¡¢Â¾¤Î¸À¸ì¤Î¥³¥ó¥Ñ¥¤¥é¤Î¼Â¹Ô·Á¼°(Î㤨¤Ð¡¢C++ ÍѤΠcc1plus ¤Ê¤É)¤òƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥³¥Ô¡¼¤¹¤ë¡£
¤³¤ì¤Ï¡¢¥É¥é¥¤¥Ð¥×¥í¥°¥é¥à xgcc ¤â /usr/local/bin/gcc ¤Ë¥³¥Ô¡¼¤¹¤ë¤Î¤Ç¡¢Åµ·¿Åª¤Ê¥³¥Þ¥ó¥É¸¡º÷¥Ñ¥¹Ãæ¤Ë¸½¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡£¤Þ¤¿¡¢gcc.1 ¤ò /usr/local/man/man1 ¤Ë¡¢info ¥Ú¡¼¥¸¤ò /usr/local/info ¤Ë¥³¥Ô¡¼¤¹¤ë¡£
¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ¤Ï¡¢¤³¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È´ö¤Ä¤«¤Î¥Õ¥¡¥¤¥ë¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤·¤Þ¤¦¡£¤³¤ì¤ÏÉáÄÌ¤Ï make ¤Î¥Ð¥°¤Ë¤è¤ë¤â¤Î¤Ç¤¢¤ë¡£¤³¤ì¤Ï̵»ë¤¹¤ë¤«¡¢¤¢¤ë¤¤¤Ï GNU Make ¤ò»È¤¨¤ÐÎɤ¤¡£
Ãí°Õ: Sun ¤Î¥é¥¤¥Ö¥é¥ê¤Î alloca ¤Ë¤Ï¥Ð¥°¤¬¤¢¤ë¡£¤³¤Î¥Ð¥°¤ò²óÈò¤¹¤ë¤Ë¤Ï¡¢GNU CC ¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿ GNU CC ¤Î¼Â¹Ô·Á¼°¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤è¤¦Ãí°Õ¤¹¤ë¤³¤È¡£(¤¹¤Ê¤ï¤Á¡¢stage1 ¤Ç¤Ï¤Ê¤¯¤Æ¡¢stage2 ¤« 3 ¤Ç½ÐÍ褿¼Â¹Ô·Á¼°¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¡£)
GNU CC ¤Ï¡¢ÁȤ߹þ¤ß´Ø¿ô¤Î alloca ¤ò»È¤¤¡¢¥é¥¤¥Ö¥é¥ê¤Ë¤¢¤ë¤â¤Î¤Ï·è¤·¤Æ»È¤ï¤Ê¤¤¡£
(Ä̾ï¤Ç¤â¡¢stage2 ¤Þ¤¿ 3 ¤Î GNU CC ¤Î¼Â¹Ô·Á¼°¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤Û¤¦¤¬Îɤ¤¡£¤È¤¤¤¦¤Î¤Ï¡¢Â¾¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤â¤Î¤è¤ê¤â¹â®¤Ëưºî¤¹¤ë¤«¤é¤Ç¤¢¤ë¡£)
GNU CC ÍѤÎɸ½àC++¼Â¹Ô»þ¥é¥¤¥Ö¥é¥ê¤Ï libstdc++ ¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£µìÈǤΠlibg++ ¤âÍøÍѲÄǽ¤Ç¤¢¤ë¤¬¡¢ÊÑ´¹¤¬ºÑ¤ó¤Ç¤¤¤Ê¤¤¸Å¤¤¥½¥Õ¥È¥¦¥§¥¢¤Ë¤·¤«É¬ÍפΤʤ¤¤â¤Î¤Ç¤¢¤ë¡£ÆÉ¼Ô¤¬ libg++ ¤òɬÍפȤ¹¤ë¤«¤É¤¦¤«¤ï¤«¤é¤Ê¤¤¾ì¹ç¤Ï¡¢¤ª¤½¤é¤¯É¬ÍפȤ·¤Ê¤¤¤À¤í¤¦¡£
°Ê²¼¤Ë GNU CC ÍÑ¤Ë libstdc++ ¤ò¹½ÃÛ¤·¡¢¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëÊýË¡¤Î°ì¤Ä¤ò¼¨¤¹¡£
gcc ¤ÈÂǤĤȺ£ºî¤ê¤¿¤Æ¤Î GNU CC ¤¬µ¯Æ°¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¡£
libstdc++ ¤ÎÇÛÉÛʪ¤òÆþ¼ê¤¹¤ë¡£Î㤨¤Ð¡¢libstdc++-2.8.0.tar.gz ¤Ï GCC 2.8.0 ¤ËÂбþ¤·¤Æ¤¤¤ë¤Ï¤º¤Ç¤¢¤ë¡£GCC ¤ÎÇÛÉÛ¼Ô¤ÏÉáÄÌ libstdc++ ¤âÇÛÉÛ¤·¤Æ¤¤¤ë¡£
CXX ¤Ë gcc ¤ò»ØÄꤷ¤Æ¡¢libstdc++ ¤ÎÇÛÉÛʪ¤Ë¤¢¤ë configure ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¡£configure ¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ï¡¢GCC ¤Î configure ¥³¥Þ¥ó¥É¤Ë»ØÄꤷ¤¿¤Î¤ÈƱ¤¸¤â¤Î¤ò»ØÄꤹ¤ë¤³¤È¡£
make ¤ò¼Â¹Ô¤·¤Æ¡¢C++ ¼Â¹Ô»þ¥é¥¤¥Ö¥é¥ê¤ò¹½ÃÛ¤¹¤ë¡£
make install ¤ò¼Â¹Ô¤·¤Æ C++ ¼Â¹Ô»þ¥é¥¤¥Ö¥é¥ê¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¡£
¤Þ¤È¤á¤ë¤È¡¢GNU CC ¤ò¹½ÃÛ¡¦¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤¢¤È¡¢°Ê²¼¤Î¥·¥§¥ë¥³¥Þ¥ó¥É¤òC++ ¥é¥¤¥Ö¥é¥ê¤ÎÇÛÉÛʪ¤ÎºÇ¾å°Ì¥Ç¥£¥ì¥¯¥È¥ê¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤Ë¤Ê¤ë¡£configure-options ¤Ë¤Ï¡¢GNU CC ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ç»ÈÍѤ·¤¿¤Î¤ÈƱ¤¸¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¡£
$ CXX=gcc ./configure configure-options $ make $ make install
objc ¤È¤¤¤¦¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¡£GNU Objective-C Runtime Library ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Ë¤Ï¥¿¡¼¥²¥Ã¥È¤ÎC ¥é¥¤¥Ö¥é¥ê¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬É¬ÍפǤ¢¤ê¡¢¥¹¥ì¥Ã¥É¥µ¥Ý¡¼¥È¤¬É¬Íפʤ饿¡¼¥²¥Ã¥È¤Î¥¹¥ì¥Ã¥É¥é¥¤¥Ö¥é¥ê¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤âɬÍפǤ¢¤ë¡£¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤Î¾ì¹ç¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÎÌäÂê¤Ë¤Ä¤¤¤Æ¤Ï¡¢See Cross-Compilers and Header Files¡£
configure ¤ò¼Â¹Ô¤¹¤ë¤È¡¢¥¿¡¼¥²¥Ã¥È¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤ËŬ¤·¤¿Objective-C ¤Î¥¹¥ì¥Ã¥É¼ÂÁõ¥Õ¥¡¥¤¥ë¤òÁª¤Ó½Ð¤¹¡£¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¡¢Ê£¿ô¤Î¥¹¥ì¥Ã¥É¼ÂÁõ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤¬¤¢¤Ã¤¿¤ê¡¢¥¹¥ì¥Ã¥É¥µ¥Ý¡¼¥È¤ò´°Á´¤Ë̵¸ú¤Ë¤·¤¿¤¤¤Ê¤É¤ÎÍýͳ¤Ë¤è¤ê¡¢°Û¤Ê¤ë¥Ð¥Ã¥¯¥¨¥ó¥É¤òÁª¤Ó¤¿¤¤¤³¤È¤â¤¢¤ë¤À¤í¤¦¡£¤½¤ì¤Ë¤Ï¡¢make ¤Î¼Â¹Ô»þ¤Ë¡¢¥³¥Þ¥ó¥É¹Ô¤Ç Makefile ÊÑ¿ô¤ÎOBJC_THREAD_FILE ¤ËÃͤò»ØÄꤹ¤ì¤ÐÎɤ¤¡£Î㤨¤Ð°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ë¡£
make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O2" OBJC_THREAD_FILE=thr-single
°Ê²¼¤Ë¸½ºßÍøÍѲÄǽ¤Ê¥Ð¥Ã¥¯¥¨¥ó¥É¤Î°ìÍ÷¤ò¼¨¤¹¡£
configure ¤¬ºî¤ê½Ð¤¹¥Õ¥¡¥¤¥ëãconfigure ¤Ë¤è¤êÀßÄꤵ¤ì¤ë¥Õ¥¡¥¤¥ë¤ò°ì¤Ä¤º¤Äµó¤²¤Æ¤ß¤ë¡£ÉáÄ̤ϡ¢°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤ËÃí°Õ¤òʧ¤¦É¬ÍפϤʤ¤¡£
config.h ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤¬ºî¤é¤ì¡¢GCC ¤ò¼Â¹Ô¤¹¤ëµ¡¼ï¸þ¤±¤Î¡¢ºÇ¾å°Ì¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë #include ¤¬Æþ¤ë¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¥Û¥¹¥Èµ¡¼ï¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òÄêµÁ¤¹¤ëÀÕǤ¤¬¤¢¤ë(see Config)¡£¤³¤ì¤Ï tm.h ¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¡£
ºÇ¾å°Ì¤Î¥³¥ó¥Õ¥£¥°¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë¤Ï¡¢¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê config
¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¡£¥Õ¥¡¥¤¥ë̾¤Ï¾ï¤Ë xm-something.h ¤È¤¤¤¦·Á¤Ç¤¢¤ë¡£ÉáÄÌ¤Ï xm-machine.h ¤È¤Ê¤ë¤¬¡¢¤¤¤¯¤Ä¤«Îã³°¤¬¤¢¤ë¡£
¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢config.h ¤¬Å¬Àڤʥե¡¥¤¥ë¤ò»²¾È¤¹¤ë #include ¤ò´Þ¤à¤è¤¦¤ËÀßÄꤹ¤ëɬÍפ¬¤¢¤ë¤À¤í¤¦¡£
tconfig.h ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤¬ºî¤é¤ì¡¢¥¿¡¼¥²¥Ã¥Èµ¡¼ï¸þ¤±¤ÎºÇ¾å°Ì¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¡£¤³¤ì¤Ï¡¢¤½¤Îµ¡¼ï¤Çưºî¤¹¤ëÆÃÄê¤Î¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤Ë»È¤ï¤ì¤ë¡£
tm.h ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤¬ºî¤é¤ì¡¢¥¿¡¼¥²¥Ã¥Èµ¡¼ï¸þ¤±¤Îµ¡¼ïµ½Ò¥Þ¥¯¥í¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¡£¤³¤ì¤Ï¡¢¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê config ¤ËÃÖ¤«¤ì¤Æ¤ª¤ê¡¢machine.h
¤È¤¤¤¦Ì¾Á°¤Ë¤Ê¤ë¤³¤È¤¬Â¿¤¤¡£
configure ¤Ï¡¢¤Þ¤¿¡¢¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ëMakefile.in ¤Ë¥Æ¥¥¹¥È¤òÄɲä·¤Æ Makefile ¤òºîÀ®¤¹¤ë¡£Äɲåƥ¥¹¥È¤Ï¡¢config ¥Ç¥£¥ì¥¯¥È¥ê¤Î¡¢t-target
¥Õ¥¡¥¤¥ë¤È x-host ¥Õ¥¡¥¤¥ë¤«¤é¼è¤é¤ì¤ë¡£¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤¤¤È¡¢»ØÄꤵ¤ì¤¿¥¿¡¼¥²¥Ã¥È¤Þ¤¿¤Ï¥Û¥¹¥È¤Ë´Ø¤·¤ÆÄɲ䵤ì¤ë¤â¤Î¤Ï¤Ê¤¤¤È¤¤¤¦¤³¤È¤ò°ÕÌ£¤¹¤ë¡£°Ê²¼¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë CPU ¤Î¥¿¥¤¥×¤Ç¤¢¤ë¡£
1750a, a29k, alpha, arm, cn, clipper, dsp16xx, elxsi, h8300, hppa1.0, hppa1.1, i370, i386, i486, i586, i860, i960, m32r, m68000, m68k, m88k, mips, mipsel, mips64, mips64el, ns32k, powerpc, powerpcle, pyramid, romp, rs6000, sh, sparc, sparclite, sparc64, vax, we32k.
°Ê²¼¤Ë¡¢Ç§¼±²Äǽ¤Ê´ë¶È̾¤ò¼¨¤¹¡£¸«¤ÆÈ½¤ë¤È¤ª¤ê¡¢Àµ¼°¤Ê̾Á°¤Ç¤Ï¤Ê¤¯¤Æ¡¢Îɤ¯»È¤ï¤ì¤ë¾Êά·Á¤ò»È¤Ã¤Æ¤¤¤ë¡£
acorn, alliant, altos, apollo, apple, att, bull, cbm, convergent, convex, crds, dec, dg, dolphin, elxsi, encore, harris, hitachi, hp, ibm, intergraph, isi, mips, motorola, ncr, next, ns, omron, plexus, sequent, sgi, sony, sun, tti, unicom, wrs.
´ë¶È̾¤Ï¡¢Â¾¤ËÍ¿¤¨¤é¤ì¤¿¾ðÊó¤Ç¤Ï½¼Ê¬¤Ç¤Ê¤¤¤È¤¤Ë¤À¤±»È¤ï¤ì¤ë¡£É¬Íפ¬¤Ê¤±¤ì¤Ð¾Êά¤Ç¤¡¢cpu-system ¤Î¤è¤¦¤Ë½ñ¤¤¤Æ¤âÎɤ¤¡£Î㤨¤Ð¡¢vax-ultrix4.2 ¤Ï vax-dec-ultrix4.2 ¤ËƱ¤¸¤Ç¤¢¤ë¡£
°Ê²¼¤Ë¡¢Ç§¼±¤Ç¤¤ë¥·¥¹¥Æ¥à̾¤ò¼¨¤¹¡£
386bsd, aix, acis, amigaos, aos, aout, aux, bosx, bsd, clix, coff, ctix, cxux, dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms, genix, gnu, linux-gnu, hiux, hpux, iris, irix, isc, luna, lynxos, mach, minix, msdos, mvs, netbsd, newsos, nindy, ns, osf, osfrose, ptx, riscix, riscos, rtu, sco, sim, solaris, sunos, sym, sysv, udi, ultrix, unicos, uniplus, unos, vms, vsta, vxworks, winnt, xenix.
¥·¥¹¥Æ¥à̾¤Î»ØÄê¤Ï¾Êά²Äǽ¤Ç¤¢¤ë¡£¾Êά¤·¤¿¾ì¹ç¤Ï¡¢configure ¤¬CPU ¤È´ë¶È̾¤«¤é¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤ò¿ä¬¤¹¤ë¡£
¥·¥¹¥Æ¥à̾¤Ë¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òÉÕ¤±Â¤¹¤³¤È¤â¤Ç¤¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢°ã¤¤¤¬À¸¤¸¤ë¾ì¹ç¤â¤¢¤ë¤·¡¢°ã¤¤¤Ï¤Ê¤¤¾ì¹ç¤â¤¢¤ë¡£Î㤨¤Ð¡¢bsd4.3 ¤ä bsd4.4 ¤È½ñ¤¤¤Æ¡¢BSD ¤Î¥Ð¡¼¥¸¥ç¥ó¤ò¶èÊ̤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£sysv3 ¤È sysv4 ¤Î¾ì¹ç¤Ë¤Ï¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɬÍפȤ·¡¢°Û¤Ê¤Ã¤¿°·¤¤¤ò¼õ¤±¤ë¡£
i860-dg-vms ¤Î¤è¤¦¤Ë¤¢¤ê¤¨¤Ê¤¤Áȹ礻¤ò»ØÄꤹ¤ë¤È¡¢configure ¤Ï¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½Ð¤¹¤«¡¢»ØÄꤵ¤ì¤¿¾ðÊó¤Î°ìÉô¤ò̵»ë¤·¤Æ»Ä¤ê¤ÎÉôʬ¤À¤±¤ÇºÇÁ±¤ò¤Ä¤¯¤·¤Æ¿ä¬¤ò¹Ô¤Ê¤¦¡£configure ¤Ï¡¢»È¤ï¤ì¤ëÁªÂò»è¤ÎÀµµ¬Ì¾¤ò¾ï¤Ë½ÐÎϤ¹¤ë¡£GNU CC ¤Ï¡¢²Äǽ¤ÊÁªÂò»è¤ÎÁ´¤Æ¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¡£
¤¢¤ëµ¡¼ï¤ÎÆÃÄê¤Î¥â¥Ç¥ë¤Ë¤Ï̾Á°¤¬¤Ä¤¤¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ë¡£µ¡¼ï̾¤Î¿¤¯¤Ï¡¢CPU ¤È´ë¶È̾¤ÎÁȹ礻¤ÎÊÌ̾¤È¤·¤ÆÇ§¼±¤µ¤ì¤ë¡£Î㤨¤Ð¡¢¾å¤Ç½Ò¤Ù¤¿ sun3 ¤È¤¤¤¦µ¡¼ï̾¤Ï¡¢m68k-sun ¤ÎÊÌ̾¤Ç¤¢¤ë¡£´ë¶È̾¤òµ¡¼ï̾¤È¤·¤Æ¼õ¤±ÉÕ¤±¤ë¾ì¹ç¤â¤¢¤ë¡£¤³¤Î¾ì¹ç¡¢¤½¤Î̾Á°¤ÏÆÃÄê¤Îµ¡¼ï¤ò»Ø¤¹¤Î¤Ë¹¤¯»È¤ï¤ì¤Æ¤¤¤ë¡£°Ê²¼¤Ë´ûÃΤε¡¼ï̾¤Îɽ¤ò¼¨¤¹¡£
3300, 3b1, 3bn, 7300, altos3068, altos, apollo68, att-7300, balance, convex-cn, crds, decstation-3100, decstation, delta, encore, fx2800, gmicro, hp7nn, hp8nn, hp9k2nn, hp9k3nn, hp9k7nn, hp9k8nn, iris4d, iris, isi68, m3230, magnum, merlin, miniframe, mmax, news-3600, news800, news, next, pbd, pc532, pmax, powerpc, powerpcle, ps2, risc-news, rtpc, sun2, sun386i, sun386, sun3, sun4, symmetry, tower-32, tower.
¥Þ¥·¥ó̾¤Ï¡¢CPU ¥¿¥¤¥×¤È²ñ¼Ò̾¤ÎξÊý¤ò»ØÄꤹ¤ë¤È¤¤¤¦¤³¤È¤ò³Ð¤¨¤Æ¤¤¤ÆÍߤ·¤¤¡£ÆÉ¼Ô¤¬¼«ºî¤·¤¿¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤¤¾ì¹ç¤Ï¡¢²ñ¼Ò̾¤È¤·¤Æ local ¤ò»È¤Ã¤Æ¤½¤ì¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó cpu-local ¤ò»È¤¦¤È¡¢cpu ¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤Î¤Ê¤¤¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó̾¤¬¡¢¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë̾¤Ë»È¤ï¤ì¤ë¡£
¤Ä¤Þ¤ê¡¢m68k-local ¤È»ØÄꤷ¤¿¤È¤¹¤ë¤È¡¢¤³¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ïm68k.md¡¢local.h¡¢m68k.c¡¢xm-local.h¡¢t-local¡¢x-local ¤È¤¤¤Ã¤¿¥Õ¥¡¥¤¥ë¤ò»È¤¦¡£¤³¤ì¤é¤ÏÁ´¤Æ¥Ç¥£¥ì¥¯¥È¥ê config/m68k ¤ËÃÖ¤«¤ì¤ë¡£
°Ê²¼¤Î¥ê¥¹¥È¤Ï¡¢ÃΤäƤ¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡¢ÆÃÊ̤ʼ谷¤¤¤äÆÃÊ̤ʻö¹à¤Î¤¢¤ë¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ç¤¢¤ë¡£
1750a-*-*
MIL-STD-1750A ¤Î¥¯¥í¥¹¡¦¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ÏGNU Public License ¤Î¸µ¤ÇÍøÍѲÄǽ¤Ê 1750A ¸þ¤±¥¢¥»¥ó¥Ö¥é¡¿¥ê¥ó¥«¤Ç¤¢¤ëas1750 ÍѤΥ³¡¼¥É¤òÀ¸À®¤¹¤ë¡£as1750 ¤Ï¡¢ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/
¤«¤éÆþ¼ê²Äǽ¤Ç¤¢¤ë¡£Æ±ÍͤΥ饤¥»¥ó¥¹¤ò»ý¤Ä¡¢1750A ¸þ¤±¥·¥ß¥å¥ì¡¼¥¿¤âƱ¤¸½ê¤«¤éÆþ¼ê²Äǽ¤Ç¤¢¤ë¡£
libcc ¤ò¹½ÃÛÃæ¤Ë½Ð¤ëÃ×̿Ū¥¨¥é¡¼¤Ï̵»ë¤·¤ÆÎɤ¤(1750A ¸þ¤±¤Îlibgcc ¤Ï¤Þ¤À¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£)
as1750 ¥¢¥»¥ó¥Ö¥é¤Ï ms1750.inc ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤òɬÍפȤ¹¤ë¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¥Ç¥£¥ì¥¯¥È¥ê ms1750.inc ¤Ë¤¢¤ë¡£
GNU CC ¤Ï¡¢Fairchild F9450 C Compiler ¤ÈƱ¤¸¥»¥¯¥·¥ç¥ó¤òÀ¸À®¤¹¤ë¡£¤¹¤Ê¤ï¤Á¡¢°Ê²¼¤Î¤â¤Î¤Ç¤¢¤ë¡£
Normal
Static
Konst
Init
¥¢¥É¥ì¥¹²Äǽ¤ÊºÇ¾®Ã±°Ì¤Ï 16 ¥Ó¥Ã¥È(BITS_PER_UNIT ¤¬ 16)¤Ç¤¢¤ë¡£¤³¤ì¤Ï¡¢`char' ·¿¤¬¡¢°ìʸ»ú¤Ë¤Ä¤ 16 ¥Ó¥Ã¥È¤Î¸ì¤Çɽ¸½¤µ¤ì¤ë¤È¤¤¤¦¤³¤È¤ò°ÕÌ£¤¹¤ë¡£1750A ¤Î "Load/Store Upper/Lower Byte" Ì¿Îá¤ÏGNU CC ¤Ç¤Ï»È¤ï¤ì¤Ê¤¤¡£
alpha-*-osf1
¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤È¤·¤Æ¹½ÃÛ¤µ¤ì¤Ê¤¤¸Â¤ê¡¢GNU CC ¤Ï .verstamp
µ¿»÷Ì¿Îá¤ò¥¢¥»¥ó¥Ö¥é½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ë½ñ¤½Ð¤¹¡£¤³¤ì¤Ë¤Ï¡¢¥·¥¹¥Æ¥à¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë /usr/include/stamp.h ¤«¤é¼è¤Ã¤¿¥Ð¡¼¥¸¥ç¥ó¤¬Æþ¤Ã¤Æ¤¤¤ë¡£DEC Unix ¤Î¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤È¤¤Ë¤Ï¡¢GCC ¤òºÆ¹½ÃÛ¤·¤Æ¡¢¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¥¹¥¿¥ó¥×¤ò¼è¤ê½Ð¤¹¤è¤¦¤Ë¤·¤Ê¤¤¤È¤¤¤±¤Ê¤¤¡£
Alpha ¤Ï 64 ¥Ó¥Ã¥È¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ê¤Î¤Ç¡¢32¥Ó¥Ã¥È¤Îµ¡¼ï¤Çưºî¤¹¤ëAlpha ¤ò¥¿¡¼¥²¥Ã¥È¤È¤¹¤ë¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤Ï¡¢64¥Ó¥Ã¥È¤Îµ¡¼ï¤Çưºî¤¹¤ë¥³¥ó¥Ñ¥¤¥é¤¬À¸À®¤¹¤ë¥³¡¼¥É¤ÈÆ±ÄøÅ٤˸úΨ¤ÎÎɤ¤¥³¡¼¥É¤òÀ¸À®¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£¤³¤ì¤Ï¡¢Â¿¤¯¤ÎºÇŬ²½¤¬¡¢¥¿¡¼¥²¥Ã¥È¤Î¥ï¡¼¥É¤ò¥Û¥¹¥È¾å¤Ç¤ÎÀ°¿ôÃͤȤ·¤ÆÉ½¤»¤ë¤È¤¤¤¦¤³¤È¤Ë°Í¸¤·¤Æ¤ª¤ê¡¢32¥Ó¥Ã¥È¤Îµ¡¼ï¾å¤Ç¤Ï¼Â¹Ô¤Ç¤¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£Alpha ¾å¤Çưºî¤¹¤ë¡¢¥¿¡¼¥²¥Ã¥È¤ò 32 ¥Ó¥Ã¥Èµ¡¼ï¤È¤¹¤ë¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¤Î¤Ï¡¢¤Û¤ó¤Î2,3¤Î¾ì¹ç¤·¤«¥Æ¥¹¥È¤µ¤ì¤Æ¤ª¤é¤º¡¢Â¿Ê¬Àµ¤·¤¯Æ°¤«¤Ê¤¤¤À¤í¤¦¡£
¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Î DEC Unix ¤Ç¤Ï¡¢CFLAGS ¤Ë -save-temps ¤òÄɲ䷤ʤ¤¤È¡¢make compare ¤Ë¼ºÇÔ¤¹¤ë¡£¤³¤ì¤é¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥¢¥»¥ó¥Ö¥é¤Ø¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë̾¤¬¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ëÆâ¤Ë¼ý¤á¤é¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¤½¤Î¥Õ¥¡¥¤¥ë̾¤¬ stage1 ¤È stage2 ¤Ç°Û¤Ê¤ë¤È¡¢Èæ³Ó¤Ë¼ºÇÔ¤·¤Æ¤·¤Þ¤¦¤Î¤Ç¤¢¤ë¡£¥ª¥×¥·¥ç¥ó -save-temps ¤ò»ØÄꤹ¤ë¤È¡¢¥¢¥»¥ó¥Ö¥é¤Ø¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë̾¤È¤·¤Æ¡¢/tmp ¤ËÃÖ¤«¤ì¤ë¡¢¥é¥ó¥À¥à¤ËÁª¤Ð¤ì¤¿Ì¾Á°¤ÎÂå¤ï¤ê¤Ë¡¢¸ÇÄꤷ¤¿¥Õ¥¡¥¤¥ë̾¤ò»È¤¦¡£-save-temps ¥ª¥×¥·¥ç¥ó¤Ï¡¢¤³¤ì¤ò»ØÄꤷ¤Ê¤¤¤ÈÈæ³Ó¤Ë¼ºÇÔ¤¹¤ë¤Î¤Ç¤Ê¤¤¸Â¤ê¡¢Äɲ䷤ʤ¤¤³¤È¡£-save-temps ¤ò»ØÄꤹ¤ë¤È¡¢³Æ¥³¥ó¥Ñ¥¤¥ë¤ÎÃʳ¬¤Ç¡¢.i ¤È .s ¤Ç½ª¤ï¤ë¥Õ¥¡¥¤¥ë¤ò¼«Ê¬¤Ç¾Ã¤µ¤Ê¤¤¤È¤¤¤±¤Ê¤¤¡£
GNU CC ¤Ï¸½ºß¡¢DBX ¤È GDB ¤¬»È¤¦¥Í¥¤¥Æ¥£¥Ö(ECOFF)¥Ç¥Ð¥Ã¥°¾ðÊó·Á¼°¤ÈGDB ¤À¤±¤¬»È¤¦Ëä¤á¹þ¤ß STABS ·Á¼°¤ÎξÊý¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£¤³¤ì¤é¤Î¥Ç¥Ð¥Ã¥°¾ðÊó·Á¼°¤ÈÁªÂòÊýË¡¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢´û½Ð¤Îconfigure ¤Î --with-stabs ¥ª¥×¥·¥ç¥ó¤ÎÀâÌÀ¤ò»²¾È¤Î¤³¤È¡£
DEC ¤Î¥¢¥»¥ó¥Ö¥é¤Ë¤Ï¥Ð¥°¤¬¤¢¤ê¡¢.align µ¿»÷Ì¿Îá¤ò»È¤Ã¤¿¤È¤¤ËECOFF ·Á¼°ÍѤιÔÈÖ¹æ¾ðÊó¤¬Àµ¤·¤¯¤Ê¤¤¤â¤Î¤òÀ¸À®¤¹¤ë¡£¤³¤ÎÌäÂê¤ò²óÈò¤¹¤ë¤¿¤á¤Ë¡¢GNU CC ¤Ï¡¢ºÇŬ²½¤ò¼Â¹Ô¤¹¤ë¾ì¹ç¤Ç¤âECOFF ·Á¼°¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤ò½ñ¤½Ð¤¹¤È¤¤Ë¡¢¤³¤Îµ¿»÷Ì¿Îá¤ò¤À¤µ¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¤¤ë¡£¤¿¤À¤·¡¢»Äǰ¤Ê¤³¤È¤Ë¡¢¤³¤ì¤Ë¤ÏÈó¾ï¤Ëº¤¤ëÉûºîÍѤ¬¤¢¤ê¡¢-O ¤ò»ØÄꤷ¤¿¤È¤¤Î¥³¡¼¥É¤Î¥¢¥É¥ì¥¹¤¬¡¢-g ¤ò¹ç¤ï¤»¤Æ»ØÄꤹ¤ë¤«¤É¤¦¤«¤Ë¤è¤Ã¤Æ°ã¤Ã¤Æ¤¤Æ¤·¤Þ¤¦¡£
¤³¤ì¤òÈò¤±¤ë¤Ë¤Ï¡¢-gstabs+ ¤ò»ØÄꤷ¤Æ¡¢DBX ¤ÎÂå¤ï¤ê¤Ë GDB ¤ò»È¤¨¤ÐÎɤ¤¡£DEC ¤âº£¤Ç¤Ï¥¢¥»¥ó¥Ö¥é¤Î¤³¤ÎÌäÂê¤Ëµ¤ÉÕ¤¤¤Æ¤¤¤Æ¡¢ÁáµÞ¤Ë½¤ÀµÈǤòÄ󶡤·¤è¤¦¤È¤·¤Æ¤¤¤ë¡£
arc-*-elf
arm-*-aout
a.out ·Á¼°¤Î¥ª¥Ö¥¸¥§¥¯¥È¥â¥¸¥å¡¼¥ë¤òÀ¸À®¤¹¤ë¡£
ÆÉ¼Ô¼«¿È¤ÎÆÃÄê¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¸þ¤±¤Ë¤Ï¡¢arm.h ¤Î½¤ÀµÈǤòºî¤ëɬÍפ¬¤¢¤ë¡£
arm-*-linuxaout
a.out ¥Ð¥¤¥Ê¥ê·Á¼°¤ò»È¤¦ Linux ¥Ù¡¼¥¹ GNU ¥·¥¹¥Æ¥à¤Îưºî¤¹¤ëARM ¥×¥í¥»¥Ã¥µ(ELF ¤Ï¤Þ¤À¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤)¡£GNU/Linux binutils ¤Î2.8.1.0.7 °Ê¹ß¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤ì¤Ïsunsite.unc.edu:/pub/Linux/GCC ¤ä Linux ¥Ù¡¼¥¹ GNU ¥·¥¹¥Æ¥à¸þ¤±¤Î¾¤Î¥ß¥é¡¼¥µ¥¤¥È¤«¤éÆþ¼ê¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
arm-*-riscix
ftp.acorn.com:/pub/riscix/as+xterm.tar.Z
¤«¤éÆþ¼ê¤Ç¤¤ë¡£stabs ¥Ç¥Ð¥Ã¥°¾ðÊó¤ò͸ú¤Ë¤¹¤ë¤Ë¤Ï configure ¤Ë--with-gnu-as ¤ò»ØÄꤹ¤ë¡£
configure ¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë GNU sed ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
a29k
ÆÉ¼Ô¼«¿È¤ÎÆÃÄê¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¸þ¤±¤Ë¤Ï¡¢a29k.h ¤Î½¤ÀµÈǤòºî¤ëɬÍפ¬¤¢¤ë¡£
a29k-*-bsd
decstation-*
alpha-dec ¤Ç»Ï¤Þ¤ë¡£)
Ultrix¡¢DEC OSF/1¡¢OSF/rose ¤Ç¤¢¤ë¡£¤³¤ì¤é¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¸þ¤±¤Ë¤Ï°Ê²¼¤Î¤è¤¦¤Ê¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ò»È¤¦¡£
decstation-ultrix
decstation-osf1
decstation-osfrose
MIPS ¤Î C ¥³¥ó¥Ñ¥¤¥é¤ËÂФ·¤Æ¤Ï¡¢cp/parse.c ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¤Ë¡¢¥ª¥×¥·¥ç¥ó -Wf,-XNg1500 ¤ò»ØÄꤷ¤Æ¡¢¥¹¥¤¥Ã¥Áʸ¤Î¥Æ¡¼¥Ö¥ë¤ÎÂ礤µ¤òÂ礤¯¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¡£ºÇŬ²½¥ª¥×¥·¥ç¥ó¤È¤·¤Æ -O2 ¤ò»È¤¦¾ì¹ç¤Ï¡¢-Olimit 3000 ¤â»È¤¦É¬Íפ¬¤¢¤ë¡£¤³¤ÎÆó¤Ä¤Î¥ª¥×¥·¥ç¥ó¤Ï¤É¤Á¤é¤â¡¢configure ¤¬¹½ÃÛ¤¹¤ëMakefile ¤Ë¤Ï¼«Æ°Åª¤ËÄɲ䵤ì¤ë¡£make ¤ÎÊÑ¿ô CC ¤ò¾å½ñ¤¤·¤Æ MIPS ¤Î¥³¥ó¥Ñ¥¤¥é¤ò»È¤¦¤Ë¤Ï¡¢-Wf,-XNg1500 -Olimit 3000 ¤òÄɲ乤ëɬÍפ¬¤¢¤ë¡£
elxsi-elxsi-bsd
mrs@cygnus.com ¤ËÏ¢Íí¤·¤ÆÍߤ·¤¤¡£
dsp16xx
h8300-*-*
¸Æ¤Ó¤À¤·µ¬Ìó¤È¹½Â¤ÂΤΥ쥤¥¢¥¦¥È¤¬¥ê¥ê¡¼¥¹2.6 ¤ÇÊѹ¹¤µ¤ì¤¿¡£Á´¤Æ¤Î¥³¡¼¥É¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£¿·¤·¤¤¸Æ¤Ó¤À¤·µ¬Ìó¤Ç¤Ï¡¢´Ø¿ô¤Î°ú¿ô¤ÎºÇ½é¤Î»°¤Ä¤ò¥ì¥¸¥¹¥¿¤ÇÅϤ¹¡£¹½Â¤ÂΤϡ¢Â礤µ¤¬¤â¤Ï¤ä 2 ¤ÎÇÜ¿ô¤Î¥Ð¥¤¥È¿ô¤Ç¤Ï¤Ê¤¤¡£
hppa*-*-*
configure
¥¹¥¯¥ê¥×¥È¤¬¼«Æ°Åª¤ËÀµ¤·¤¤¥×¥í¥»¥Ã¥µ·¿¤ÈOS¤ò·èÄꤷ¤Æ¤¯¤ì¤ë¡£
HP-UX ¤Ç¤Ï -g ¤Ï»È¤¨¤Ê¤¤¡£GNU CC ¤ÎÃΤé¤Ê¤¤¡¢ÆÈÆÃ¤Î¥Ç¥Ð¥Ã¥°¾ðÊó·Á¼°¤ò»È¤Ã¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë¡£¤À¤¬¡¢GCC ¤Ë GAS ¤È GDB ¤òÁȤ߹ç¤ï¤»¤Æ»È¤¦¤Ê¤é -g ¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£Á´¤Æ¤Î HP-PA ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ç GAS ¤ò»È¤¦¤³¤È¤ò¶¯¤¯¤ª´«¤á¤¹¤ë¡£
¤½¤Î¾ì¹ç¡¢GAS-2.6 °Ê¹ß¤È GDB_4.16 °Ê¹ß¤ò»È¤ï¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤³¤ì¤é¤Ï¡¢Á´¤Æ¤ÎÅÁÅýŪ GNU ftp ¥¢¡¼¥«¥¤¥Ö¥µ¥¤¥È¤«¤é¼è¤ê´ó¤»¤ë¤³¤È¤¬¤Ç¤¤ë¡£
HP-UX ¤Î¤¤¤¯¤Ä¤«¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢GNU sed ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
¥³¥Þ¥ó¥É¸¡º÷¥Ñ¥¹¤Ë¡¢/bin¡¢/usr/bin¡¢/usr/ccs/bin
¤Î¸½¤ì¤ëÁ°¤Ë¡¢GAS ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤òÃÖ¤¯É¬Íפ¬¤¢¤ë¡£GNU CC ¤òºî¤ëÁ°¤Ë GAS ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¡£
¥Ç¥Ð¥Ã¥°¤ò²Äǽ¤Ë¤¹¤ë¤Ë¤Ï¡¢¹½ÃÛ¤ò¹Ô¤Ê¤¦Á°¤Ë --with-gnu-as ¥ª¥×¥·¥ç¥ó¤ò¤Ä¤±¤Æ GNU CC ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ò¹Ô¤Ê¤¦¡£
i370-*-*
i386-*-linux-gnuoldld
i386-*-linux-gnuaout
i386-*-linux-gnu
i386-*-sco
i386-*-sco3.2v4
i386-*-sco3.2v5*
GNU CC ¤Ï -mcoff ¤ò»ØÄꤹ¤ë¤È COFF ¥Ð¥¤¥Ê¥ê¤òÀ¸À®²Äǽ¤Ç¤¢¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ï ELF ¥Ð¥¤¥Ê¥ê¤Ç¤¢¤ë¡£ELF ¤ò¹½ÃÛ¤¹¤ë ELF ¥³¥ó¥Ñ¥¤¥é¤¬À¸À®¤µ¤ì¤ë¤è¤¦¤Ë´°Á´¤Ê make bootstrap ¤ò¹Ô¤¦¤³¤È¤ò¤ª´«¤á¤¹¤ë¡£
TLS597 ¤ò ftp://ftp.sco.com/TLS ¤«¤éÆþ¼ê¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤·¡¢ELF C++ ¥Ð¥¤¥Ê¥ê¤¬ 5.0.4 °ÊÁ°¤Î¥ê¥ê¡¼¥¹¤ÇÀµ¤·¤¯Æ°ºî¤¹¤ë¤è¤¦¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
OS ¤Ë̵ÎÁ¤ÇÉÕ¤¤¤Æ¤¯¤ë SCO ¤Î¥Í¥¤¥Æ¥£¥Ö¡¦¥¢¥»¥ó¥Ö¥é¤¬ÉáÄ̤ÏɬÍפǤ¢¤ë¡£¤À¤¬¡¢GNU ¥¢¥»¥ó¥Ö¥é¤â»È¤¨¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤À¤í¤¦¤«¤é(ÆÉ¼Ô¤¬Ê£»¨¤Ê asm ʸ¤ò»È¤Ã¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¤«¤é)¡¢¤³¤Î¥Ñ¥Ã¥±¡¼¥¸¤ò--with-gnu-as ¤ò»ØÄꤷ¤Æ¥³¥ó¥Õ¥£¥°¥ì¡¼¥·¥ç¥ó¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤Î¤¿¤á¤Ë¤Ï¡¢gcc/as ¤È¤·¤Æ GNU ¥¢¥»¥ó¥Ö¥é¤ò¥¤¥ó¥¹¥È¡¼¥ë(cp ¤« symlink)
¤·¤Æ¤ª¤¯¡£¿·¤·¤á¤Î GNU binutils ¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¥Ð¡¼¥¸¥ç¥ó 2.9.1 ¤Ï¤¦¤Þ¤¯Æ°ºî¤¹¤ë¤è¤¦¤À¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤¿¾ì¹ç¤Ï¡¢COFF ¥¤¥á¡¼¥¸¤ò¹½ÃÛ¤¹¤ë¤Î¤ÏÉÔ²Äǽ¤Ë¤Ê¤ë¡£¤½¤¦¤·¤è¤¦¤È¤¹¤ë¤È¡¢¤Ï¤Ã¤¤ê¤È¤·¤¿·Á¤Ç¸«¤¨¤º¤Ë¼ºÇԤ˽ª¤ï¤ë¤À¤í¤¦¡£°ìÈ̤ˡ¢"-with-gnu-as"
¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¤Î¥¢¥»¥ó¥Ö¥éÄøÎɤ¯¤Ï¥Æ¥¹¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
Ãí°Õ: C++ ¤ò¹½ÃÛ¤¹¤ë¾ì¹ç¤Ï¡¢make bootstrap ¤òµ¯Æ°¤¹¤ë¼ê½ç¤ò¼è¤ëɬÍפ¬¤¢¤ë¡£¥Í¥¤¥Æ¥£¥Ö¤Î OpenServer ¤Î¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¤¿¤¯¤µ¤ó¤ÎÀµ¤·¤¤ C ¥×¥í¥°¥é¥à¤òÀµ¤·¤¯¹½Ê¸²òÀϤǤ¤Ê¤¤ cc1plus ¤òºî¤Ã¤Æ¤·¤Þ¤¦²ÄǽÀ¤¬¤¢¤ë¤«¤é¤Ç¤¢¤ë¡£¥Í¥¤¥Æ¥£¥Ö¥³¥ó¥Ñ¥¤¥é¤Ç¹½ÃÛ¤ò¹Ô¤¦¤È¤¤Ï¡¢make bootstrap ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
i386-*-isc
ISC ¥Ð¡¼¥¸¥ç¥ó 4.1 ¤Ç¤Ï¡¢duduced.h ¤òºî¤ë¤È¤¤Ë sed
¤¬¥³¥¢¥À¥ó¥×¤¹¤ë¡£¥Ð¡¼¥¸¥ç¥ó 4.0 ¤Î sed ¤ò»È¤¦¤³¤È¡£
i386-*-esix
i386-ibm-aix
i386-sequent-bsd
i386-sequent-ptx1*
i386-sequent-ptx2*
configure ¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë GNU sed ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
i386-sun-sunos4
libgcc2.c ¤Î°ìÉô¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë̵¸Â¥ë¡¼¥×¤Ë´Ù¤ë¤«¤é¤Ç¤¢¤ë¡£GNU CC ¤ÎǤ°Õ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿ GNU CC ¥Ð¡¼¥¸¥ç¥ó 2 ¤Ë¤Ï¤³¤ÎÌäÂê¤Ï¤Ê¤¤¤è¤¦¤À¡£
Sun ¤Î¥·¥¹¥Æ¥à¤Ë GNU CC ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¾ì¹ç¤Î¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢Sun Install ¤ò»²¾È¤Î¤³¤È¡£
i[345]86-*-winnt3.5
ftp://cs.washington.edu/pub/gnat/> ¤« cs.nyu.edu:pub/gnat ¤«¤éƿ̾ ftp ¤ÇÆþ¼ê¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤Þ¤¿¡¢Windows NT 3.5 SDK ¤Î Microsoft ¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£9/4/94 ÉդΠCDROM ¤Î /mstools/h ¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤³¤ì¤é¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¡£NT 3.5 ÍÑ¤ËÆÃÊ̤˺î¤é¤ì¤¿¡¢Microsoft ¥ê¥ó¥«¤Î½¤ÀµÈǤò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤ì¤â¤Þ¤¿¡¢NT 3.5 SDK CDROM ¤ËÆþ¤Ã¤Æ¤¤¤ë¡£¤³¤Î¥ê¥ó¥«¤¬¤Ê¤¤¤È¤¤Ï¡¢Visual C/C++ 1.0 ¤Þ¤¿¤Ï 2.0 ¤Î¥ê¥ó¥«¤ò»È¤Ã¤Æ¤âÎɤ¤¡£
NT ¤Ë GNU CC ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤È¡¢¥é¥Ã¥Ñ¡¼¤È¤·¤Æ¤Î¥ê¥ó¥«¤¬ºî¤é¤ì¤ë¡£¤³¤ì¤Ï ld.exe ¤È¤¤¤¦Ì¾Á°¤Ç¡¢¥é¥¤¥Ö¥é¥ê¤Î»ØÄêÊýË¡¤ÎÅÀ¤Ç(-L ¤È -l) Unix ¤Î ld ¤Îưºî¤Î¤Þ¤Í¤ò¤¹¤ë¡£ld.exe ¤Ï¥é¥¤¥Ö¥é¥ê¤Î Unix ̾¤È Microsoft ̾¤ÎξÊý¤òõ¤¹¡£Î㤨¤Ð¡¢-lfoo ¤È»ØÄꤹ¤ë¤È¡¢ld.exe ¤ÏºÇ½é¤Ë libfoo.a
¤òõ¤·¡¢¼¡¤Ë foo.lib ¤òõ¤¹¡£
GNU CC ¤ò Windows ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤Ë¤ÏÆó¤Ä¤ÎÊýË¡¤¬¤¢¤ë¡£¤É¤Á¤é¤ò¼è¤ë¤«¤Ï¡¢Unix Ū¤Ê¥·¥§¥ë¤È¿§¡¹¤Ê Unix Ū¤Ê¥Ä¡¼¥ë¤¬¼ê¸µ¤Ë¤¢¤ë¤«¤É¤¦¤«¤Ë¤è¤ë¡£
configure.bat ¤ò»È¤¦¡£¤³¤ì¤ò¡¢MSDOS ¤Î¥³¥ó¥½¡¼¥ë¥¦¥£¥ó¥É¥¦¤«¥×¥í¥°¥é¥à¥Þ¥Í¡¼¥¸¥ã¤Î¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¤«¤é configure winnt ¤È¤·¤Æµ¯Æ°¤¹¤ë¡£configure.bat ¤Ï¡¢Unix ¤Ë¤¢¤ë¤è¤¦¤Ê sed ¥×¥í¥°¥é¥à¤¬¥¤¥ó¥¹¥È¡¼¥ëºÑ¤ß¤Ç¤¢¤ê¡¢¥³¥Þ¥ó¥É¸¡º÷¥Ñ¥¹¤ËÆþ¤Ã¤Æ¤¤¤ë¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤ë¡£sed ¤ò»È¤Ã¤Æ¡¢Makefile.in ¤«¤é Makefile ¤òºî¤ë¤Î¤Ç¤¢¤ë¡£
¤³¤¦¤·¤Æ¤Ç¤¤ë Makefile ¤Ç¤Ï¡¢Microsoft ¤Î Nmake ÊÝ¼é¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤È Visual C/C++ V8.00 ¥³¥ó¥Ñ¥¤¥é¤ò»È¤Ã¤Æ GNU CC ¤ò¹½ÃÛ¤¹¤ë¡£¤³¤ÎÊýË¡¤ò»È¤¦¾ì¹ç¤Ë¤Ï¡¢É¬Íפʥ桼¥Æ¥£¥ê¥Æ¥£¤Ï sed ¤È touch
¤À¤±¤Ç¤¢¤ê¡¢¥³¥ó¥Ñ¥¤¥é¼«ÂΤι½ÃۤޤǤ·¤«¼«Æ°Åª¤Ë¹Ô¤Ê¤ï¤Ê¤¤¡£¤³¤Î¸å¡¢fixinc.winnt ¤¬²¿¤ò¤·¤Æ¤¤¤ë¤Î¤«¤òį¤á¤Æ¡¢¥Ø¥Ã¥À¥Õ¥£¥¢¥ë¤òÊÔ½¸¤·¡¢libgcc.a ¤ò¼çư¤Çºî¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
configure ¥¹¥¯¥ê¥×¥È¤ò»È¤¨¤ÐÎɤ¤¡£
i860-intel-osf1
¥Ð¡¼¥¸¥ç¥ó 1.0 ¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤ò»È¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥·¥¹¥Æ¥à¤ÎÊʤËÂн褹¤ë¤¿¤á¤ËÆÃÊ̤ʼê½ç¤¬É¬ÍפʤΤǡ¢Installation Problems ¤ò»²¾È¤Î¤³¤È¡£
*-lynx-lynxos
/bin/gcc ¤È¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¯¤ë¡£/bin/cc ¤Ç¤Ï¤Ê¤¯ /bin/gcc ¤ò»È¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤Ù¤¤Ç¤¢¤ë¡£GNU CC ¤Ë GNU ¥¢¥»¥ó¥Ö¥é¤È GNU ¥ê¥ó¥«¤ò»È¤¦¤è¤¦¤Ë»Ø¼¨¤¹¤ë¤Ë¤Ï¡¢¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó»þ¤Ë --with-gnu-as --with-gnu-ld ¤ò»ØÄꤹ¤ì¤ÐÎɤ¤¡£¤³¤ì¤é¤Ï¡¢COFF ·Á¼°¤Î¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤È¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¡£GNU ¥¢¥»¥ó¥Ö¥é¤È¥ê¥ó¥«¤ò»È¤ï¤Ê¤¤¾ì¹ç¤Ï¡¢GNU CC ¤Ï¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¥Ä¡¼¥ë¤ò»È¤¤¡¢a.out ·Á¼°¤Î¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¡£
m32r-*-elf
m68000-hp-bsd
law@cygnus.com ¤ËÏ¢Íí¤·¤ÆÍߤ·¤¤¡£
m68k-altos
README.ALTOS ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò»²¾È¤¹¤ë¤³¤È¡£
m68k-apple-aux
configure ¤Ë¥ª¥×¥·¥ç¥ó --with-gnu-as ¤È--with-gnu-ld ¤òÄɲ乤ì¤ÐÎɤ¤¡£
¥·¥¹¥Æ¥à¤ËÉÕ°¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï GNU CC ¤ò¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤ÆÍߤ·¤¤¡£GNU CC ¤ò¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¤¹¤ë¤Ë¤Ï jagubox.gsfc.nasa.gov
¤Ë¤¢¤ë¥Ð¥¤¥Ê¥ê¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£¤Þ¤¿¡¢Æ±¤¸¤È¤³¤í¤Ë¤¢¤ë¥Ñ¥Ã¥Á¤òÅö¤Æ¤¿¥Ð¡¼¥¸¥ç¥ó¤Î /bin/ld ¤ò»È¤¦¤È¡¢¤â¤È¤â¤È¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¤¢¤ë¼êÁ°¾¡¼ê¤ÊÀ©¸ÂÃͤò¤¤¤¯¤é¤«¾å¤²¤ë¤³¤È¤¬¤Ç¤¤ë¡£
m68k-att-sysv
GNU CC ¤ò 3b1 ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤Î¤Ï¡¢´û¤Ëưºî¤¹¤ë GNU CC ¤¬¤Ê¤¤¤Èº¤Æñ¤Ç¤¢¤ë¡£¤³¤ì¤Ï¡¢¥¤¥ó¥¹¥È¡¼¥ëºÑ¤ß¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ë¥Ð¥°¤¬¤¢¤ë¤¿¤á¤Ç¤¢¤ë¡£¤·¤«¤·¡¢°Ê²¼¤Î¤è¤¦¤Ê¼ê½ç¤Ç¤ª¤½¤é¤¯¤¦¤Þ¤¯¹Ô¤¯¤À¤í¤¦¡£²æ¡¹¤Ë¤Ï¡¢¤³¤Î¼ê½ç¤Ï¥Æ¥¹¥ÈÉÔ²Äǽ¤Ç¤¢¤ë¡£
cccp.c ¤ÎÀèÆ¬ÉÕ¶á¤Î #include "config.h" ¤ò¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¡¢make cpp ¤ò¹Ô¤Ê¤¦¡£¤³¤ì¤Ç¡¢GNU cpp ¤Î½àÈ÷ÈǤòºî¤ë¡£
/lib/cpp ¤òÂàÈò¤·¡¢GNU cpp ¤Î½àÈ÷ÈǤò¤³¤Î¥Õ¥¡¥¤¥ë̾¤Ç¥³¥Ô¡¼¤¹¤ë¡£
cccp.c ¤ÎÊѹ¹¤ò¼è¤ê¾Ã¤¹¤«¡¢¥ª¥ê¥¸¥Ê¥ëÈǤòºÆ¥¤¥ó¥¹¥È¡¼¥ë¤·¡¢¤â¤¦°ìÅÙ make cpp ¤ò¹Ô¤Ê¤¦¡£
/lib/cpp ¤Ë¥³¥Ô¡¼¤¹¤ë¡£
tree.c ¤Ë¸½¤ì¤ë obstack_free ¤òÁ´¤Æ_obstack_free ¤ËÃÖ¤´¹¤¨¤ë¡£
make ¤ò¼Â¹Ô¤·¤Æ¡¢GNU CC ¤Î¥Õ¥¡¡¼¥¹¥È¥¹¥Æ¡¼¥¸¤òºî¤ë¡£
/lib/cpp ¤ò¥ª¥ê¥¸¥Ê¥ë¤Î¤â¤Î¤ËÌ᤹¡£
m68k-bull-sysv
--with-gnu-as ¤ò»ØÄꤹ¤ë¤³¤È¤Ç GNU ¥¢¥»¥ó¥Ö¥é¤È¥·¥¹¥Æ¥à¤ÎCOFF ·Á¼°¤ÎÁȹ礻¤Ç»È¤¦¤³¤È¤â¤Ç¤¤ë¤·¡¢--with-gnu-as --stabs ¤ò»ØÄꤹ¤ë¤³¤È¤Ç GNU ¥¢¥»¥ó¥Ö¥é¤ÈDBX ·Á¼°¤ò COFF ·Á¼°¤ËÊñ¤ß¹þ¤ó¤À·Á¤È¤ÎÁȹ礻¤Ç»È¤¦¤³¤È¤â¤Ç¤¤ë¡£¥·¥¹¥Æ¥à¥¢¥»¥ó¥Ö¥é¤ÎÌäÂê¤ä DPX/2 ÍѤΠGAS ¤ÎÆþ¼êÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢F.Pierresteguy@frcl.bull.fr ¤ËÌ䤤¹ç¤ï¤»¤ÆÍߤ·¤¤¡£
m68k-crds-unox
configure unos ¤È¤¹¤ë¡£
Unos ¤Î¥¢¥»¥ó¥Ö¥é¤Ï¡¢as ¤Ç¤Ï¤Ê¤¯ casm ¤È¤¤¤¦Ì¾Á°¤Ç¤¢¤ë¡£²¿¤é¤«¤ÎÊѤÊÍýͳ¤Ë¤è¤ê¡¢/bin/as ¤ò /bin/casm ¤Ë¥ê¥ó¥¯¤¹¤ë¤È¡¢Æ°ºî¤¬Âå¤ï¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¤¦¤Þ¤¯¹Ô¤«¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢GNU CC ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëºÝ¤Ë¤Ï¡¢GCC ¤Î³Æ¥Ñ¥¹¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ê²¼¤Î¤è¤¦¤Ê¥¹¥¯¥ê¥×¥È¤ò as ¤È¤¤¤¦Ì¾Á°¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
#!/bin/sh casm $*
¥Ç¥Õ¥©¥ë¥È¤Î Unos ¤Î¥é¥¤¥Ö¥é¥ê¤Ï¡¢libc.a ¤Ç¤Ï¤Ê¤¯¡¢libunos.a
¤È¤¤¤¦Ì¾Á°¤Ç¤¢¤ë¡£GNU CC ¤òµ¡Ç½¤µ¤»¤ë¤¿¤á¤Ë¤Ï¡¢gcc.c ¤ÎÃæ¤Î -lc ¤Ø¤ÎÁ´¤Æ¤Î»²¾È¤ò -lunos ¤ËÊѤ¨¤ë¤«¡¢/lib/libc.a ¤ò /lib/libunos.a ¤Ë¥ê¥ó¥¯¤¹¤ë¤«¤Î¤É¤Á¤é¤«¤ò¹Ô¤Ê¤¦¡£
GNU CC ¤ò¥·¥¹¥Æ¥àɸ½à¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Ë¤Ï¡¢alloca ¤Î¥Ð¥°¤òÈò¤±¤ë¤¿¤á¡¢¥¹¥Æ¡¼¥¸ 2 ¤òºî¤ë¤È¤¤Ë-O ¤ò»È¤ï¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤³¤È¡£¤½¤¦¤·¤Æ¤ª¤¤¤Æ¡¢¥¹¥Æ¡¼¥¸ 3 ¤Î¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¥¹¥Æ¡¼¥¸ 2 ¥³¥ó¥Ñ¥¤¥é¤Ë -O ¤ò»ØÄꤷ¤Æºî¤ë¡£¤³¤¦¤·¤Æ½ÐÍè¤ë¥¹¥Æ¡¼¥¸ 3 ¤Î¥³¥ó¥Ñ¥¤¥é¤Ï¡¢Â¾¤Î¥·¥¹¥Æ¥à¤Ç¤ÎÄ̾ï¤Î¥¹¥Æ¡¼¥¸ 2 ¤Î¥³¥ó¥Ñ¥¤¥é¤ÈƱ¤¸À³Ê¤ò»ý¤Ä¤â¤Î¤Ç¤¢¤ë¡£¤³¤ì¤ò»È¤Ã¤Æ¡¢¥¹¥Æ¡¼¥¸ 4 ¤Î¥³¥ó¥Ñ¥¤¥é¤òºî¤ê¡¢¥¹¥Æ¡¼¥¸ 3 ¤Î¥³¥ó¥Ñ¥¤¥é¤ÈÈæ³Ó¤·¤Æ¡¢¥³¥ó¥Ñ¥¤¥ë¤¬Àµ¤·¤¯¹Ô¤Ê¤ï¤ì¤¿¤«¤É¤¦¤«¤ò¸¡ºº¤¹¤ë¤³¤È¡£
(¶²¤é¤¯¡¢x-crds ¤Ë¤¢¤ë¥³¥á¥ó¥È¤Ë¤¢¤ë¤è¤¦¤Ë¡¢Ã±¤Ë x-crds ¤ÇALLOCA ¤òÄêµÁ¤¹¤ì¤Ð¡¢¾å¤Î¥Ñ¥é¥°¥é¥Õ¤ÎÏäÏÉÔÍפˤʤë¤È»×¤ï¤ì¤ë¡£¤¦¤Þ¤¯¹Ô¤Ã¤¿¿Í¤¬¤¤¤¿¤é¡¢À§Èó¤È¤â¶µ¤¨¤ÆÍߤ·¤¤¡£)
Unos ¤Ï¡¢Í×µá»þ¥Ú¡¼¥¸¥ó¥°¤Ç¤Ï¤Ê¤¯¤Æ¥á¥â¥ê¥»¥°¥á¥ó¥Æ¡¼¥·¥ç¥ó¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢¥á¥â¥ê¤¬¤¿¤¯¤µ¤óɬÍפˤʤ롣¾¤Î¥¿¥¹¥¯¤¬Áö¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢5Mb ¤Ç¤®¤ê¤®¤ê¤ê¤ë¡£cc1 ¤ò¥ê¥ó¥¯¤¹¤ë¤Î¤Ë¼ºÇĤ·¤¿¤é¡¢¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò¥é¥¤¥Ö¥é¥ê¤ËÆþ¤ì¤¿¤¦¤¨¤Ç¡¢¤½¤Î¥é¥¤¥Ö¥é¥ê¤È¥ê¥ó¥¯¤·¤Æ¤ß¤ÆÍߤ·¤¤¡£
m68k-hp-hpux
¤Þ¤¿¡¢--with-gnu-as ¤ò»ØÄꤷ¤Æ GAS ¤ò»È¤¤¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢GAS ¤Î¥Ð¡¼¥¸¥ç¥ó 2.1 °Ê¹ß¤È GNU ¥ê¥ó¥«¤Î¥Ð¡¼¥¸¥ç¥ó 2.1 ¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£½é´ü¤Î¥Ð¡¼¥¸¥ç¥ó¤Î GAS ¤Ï¡¢GAS ¤Î½ÐÎϤò HP-UX ¤Î¥Í¥¤¥Æ¥£¥Ö·Á¼°¤ËÊÑ´¹¤¹¤ë¥×¥í¥°¥é¥à¤Ë°Í¸¤·¤Æ¤¤¤¿¡£¤À¤¬¡¢¤½¤Î¥×¥í¥°¥é¥à¤¬¹¹¿·¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¤¢¤ë¡£GDB ¤Ï HP-UX ¤Î¥Í¥¤¥Æ¥£¥Ö·Á¼°¤òÍý²ò¤·¤Ê¤¤¤Î¤Ç¡¢GDB ¤ò»È¤¤¤¿¤¤¾ì¹ç¤â GAS ¤ò»È¤¦É¬Íפ¬¤¢¤ë¡£
m68k-sun
Sun ¤Î¥·¥¹¥Æ¥à¤Ç¤Î GNU CC ¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ë´Ø¤¹¤ë¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢Sun Install ¤ò»²¾È¤Î¤³¤È¡£
m88k-*-svr3
¤À¤¬¤·¤«¤·¡¢¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¤¹¤ë¤Î¤Ë°ìÈÖÎɤ¤¤Î¤Ï¡¢¤â¤·¤¢¤ë¤Ê¤é¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Î GNU CC ¤ò»È¤¦¤³¤È¤Ç¤¢¤ë¡£
m88k-*-dgux
m88k-*-dguxbcs ¤ò»ØÄꤷ¡¢88open BCS ¤Î¥½¥Õ¥È¥¦¥§¥¢³«È¯´Ä¶¤Ç¹½ÃÛ¤ò¹Ô¤Ê¤¦¡£DG/UX ¾å¤Î ELF ¤Î¥Í¥¤¥Æ¥£¥Ö¥³¥ó¥Ñ¥¤¥é¤Þ¤¿¤Ï¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¤Ë¤Ï¡¢mm8k-*-dgux ¤ò»ØÄꤷ¡¢DG/UX ELF ³«È¯´Ä¶¤Ç¹½ÃÛ¤ò¹Ô¤Ê¤¦¡£¥½¥Õ¥È¥¦¥§¥¢³«È¯´Ä¶¤òÀßÄꤹ¤ë¤Ë¤Ï¡¢sde-target ¥³¥Þ¥ó¥É¤ò»È¤¤¡¢°ú¿ô¤È¤·¤Æ m88kbcs ¤«m88kdguxelf ¤ò»ØÄꤹ¤ë¡£
¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó̾¤ò»ØÄꤷ¤Ê¤¤¤È¡¢configure ¤¬¡¢¸½ºß¤Î¥½¥Õ¥È¥¦¥§¥¢³«È¯´Ä¶¤Ë´ð¤Å¤¤¤¿¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ò¿ä¬¤¹¤ë¡£
m88k-tektronix-sysv3
mips-mips-bsd
memcpy¡¢memcmp¡¢memset ¤È¤¤¤Ã¤¿´Ø¿ô¤¬¤Ê¤¤¤â¤Î¤¬¤¢¤ë¡£ÆÉ¼Ô¤Î¥·¥¹¥Æ¥à¤Ë¤³¤ì¤é¤Î´Ø¿ô¤¬¤Ê¤¤¾ì¹ç¤Ï¡¢mips-bsd.h Ãæ¤Î TARGET_MEM_FUNCTIONS ¤ÎÄêµÁ¤òºï½ü¤¹¤ë¤«Ì¤ÄêµÁ¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
MIPS ¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ï¡¢switch ʸÍѤÎɽ¤ÎÂ礤µ¤ò-Wf,-XNg1500 ¥ª¥×¥·¥ç¥ó¤ÇÁý²Ã¤µ¤»¤Æ¤ª¤«¤Ê¤¤¤È¡¢cp/parse.c ¤ò¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤Ê¤¤¤È¸À¤ï¤ì¤Æ¤¤¤ë¡£ºÇŬ²½¥ª¥×¥·¥ç¥ó -O2 ¤ò»È¤¦¤Ë¤Ï¡¢-Olimit 3000 ¤âɬÍפǤ¢¤ë¡£¤³¤ÎÆó¤Ä¤Î¥ª¥×¥·¥ç¥ó¤ÏξÊý¤È¤â¡¢configure ¤¬ºî¤ë Makefile ¤Ë¤Ï¼«Æ°Åª¤ËÄɲ䵤ì¤ë¡£make ¤ÎÊÑ¿ô CC ¤ò¾å½ñ¤¤·¤Æ MIPS ¤Î¥³¥ó¥Ñ¥¤¥é¤ò»È¤¦¤Ë¤Ï¡¢-Wf,-XNg1500 -Olimit 3000 ¤òÄɲ乤ëɬÍפ¬¤¢¤ë¡£
mips-mips-riscos*
-Wf,-XNg1500 ¥ª¥×¥·¥ç¥ó¤ÇÁý²Ã¤µ¤»¤Æ¤ª¤«¤Ê¤¤¤È¡¢cp/parse.c ¤ò¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤Ê¤¤¤È¸À¤ï¤ì¤Æ¤¤¤ë¡£ºÇŬ²½¥ª¥×¥·¥ç¥ó -O2 ¤ò»È¤¦¤Ë¤Ï¡¢-Olimit 3000 ¤âɬÍפǤ¢¤ë¡£¤³¤ÎÆó¤Ä¤Î¥ª¥×¥·¥ç¥ó¤ÏξÊý¤È¤â¡¢configure ¤¬ºî¤ë Makefile ¤Ë¤Ï¼«Æ°Åª¤ËÄɲ䵤ì¤ë¡£make ¤ÎÊÑ¿ô CC ¤ò¾å½ñ¤¤·¤Æ MIPS ¤Î¥³¥ó¥Ñ¥¤¥é¤ò»È¤¦¤Ë¤Ï¡¢-Wf,-XNg1500 -Olimit 3000 ¤òÄɲ乤ëɬÍפ¬¤¢¤ë¡£
RISC-OS ¤Îưºî¤¹¤ë MIPS ¤Î¥Þ¥·¥ó¤Ç¤Ï¡¢4¤Ä¤Î°Û¤Ê¤ë¸ÄÀ¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£¥Ç¥Õ¥©¥ë¥È¤È BSD 4.3¡¢System V.3¡¢System V.4 ¤Ç¤¢¤ë¡£(RISC-OS ¤Î¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï V.4 ¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤)¡£¤³¤ì¤é¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥àÍÑ¤Ë GCC ¤ò¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ò»È¤¦¡£
mips-mips-riscosrev
rev ¤Î RISC-OS ÍѤΥǥե©¥ë¥È¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¡£
mips-mips-riscosrevbsd
rev ¤Î RISC-OS ÍѤΠBSD 4.3 ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¡£
mips-mips-riscosrevsysv4
rev ¤Î RISC-OS ÍѤΠSystem V.4 ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¡£
mips-mips-riscosrevsysv
rev ¤Î RISC-OS ÍѤΠSystem V.3 ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¡£¤³¤³¤Ç¥ê¥Ó¥¸¥ç¥ó rev ¤Ï¡¢RISC-OS ¤Î¥ê¥Ó¥¸¥ç¥ó¤Ç¤¢¤ë¡£RISC-OS ¤Î¥ê¥Ó¥¸¥ç¥ó 4 ¤«¤é ¥ê¥Ó¥¸¥ç¥ó 5 ¤Ë°Ü¤ë¤È¤¤ÏGCC ¤òºÆ¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤ì¤Ï¡¢¥ê¥ó¥«¤Î¥Ð¥°(¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï Installation Problems)
¤ò²óÈò¤¹¤ë¸ú²Ì¤¬¤¢¤ë¡£
mips-sgi-*
SGI IRIX 5 ¤Ç GCC ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Ë¤Ï¡¢Silicon Graphics Ä󶡤ÎIDO CD-ROM ¤«¤é "compiler_dev.hdr" ¤È¤¤¤¦¥µ¥Ö¥·¥¹¥Æ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
IRIX 5 ¤Ç¤Ï¡¢CFLAGS ¤Ë -save-temps ¤òÄɲ䷤ʤ¤¤È¡¢make compare ¤Ë¼ºÇÔ¤¹¤ë¡£¤³¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥¢¥»¥ó¥Ö¥é¤ËÂФ¹¤ëÆþÎÏ¥Õ¥¡¥¤¥ë̾¤¬¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤ë¤Î¤Ç¡¢¤½¤Î¥Õ¥¡¥¤¥ë̾¤¬ stage1 ¤È stage2 ¤Ç°ã¤Ã¤Æ¤¤¤ë¤È¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ÎÈæ³Ó¤Ë¼ºÇÔ¤¹¤ë¡£¥ª¥×¥·¥ç¥ó -save-temps ¤ò»ØÄꤹ¤ë¤È¡¢¥¢¥»¥ó¥Ö¥é¤ËÂФ¹¤ëÆþÎÏ¥Õ¥¡¥¤¥ë̾¤È¤·¤Æ¡¢/tmp ¤ËÃÖ¤«¤ì¤ë¥é¥ó¥À¥à¤ËÁª¤Ð¤ì¤¿Ì¾Á°¤Ç¤Ï¤Ê¤¯¤Æ¡¢·è¤Þ¤Ã¤¿Ì¾Á°¤ò»È¤¦¡£-save-temps ¤Ï¡¢¤³¤ì¤Ê¤·¤Ç¤ÏÈæ³Ó¤Ë¼ºÇÔ¤¹¤ë¤Î¤Ç¤Ê¤¤¸Â¤ê¡¢»ØÄꤷ¤Ê¤¤¤³¤È¡£¤³¤ì¤ò»ØÄꤷ¤Æ¤·¤Þ¤¦¤È¡¢³Æ¥³¥ó¥Ñ¥¤¥ëÃʳ¬¤Î¸å¤Ç.i ¥Õ¥¡¥¤¥ë¤È .s ¥Õ¥¡¥¤¥ë¤ò¼«Ê¬¤Çºï½ü¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¯¤Ê¤ë¡£
MIPS ¤Î C ¥³¥ó¥Ñ¥¤¥é¤Î¾ì¹ç¤Ï¡¢switch ʸÍѤÎɽ¤ÎÂ礤µ¤ò-Wf,-XNg1500 ¤È¤¤¤¦¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤ÇÂ礤¯¤·¤Æ¤ª¤«¤Ê¤¤¤Ècp/parse.c ¤¬¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤Ê¤¤¤ÈÊó¹ð¤µ¤ì¤Æ¤¤¤ë¡£ºÇŬ²½¥ª¥×¥·¥ç¥ó -O2 ¤ò»ØÄꤹ¤ë¤È¤¤Ï¡¢-Olimit 3000 ¤â»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¡£¤³¤Î¤É¤Á¤é¤Î¥ª¥×¥·¥ç¥ó¤â¡¢¥·¥§¥ë¥¹¥¯¥ê¥×¥È configure ¤¬ºî¤ëMakefile ¤Ç¤Ï¼«Æ°Åª¤ËÀ¸À®¤µ¤ì¤ë¡£ make ¤ÎÊÑ¿ô CC ¤ò¾å½ñ¤¤·¤Æ¡¢MIPS ¤Î¥³¥ó¥Ñ¥¤¥é¤ò»È¤¦¤È¤¤Ï¡¢-Wf,-XNg1500 -Olimit 3000
¤È¤¤¤¦¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¡£
Irix ¤Î¥Ð¡¼¥¸¥ç¥ó 4.0.5F¡¢¤½¤ì¤Ë¿ʬ¤½¤Î¾¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤âƱ¤¸¤À¤¬¡¢¥¢¥»¥ó¥Ö¥é¤Ë¥Ð¥°¤¬¤¢¤ê¡¢Ì¿Îá¤ÎʤÙÂØ¤¨¤¬Àµ¤·¤¯¹Ô¤Ê¤ï¤ì¤Ê¤¤¡£¤³¤ì¤ò²óÈò¤¹¤ë¤Ë¤Ï¡¢¥¿¡¼¥²¥Ã¥È¤Î¥³¥Ë¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤òmips-sgi-irix4loser ¤È»ØÄꤹ¤ë¡£¤³¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ï¡¢¥¢¥»¥ó¥Ö¥é¤Ë¤è¤ëºÇŬ²½¤òÍ޻ߤ¹¤ë¡£
¥¿¡¼¥²¥Ã¥È mips-sgi-irix4 ¤Ç¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤·¤¿¾ì¹ç¤Ï¡¢¥¢¥»¥ó¥Ö¥é¤ÎºÇŬ²½¤Ï -noasmopt ¥ª¥×¥·¥ç¥ó¤ÇÍ޻ߤǤ¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥¢¥»¥ó¥Ö¥é¤Ë¤Ï -O0 ¤È¤·¤ÆÅϤꡢ̿Îá¤ÎʤÙÂØ¤¨¤ò¹Ô¤Ê¤ï¤Ê¤¤¡£
-noasmopt ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢ÌäÂ꤬¥¢¥»¥ó¥Ö¥é¤Ë¤è¤ëÌ¿ÎáʤÙÂØ¤¨¤Ë´Ö°ã¤Ã¤Æ¤¤¤ë¤¿¤á¤Ëµ¯¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤¤ë¡£-noasmopt ¤ò»ØÄꤷ¤Æ¤âÌäÂ꤬¤Ê¤¯¤Ê¤é¤Ê¤¤¾ì¹ç¤Ç¤â¡¢¤Ê¤ª¥¢¥»¥ó¥Ö¥é¤Ë¤è¤ëÌ¿ÎáʤÙÂØ¤¨¤ÎÌäÂê¤Î¤»¤¤¤Ç¤¢¤ë²ÄǽÀ¤¬¤¢¤ë¡£¤³¤ÎÌäÂê¤Î¤¿¤á¤Ë¡¢GNU CC ¼«ÂΤ¬Àµ¤·¤¯¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¶²¤ì¤¬¤¢¤ë¡£
Irix 5 ¤Ç¥Ç¥Ð¥Ã¥°¤ò½ÐÍè¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¤Ï¡¢GNU as ¤Î 2.5 °Ê¹ß¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢gcc ¤ò¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤¹¤ë¤È¤¤Ë configure ¤Î¥ª¥×¥·¥ç¥ó¤Ë --with-gnu-as ¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£GNU as ¤Ï¡¢binutils ¥Ñ¥Ã¥±¡¼¥¸¤Î°ìÉô¤È¤·¤ÆÇÛÉÛ¤µ¤ì¤Æ¤¤¤ë¡£
mips-sony-sysv
ns32k-encore
ns32k-*-genix
alloca ¤È malloc ¤Ë¤Ï¥Ð¥°¤¬¤¢¤ë¤Î¤Ç¡¢GNU Emacs ¤«¤é¥³¥ó¥Ñ¥¤¥ëºÑ¤ß¤ÎÈǤò¼è¤Ã¤Æ¤¤Æ»È¤¦É¬Íפ¬¤¢¤ë¡£
ns32k-sequent
ns32k-utek
tektronix!reed!mason ¤ËÏ¢Íí¤ò¼è¤Ã¤Æ¡¢¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¤ËɬÍ×¤Ê GNU CC ¤Î¥Ð¥¤¥Ê¥ê¤òÆþ¼ê¤·¤ÆÍߤ·¤¤¡£
romp-*-aos
romp-*-mach
hc ¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤Ï¡¢°ì±þưºî¤¹¤ë¤¬¡¢¥¹¥Æ¡¼¥¸ 2 ¤È¥¹¥Æ¡¼¥¸ 3 ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÈæ³Ó¤Ç¡¢¿§¡¹¤Ê¥Õ¥¡¥¤¥ë¤¬°ìÃפ·¤Ê¤¤¤À¤í¤¦¡£¤³¤ì¤é¤ÎÌäÂê¤Ï¡¢´ö¤Ä¤«¤ÎÉâÆ°¾®¿ôÅÀÄê¿ô¤Î¤ï¤º¤«¤Êº¹°Û¤Ë¤è¤ë¤â¤Î¤Ç¡¢°Â¿´¤·¤ÆÌµ»ë¤Ç¤¤ë¤â¤Î¤Ç¤¢¤ë¡£¥¹¥Æ¡¼¥¸ 3 ¤Î¥³¥ó¥Ñ¥¤¥é¤¬Àµ¤·¤¤¤â¤Î¤Ç¤¢¤ë¡£
rs6000-*-aix
powerpc-*-aix
libgcc.a ¤¢¤ë¤¤¤Ï enquire ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Î¥¨¥é¡¼¤¬¤¢¤ë¡£ÌäÂ꤬¤¢¤ë¤³¤È¤¬È½ÌÀ¤·¤Æ¤¤¤ë¥ê¥ê¡¼¥¹¤Ï°Ê²¼¤ÎÄ̤ꡣxlc-1.2.1.8¡¢xlc-1.3.0.0
(AIX3.2.5 ¤È¶¦¤ËÇÛÉÛ¤µ¤ì¤Æ¤¤¤ë)¡¢xlc-1.3.0.19 ¤Ç¤¢¤ë¡£xlc-1.2.1.28 ¤È xlc-1.3.0.24 (PTF 432238) ¤Ï¤É¤Á¤é¤âÀµ¤·¤¯Æ°ºî¤¹¤ëGNU CC ¤òÀ¸À®¤Ç¤¤ë¤³¤È¤¬¤ï¤«¤Ã¤Æ¤¤¤ë¤¬¡¢¤è¤êºÇ¶á¤Î¥ê¥ê¡¼¥¹¤ÎÊý¤¬GNU CC ¤òÀµ¤·¤¯¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¤Ç¤¤ë¡£
¥ê¥ê¡¼¥¹ 4.3.0 ¤Î AIX ¤È AIX 3.2.4 °ÊÁ°¤Î¥ê¥ê¡¼¥¹¤Ë´Þ¤Þ¤ì¤ë IBM ¤Î¥¢¥»¥ó¥Ö¥é¤Ï¡¢¥Ç¥Ð¥Ã¥°¾ðÊ󵿻÷Ì¿Îá¤ò¼õ¤±ÉÕ¤±¤Ê¤¤¡£¤³¤Î¥¢¥»¥ó¥Ö¥é¤ËÂФ¹¤ë½¤Àµ¤ÏPTF ¤È¤·¤ÆÆþ¼ê²Äǽ¤Ç¤¢¤ë¡£¤µ¤é¤Ë¡¢AIX 3.2.5 °Ê¹ß¤ª¤è¤Ó GNU ¥¢¥»¥ó¥Ö¥é¤ò»È¤¦¾ì¹ç¤Ï¡¢GNU C ¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¤¿¤á¤Ë¤Ï¡¢1995ǯ10·î16Æü°Ê¹ß¤Ë½¤Àµ¤µ¤ì¤¿¥Ð¡¼¥¸¥ç¥ó¤Î GNU ¥¢¥»¥ó¥Ö¥é¤¬É¬ÍפǤ¢¤ë¡£°Ê¾å¤ÎÌäÂê¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï README.RS6000 ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò»²¾È¤Î¤³¤È¡£
GNU CC ¤Ï¡¢¤Þ¤À 64¥Ó¥Ã¥È¤Î PowerPC Ì¿Îá¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¡£
¤³¤Î¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ç¤Ï Objective C ¤Ïưºî¤·¤Ê¤¤¡£¸Æ¤Ó½Ð¤·µ¬Ìó¤È¸ß´¹À¤Î¤Ê¤¤²¾Äê¤ò¤·¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë¡£
RS/6000 ¾å¤Î AIX ¤Ç¤Ï¡¢¹ç½°¹ñ°Ê³°¤Î´Ä¶¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë(NLS)¡£¥³¥ó¥Ñ¥¤¥é¤È¥¢¥»¥ó¥Ö¥é¤Ï NLS ¤ò»È¤Ã¤Æ¡¢ÉâÆ°¾®¿ôÅÀ¿ô(ÉâÆ°¾®¿ô¡ÖÅÀ¡×¤È¤·¤Æ¡Ö.¡×¤È¡Ö,¡×¤Î¤É¤Á¤é¤ò»È¤¦¤«)¤ò´Þ¤àÍÍ¡¹¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Î¥í¥±¡¼¥ë¸ÇͤÎɽ¸½¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£GNU CC ¤Ç¥ê¥ó¥¯¤·¤¿¥é¥¤¥Ö¥é¥ê¤¬¡¢¥¢¥»¥ó¥Ö¥é¤¬¼õ¤±ÉÕ¤±¤ë¤Î¤ÈƱ¤¸ÉâÆ°¾®¿ôÅÀ·Á¼°¤òÀ¸À®¤·¤Ê¤¤¤È¤¤¤¦ÌäÂ꤬Êó¹ð¤µ¤ì¤Æ¤¤¤ë¡£¤³¤ÎÌäÂê¤Ë½Ð²ñ¤Ã¤¿¤é¡¢´Ä¶ÊÑ¿ô LANG ¤ò"C" ¤« "En_US" ¤ËÀßÄꤷ¤Æ¤ß¤ÆÍߤ·¤¤¡£
AIX 4.1 ÍѤǤϡ¢GNU CC ¤¬¥Ð¥¤¥ó¥À(¥ê¥ó¥«)¤òµ¯Æ°¤¹¤ëÊýË¡¤¬ÊѤï¤Ã¤¿¤Î¤Ç¡¢¥ê¥ó¥¯»þ¤Ë¡¢°ÊÁ°¤Ï½Ð¤Ê¤«¤Ã¤¿¡¢¥·¥ó¥Ü¥ë¤¬Æó½ÅÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤È¤¤¤¦·Ù¹ð¤¬¤Ç¤ë¤«¤â¤·¤ì¤Ê¤¤¡£AIX ÍѤΠGNU CC ¤ÇÀ¸À®¤µ¤ì¤¿¥¢¥»¥ó¥Ö¥ê¥Õ¥¡¥¤¥ë¤Ï¡¢¸µ¤Î¥×¥í¥°¥é¥à¤Ë¸ºß¤¹¤ë¡¢¤¢¤ë¼ï¤Î¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤È´Ø¿ô¤ÎÀë¸À¤Ë¤Ä¤¤¤Æ¡¢¥·¥ó¥Ü¥ë¤ÎÊ£¿ôÄêµÁ¤ò´Þ¤ó¤Ç¤¤¤ë¡£·Ù¹ð¤¬½Ð¤Æ¤â¡¢¥ê¥ó¥«¤ÏÀµ¤·¤¤¥é¥¤¥Ö¥é¥ê¤ä¼Â¹Ô²Äǽ¤Ê¼Â¹Ô·Á¼°¤òÀ¸À®¤¹¤ë¤Ï¤º¤Ç¤¢¤ë¡£
¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢AIX 4.1 ¤Ï Power ¤Ç¤â PowerPC ¤Ç¤â»È¤¨¤ë¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£
-mcpu=cpu_type ¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤òconfigure ¤Î¥ª¥×¥·¥ç¥ó --with-cpu-cpu_type ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
powerpc-*-elf
powerpc-*-sysv4
-mcpu=cpu_type ¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤òconfigure ¤Î¥ª¥×¥·¥ç¥ó --with-cpu-cpu_type ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
powerpc-*-linux-gnu
-mcpu=cpu_type ¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤òconfigure ¤Î¥ª¥×¥·¥ç¥ó --with-cpu-cpu_type ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
powerpc-*-eabiaix
-mcpu=cpu_type ¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤òconfigure ¤Î¥ª¥×¥·¥ç¥ó --with-cpu-cpu_type ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
powerpc-*-eabisim
-mcpu=cpu_type ¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤òconfigure ¤Î¥ª¥×¥·¥ç¥ó --with-cpu-cpu_type ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
powerpc-*-eabi
-mcpu=cpu_type ¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤òconfigure ¤Î¥ª¥×¥·¥ç¥ó --with-cpu-cpu_type ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
powerpcle-*-elf
powerpcle-*-sysv4
-mcpu=cpu_type ¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤òconfigure ¤Î¥ª¥×¥·¥ç¥ó --with-cpu-cpu_type ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
powerpcle-*-solaris2*
-mcpu=cpu_type ¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤òconfigure ¤Î¥ª¥×¥·¥ç¥ó --with-cpu-cpu_type ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£Sun 4.0 ¥³¥ó¥Ñ¥¤¥é¤Î¥Ù¡¼¥¿ÈÇ¤Ç¤Ï GNU CC ¤òÀµ¤·¤¯¹½ÃۤǤ¤Ê¤¤¤è¤¦¤À¡£¤Þ¤¿¡¢¥Û¥¹¥È¥¢¥»¥ó¥Ö¥é¤È¥ê¥ó¥«¤Ë¤âÌäÂ꤬¤¢¤ë¡£¤³¤ÎÌäÂê¤ÏGNU ÈǤǤ³¤ì¤é¤Î¥Ä¡¼¥ë¤òÃÖ¤´¹¤¨¤ë¤³¤È¤ÇÂнè¤Ç¤¤ë¡£
powerpcle-*-eabisim
powerpcle-*-eabi
-mcpu=cpu_type ¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤òconfigure ¤Î¥ª¥×¥·¥ç¥ó --with-cpu-cpu_type ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
powerpcle-*-winnt
powerpcle-*-pe
-mcpu=cpu_type ¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤òconfigure ¤Î¥ª¥×¥·¥ç¥ó --with-cpu-cpu_type ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
vax-dec-ultrix
vcc) ¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤Ï¤¤¤±¤Ê¤¤¡£(Î㤨¤Ð¡¢alloca ¤¬»È¤ï¤ì¤¿¾ì¹ç¤Ë)Àµ¤·¤¯¤Ê¤¤¥³¡¼¥É¤òÀ¸À®¤¹¤ë¤³¤È¤¬¤¢¤ë¡£
°ìÊý¡¢pcc ¤Ç cp/parse.c ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤Ï¡¢pcc ¤ÎÆâÉô¥Æ¡¼¥Ö¥ë¤ÎÂ礤µ¤ÎÀ©¸Â¤Î¤¿¤á¡¢¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¡£¤³¤ÎÌäÂê¤òÈò¤±¤ë¤Ë¤Ï¡¢GNU C ¥³¥ó¥Ñ¥¤¥é¤À¤±¤ò¤Þ¤º¥³¥ó¥Ñ¥¤¥ë¤·¡¢¤½¤ì¤ò»È¤Ã¤Æ¡¢É¬ÍפÊÁ´¤Æ¤Î¸À¸ì¥Õ¥í¥ó¥È¥¨¥ó¥É¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤¬Îɤ¤¡£
sparc-sun-*
vax-dec-vms
we32k-*-*
¥·¥¹¥Æ¥à¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ï -g ¤ò»È¤ï¤Ê¤¤¤³¤È¡£¥·¥¹¥Æ¥à¤Î¥ê¥ó¥«¤¬¡¢¥Ç¥Ð¥Ã¥°¾ðÊ󤬤Ĥ¤¤¿¡¢¤³¤Î¤è¤¦¤ÊÂç¤¤Ê¥×¥í¥°¥é¥à°·¤¨¤Ê¤¤¤è¤¦¤Ç¤¢¤ë¡£
¥·¥¹¥Æ¥à¤Î¥³¥ó¥Ñ¥¤¥é¤Ï¡¢GNU CC ¤Î stmt.c ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë¡¢Ç½ÎϤò±Û¤¨¤Æ¤·¤Þ¤¦¡£¤³¤ì¤ò²óÈò¤¹¤ë¤Ë¤Ï¡¢GNU CC ¤Ë¤¢¤ë cpp ¤ò¤Þ¤º¹½ÃÛ¤·¡¢¥·¥¹¥Æ¥à¤Î¥×¥ê¥×¥í¥»¥Ã¥µ¤ÎÂå¤ï¤ê¤Ë¡¢¥·¥¹¥Æ¥à¤Î C ¥³¥ó¥Ñ¥¤¥é¤ÈÁȤ߹ç¤ï¤»¤Æ stmt.c ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£°Ê²¼¤Ë¤½¤ÎÊýË¡¤ò¼¨¤¹¡£
mv /lib/cpp /lib/cpp.att
cp cpp /lib/cpp.gnu
echo '/lib/cpp.gnu -traditional ${1+"$@"}' > /lib/cpp
chmod +x /lib/cpp
¥·¥¹¥Æ¥à¤Î¥³¥ó¥Ñ¥¤¥é¤Ï¡¢GNU CC ¤ÎºÇŬ²½¥Õ¥¡¥¤¥ë¤Î´ö¤Ä¤«¤Ë¤Ä¤¤¤ÆÀµ¤·¤¯¤Ê¤¤¥³¡¼¥É¤òÀ¸À®¤¹¤ë¡£¤³¤Î¤¿¤á¡¢¥¹¥Æ¡¼¥¸ 2 ¥³¥ó¥Ñ¥¤¥é¤ÏºÇŬ²½¤Ê¤·¤Ç¹½ÃÛ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤½¤Î¸å¡¢¥¹¥Æ¡¼¥¸ 3 ¥³¥ó¥Ñ¥¤¥é¤òºÇŬ²½ÉÕ¤¤Ç¹½ÃÛ¤¹¤ë¡£¤½¤ì¤Ç½ÐÍè¾å¤¬¤Ã¤¿¼Â¹Ô·Á¼°¤Ïưºî¤¹¤ë¤Ï¤º¤Ç¤¢¤ë¡£°Ê²¼¤Ë¼Â¹Ô¤¹¤Ù¤¥³¥Þ¥ó¥É¤ò¼¨¤¹¡£
make LANGUAGES=c CC=stage1/xgcc CFLAGS="-Bstage1/ -g" make stage2 make CC=stage2/xgcc CFLAGS="-Bstage2/ -g -O"
C++ ¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¤Ë¤Ï ULIMIT ¤ÎÀßÄê¤ò¾å¤²¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤¡£½ÐÍè¾å¤¬¤Ã¤¿ cc1puls ¤Ï¡¢1¥á¥¬¥Ð¥¤¥È¤ò±Û¤¨¤ë¤Î¤Ç¡£
¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤È¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¡¢¥½¡¼¥¹¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤È¤ÏÊ̤Υǥ£¥ì¥¯¥È¥ê¤Ëºî¤ê¤¿¤¤¾ì¹ç¤Ï¡¢°Ê²¼¤ÎÉôʬ¤Ç¼ê½ç¤¬°Û¤Ê¤ë¡£
VPATH ¤Îµ¡Ç½¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë Make ¤¬É¬ÍפǤ¢¤ë¡£(GNU Make ¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£ÂçÄñ¤Î BSD ¥·¥¹¥Æ¥à¤Î Make ¤â¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£)
configure ¤ò¼Â¹Ô¤·¤¿¤³¤È¤¬¤¢¤ë¤Ê¤é¡¢¤½¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ò¼è¤ê¾Ã¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤½¤Î¤¿¤á¤Ë¤Ï°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¡£
make distclean
configure ¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¡¢¥³¥ó¥Ñ¥¤¥é¤òºîÀ®¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Üư¤¹¤ë¡£
mkdir gcc-sun3 cd gcc-sun3
¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¥½¡¼¥¹¥³¡¼¥É¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ÈƱ¤¸¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
configure ¤¬¤É¤³¤Ë¤¢¤ë¤Î¤«¤ò¼Â¹Ô»þ¤Ë»ØÄꤷ¤Æ¤ä¤ë¡£
../gcc/configure ...
¤³¤ì¤Ç¤â configure ¤Ë¥³¥ó¥Ñ¥¤¥é¤Î¥½¡¼¥¹¤¬¤É¤³¤Ë¤¢¤ë¤Î¤«¤ò¶µ¤¨¤¿¤³¤È¤Ë¤Ê¤ë¡£configure ¤Ï¡¢¼«Ê¬¤¬µ¯Æ°¤µ¤ì¤¿¤È¤¤Î¥Õ¥¡¥¤¥ë̾¤«¤é¥Ç¥£¥ì¥¯¥È¥ê¤ò¼è¤ê½Ð¤¹¤«¤é¤Ç¤¢¤ë¡£¤³¤Î»ØÄê¤ò³Î¼Â¤Ë¤·¤¿¤±¤ì¤Ð¡¢--srcdir ¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¥½¡¼¥¹¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ì¤ÐÎɤ¤¡£
../gcc/configure --srcdir=../gcc other options
--srcdir ¤Ç»ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥ê¤¬¡¢configure ¤Î¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ÈƱ¤¸¤Ç¤¢¤ëɬÍפϤʤ¤¡£
¤³¤ì¤Ç¡¢make ¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£ÉáÄ̤Υ½¡¼¥¹¥Õ¥¡¥¤¥ë¤ËÊѹ¹¤¬¤¢¤Ã¤Æ¤â¡¢¾åµ¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Î¼ê½ç¤ò·«¤êÊÖ¤¹É¬ÍפϤʤ¤¡£¤·¤«¤·¡¢¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤¿¾ì¹ç¤Ï¡¢¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤¬¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢configure ¤òºÆ¼Â¹Ô¤¹¤ëɬÍפ¬¤¢¤ë¡£
GNU CC ¤Ï¡¢Â¿¤¯¤Îµ¡¼ï¤ËÂФ·¤Æ¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤È¤·¤Æµ¡Ç½¤¹¤ë¤¬¡¢Á´Éô¤Îµ¡¼ï¤ËÂФ·¤Æ¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¡£
mips-tdump.c ¤È mips-tfile.c
¤È¤¤¤¦Êä½õ¥×¥í¥°¥é¥à¤¬¡¢Mips ¾å¤Ç¤Ê¤¤¤È¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£GNU ¥¢¥»¥ó¥Ö¥é¤È¥ê¥ó¥«¤ò»È¤¨¤Ð Mips ÍѤ˥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤¬¹Ô¤Ê¤¨¤ë¡£
GNU CC ¤Ï¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤òÀ¸À®¤¹¤ë¤Î¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤òºî¤ë¤Ë¤Ï¡¢¤ª¤½¤é¤¯¡¢GNU CC ¤¬¼Â¹Ô¤µ¤»¤ë¤³¤È¤Î¤Ç¤¤ë¥¯¥í¥¹¥¢¥»¥ó¥Ö¥é¤¬É¬Íפˤʤ롣¥¿¡¼¥²¥Ã¥Èµ¡¼ï°Ê³°¤Î¥Þ¥·¥ó¤Ç¥ê¥ó¥¯¤ò¹Ô¤Ê¤¤¤¿¤±¤ì¤Ð¡¢Æ±Íͤ˥¯¥í¥¹¥ê¥ó¥«¤âɬÍפˤʤ롣¤Þ¤¿¡¢¥Û¥¹¥È¥Þ¥·¥ó¤Ë¥¤¥ó¥¹¥È¡¼¥ë²Äǽ¤Ê¥¿¡¼¥²¥Ã¥Èµ¡¼ïÍѤΥإåÀ¥Õ¥¡¥¤¥ë¤È¥é¥¤¥Ö¥é¥ê¤âɬÍפˤʤ롣
libgcc1.a)¤Î½àÈ÷¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò»È¤Ã¤Æ¡¢¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¡¢¼Â¹Ô¤¹¤ë¤Ë¤Ï°Ê²¼¤Î¤è¤¦¤ÊÃʳ¬¤ò·Ð¤ëɬÍפ¬¤¢¤ë¡£
crt....o) ¤¬É¬ÍפÀ¡£ÂçÂΤξì¹ç¤Ï¡¢Æ±¤¸¥Û¥¹¥È¥Þ¥·¥ó¾å¤ÇÁ´Éô¤ä¤Ã¤Æ¤·¤Þ¤¦¤Î¤¬´Êñ¤Ç¤¢¤ë¡£¤È¤¤¤¦¤Î¤Ï¡¢GNU CC ¤ò°ì²óµ¯Æ°¤¹¤ë¤À¤±¤ÇºÑ¤ó¤Ç¤·¤Þ¤¦¤«¤é¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¤Ë¤Ï¡¢Å¬Åö¤Ê¥¯¥í¥¹¥¢¥»¥ó¥Ö¥é¤ä¥¯¥í¥¹¥ê¥ó¥«¤¬É¬ÍפǤ¢¤ë¡£´ö¤Ä¤«¤Î¥¿¡¼¥²¥Ã¥È¤Ç¤Ï¡¢GNU ¥¢¥»¥ó¥Ö¥é¤È GNU ¥ê¥ó¥«¤¬ÍѰդµ¤ì¤Æ¤¤¤ë¡£
GNU CC ¤ò¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤È¤·¤Æ¹½ÃÛ¤¹¤ë¤Ë¤Ï¡¢configure ¤ò¼Â¹Ô¤¹¤ë¤³¤È¤«¤é»Ï¤á¤ë¡£--target=target ¤ò»È¤Ã¤Æ¥¿¡¼¥²¥Ã¥È¤ò»ØÄꤹ¤ë¡£configure ¤¬»È¤Ã¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤òÀµ¤·¤¯Ç§¼±¤·¤Ê¤¤¤È¤¤Ï¡¢--build=build ¤â¹ç¤ï¤»¤Æ»ØÄꤹ¤ë¡£°Ê²¼¤ÎÎã¤Ç¤Ï¡¢HP ¤Î 68030 ¤ò»È¤Ã¤¿ BSD ¥·¥¹¥Æ¥à¸þ¤±¤Î¥³¡¼¥É¤òÀ¸À®¤¹¤ë¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤ò¹Ô¤Ê¤Ã¤Æ¤¤¤ë¡£¤³¤ì¤Ï¡¢configure ¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤¬Àµ¤·¤¯Ç§¼±¤µ¤ì¤ë¾ì¹ç¤Ç¤¢¤ë¡£
./configure --target=m68k-hp-bsd4.3
¥¯¥í¥¹¥¢¥»¥ó¥Ö¥é¤È¥¯¥í¥¹¥ê¥ó¥«¤¬ÍøÍѤǤ¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢¤³¤³¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¡£/usr/local/target/bin ¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤³¤ì¤é¤òÃÖ¤¯¡£¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¯¤Ù¤¥Ä¡¼¥ë¤Î°ìÍ÷¤ò°Ê²¼¤Ë¼¨¤¹¡£
as
ld
ar
ranlib
GNU CC ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤È¤¡¢¾åµ¤Î¥×¥í¥°¥é¥à¤ò¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤«¤éõ¤·¡¢¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤¬¸å¤Ç¼Â¹Ô¤¹¤ë¤È¤¤Ëõ¤¹Å¬Àڤʾì½ê¤Ë¥³¥Ô¡¼¤¹¤ë¤«¥ê¥ó¥¯¤òÄ¥¤ë¡£
¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤òÍѰդ¹¤ë°ìÈÖ´Êñ¤ÊÊýË¡¤Ï¡¢Binutils ¥Ñ¥Ã¥±¡¼¥¸¤ÈGAS ¤ò¹½ÃÛ¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£¤³¤ì¤é¤Î¥Ä¡¼¥ë¤ò¡¢GNU CC ¤ò¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤¹¤ë¤Î¤Ë»È¤Ã¤¿¤Î¤ÈƱ¤¸ --host ¥ª¥×¥·¥ç¥ó¤È --target
¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤¹¤ë¤è¤¦¤Ë¤·¡¢¹½Ãۤȥ¤¥ó¥¹¥È¡¼¥ë¤ò¹Ô¤Ê¤¦¡£¤³¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ç¡¢Binutils ¤ä GAS ¤Î¼Â¹Ô·Á¼°¤¬¼«Æ°Åª¤ËŬÀڤʥǥ£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤ë¡£¤¿¤À¡¢»Äǰ¤Ê¤³¤È¤Ë¡¢Binutils ¤ä GAS ¤Ï¡¢GNU CC ¤¬¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥¿¡¼¥²¥Ã¥È¤ÎÁ´¤Æ¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£
ɸ½à C ¥é¥¤¥Ö¥é¥ê¤Î¤è¤¦¤Ê¡¢¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤È¶¦¤Ë»È¤¦¥é¥¤¥Ö¥é¥ê¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¾ì¹ç¤Ï¡¢¤½¤ì¤é¤ò /usr/local/target/lib ¤ËÃÖ¤¯¤³¤È¡£GNU CC ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤È¡¢¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î¥Õ¥¡¥¤¥ë¤¬¡¢GNU CC ¤¬¸¡º÷¤·¤Æ¥ê¥ó¥¯¤ò¹Ô¤Ê¤¦Àµ¤·¤¤¾ì½ê¤Ë¥³¥Ô¡¼¤µ¤ì¤ë¡£°Ê²¼¤Ë¡¢¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤«¤é¥é¥¤¥Ö¥é¥ê¤ò´ö¤Ä¤«¥³¥Ô¡¼¤¹¤ëÎã¤ò¼¨¤¹¡£
ftp target-machine lcd /usr/local/target/lib cd /lib get libc.a cd /usr/lib get libg.a get libm.a quit
ɬÍפˤʤë¥é¥¤¥Ö¥é¥ê¤ÎÀµ³Î¤ÊÁȤȡ¢¥¿¡¼¥²¥Ã¥È¥Þ¥·¥ó¾å¤Ç¤Î°ÌÃ֤ϡ¢¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤ËÈó¾ï¤Ë°Í¸¤¹¤ë¡£
¿¤¯¤Îµ¡¼ï¤Ç¤Ï¡¢crt0.o ¤ä crtn.o ¤Î¤è¤¦¤Ê¡¢³Æ¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤Ë¥ê¥ó¥¯¤µ¤ì¤ë¡Ö³«»Ï¥Õ¥¡¥¤¥ë¡×¤òɬÍפȤ¹¤ë¡£¤³¤ÎÆó¤Ä¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢/usr/local/target/lib ¤Ë¸ºß¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£crt0.o ¤Ë¤ÏÊ£¿ô¤ÎÊѼ郎¸ºß¤¹¤ë²Äǽ¤»¤¤¤¬¤¢¤ë¡£¤³¤ì¤Ï¡¢¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¤ä¾¤Î¥³¥ó¥Ñ¥¤¥ë¥ª¥×¥·¥ç¥ó¤Ë±þ¤¸¤Æ»È¤ï¤ì¤ë¡£¥¿¡¼¥²¥Ã¥È¤Î STARTFILE_SPEC ¤ÎÄêµÁ¤ò¸«¤Æ¡¢¤É¤¦¤¤¤¦³«»Ï¥Õ¥¡¥¤¥ë¤ò»È¤Ã¤Æ¤¤¤ë¤«¤ò¸«¤ÆÍߤ·¤¤¡£°Ê²¼¤Ë¡¢¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ò¥¿¡¼¥²¥Ã¥È¥Þ¥·¥ó¤«¤é¥³¥Ô¡¼¤¹¤ëÊýË¡¤ÎÎã¤ò¼¨¤¹¡£
ftp target-machine lcd /usr/local/target/lib prompt cd /lib mget *crt*.o cd /usr/lib mget *crt*.o quit
libgcc.a ¤È¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥éGNU CC ¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥³¡¼¥É¤Ï¡¢·è¤Þ¤Ã¤¿¼Â¹Ô»þ¥µ¥Ý¡¼¥È´Ø¿ô¤ò°ÅÌۤ˻Ȥ¦¡£¤³¤Î¤¦¤Á¤Î´ö¤Ä¤«¤Î´Ø¿ô¤Ï¡¢GNU CC ¼«¿È¤ÇÌäÂê¤Ê¤¯¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤ë¤Î¤À¤¬¡¢´ö¤Ä¤«¤Ç¤¤Ê¤¤¤â¤Î¤¬¤¢¤ë¡£ÌäÂê¤È¤Ê¤ë´Ø¿ô¤Ï¥½¡¼¥¹¥Õ¥¡¥¤¥ë libgcc1.c ¤Ë¤¢¤ë¤â¤Î¤Ç¤¢¤ë¡£¤³¤Î¥Õ¥¡¥¤¥ë¤«¤éºî¤é¤ì¤ë¥é¥¤¥Ö¥é¥ê¤Ï libgcc1.a ¤È¸Æ¤Ð¤ì¤ë¡£
¥Í¥¤¥Æ¥£¥Ö¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¤È¤¤Ï¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï²¿¤«Â¾¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¡£¤½¤Î¥³¥ó¥Ñ¥¤¥é¤È¤ÏGNU CC ¤ò¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¤¹¤ë¤Î¤Ë»È¤Ã¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ë¡£¤ª¤½¤é¤¯¡¢¤½¤Î¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¤³¤ì¤é¤Î±é»»¤ò³«¤«¤ì¤¿¥³¡¼¥É¤Ç½ñ¤¯ÊýË¡¤òÃΤäƤ¤¤ë¤À¤í¤¦¤·¡¢¤¢¤ë¤¤¤Ï¡¢¤½¤Îµ¡¼ï¤ËÉÕ¤¤¤Æ¤¯¤ë¤Ï¤º¤Î¼Â¹Ô»þ¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥óµ¡Ç½¤ò¸Æ¤Ó½Ð¤¹ÊýË¡¤òÃΤäƤ¤¤ë¤À¤í¤¦¡£¤À¤¬¡¢¤³¤ÎÊýË¡¤Ï¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¾ì¹ç¤Ë¤Ï»È¤¨¤Ê¤¤¡£¹½Ãۤ˻Ȥ¦¥³¥ó¥Ñ¥¤¥é¤Ï¥Û¥¹¥È¥·¥¹¥Æ¥à¤Ë¤Ä¤¤¤Æ¤ÏÃΤäƤ¤¤ë¤¬¡¢¥¿¡¼¥²¥Ã¥È¥·¥¹¥Æ¥à¤Î¤³¤È¤ÏÃΤé¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
¤³¤Î¤¿¤á¡¢¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ëºÝ¤Ë¤Ï¡¢´üÂÔ¤µ¤ì¤ë»Å»ö¤ò¹Ô¤Ê¤¦Å¬Àڤʥ饤¥Ö¥é¥ê libgcc1.a ¤òÍѰդ¹¤ëɬÍפ¬¤¢¤ë¡£
libgcc1.c ¤ò¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¼«ÂΤǥ³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤Ï¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤¢¤ë´Ø¿ô·²¤Ï¡¢GNU CC ¤¬ÆÉ¼Ô¤Î¥¿¡¼¥²¥Ã¥Èµ¡¼ïÍѤˤϤɤ¦¤ä¤Ã¤Æ³«¤«¤ì¤¿·Á¤Ç¥³¡¼¥É¤ò½ñ¤±¤ÐÎɤ¤¤«ÃΤé¤Ê¤¤¤è¤¦¤Ê»»½Ñ±é»»¤ò¼ÂÁõ¤¹¤ë¤â¤Î¤Ç¤¢¤ë¤ÈÁÛÄꤵ¤ì¤Æ¤¤¤ë¡£¤³¤ì¤é¤Î´Ø¿ô¤ò GNU CC ¼«ÂΤǥ³¥ó¥Ñ¥¤¥ë¤·¤¿¤Ê¤é¡¢Ìµ¸Â¤ËºÆµ¢Åª¤Ê¥³¥ó¥Ñ¥¤¥ë¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¡£
Ǥ°Õ¤ÎÍ¿¤¨¤é¤ì¤¿¥¿¡¼¥²¥Ã¥È¤Ç¡¢¤³¤ì¤é¤Î´Ø¿ô¤Î¤Û¤È¤ó¤É¤ÏɬÍפǤϤʤ¤¡£GNU CC ¤¬¡¢»»½Ñ±é»»¤ò³«¤¤¤¿¥³¡¼¥É¤Ë½ñ¤±¤ë¤Ê¤é¡¢¤³¤ì¤é¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤µ¤Ê¤¤¡£ÆÉ¼Ô¤Î¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Ç¡¢¤³¤ì¤é¤Î´Ø¿ô¤ò°ìÀÚɬÍפȤ·¤Ê¤¤¤È¤¤¤¦¤Î¤â²Äǽ¤Ç¤¢¤ë¡£¤½¤Î¾ì¹ç¤Ï¡¢libgcc1.a ¤È¤·¤Æ¶õ¤Î¥é¥¤¥Ö¥é¥ê¤òÍ¿¤¨¤ì¤ÐÎɤ¤¡£
¿¤¯¤Î¥¿¡¼¥²¥Ã¥È¤Ç¤Ï¡¢¥µ¥Ý¡¼¥È¤¬É¬Íפʥ饤¥Ö¥é¥ê¤Ï¡¢¾è»»¤È½ü»»ÍѤΤâ¤Î¤Î¤ß¤Ç¤¢¤ë¡£¾è»»¤È½ü»»¤ò¹Ô¤¦´Ø¿ô¤ò´Þ¤à¥é¥¤¥Ö¥é¥ê¤È¥ê¥ó¥¯¤¹¤ë¤Î¤Ê¤é¡¢MULSI3_LIBCALL Åù¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤³¤È¤Ç¡¢GNU CC ¤ËľÀܸƽФ·¤ò¹Ô¤ï¤»¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£¤³¤ì¤é¤Î¥Þ¥¯¥í¤Ï¡¢¥¿¡¼¥²¥Ã¥Èµ½Ò¥Þ¥¯¥í¥Õ¥¡¥¤¥ë¤ÇÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ë¡£´ö¤Ä¤«¤Î¥¿¡¼¥²¥Ã¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢´û¤ËÄêµÁºÑ¤ß¤Ç¤¢¤ë¡£¤³¤ì¤Ç libgcc1.a ¤òÉÔÍפȤ¹¤ë¤Î¤Ë¤Ï½¼Ê¬¤Ç¤¢¤ë²ÄǽÀ¤¬¤¢¤ë¡£¤â¤·¤½¤¦¤Ê¤é¡¢¶õ¤Î¥é¥¤¥Ö¥é¥ê¤ò»ØÄꤹ¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£
¥¿¡¼¥²¥Ã¥È¤Ë¤è¤Ã¤Æ¤Ï¡¢ÉâÆ°¾®¿ôÅÀÌ¿Î᤬¤Ê¤¤¤â¤Î¤¬¤¢¤ë¡£¤³¤ì¤é¤Îµ¡¼ï¤Ç¤Ï libgcc1.a Æâ¤ÎÊ̤δؿô¤¬É¬Íפˤʤ롣¤½¤ì¤Ï¡¢ÉâÆ°¾®¿ôÅÀ»»½Ñ±é»»¤ò¹Ô¤¦¤â¤Î¤À¤¨¤ë¡£GNU CC ¤ÎºÇ¶á¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¤Ï¡¢ÉâÆ°¾®¿ôÅÀ±é»»¤ò¥¨¥ß¥å¥ì¡¼¥È¤¹¤ë¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£¤¢¤ëÄøÅÙºî¶È¤ò¹Ô¤¨¤Ð¡¢libgcc1.a ¤È¤·¤Æ»È¤¨¤ëÉâÆ°¾®¿ôÅÀ¥¨¥ß¥å¥ì¡¼¥¿¤òºî¤ê¾å¤²¤ë¤³¤È¤¬½ÐÍè¤ë¤Ï¤º¤Ç¤¢¤ë¡£¤ª¤½¤é¤¯¡¢¾Íè¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢¤³¤Îºî¶È¤ò¼«Æ°Åª¤Ë´Êñ¤Ë¹Ô¤¦¥³¡¼¥É¤¬Æþ¤ë¤À¤í¤¦¡£Æþ¤ë¤«¤É¤¦¤«¤Ï¡¢¼ÂÁõ¤·¤¿¤¤¤È¤¤¤¦¿Í¤¬Ã¯¤«¤¤¤ë¤«¤É¤¦¤«¤Ë°Í¤ë¡£
ÁȤ߹þ¤ß¥¿¡¼¥²¥Ã¥È¤ÎÃæ¤Ë¤Ï¡¢ libgcc1.a ¤ÎɬÍפÊÁ´¤Æ¤Î¥ë¡¼¥Á¥ó¤ò C ¤Þ¤¿¤Ï¥¢¥»¥ó¥Ö¥é¤Ç½ñ¤¤¤¿¤â¤Î¤¬ÉÕ¤¤¤Æ¤¯¤ë¤â¤Î¤¬¤¢¤ë¡£¤³¤ì¤é¤Î¥¿¡¼¥²¥Ã¥È¤Ç¤Ï¡¢libgcc1.a ¤ò¼«Æ°Åª¤Ë¹½ÃÛ¤¹¤ë¤Î¤Ç¡¢ÆÉ¼Ô¤Ï²¿¤âÆÃÊ̤ʤ³¤È¤ò¤¹¤ëɬÍפ¬¤Ê¤¤¡£¤½¤Î¾¤ÎÁȤ߹þ¤ß¥¿¡¼¥²¥Ã¥È¤Ï¡¢¤Ê¤ó¤é libgcc1.a ¤òɬÍפȤ·¤Ê¤¤¡£¤Ê¤¼¤Ê¤é¡¢É¬Íפʱ黻¤ÏÁ´¤Æ¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤è¤ê¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë¡£
ÆÉ¼Ô¤Î¥¿¡¼¥²¥Ã¥È¥·¥¹¥Æ¥à¤Ë²¿¤«Ê̤ΠC ¥³¥ó¥Ñ¥¤¥é¤¬¤¢¤ë¤Ê¤é¡¢GNU CC ¤ò¤½¤Îµ¡¼ï¤Ç¤Î¥Í¥¤¥Æ¥£¥Ö¡¦¥³¥ó¥Ñ¥¤¥é¤È¤·¤Æ¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤·¡¢make libgcc1.a ¤Ç libgcc1.a ¤ò¹½ÃÛ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ê¡¢¤½¤Î·ë²ÌÆÀ¤é¤ì¤ë¥Õ¥¡¥¤¥ë¤ò¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤È¶¦¤Ë»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£¤³¤Î¤¿¤á¤Ë¤Ï¡¢¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Ç°Ê²¼¤Î¼ê½ç¤ò¼Â¹Ô¤¹¤ë¡£
cd target-build-dir ./configure --host=sparc --target=sun3 make libgcc1.a
¼¡¤Ë°Ê²¼¤ò¥Û¥¹¥Èµ¡¼ï¤Ç¼Â¹Ô¤¹¤ë¡£
ftp target-machine binary cd target-build-dir get libgcc1.a quit
libgcc1.a ¤ÇɬÍפȤµ¤ì¤ë´Ø¿ô¤òÄ󶡤¹¤ë¤â¤¦°ì¤Ä¤ÎÊýË¡¤È¤·¤Æ¡¢¤½¤ì¤é¤Î´Ø¿ô¤ËÂФ·¤Æ perform_... ¥Þ¥¯¥í¤òŬÀÚ¤ËÄêµÁ¤¹¤ëÊýË¡¤¬¤¢¤ë¡£¤³¤ì¤é¤Î¥Þ¥¯¥íÄêµÁ¤Ç¡¢¤³¤ì¤«¤é¼ÂÁõ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤Þ¤µ¤Ë¤½¤Î C ¤Î»»½Ñ±é»»»Ò¤ò»È¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ÆÉ¼Ô¤¬¹½ÃÛÃæ¤Î¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤ë¤Ï¤º¤Ç¤¢¤ë¡£(¤³¤ì¤é¤ÎÄêµÁ¤¬ÆÉ¼Ô¤Î¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë¤Ë´û¤Ë¸ºß¤¹¤ë¤Ê¤é¡¢É¬Íפʤâ¤Î¤Ï·¤Ã¤¿¤³¤È¤Ë¤Ê¤ë¡£)
perform_... ¥Þ¥¯¥í¤ò»È¤Ã¤Æ libgcc1.a ¤ò¹½ÃÛ¤¹¤ë¤Ë¤Ï¡¢GNU CC ¤ò¹½ÃÛ¤¹¤ë¤È¤¤Ë LIBGCC1=libgcc1.a OLDCC=./xgcc ¤È¤¹¤ë¡£¤½¤¦¤·¤Ê¤¤¾ì¹ç¤Ï¡¢make ¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¡¢¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¡¢Âå¤ï¤ê¤Î¥é¥¤¥Ö¥é¥ê¤òlibgcc1.a ¤È¤¤¤¦Ì¾Á°¤ÇÃÖ¤¯É¬Íפ¬¤¢¤ë¡£
ñÂÎ¤Î¥×¥í¥°¥é¥à¤äÁȤ߹þ¤ß¥·¥¹¥Æ¥à¸þ¤±¤Î¥×¥í¥°¥é¥à¤ò¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¤Ï¡¢GNU CC ¤Î°ìÉô(¤½¤ì¤ËÆÉ¼Ô¤Î¥×¥í¥°¥é¥à¤Î°ìÉô)¤Ç¤¢¤ë¤â¤Î¤ò½ü¤¤¤Æ¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ï²¿¤âɬÍפʤ¤¤À¤í¤¦¡£¤·¤«¤·¡¢ÆÉ¼Ô¤Î¥×¥í¥°¥é¥à¤ò libc.a ¤Î¤è¤¦¤Êɸ½à C ¥é¥¤¥Ö¥é¥ê¤È¥ê¥ó¥¯¤·¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢¤½¤Î¥é¥¤¥Ö¥é¥ê¤ËÉÕ°¤¹¤ë¤Ï¤º¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò»È¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¤À¤í¤¦¡£
GNU C ¥³¥ó¥Ñ¥¤¥é¤Ë¤Ï¤³¤¦¤¤¤¦¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÏÉÕ¤¤¤Æ¤¤¤Ê¤¤¡£²¿¸Î¤Ê¤é¡¢(1) ¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë¤â¤Î¤Ç¤¢¤ê¡¢(2) C ¥é¥¤¥Ö¥é¥ê¤Ë½ê°¤¹¤ë¤â¤Î¤Ç¤¢¤Ã¤Æ¡¢¥³¥ó¥Ñ¥¤¥é¤Ë½ê°¤¹¤ë¤â¤Î¤Ç¤Ï¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
GNU C ¥é¥¤¥Ö¥é¥ê¤¬ÆÉ¼Ô¤ÎÂоݵ¡¼ï¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Ê¤é¡¢¤½¤³¤«¤é¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆþ¼ê¤Ç¤¤ë(ÆÉ¼Ô¤Î¥×¥í¥°¥é¥à¤ò¥ê¥ó¥¯¤¹¤ë¤È¤¤Ë¼ÂºÝ¤Ë GNU ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦¤³¤È¤òÁÛÄꤷ¤¿¾ì¹ç)¡£
ÆÉ¼Ô¤ÎÂоݵ¡¼ï¤Ë C ¥³¥ó¥Ñ¥¤¥é¤¬ÉÕ¤¤¤Æ¤¤¤ë¤Ê¤é¡¢¤ª¤½¤é¤¯Å¬ÀڤʥإåÀ¥Õ¥¡¥¤¥ë¤âÉÕ¤¤¤Æ¤¯¤ë¤Ï¤º¤Ç¤¢¤ë¡£¤³¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥Û¥¹¥È¥Þ¥·¥ó¤«¤é¥¢¥¯¥»¥¹¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ì¤Ð¡¢¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤«¤é¤â»È¤¨¤ë¡£
¤½¤¦¤Ê¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤Ê¤¦¤Ë¤ÏÆÉ¼Ô¼«¿È¤¬¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÍѰդ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
ŬÅö¤Ê¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤Ã¤¿¤Ê¤é¡¢¤½¤ì¤ò¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ëÁ°¤Ë¡¢¥Ç¥£¥ì¥¯¥È¥ê /usr/local/target/include ¤ËÃÖ¤¯¡£¤½¤¦¤·¤Æ¤ª¤¯¤È¡¢¥¤¥ó¥¹¥È¡¼¥ë¤ÎºÝ¤Ë fixincludes ¤¬Àµ¤·¤¯¼Â¹Ô¤µ¤ì¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î½¤ÀµÈǤò GNU CC ¤¬»ÈÍѤ¹¤ë¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¡£
¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ï¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ëÁ°¤ËÍѰդ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¹½ÃÛ¤ÎÃʳ¬¤Ç¡¢¼ÂºÝ¤Ë¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¼Â¹Ô¤·¤Æ libgcc.a ¤Î°ìÉô¤òÀ¸À®¤¹¤ë¤«¤é¤Ç¤¢¤ë¡£(¤³¤ì¤é¤Ï¡¢GNU CC ¤Ç¥³¥ó¥Ñ¥¤¥ë²Äǽ¤Ê°ìÉô¤Ç¤¢¤ë¡£)
¤³¤Î°ìÉô¤ÏŬÀڤʥإåÀ¥Õ¥¡¥¤¥ë¤òɬÍפȤ¹¤ë¡£
°Ê²¼¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤«¤é¥³¥Ô¡¼¤¹¤ëÊýË¡¤ÎÎã¤ò¼¨¤¹¡£¥¿¡¼¥²¥Ã¥Èµ¡¼ï¾å¤Ç¤Þ¤º°Ê²¼¤ò¼Â¹Ô¤¹¤ë¡£
(cd /usr/include; tar cf - .) > tarfile
¼¡¤Ë¥Û¥¹¥È¥Þ¥·¥ó¤Ç°Ê²¼¤ò¼Â¹Ô¤¹¤ë¡£
ftp target-machine lcd /usr/local/target/include get tarfile quit tar xf tarfile
¤è¤¦¤ä¤¯¡¢°ì¸Ä¤Îµ¡¼ï¸þ¤±¤Î¥³¥ó¥Ñ¥¤¥é¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤Ë¡¢¥¹¥Æ¡¼¥¸ 1 ¤ò¹½ÃÛ¤¹¤ëÃʳ¬¤Ë¿Ê¤à¤³¤È¤¬¤Ç¤¤ë¡£ÆÉ¼Ô¤¬²¿¤é¤«¤Î libgcc1.a ¤òÍѰդ·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤òɬÍפȤ¹¤ë»þÅÀ¤Ç¥³¥ó¥Ñ¥¤¥ë¤¬»ß¤Þ¤ê¡¢Å¬Àڤʥ¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½Ð¤¹¤À¤í¤¦¡£libgcc1.a ¤òÍѰդ·¤Æ¤¤¤ì¤Ð¡¢¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¤È¡¢libgcc1-test ¤È¤¤¤¦¥Æ¥¹¥È¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¡¢¥ê¥ó¥¯¤¹¤ë¤Ï¤º¤Ç¤¢¤ë¡£¤³¤Î¥ê¥ó¥¯¤ÎºÝ¤Ë¡¢¥¨¥é¡¼¤¬½Ð¤¿¤Ê¤é¡¢libgcc1.a ¤ÎÃæ¤ËɬÍפʥ롼¥Á¥ó¤¬Á´Éô¤Ï·¤Ã¤Æ¤¤¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£
ÆÉ¼Ô¤Ï¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë float.h ¤òÄ󶡤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤½¤Î¤¿¤á¤Î°ì¤Ä¤ÎÊýË¡¤Ï¡¢¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Ç enquire ¤ò¥³¥ó¥Ñ¥¤¥ë¤·¡¢¼Â¹Ô¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£enquire ¤¬¤ä¤ë¤³¤È¤Ï¡¢¥¿¡¼¥²¥Ã¥Èµ¡¼ï¾å¤Ç¼Â¹Ô¤·¤Æ¡¢¼Â¸³¤Ë¤è¤ê¡¢¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤ÎÉâÆ°¾®¿ôÅÀɽ¸½¤ÎÀ¼Á¤òÌÀ¤é¤«¤Ë¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£enquire ¤Ïȯ¸«¤·¤¿·ë²Ì¤ò¥Ø¥Ã¥À¥Õ¥¡¥¤¥ëfloat.h ¤ËµÏ¿¤¹¤ë¡£¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Ç enquire ¤ò¼Â¹Ô¤·¤Æ¤³¤Î¥Õ¥¡¥¤¥ë¤òÀ¸À®¤Ç¤¤Ê¤¤¾ì¹ç¤Ï¡¢²¿¤«Ê̤μêÃʤÇŬÀÚ¤Ê float.h
¤òÍѰդ¹¤ëɬÍפ¬½Ð¤Æ¤¯¤ë¤À¤í¤¦¡£¤µ¤â¤Ê¤¤¤È¡¢¥×¥í¥°¥é¥à¤ÎÃæ¤Çfloat.h ¤ò»È¤ï¤Ê¤¤¤è¤¦¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¯¤Ê¤ë¡£
¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤Î¾ì¹ç¤Ï¡¢¥¹¥Æ¡¼¥¸2 ¤òºî¤é¤Ê¤¤¤è¤¦¤Ë¡£¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò»È¤Ã¤Æ¡¢GNU CC ¤ò¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤È¤·¤Æ¹½ÃÛ¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£²¿¸Î¤Ê¤é¡¢¤½¤¦¤¹¤ë¤È¡¢¥Û¥¹¥È¤Ç¤Ï¤Ê¤¯¤Æ¡¢¥¿¡¼¥²¥Ã¥Èµ¡¼ï¾å¤Çưºî¤¹¤ë¥×¥í¥°¥é¥à¤¬¤Ç¤¤ë¤«¤é¤Ç¤¢¤ë¡£Î㤨¤Ð¡¢386¤«¤é68030¤Ø¤Î¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¤½¤ì¼«¿È¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¾ì¹ç¡¢¤½¤Î·ë²Ì¤Ï 386 ¤Ë¤È¤Ã¤Æ¤â(68030¤Î¥³¡¼¥É¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤Î¤Ç)¡¢68030 ¤Ë¤È¤Ã¤Æ¤â(386 ¤ò¥Û¥¹¥È¤È¤·¤Æ¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç) Àµ¤·¤¯¤Ê¤¤¡£GNU CC ¼«¿È¤ò 68030 ¤Î¥³¡¼¥É¤Ë¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢68030 ¾å¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤è¤¦¤È¤â¡¢386 ¾å¤Ç¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤è¤¦¤È¤â¡¢¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥¸¤Ë 68030 ¤ò¥Û¥¹¥È¤È¤·¤Æ»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤Ë¤Ï¡¢ÉáÄÌ¤ÈÆ±¤¸¤Ë¡¢make install
¤È¤¹¤ë¡£
Solaris ¤Ç¤Ï¡¢GNU CC ¤òºî¤ë¤È¤¤Ë¡¢/usr/ucb ¤Ë¤¢¤ë¡¢¥ê¥ó¥«¤ä¤½¤Î¾¤Î¥Ä¡¼¥ë¤ò»È¤ï¤Ê¤¤¤³¤È¡£Âå¤ï¤ê¤Ë¡¢/usr/ccs/bin ¤Ë¤¢¤ë¤â¤Î¤ò»È¤¦¤è¤¦¤Ë¤¹¤ë¡£
¥¢¥»¥ó¥Ö¥é¤¬¡¢¥Ö¡¼¥È¥¹¥È¥é¥Ã¥×¤ÎºÝ¤Ë Error: misaligned data ¤ÈÊó¹ð¤·¤Æ¤¤¿¤é¡¢¤ª¤½¤é¤¯ GNU ¥¢¥»¥ó¥Ö¥é¤Î¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤ò»È¤Ã¤Æ¤¤¤ë¤»¤¤¤Ç¤¢¤ë¡£GNU binutils ¤ÎºÇ¿·ÈǤ˹¹¿·¤¹¤ë¤«¡¢Solaris ¤Î¥¢¥»¥ó¥Ö¥é¤ò»È¤¦¤³¤È¡£
libgcc.a ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë¡¢´Ä¶ÊÑ¿ô FLOAT_OPTION
¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤¹¤ë¤³¤È¡£libgcc.a ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë¤³¤Î´Ä¶ÊÑ¿ô¤¬ f68881 ¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¤È¡¢¥³¥ó¥Ñ¥¤¥ë¤·¤¿·ë²Ì¤Î¥³¡¼¥É¤¬ÆÃÊ̤ʳ«»Ï¥Õ¥¡¥¤¥ë¤È¥ê¥ó¥¯¤¹¤ë¤³¤È¤òÍ׵ᤷ¡¢ÆÃÊ̤ʶìÏ«¤ò¤·¤Ê¤¤¤ÈÀµ¤·¤¯¥ê¥ó¥¯¤Ç¤¤Ê¤¤¤À¤í¤¦¡£
Sun ¤Î¥é¥¤¥Ö¥é¥ê¤ÎÆÃÄê¤Î¥Ð¡¼¥¸¥ç¥ó¤Î alloca ¤Ë¤Ï¥Ð¥°¤¬¤¢¤ë¡£¤³¤Î¥Ð¥°¤òÈò¤±¤ë¤Ë¤Ï¡¢GNU CC ¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿ GNU CC ¤Î¥Ð¥¤¥Ê¥ê¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¡£¤³¤¦¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¥Ð¥¤¥Ê¥ê¤Ï¡¢alloca¤òÁȤ߹þ¤ß´Ø¿ô¤È¤·¤Æ»È¤¤¡¢¥é¥¤¥Ö¥é¥êÃæ¤Î¤â¤Î¤ò»È¤¦¤³¤È¤Ï¤Ê¤¤¡£
Sun ¤Î¥³¥ó¥Ñ¥¤¥é¤Î´ö¤Ä¤«¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢GNU CC ¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤ë¤È¤¤ËÍî¤Á¤Æ¤·¤Þ¤¦¡£ÌäÂê¤Ï¡¢cpp ¤¬¥»¥°¥á¥ó¥Æ¡¼¥·¥ç¥ó°ãÈ¿¤òµ¯¤³¤¹¤³¤È¤Ë¤¢¤ë¡£¤³¤ÎÌäÂê¤Ï¡¢´Ä¶ÊÑ¿ô¤ËÂçÎ̤Υǡ¼¥¿¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤³¤È¤Ëµ¯°ø¤¹¤ë¤è¤¦¤Ë»×¤¨¤ë¡£¤³¤ÎÌäÂê¤ò²óÈò¤¹¤ë¤Ë¤Ï¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¹Ô¤ò»È¤¤¡¢Sun CC ¤ÇGNU CC ¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¡£
make CC="TERMCAP=x OBJS=x LIBFUNCS=x STAGESTUFF=x cc"
SunOS 4.1.3 ¤È 4.1.3_U1 ¤Ë¤Ï¡¢GNU CC ¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤ë»þ¤ËÉÔÄê´ü¤Ë¥³¥¢¥À¥ó¥×¤¹¤ë¤È¤¤¤¦¥Ð¥°¤¬¤¢¤ë¡£¶¦Ä̤¹¤ë¾É¾õ¤ÏºÆ¸½À¤Î¤Ê¤¤ÆâÉô¥³¥ó¥Ñ¥¤¥é¥¨¥é¡¼¤Ç¤¢¤ë¡£¤³¤ÎÌäÂê¤òľ¤¹¤Ë¤Ï¡¢Sun ¤Î¿ä¾©¥Ñ¥Ã¥Á 100726(SunOS 4.1.3 ÍÑ) ¤« 101508(SunOS 4.1.3_U1) ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤«¡¢¤¢¤ë¤¤¤Ï¤â¤Ã¤È¿·¤·¤¤ SunOS ¤Î¥ê¥ê¡¼¥¹¤Ë¹¹¿·¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£
VMS ÈǤΠGNU CC ¤Ï¡¢¥½¡¼¥¹¥³¡¼¥É¤È¥³¥ó¥Ñ¥¤¥ëºÑ¤ß¥Ð¥¤¥Ê¥ê¤ÎÁÐÊý¤ò´Þ¤à¥Ð¥Ã¥¯¥¢¥Ã¥×¡¦¥»¡¼¥Ö¥»¥Ã¥È¤ÇÇÛÉÛ¤µ¤ì¤Æ¤¤¤ë¡£
gcc ¥³¥Þ¥ó¥É¤ò¡¢VMS C ¥³¥ó¥Ñ¥¤¥é¤ÈƱ¤¸ÊýË¡¤Ç¡¢´Êñ¤Ë»È¤¨¤ë¤è¤¦¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤Ë¤Ï¡¢GNU CC ÍѤΠVMS CLD ¥Õ¥¡¥¤¥ë¤ò°Ê²¼¤Î¤è¤¦¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
GNU_CC ¤È GNU_CC_INCLUDE ¤òÄêµÁ¤·¡¢GNU CC ¤Î¼Â¹Ô·Á¼°(gcc-cpp.exe¡¢gcc-cc1.exe¡¢Åù)¤ÈC ¤Î¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò¤½¤ì¤¾¤ì»Ø¤¹¤è¤¦¤Ë¤¹¤ë¡£¤³¤ì¤Ë¤Ï¡¢
$ assign /system /translation=concealed - disk:[gcc.] gnu_cc $ assign /system /translation=concealed - disk:[gcc.include.] gnu_cc_include
¤È¤¤¤¦¥³¥Þ¥ó¥É¤ËŬÀڤʥǥ£¥¹¥¯Ì¾¤È¥Ç¥£¥ì¥¯¥È¥ê̾¤ò»ØÄꤹ¤ë¡£¤³¤ì¤é¤Î¥³¥Þ¥ó¥É¤òÆÉ¼Ô¤Î¥·¥¹¥Æ¥àµ¯Æ°¥Õ¥¡¥¤¥ë¤ËÆþ¤ì¤Æ¤ª¤±¤Ð¡¢¥ê¥Ö¡¼¥È»þ¤Ë¾ï¤Ë¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£ÆÉ¼Ô¤¬Ë¾¤à¤Ê¤é¡¢[GCC] ¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¤¤¿GCC_INSTALL.COM ¥¹¥¯¥ê¥×¥È¤ò·Ðͳ¤·¤Æ¹Ô¤Ê¤¦¤³¤È¤â½ÐÍè¤ë¡£
GCC ¥³¥Þ¥ó¥É¤ò°Ê²¼¤Î¥³¥Þ¥ó¥É¹Ô¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¡£
$ set command /table=sys$common:[syslib]dcltables - /output=sys$common:[syslib]dcltables gnu_cc:[000000]gcc $ install replace sys$common:[syslib]dcltables
$ library/help sys$library:helplib.hlb gcc.hlp
¤³¤ì¤Ç¡¢GNU CC ¤ò gcc /verbose file.c ¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¹Ô¤Çµ¯Æ°¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤Ï¤º¤Ç¤¢¤ë¡£¤³¤ì¤Ï Unix ¤Î¾ì¹ç¤Îgcc -v -c file.c ¤È¤¤¤¦¥³¥Þ¥ó¥É¤ËƱ¤¸¤Ç¤¢¤ë¡£
GNU C++ ¤ò»È¤¦¾ì¹ç¤Ë¤Ï¡¢¤Þ¤º GNU CC ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤¤¤Æ¤«¤é¡¢°Ê²¼¤ÎÃʳ¬¤òƧ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
GNU_GXX_INCLUDE ¤òÄêµÁ¤·¡¢¥×¥ê¥×¥í¥»¥Ã¥µ¤¬ C++ ¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»Ø¤¹¤è¤¦¤Ë¤¹¤ë¡£¤³¤Î¤¿¤á¤Ë¤Ï°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¡£
$ assign /system /translation=concealed - disk:[gcc.gxx_include.] gnu_gxx_include
¤³¤³¤ÇŬÀڤʥǥ£¥¹¥¯Ì¾¤È¥Ç¥£¥ì¥¯¥È¥ê̾¤ò»ØÄꤹ¤ë¡£C++ ¼Â¹Ô»þ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦¤Ê¤é¡¢¤³¤³¤¬¤½¤Î¥é¥¤¥Ö¥é¥ê¤Î¥¤¥ó¥¹¥È¡¼¥ë¼ê³¤Ë¤è¤ê¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¾ì½ê¤Ç¤¢¤ë¡£
gcc-cc1plus.exe ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤òÆþ¼ê¤·¡¢gcc-cc1.exe ¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤³¤ì¤òÃÖ¤¯¡£
¤³¤ì¤Ç GNU C++ ¥³¥ó¥Ñ¥¤¥é¤Ï gcc /plus /verbose file.cc ¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤Çµ¯Æ°¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ë¡£¤³¤ì¤Ï Unix ¤Î¾ì¹ç¤Îg++ -v -c file.cc ¤ÈƱ¤¸¤Ç¤¢¤ë¡£
²æ¡¹¤Ï¡¢¥Ð¡¼¥¸¥ç¥ó¤¬Âбþ¤·¤Æ¤¤¤ë¥Ð¥¤¥Ê¥ê¤È¥½¡¼¥¹¤ò VMS ÍѤÎÇÛÉۥơ¼¥×¤ËÆþ¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤ë¡£¤À¤¬¡¢»þ¡¹¥Ð¥¤¥Ê¥ê¤¬¥½¡¼¥¹¤è¤ê¤â¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤³¤È¤¬¤¢¤ë¡£¾ï¤Ë¹¹¿·¤¹¤ë¤è¤¦¤Ë¤¹¤ë»þ´Ö¤¬¤Ê¤¤¤¿¤á¤Ç¤¢¤ë¡£(/version ¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¥Ð¥¤¥Ê¥ê¤Î¥Ð¡¼¥¸¥ç¥ó¤òÃΤ俤¦¤¨¤Ç¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ÎÃæ¤Î version.c ¤ÈÈæ³Ó¤¹¤ë¤È¡¢¥Ð¥¤¥Ê¥ê¤È¥½¡¼¥¹¤ÎƱ´ü¤¬¼è¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤¬È½¤ë¡£)
¥Ð¥¤¥Ê¥ê¤ÎÊý¤¬¸Å¤¤¾ì¹ç¤Ï¡¢¤½¤Î¥Ð¥¤¥Ê¥ê¤ò»È¤Ã¤Æ¡¢¥½¡¼¥¹¥³¡¼¥É¤«¤éºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤¿Êý¤¬Îɤ¤¡£ºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤è¤¦¤Ê¤é¡¢°Ê²¼¤Î¼ê½ç¤Ë½¾¤¦¤³¤È¡£
vmsconfig.com ¤ò¼Â¹Ô¤·¤Æ¡¢tm.h¡¢config.h¡¢aux-output.c¡¢md. ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤òÀßÄꤷ¡¢tconfig.h ¤È hconfig.h ¤òºî¤ë¡£¤Þ¤¿¡¢¤³¤Î¥×¥í¥·¡¼¥¸¥ã¤Ï¡¢make-cc1.com ¤¬»ÈÍѤ¹¤ë¤¿¤¯¤µ¤ó¤Î¥ê¥ó¥«¡¦¥ª¥×¥·¥ç¥ó¡¦¥Õ¥¡¥¤¥ë¤È¡¢make-l2.com ¤¬»ÈÍѤ¹¤ë°ì¸Ä¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¡£
$ @vmsconfig.com
GNU_BISON ¤òÄêµÁ¤·¡¢Bison ¤Î¼Â¹Ô·Á¼°¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»Ø¤¹¤è¤¦¤Ë¤¹¤ë¡£¤³¤Î¤¿¤á¤Ë¤Ï°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¡£
$ assign /system /translation=concealed - disk:[bison.] gnu_bison
ÆÉ¼Ô¤¬Áª¤Ö¤Ê¤é¡¢BISON ¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë INSTALL_BISON.COM
¥¹¥¯¥ê¥×¥È¤ò»È¤Ã¤Æ¤âÎɤ¤¡£
BISON ¥³¥Þ¥ó¥É¤ò°Ê²¼¤Î¥³¥Þ¥ó¥É¹Ô¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¡£
$ set command /table=sys$common:[syslib]dcltables - /output=sys$common:[syslib]dcltables - gnu_bison:[000000]bison $ install replace sys$common:[syslib]dcltables
@make-gcc ¤ÈÂǤÄ(¤¢¤ë¤¤¤Ï¡¢¥Õ¥¡¥¤¥ë make-gcc.com ¤ò¥Ð¥Ã¥Á¡¦¥¥å¡¼¤ËÅêÆþ¤¹¤ë)¡£GNU CC ¥³¥ó¥Ñ¥¤¥é¤À¤±¤Ç¤Ê¤¯ GNU C++ ¥³¥ó¥Ñ¥¤¥é¤â¹½ÃÛ¤·¤¿¤±¤ì¤Ð¡¢ºÇ½é¤Ë make-gcc.com ¤òÊÔ½¸¤·¤Æ¡¢¥³¥á¥ó¥È¤Ë½ñ¤«¤ì¤Æ¤¤¤ëÁàºî¤Ë½¾¤¦É¬Íפ¬¤¢¤ë¡£
make-l2.com ¤ò»È¤¦É¬Íפ¬¤¢¤ë¡£¤³¤ì¤ò»È¤¦¤È¥é¥¤¥Ö¥é¥ê libgcc2.olb ¤òÀ¸À®¤¹¤ë¡£libgcc2.olb ¤Ï¡¢libgcc2.c ¤Î½Ð½ê¤ÈƱ¤¸¥Ç¥£¥¹¥È¥ê¥Ó¥å¡¼¥·¥ç¥ó¤«¤é¹½ÃÛ¤µ¤ì¤¿ GCC ¤ò»È¤Ã¤Æ¹½ÃÛ¤¹¤ëɬÍפ¬¤¢¤ë¡£make-gcc.com ¤Ï¡¢¤³¤Î¤¿¤á¤ËɬÍפʤ³¤È¤òÁ´¤Æ¼«Æ°Åª¤Ë¹Ô¤¦¡£
¤³¤Î¥é¥¤¥Ö¥é¥ê¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤Ë¤Ï¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò»È¤¦¡£
$ library gnu_cc:[000000]gcclib/delete=(new,eprintf) $ library gnu_cc:[000000]gcclib/delete=L_* $ library libgcc2/extract=*/output=libgcc2.obj $ library gnu_cc:[000000]gcclib libgcc2.obj
ºÇ½é¤Î¥³¥Þ¥ó¥É¤Ï¡¢Ê̤Υ⥸¥å¡¼¥ë̾¤ÇÃÖ¤«¤ì¤ë libgcc2 ¤«¤éÍè¤ë¥â¥¸¥å¡¼¥ë¤ÇÃÖ¤´¹¤¨¤é¤ì¤ë¸Å¤¤¥â¥¸¥å¡¼¥ë¤òñ¤Ë¾Ãµî¤¹¤ë¡£¥â¥¸¥å¡¼¥ë new ¤È eprintf ¤Ï¡¢ÆÉ¼Ô¤Î gcclib.olb ¤Ë¤Ï¼ÂºÝ¤Ë¤Ï¸ºß¤·¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¡£VMS ¤Î¥é¥¤¥Ö¥é¥ê¥¢¥ó¤¬¤³¤ì¤é¤Î¥â¥¸¥å¡¼¥ë¤¬Â¸ºß¤·¤Ê¤¤¤Èʸ¶ç¤ò¸À¤Ã¤¿¾ì¹ç¤Ï¡¢Ã±¤Ë¤½¤Î¥á¥Ã¥»¡¼¥¸¤ò̵»ë¤·¤Æ¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò³¤±¤ë¤³¤È¡£ÂèÆó¤Î¥³¥Þ¥ó¥É¤Ï¡¢libgcc2.c ¥é¥¤¥Ö¥é¥ê¤Î°ÊÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤«¤éÍè¤ë¥â¥¸¥å¡¼¥ë¤ò¾Ãµî¤¹¤ë¡£
ÆÉ¼Ô¤Î¥·¥¹¥Æ¥à¤Î GNU CC ¤ò¹¹¿·¤·¤¿¤È¤¤Ï¤¤¤Ä¤Ç¤â¡¢¤³¤Î¥é¥¤¥Ö¥é¥ê¤â¾åµ¤Î¥×¥í¥·¡¼¥¸¥ã¤Ç¹¹¿·¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
$ assign dua0:[gcc.build_dir.]/translation=concealed, -
dua1:[gcc.source_dir.]/translation=concealed gcc_build
$ set default gcc_build:[000000]
¤³¤³¤Ç¡¢¥Ç¥£¥ì¥¯¥È¥ê dua1:[gcc.source_dir] ¤Ë¤Ï¥½¡¼¥¹¥³¡¼¥É¤¬ÃÖ¤«¤ì¤Æ¤ª¤ê¡¢¥Ç¥£¥ì¥¯¥È¥ê dua0:[gcc.build_dir] ¤ÏÀ¸À®¤µ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤È¼Â¹Ô·Á¼°¤òÁ´¤ÆÃÖ¤¯¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤ë¡£°ìÅÙ¤³¤¦¤·¤Æ¤ª¤±¤Ð¡¢¾å¤Ëµ½Ò¤·¤¿¤è¤¦¤Ë GCC ¤Î¹½ÃÛ¤ò¿Ê¤á¤ë¤³¤È¤¬¤Ç¤¤ë¡£(gcc_build ¤Ï¥ë¡¼¥Èµ¯ÅÀ¤ÎÏÀÍý̾¤Ç¤¢¤ê¡¢¤½¤Î¤¿¤á¸¡º÷¥ê¥¹¥È¤Î³ÆÍ×ÁÇ¤ËÆþ¤Ã¤Æ¤¤¤ë¥Ç¥Ð¥¤¥¹Ì¾¤Ï¡¢²¿¤«Ê̤Υ롼¥Èµ¯ÅÀÏÀÍý̾¤Ç¤Ï¤Ê¤¯¼ÂºÝ¤ÎʪÍý¥Ç¥Ð¥¤¥¹Ì¾¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤³¤È¤ËÃí°Õ¡£)
extern const Àë¸À¤µ¤ì¤¿ÊÑ¿ô¤Ë¤Ï¡¢ÆÉ¤ß¤À¤·ÀìÍѥӥåȤ¬ÀßÄꤵ¤ì¤º¡¢¥ê¥ó¥«¤¬¡¢¤½¤¦¤¤¤¦ÊÑ¿ô¤ËÂФ·¡¢psect °À¤¬°ìÃפ·¤Ê¤¤¤È¤¤¤¦·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½Ð¤¹¡£¤³¤Î·Ù¹ð¥á¥Ã¥»¡¼¥¸¤Ïñ¤Ë¼ÙËâ¤Ê¤À¤±¤Ç¤¢¤ê¡¢Ìµ»ë¤·¤ÆÎɤ¤¡£
GNU CC ¤Î 1.33 °ÊÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¤Ï¡¢Á´¤Æ¤Î¥³¥ó¥Ñ¥¤¥ë¤Ç¥ª¥×¥·¥ç¥ó¤È¤·¤Æ /DEFINE=("inline=") ¤ò»ØÄꤹ¤ë¤³¤È¡£¤³¤Î¤¿¤á¤Ë¤Ï¡¢make-cc1.com ¤Ë¸½¤ì¤ëÁ´¤Æ¤Î gcc ¥³¥Þ¥ó¥É¤òÊÔ½¸¤¹¤ëɬÍפ¬¤¢¤ë¡£(¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Ë¤Ï inline ¤Î¥µ¥Ý¡¼¥È¤ËÌäÂ꤬¤¢¤Ã¤¿¤Î¤Ç¤¢¤ë¡£)°ìÅÙ 1.33 °Ê¹ß¤Î GNU CC ¤¬Æ°¤¯¤è¤¦¤Ë¤Ê¤ì¤Ð¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤ò¸µ¤ËÌ᤹¤³¤È¤¬½ÐÍè¤ë¡£
make-cccp.com ¤Èmake-cc1.com ¤Ë¤Á¤ç¤Ã¤ÈÊѹ¹¤ò²Ã¤¨¤Æ¡¢CC¡¢CFLAGS¡¢LIBS ¤ÎÊ̤ÎÄêµÁ¤òÁª¤ÖɬÍפ¬¤¢¤ë¡£¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ëÃæ¤Î¥³¥á¥ó¥È¤ò»²¾È¤Î¤³¤È¡£¤¿¤À¤·¡¢GNU ¥¢¥»¥ó¥Ö¥é(GNU as, ÊÌ̾ GAS)¤ÎÀµ¤·¤¯Æ°ºî¤¹¤ë¥Ð¡¼¥¸¥ç¥ó¤¬¡¢GNU CC ¤Î¥Ð¥Ã¥¯¥¨¥ó¥É¤È¤·¤Æ¡¢¥Ð¥¤¥Ê¥ê¤Î¥ª¥Ö¥¸¥§¥¯¥È¥â¥¸¥å¡¼¥ë¤òÀ¸À®¤¹¤ë¤Î¤ËɬÍפǤ¢¤ë¡£GAS ¤Ï GNU CC ¤Î¥½¡¼¥¹¤Ë¤Ï´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¡£GAS ¤Ï¡¢libgcc2 ¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ gcclib ¤òºî¤ë¤Î¤Ë¤âɬÍפǤ¢¤ë(¾åµ»²¾È)¡£make-l2.com ¤Ç¤Ï¡¢GAS ¤¬ gnu_cc:[000000]gnu-as.exe ¤È¤·¤Æ»È¤¨¤ë»ö¤òÁÛÄꤷ¤Æ¤¤¤ë¡£
GNU CC ¤ò VMS ¤Ç»È¤¦¤Ë¤Ï¡¢VMS Íѥɥ饤¥Ð¥×¥í¥°¥é¥à gcc.exe¡¢gcc.com¡¢gcc.cld ¤¬É¬ÍפǤ¢¤ë¡£¤³¤ì¤é¤Ï¡¢GNU CC ¤Î¥½¡¼¥¹¤Ç¤Ï¤Ê¤¯¤Æ VMS ÍѥХ¤¥Ê¥ê(gcc-vms) ¤ËÆþ¤Ã¤ÆÇÛÉÛ¤µ¤ì¤Æ¤¤¤ë¡£GAS¡¢Bison ¤â gcc-vms ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¡£
VAX C ¤Ç GNU CC ¤ò¹½ÃÛ¤¹¤ë¤Î¤Ë°ìÅÙÀ®¸ù¤¹¤ì¤Ð¡¢¤Ç¤¤¿¥³¥ó¥Ñ¥¤¥é¤ò»È¤Ã¤Æ¼«Ê¬¼«¿È¤òºÆ¹½ÃÛ¤·¤¿Êý¤¬Îɤ¤¡£¤½¤ÎÁ°¤Ë¡¢make-cccp.com ¤Èmake-cc1.com ¤ÎÃæ¤Î CC¡¢CFLAGS¡¢LIBS ¤ÎÄêµÁ¤ò¸µ¤ËÌ᤹¤Î¤ò˺¤ì¤Ê¤¤¤³¤È¡£ÆóÂåÌܤΥ³¥ó¥Ñ¥¤¥é¤Ï¡¢Â¾¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¹½ÃÛ¤·¤Æ¤¤¤ë¤È¤¤Ë¤ÏÍ޻ߤ·¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤«¤Ã¤¿Â¿¿ô¤ÎºÇŬ²½¤ÎÍøÅÀ¤òµý¼õ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
°ÊÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Î GNU CC ¤Ç¤Ï¡¢À¸À®¤µ¤ì¤¿¥³¡¼¥É¤ò¶¦Í²Äǽ¤ÊVAXCRTL ¥é¥¤¥Ö¥é¥ê¤È¥ê¥ó¥¯¤¹¤ë¤È¤ª¤«¤·¤Ê·ë²Ì¤Ë¤Ê¤ë¤³¤È¤¬¤È¤¤É¤¤¢¤Ã¤¿¡£¸½ºß¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÀµ¤·¤¯Æ°ºî¤¹¤ë¤Ï¤º¤Ç¤¢¤ë¡£
¤¿¤À¤·¡¢¸½ºß¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤â¡¢GNU CC ¼«ÂΤ϶¦Í²Äǽ¤Ê VAXCRTL ¤È¥ê¥ó¥¯¤¹¤Ù¤¤Ç¤Ï¤Ê¤¤¡£VAXCRTL ¤Ë¤¢¤ë¥Ð¡¼¥¸¥ç¥ó¤Î qsort ¤Ë¤Ï¥Ð¥°¤¬¤¢¤ê(VMS ¥Ð¡¼¥¸¥ç¥ó V4.6 ¤«¤é V5.5 ¤Ë¤«¤±¤ÆÂ¸ºß¤¹¤ë¤Î¤¬ÃΤé¤ì¤Æ¤¤¤ë)¡¢GNU CC ¤¬Àµ¤·¤¯Æ°ºî¤·¤Ê¤¤¡£
¼Â¹Ô·Á¼°¤Ï¡¢make-cc1.com ¤È make-cccp.com ¤Ë¤è¤ê¡¢VAXCRTL ¤Î¥Ð¡¼¥¸¥ç¥ó¤Î¥ª¥Ö¥¸¥§¥¯¥È¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤ÆÀ¸À®¤µ¤ì¤ë¤³¤È¤Ç¡¢gcclib.olb ¤Ë¤¢¤ë qsort ¥ë¡¼¥Á¥ó¤ò»È¤¦¤è¤¦¤Ë¤Ê¤ë¡£GCC ¤Î¼Â¹Ô·Á¼°¤ò¶¦Í²Äǽ¤Ê VAXCRTL ¤È¥ê¥ó¥¯¤·¤¿¤±¤ì¤Ð¡¢¥Õ¥¡¥¤¥ë tm.h(vmsconfig.com ¤Ë¤è¤êºî¤é¤ì¤ë)¤òÊÔ½¸¤·¤Æ¡¢¥Þ¥¯¥í QSORT_WORKAROUND ¤òÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ë¡£
QSORT_WORKAROUND ¤Ï GNU CC ¤ò VAX C ¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¤Ï¾ï¤ËÄêµÁ¤µ¤ì¤Æ¡¢gcclib.olb ¤¬¤Þ¤ÀÍøÍѲÄǽ¤Ç¤Ê¤¤¾ì¹ç¤ÎÌäÂê¤ò²óÈò¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
collect2GNU CC ¤Ï¡¢¤Û¤ÜÁ´¤Æ¤Î¥·¥¹¥Æ¥à¤Ç collect2 ¤È¤¤¤¦¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ò»È¤Ã¤Æ¡¢¥×¥í¥°¥é¥à¤Î³«»Ï»þ¤ËÍÍ¡¹¤Ê½é´ü²½´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤è¤¦¤ÊÀßÄê¤ò¹Ô¤Ê¤¦¡£
collect2 ¤Î»ÅÁȤߤϡ¢¤Þ¤º°ìÅÙ¥×¥í¥°¥é¥à¤Î¥ê¥ó¥¯¤ò¹Ô¤Ê¤¤¡¢¥ê¥ó¥«¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤òÄ´¤Ù¤Æ¥³¥ó¥¹¥È¥é¥¯¥¿´Ø¿ô¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹Ì¾Á°¤ò»ý¤Ä¥·¥ó¥Ü¥ë¤òõ¤¹¡£¤½¤Î¤è¤¦¤Ê¥·¥ó¥Ü¥ë¤¬°ì¤Ä¤Ç¤â¤¢¤ì¤Ð¡¢¥·¥ó¥Ü¥ë¤Î¥Æ¡¼¥Ö¥ë¤ò´Þ¤à°ì»þ .c ¥Õ¥¡¥¤¥ë¤òºî¤ê¡¢¥³¥ó¥Ñ¥¤¥ë¤·¡¢¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤òÄɲä·¤ÆÆó²óÌܤΥê¥ó¥¯¤ò¹Ô¤Ê¤¦¡£
¥³¥ó¥¹¥È¥é¥¯¥¿·²¤Î¼ÂºÝ¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢__main ¤È¤¤¤¦¥µ¥Ö¥ë¡¼¥Á¥ó¤Ë¤è¤ê¼Â¹Ô¤µ¤ì¤ë¡£__main ¤Ï¡¢main ´Ø¿ôËÜÂΤÎÀèÆ¬¤Ç¼«Æ°Åª¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë(main ´Ø¿ô¤Ï GNU CC ¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë)¡£__main ¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢C ¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë¤âɬÍפǤ¢¤ë¡£¤È¤¤¤¦¤Î¤Ï¡¢C ¤È C++ ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òξÊý¥ê¥ó¥¯¤¹¤ë¤Î¤ËɬÍפˤʤ뤫¤é¤Ç¤¢¤ë¡£(-nostdlib ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢__main ¤Î»²¾È¤¬²ò·è¤µ¤ì¤Ê¤¤¡£__main ¤¬É¸½à GCC ¥é¥¤¥Ö¥é¥ê¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë¡£¤½¤Î¾ì¹ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥ë¤Î¥³¥Þ¥ó¥É¹Ô¤ÎºÇ¸å¤Ë -lgcc ¤òÉÕ¤±²Ã¤¨¤ì¤Ð¡¢²ò·è¤Ç¤¤ë¡£)
collect2 ¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Î³Æ¥Ñ¥¹¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¡¢ld ¤È¤¤¤¦Ì¾Á°¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¡£collect2 ¤¬ËÜÅö¤Î ld ¤òõ¤¹É¬Íפ¬¤¢¤ë¤È¤¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤òõ¤¹¡£
real-ld¡£
PATH ¤ËÎóµó¤µ¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë real-ld¡£
REAL_LD_FILE_NAME
¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¡£
ld¡£¤¿¤À¤·¡¢collect2 ¤Ï¼«Ê¬¼«¿È¤òºÆµ¢Åª¤Ë¼Â¹Ô¤¹¤ë¤³¤È¤Ï¤Ê¤¤¡£
PATH ¤Ë¤¢¤ë ld¡£¡ÖGNU CC ¤Î¸¡º÷¥Ç¥£¥ì¥¯¥È¥ê¡×¤È¤Ï¡¢GNU CC ¤¬¥³¥ó¥Ñ¥¤¥é¤Î³Æ¥Ñ¥¹¤Î¥³¥Þ¥ó¥É¤ò¸¡º÷¤¹¤ëÁ´¤Æ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò°ÕÌ£¤¹¤ë¡£-B ¤Ç»ØÄꤷ¤¿¥Ç¥£¥ì¥¯¥È¥ê¤â´Þ¤à¡£
¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤Î¾ì¹ç¤Î¸¡º÷¤Ï¼ã´³°Û¤Ê¤ë¡£
real-ld¡£
PATH ¤Ë¤¢¤ë target-real-ld¡£
REAL_LD_FILE_NAME
¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¡£
ld¡£
target-ld in PATH.
PATH ¤Ë¤¢¤ë¡¢target-ld¡£collect2 ¤Ï¡¢collect2 ¼«¿È¤¬µ¯Æ°¤µ¤ì¤¿¤È¤¤Î¥Õ¥¡¥¤¥ë̾¤ò»È¤Ã¤Æ ld ¤ò¼Â¹Ô¤¹¤ë¤³¤È¤òÌÀ¼¨Åª¤Ë²óÈò¤·¤Æ¤¤¤ë¡£¼ÂºÝ¤Ë¡¢¤½¤¦¤¤¤¦¥Õ¥¡¥¤¥ë̾¤Î¥ê¥¹¥È¤òµ²±¤·¤Æ¤¤¤ë¡£Î㤨¤Ð¡¢collect2 ¤Î°ì¤Ä¤Î¥³¥Ô¡¼¤¬¡¢¸¡º÷¥Ñ¥¹¤ÎÆóÈÖÌܤξì½ê¤Ë ld ¤È¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿ collect2 ¤ÎÊ̤Υ³¥Ô¡¼(¤Þ¤¿¤Ï¥Ð¡¼¥¸¥ç¥ó)¤ò¸«¤Ä¤±¤¿¤È¸À¤¦¤è¤¦¤Ê¾ì¹ç¤Ç¤¢¤ë¡£
collect2 ¤Ï¡¢nm ¤È strip ¤òld ¤ËÂФ¹¤ë¾åµ¤Î¤ÈƱ¤¸¥¢¥ë¥´¥ê¥º¥à¤ò»È¤Ã¤Æ¸¡º÷¤¹¤ë¡£
GCC_INCLUDE_DIR ¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¤È¥¯¥í¥¹¤ÇƱ¤¸¤â¤Î¤ò°ÕÌ£¤¹¤ë¡£GNU CC ¤¬»äŪ¤Ê¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤ò³ÊǼ¤¹¤ë¾ì½ê¤Ç¤¢¤ê¡¢¤Þ¤¿ GNU CC ¤¬½¤ÀµÈÇ¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤ò³ÊǼ¤¹¤ë¾ì½ê¤Ç¤â¤¢¤ë¡£¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿ GNU CC ¤Ï¡¢$(tooldir)/include ¤Ë¤¢¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ fixincludes ¤ò¼Â¹Ô¤¹¤ë¡£(¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ëÍѥإåÀ¥Õ¥¡¥¤¥ë¤ò½¤Àµ¤¹¤ëɬÍפ¬¤¢¤ë¤Ê¤é¡¢¤½¤ì¤ò GNU CC ¤ò¹½ÃÛ¤¹¤ëÁ°¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤«¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ëÍѥإåÀ¥Õ¥¡¥¤¥ë¤¬´û¤Ë ANSI C ¤È GNU CC ¤ËŬÀڤʤâ¤Î¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢²¿¤âÆÃÊ̤ʽèÍý¤ÏɬÍפʤ¤¡£)
GPLUSPLUS_INCLUDE_DIR ¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¤È¥¯¥í¥¹¤ÇƱ¤¸¤â¤Î¤ò°ÕÌ£¤¹¤ë¡£g++ ¤¬ºÇ½é¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òõ¤¹¾ì½ê¤Ç¤¢¤ë¡£C++ ¥é¥¤¥Ö¥é¥ê¤Ï¡¢¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï¥¿¡¼¥²¥Ã¥ÈÆÈΩ¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤·¤«¥¤¥ó¥¹¥È¡¼¥ë¤·¤Ê¤¤¡£
LOCAL_INCLUDE_DIR ¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¥³¥ó¥Ñ¥¤¥é¤À¤±¤¬»È¤¦¡£Ä̾ï¤Ï¡¢/usr/local/include ¤Ë¤Ê¤ë¡£GNU CC ¤Ï¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò¸¡º÷¤¹¤ë¤Î¤Ç¡¢¥æ¡¼¥¶¤Ï¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò/usr/local/include ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤ÆÃÖ¤¯¤³¤È¤¬¤Ç¤¤ë¡£
CROSS_INCLUDE_DIR ¤Ï¡¢¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤À¤±¤¬»È¤¦¡£GNU CC ¤Ï¤³¤³¤Ë¤Ï²¿¤â¥¤¥ó¥¹¥È¡¼¥ë¤·¤Ê¤¤¡£
TOOL_INCLUDE_DIR ¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¤È¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ÎξÊý¤Ç»È¤ï¤ì¤ë¡£GNU CC ¤¬»È¤¦¤Ç¤¢¤í¤¦Â¾¤Î¥Ñ¥Ã¥±¡¼¥¸¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¾ì½ê¤Ç¤¢¤ë¡£¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤Î¾ì¹ç¤Ï¡¢¤³¤ì¤Ï /usr/include ¤ËÅù²Á¤Ç¤¢¤ë¡£¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥é¤ò¹½ÃÛ¤¹¤ë¤È¤¤Ë¡¢fixincludes ¤Ï¡¢¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÁ´¤Æ½èÍý¤¹¤ë¡£
GNU C ¤Ï¡¢ANSI C ¸À¸ìɸ½àµ¬³Ê¤Ë¤Ï̵¤¤µ¡Ç½¤ò¿¿ôÄ󶡤·¤Æ¤¤¤ë¡£(-pedantic ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢¤³¤ì¤é¤Îµ¡Ç½¤ò¤É¤ì¤«»È¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¡¢·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½Ð¤·¤Æ¤¯¤ì¤ë¡£)
¾ò·ïÉÕ¤¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¦¾ì¹ç¤Ë¡¢¤³¤ì¤é¤Î³ÈÄ¥µ¡Ç½¤¬»È¤¨¤ë¤«¤É¤¦¤«¥Æ¥¹¥È¤¹¤ë¤Ë¤Ï¡¢Í½ÌóºÑ¥Þ¥¯¥í __GNUC__ ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤ì¤ÐÎɤ¤¡£¤³¤Î¥Þ¥¯¥í¤Ï¡¢GNU CC ¤Ç¤Ï¾ï¤ËÄêµÁ¤µ¤ì¤ë¡£
¤³¤ì¤é¤Î³ÈÄ¥µ¡Ç½¤Ï¡¢C ¤È Objective C ¤ÇÍøÍѤǤ¤ë¡£¤½¤ÎÂçÉôʬ¤Ï¡¢C++ ¤Ç¤âÍøÍѲÄǽ¤Ç¤¢¤ë¡£C++ ¤Ë¤Î¤ßŬÍѲÄǽ¤Ê³ÈÄ¥¤Ë¤Ä¤¤¤Æ¤Ï¡¢See Extensions to the C++ Language.
typeof: ¼°¤Î·¿¤ò¼èÆÀ¤¹¤ë?:¡¢,¡¢¥¥ã¥¹¥È¤ò»È¤¦¤Ë¤Ï?: ¼°¤ÎÃæ´Ö¥ª¥Ú¥é¥ó¥É¤ò¾Ê¤¯¤Ë¤Ïlong long int
void¥Ý¥¤¥ó¥¿¤È´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤ËÂФ¹¤ë±é»»\e ¤Ïʸ»ú <ESC> ¤òɽ¤¹__const__, __asm__, Åùenum foo;
ʣʸ¤ò¾®³ç¸Ì¤Ç°Ï¤à¤È¡¢GNU C ¤Ç¤Ï¼°¤È¤·¤Æ»ÈÍѤǤ¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢¼°¤ÎÃæ¤Ç¥ë¡¼¥×¤ä switch ʸ¤ä¶É½êÊÑ¿ô¤ò»ÈÍѤǤ¤ë¡£
¤µ¤Æ¡¢Ê£Ê¸¤È¤ÏÃæ³ç¸Ì¤Ç°Ï¤Þ¤ì¤¿Ê¸¤ÎÎó¤Ç¤¢¤Ã¤¿¡£¤³¤Î³ÈÄ¥¹½Ê¸¤Ç¤Ï¡¢Ãæ³ç¸Ì¤Î¤Þ¤ï¤ê¤ò¾®³ç¸Ì¤¬°Ï¤à¤³¤È¤Ë¤Ê¤ë¡£Î㤨¤Ð¡¢
({ int y = foo (); int z;
if (y > 0) z = y;
else z = - y;
z; })
¤Ï¡¢foo () ¤ÎÀäÂÐÃͤò¼è¤ëÀµ¤·¤¤¼°¤Ç¤¢¤ë¡£(ɬÍװʾå¤ËÊ£»¨¤À¤¬¡£)
ʣʸ¤ÎºÇ¸å¤Ë¤Ï¡¢¥»¥ß¥³¥í¥óÉÕ¤¤Î¼°¤òÃÖ¤¯É¬Íפ¬¤¢¤ë¡£¤³¤ÎºÇ¸å¤Î¼°¤ÎÃͤ¬Ê£Ê¸Á´ÂΤÎÃͤÎÌò³ä¤ò²Ì¤¿¤¹¡£(Ãæ³ç¸Ì¤ÎºÇ¸å¤Ë¾¤Î¼ïÎà¤Îʸ¤ò»È¤¦¤È¡¢Ê£Ê¸Á´ÂΤη¿¤Ï void ¤Ë¤Ê¤ê¡¢Í¸ú¤ÊÃͤò»ý¤¿¤Ê¤¤¤³¤È¤Ë¤Ê¤ë¡£
¤³¤Îµ¡Ç½¤Ï¡¢¥Þ¥¯¥í¤ò°ÂÁ´¤ËÄêµÁ¤¹¤ë¾ì¹ç¤ËÆÃ¤Ë͸ú¤Ç¤¢¤ë¡£°ÂÁ´¤Ë¤È¤¤¤¦¤Î¤Ï¡¢¥Þ¥¯¥í¤Î°ú¿ô¤Îɾ²Á¤ò°ìÅÙ¤À¤±¹Ô¤¦¤è¤¦¤Ë½ÐÍè¤ë¤È¤¤¤¦°ÕÌ£¤Ç¤¢¤ë¡£Î㤨¤Ð¡¢ºÇÂçÃͤò¼è¤ë´Ø¿ô¤Ï¡¢É¸½àµ¬³Ê C ¤Î¥Þ¥¯¥í¤È¤·¤Æ°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤¹¤ë¤Î¤¬ÉáÄ̤Ǥ¢¤ë¡£
#define max(a,b) ((a) > (b) ? (a) : (b))
¤·¤«¤·¡¢¤³¤ÎÄêµÁ¤Ï a ¤« b ¤Î¤É¤Á¤é¤«¤òÆó²óɾ²Á¤·¤Æ¤·¤Þ¤¤¡¢°ú¿ô¤¬ÉûºîÍѤò»ý¤Ä¾ì¹ç¤Ïͽ´ü¤·¤Ê¤¤·ë²Ì¤òÀ¸¤¸¤ë¡£GNU C ¤Ç¤Ï¡¢°ú¿ô¤Î·¿¤òÃΤäƤ¤¤ì¤Ð¡¢¥Þ¥¯¥í¤ò°ÂÁ´¤ËÄêµÁ¤Ç¤¤ë¡£int ·¿¤Î¾ì¹ç¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
#define maxint(a,b) \
({int _a = (a), _b = (b); _a > _b ? _a : _b; })
ʣʸ¼°¤Ï¡¢Äê¿ô¼°¤¬Í׵ᤵ¤ì¤ë¾ìÌ̤ǤϻȤ¨¤Ê¤¤¡£Î㤨¤Ð¡¢ÎóµóÄê¿ô¤ÎÃͤ䡢¥Ó¥Ã¥È¥Õ¥£¡¼¥ë¥É¤ÎÉý¡¢ÀÅŪÊÑ¿ô¤Î½é´üÃÍÅù¤Ë¤Ï»È¤¨¤Ê¤¤¡£
°ú¿ô¤Î·¿¤¬È½¤é¤Ê¤¤¾ì¹ç¤Ç¤â¡¢typeof (see Typeof) ¤Þ¤¿¤Ï·¿Ì¾ÉÕ¤ò»È¤¦¤³¤È¤Ë¤è¤Ã¤Æ¡¢¾åµ¤Î¼êË¡¤¬»ÈÍѲÄǽ¤Ç¤¢¤ë¡£
¶É½ê¥é¥Ù¥ë¤Ï¡¢Ê£Ê¸¼°¤Î¥¹¥³¡¼¥×¤ÇÀë¸À¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¶É½ê¥é¥Ù¥ë¤Ïñ¤Ê¤ë¼±Ê̻ҤǤ¢¤ë¡£ÉáÄ̤Πgoto ʸ¤ò»È¤Ã¤Æ¤½¤³¤Ë¥¸¥ã¥ó¥×¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤¬¡¢¥¸¥ã¥ó¥×¸µ¤Ï¶É½ê¥é¥Ù¥ë¤Î°¤¹¤ëʣʸ¼°¤ÎÃæ¤Ë¸Â¤é¤ì¤ë¡£
¶É½ê¥é¥Ù¥ë¤ÎÀë¸À¤Ï°Ê²¼¤Î¤è¤¦¤Ë¹Ô¤¦¡£
__label__ label;
¤Þ¤¿¤Ï¡¢
__label__ label1, label2, ...;
¶É½ê¥é¥Ù¥ë¤ÎÀë¸À¤Ï¡¢Ê£Ê¸¼°¤ÎÀèÆ¬¡¢¤Ä¤Þ¤ê¡¢({ ¤Îľ¸å¤Ç¡¢Â¾¤ÎÄ̾ï¤ÎÀë¸À¤ÎÁ°¤Ë¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¶É½ê¥é¥Ù¥ë¤ÎÀë¸À¤Ï¥é¥Ù¥ë̾¤òÄêµÁ¤¹¤ë¤¬¡¢¥é¥Ù¥ë¼«ÂΤòÄêµÁ¤¹¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£¶É½ê¥é¥Ù¥ë¼«ÂΤÎÄêµÁ¤Ï¡¢Ä̾ï¤Î¥é¥Ù¥ë¤ÈƱ¤¸¤¯ label: ¤ò»È¤Ã¤Æ¡¢Ê£Ê¸¼°Ãæ¤Ç¹Ô¤¦É¬Íפ¬¤¢¤ë¡£
¶É½ê¥é¥Ù¥ë¤Îµ¡Ç½¤Ï¡¢Ê£Ê¸¼°¤¬»È¤ï¤ì¤ë¤Î¤¬¥Þ¥¯¥íÄêµÁÃæ¤Ç¤¢¤ë¤³¤È¤¬Â¿¤¤¤Î¤Ç¡¢½ÅÊõ¤¹¤ë¡£¥Þ¥¯¥í¤¬Æþ¤ì»Ò¤Ë¤Ê¤Ã¤¿¥ë¡¼¥×¤ò´Þ¤ó¤Ç¤¤¤ë¾ì¹ç¡¢goto ¤ò»È¤Ã¤Æ¥ë¡¼¥×¤«¤éæ½Ð¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ë¡£¤·¤«¤·¡¢Ä̾ï¤Î¡¢´Ø¿ôÆâ¤Î¥¹¥³¡¼¥×¤Î¥é¥Ù¥ë¤Ï¤³¤ÎÌÜŪ¤Ë¤Ï»È¤¨¤Ê¤¤¡£°ì¸Ä¤Î´Ø¿ô¤ÎÃæ¤Ç¥Þ¥¯¥í¤Ï²¿ÅÙ¤â»È¤ï¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¡¢¤½¤Î¾ì¹ç¡¢²¿ÅÙ¤â¥Þ¥¯¥í¤¬Å¸³«¤µ¤ì¡¢Æ±¤¸¥é¥Ù¥ë¤¬°ì¤Ä¤Î´Ø¿ôÆâ¤ÇÊ£¿ô²óÄêµÁ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤«¤é¤Ç¤¢¤ë¡£¶É½ê¥é¥Ù¥ë¤ò»È¤¨¤Ð¡¢¤³¤ÎÌäÂê¤Ï²óÈò¤Ç¤¤ë¡£°Ê²¼¤ËÎã¤ò¾å¤²¤ë¡£
#define SEARCH(array, target) \
({ \
__label__ found; \
typeof (target) _SEARCH_target = (target); \
typeof (*(array)) *_SEARCH_array = (array); \
int i, j; \
int value; \
for (i = 0; i < max; i++) \
for (j = 0; j < max; j++) \
if (_SEARCH_array[i][j] == _SEARCH_target) \
{ value = i; goto found; } \
value = -1; \
found: \
value; \
})
´Ø¿ôÆâ¤ÇÄêµÁ¤µ¤ì¤¿¥é¥Ù¥ë¤Î¥¢¥É¥ì¥¹¤Ï¡¢Æ±¤¸´Ø¿ôÆâ¤Ç¤¢¤ì¤Ð¡¢Ã±¹à±é»»»Ò && ¤ò»È¤Ã¤Æ¼èÆÀ¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¡£¥é¥Ù¥ë¤Î¥¢¥É¥ì¥¹Ãͤη¿¤Ï void * ¤Ë¤Ê¤ë¡£¥é¥Ù¥ë¤Î¥¢¥É¥ì¥¹Ãͤϡ¢Äê¿ô¤Ç¤¢¤ê¡¢¤³¤Î·¿¤ÎÄê¿ô¤¬Í¸ú¤Ê¤È¤³¤í¤Ê¤é¤É¤³¤Ç¤â»È¤¦¤³¤È¤¬½ÐÍè¤ë¡£Îã¤òµó¤²¤è¤¦¡£
void *ptr; ... ptr = &&foo;
¥é¥Ù¥ë¤Î¥¢¥É¥ì¥¹Ãͤò»È¤¦¤¿¤á¤Ë¤Ï¡¢¤½¤Î¥é¥Ù¥ë¤ò¥¸¥ã¥ó¥×¤¹¤ë¤³¤È¤¬½ÐÍè¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤Î¤¿¤á¤Ë¤Ï¡¢·×»»·Á goto ʸ1¡¢
goto *exp; ¤ò»È¤¦¡£Î㤨¤Ð°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ë¡£
goto *ptr;
void * ·¿¤Ç¤¢¤ì¤Ð¡¢Ç¤°Õ¤Î¼°¤ò»È¤¦¤³¤È¤¬½ÐÍè¤ë¡£
¤³¤ì¤é¤ÎÄê¿ô¤Î»È¤¤Æ»¤Î°ì¤Ä¤Ï¡¢¥¸¥ã¥ó¥×¥Æ¡¼¥Ö¥ë¤ÎÀÅŪÇÛÎó¤ò½é´ü²½¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£
static void *array[] = { &&foo, &&bar, &&hack };
¤³¤¦¤¹¤ì¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢Åº¤¨»ú¤Ç¥é¥Ù¥ë¤òÁª¤Ö¤³¤È¤¬½ÐÍè¤ë¡£
goto *array[i];
ź»ú¤ÎÈϰϤˤĤ¤¤Æ¤Î¸¡ºº¤Ï¹Ô¤Ê¤ï¤Ê¤¤¤³¤È¤ËÃí°Õ¤¹¤ë¤³¤È¡£C ¸À¸ì¤Ç¤Ï¡¢ÇÛÎó¤Î»²¾È¤Ë¤ª¤¤¤Æ¤Ïź»ú¤ÎÈϰϤθ¡ºº¤Ï¹Ô¤Ê¤¤¡£
¤³¤ÎÍͤʥé¥Ù¥ëÃͤÎÇÛÎó¤Ï¡¢switch ʸ¤ÈƱÍͤε¡Ç½¤òÄ󶡤¹¤ë¡£¤â¤Á¤í¤ó¡¢switch ʸ¤ò»È¤Ã¤¿¤Û¤¦¤¬¤¤ì¤¤¤Ê¤Î¤Ç¡¢ÂоݤȤ¹¤ëÌäÂ꤬ switch ʸ¤Ë¤¦¤Þ¤¯Åö¤Æ¤Ï¤Þ¤é¤Ê¤¤¾ì¹ç°Ê³°¤Ï¡¢switch ʸ¤ò»È¤¦¤Ù¤¤Ç¤¢¤ë¡£
¤â¤¦¤Ò¤È¤Ä¤Î¡¢¥é¥Ù¥ëÃͤλȤ¤Æ»¤Ï¡¢¥¹¥ì¥Ã¥É¤ò»È¤Ã¤¿¥³¡¼¥É¤Î¥¤¥ó¥¿¥×¥ê¥¿¤Ë¤¢¤ë¡£¥¤¥ó¥¿¥×¥ê¥¿´Ø¿ôÆâ¤Î¥é¥Ù¥ë¤Ï¡¢Ä¶¹â®¥Ç¥£¥¹¥Ñ¥Ã¥ÁÍѤÎÁÇ¥ì¥Ã¥É¥³¡¼¥É¤Ë³ÊǼ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
¤³¤Îµ¡¹½¤ò»È¤Ã¤Æ¡¢°Û¤Ê¤ë´Ø¿ôÃæ¤Î¥³¡¼¥É¤Ë¥¸¥ã¥ó¥×¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤½¤ì¤ò¤ä¤ë¤È¡¢Á´¤¯Í½Â¬¤Ç¤¤Ê¤¤»ö¤¬È¯À¸¤¹¤ë¤À¤í¤¦¡£¤³¤ì¤òÈò¤±¤ë¤Î¤Ë°ìÈÖÎɤ¤ÊýË¡¤Ï¡¢¥é¥Ù¥ë¤Î¥¢¥É¥ì¥¹¤ò¼«Æ°ÊÑ¿ô¤Ë¤À¤±³ÊǼ¤·¡¢°ú¿ô¤È¤·¤Æ¤ÏÅϤµ¤Ê¤¤¤³¤È¤Ç¤¢¤ë¡£
¥Í¥¹¥È¤·¤¿´Ø¿ô ¤È¤Ï¡¢¤Ê¤Ë¤«Ê̤δؿô¤Î¤Ê¤«¤ÇÄêµÁ¤µ¤ì¤¿´Ø¿ô¤Ç¤¢¤ë¡£(GNU C++ ¤Ç¤Ï¥Í¥¹¥È¤·¤¿´Ø¿ô¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¡£)
¥Í¥¹¥È¤·¤¿´Ø¿ô¤Î̾Á°¤Ï¡¢ÄêµÁ¤µ¤ì¤¿¥Ö¥í¥Ã¥¯Æâ¤Ç͸ú¤Ç¤¢¤ë¡£°Ê²¼¤ÎÎã¤Ç¤Ï¡¢square ¤È¤¤¤¦Ì¾Á°¤Î¥Í¥¹¥È¤·¤¿´Ø¿ô¤òÄêµÁ¤·¡¢Æó²ó¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë¡£
foo (double a, double b)
{
double square (double z) { return z * z; }
return square (a) + square (b);
}
¥Í¥¹¥È¤·¤¿´Ø¿ô¤«¤é¤Ï¡¢¤½¤ì¤ò´Þ¤à´Ø¿ô¤ÎÊÑ¿ô¤Î¤¦¤Á¡¢¥Í¥¹¥È¤·¤¿´Ø¿ô¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ëÅÀ¤Ç¸«¤¨¤ë¤â¤Î¤ÏÁ´Éô»²¾È²Äǽ¤Ç¤¢¤ë¡£¤³¤ì¤Ï¡¢¥ì¥¥·¥«¥ë¡¦¥¹¥³¡¼¥Ô¥ó¥° ¤È¸Æ¤Ð¤ì¤Æ¤¤¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤ÎÎã¤Ç¤Ï¡¢¥Í¥¹¥È¤·¤¿´Ø¿ô¤¬ offset ¤È¤¤¤¦Ì¾Á°¤ÎÊÑ¿ô¤ò¿Æ´Ø¿ô¤«¤é·Ñ¾µ¤·¤Æ¤¤¤ë¡£
bar (int *array, int offset, int size)
{
int access (int *array, int index)
{ return array[index + offset]; }
int i;
...
for (i = 0; i < size; i++)
... access (array, i) ...
}
¥Í¥¹¥È¤·¤¿´Ø¿ô¤Ï¡¢´Ø¿ôÆâ¤Î¡¢ÊÑ¿ô¤ÎÄêµÁ¤¬½ÐÍè¤ë¾ì½ê¤ÇÄêµÁ½ÐÍè¤ë¡£¤Ä¤Þ¤ê¡¢Ç¤°Õ¤Î¥Ö¥í¥Ã¥¯Ãæ¤ÎºÇ½é¤Îʸ¤ÎÁ°¤Ë¤Ê¤ë¡£
¥Í¥¹¥È¤·¤¿´Ø¿ô¤ò¤½¤Î̾Á°¤Î¥¹¥³¡¼¥×¤Î³°Â¦¤«¤é¸Æ¤Ó½Ð¤¹¤Î¤Ï¡¢¤½¤Î¥¢¥É¥ì¥¹¤ò³ÊǼ¤·¤¿¤ê¡¢Ê̤δؿô¤Ë¥¢¥É¥ì¥¹¤òÅϤ·¤¿¤ê¤¹¤ë¤³¤È¤Ç²Äǽ¤Ç¤¢¤ë¡£
hack (int *array, int size)
{
void store (int index, int value)
{ array[index] = value; }
intermediate (store, size);
}
¤³¤³¤Ç¡¢´Ø¿ô intermediate ¤Ï¡¢°ú¿ô¤È¤·¤Æ store ¤Î¥¢¥É¥ì¥¹¤ò¼õ¤±¼è¤ë¡£intermediate ¤¬ store ¤ò¸Æ¤Ó½Ð¤¹¤Ê¤é¡¢¤½¤Î»þ¤Ë store ¤ËÍ¿¤¨¤é¤ì¤ë°ú¿ô¤¬¡¢array ¤Ë³ÊǼ¤¹¤ë¤Î¤Ë»È¤ï¤ì¤ë¡£¤À¤¬¡¢¤³¤ÎÊýË¡¤Ï¡¢¤½¤Î¥Í¥¹¥È¤·¤¿´Ø¿ô¤òÊñ´Þ¤¹¤ë´Ø¿ô(¤³¤ÎÎã¤Ç¤Ï¡¢hack)
¤¬½ªÎ»¤·¤Ê¤¤´Ö¤À¤±¡¢µ¡Ç½¤¹¤ë¡£
¥Í¥¹¥È¤·¤¿´Ø¿ô¤ò¡¢¤½¤Î¥¢¥É¥ì¥¹¤ò»È¤Ã¤Æ¡¢¤½¤ÎÊñ´Þ´Ø¿ô¤¬½ªÎ»¤·¤¿¸å¤Ç¸Æ¤Ó½Ð¤½¤¦¤È¤¹¤ë¤È¡¢ÂçÊѤʤ³¤È¤Ë¤Ê¤ë¡£Êñ´Þ¤·¤Æ¤¤¤ë¥¹¥³¡¼¥×¥ì¥Ù¥ë¤òÈ´¤±¤¿¸å¤Ë¸Æ¤Ó½Ð¤·¤ò¹Ô¤Ê¤¦¤È¤·¤¿¾ì¹ç¡¢¤â¤Ï¤ä¥¹¥³¡¼¥×¤Ë¤Ê¤¤ÊÑ¿ô¤ò²¿¤«»²¾È¤·¤Æ¤¤¤ë¤È¡¢±¿¤¬Îɤ±¤ì¤Ð¤¦¤Þ¤¯¤¤¤¯¤«¤â¤·¤ì¤Ê¤¤¤¬¡¢´í¸±¤òÈȤ¹¤³¤È¤Ë¤Ê¤ë¡£¤À¤¬¡¢¥Í¥¹¥È¤·¤¿´Ø¿ô¤¬¥¹¥³¡¼¥×¤«¤é½Ð¤Æ¤·¤Þ¤Ã¤¿¤â¤Î¤ò²¿¤â»²¾È¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢°ÂÁ´¤Ç¤¢¤ë¡£
GNU CC ¤Ï¥Í¥¹¥È´Ø¿ô¤Î¥¢¥É¥ì¥¹¤ò¼è¤ë¤Î¤Ë¡¢¥È¥é¥ó¥Ý¥ê¥ó ¤È¸Æ¤Ð¤ì¤ëÊýË¡¤ò»È¤Ã¤Æ¼ÂÁõ¤·¤Æ¤¤¤ë¡£¤³¤ì¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤ëÏÀʸ¤¬ http://master.debian.org/~karlheg/Usenix88-lexic.pdf
¤«¤éÍøÍѤǤ¤ë¡£
¥Í¥¹¥È´Ø¿ô¤Ï¡¢Êñ´Þ´Ø¿ôÆâ¤Ç¥é¥Ù¥ë¤¬ÌÀ¼¨Åª¤ËÀë¸À¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢Êñ´Þ´Ø¿ô¤«¤é·Ñ¾µ¤·¤¿¤½¤Î¥é¥Ù¥ë¤Ë¥¸¥ã¥ó¥×¤¹¤ë¤³¤È¤¬¤Ç¤¤ë(see Local Labels)¡£¤½¤¦¤¤¤¦¥¸¥ã¥ó¥×¤Ïľ¤Á¤ËÊñ´Þ´Ø¿ô¤ËÌá¤ê¡¢goto ¤ò¼Â¹Ô¤·¤¿¥Í¥¹¥È´Ø¿ô¤ÈÃæ´Ö¤Î´Ø¿ô¤ò½ªÎ»¤¹¤ë¡£°Ê²¼¤ËÎã¤ò¼¨¤¹¡£
bar (int *array, int offset, int size)
{
__label__ failure;
int access (int *array, int index)
{
if (index > size)
goto failure;
return array[index + offset];
}
int i;
...
for (i = 0; i < size; i++)
... access (array, i) ...
...
return 0;
/* Control comes here from access
if it detects an error. */
failure:
return -1;
}
¥Í¥¹¥È´Ø¿ô¤Ï¾ï¤ËÆâÉô¥ê¥ó¥±¡¼¥¸¤È¤Ê¤ë¡£extern ÉÕ¤¤ÇÀë¸À¤¹¤ë¤Î¤Ï¸í¤ê¤Ç¤¢¤ë¡£¥Í¥¹¥È´Ø¿ô¤ò¡¢¤½¤ÎÄêµÁ¤ÎÁ°¤ËÀë¸À¤¹¤ëɬÍפ¬¤¢¤ë¤È¤¤Ï¡¢auto ¤ò»È¤¦¤³¤È(¤³¤ì¤Ï¡¢¤³¤Î¾ì¹ç°Ê³°¤Î´Ø¿ôÀë¸À¤Ç¤Ï°ÕÌ£¤¬¤Ê¤¤¡£)
bar (int *array, int offset, int size)
{
__label__ failure;
auto int access (int *, int);
...
int access (int *array, int index)
{
if (index > size)
goto failure;
return array[index + offset];
}
...
}
°Ê²¼¤Ë¼¨¤¹ÁȤ߹þ¤ß´Ø¿ô¤ò»È¤¦¤È¡¢´Ø¿ô¤¬¼õ¤±¼è¤Ã¤¿°ú¿ô¤òµÏ¿¤¹¤ë¤³¤È¤¬¤Ç¤¤¿¤ê¡¢¤Þ¤¿¡¢°ú¿ô¤Î¿ô¤ä·¿¤òÃΤé¤Ê¤¯¤Æ¤â¡¢Æ±¤¸°ú¿ô¤òÊ̤δؿô¤ËÅϤ¹¤³¤È¤¬¤Ç¤¤ë¡£
¤Þ¤¿¡¢´Ø¿ô¸Æ¤Ó½Ð¤·¤ÎÌá¤êÃͤòµÏ¿¤·¡¢¸å¤Ç¤½¤ÎÃͤòÊÖ¤¹¤³¤È¤â¤Ç¤¤ë¡£¤³¤ì¤Ï¡¢¤½¤Î´Ø¿ô¤¬ÊÖ¤½¤¦¤È¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤òÃΤé¤Ê¤¯¤Æ¤â²Äǽ¤Ç¤¢¤ë¡£(¤¿¤À¤·¡¢¸Æ¤Ó½Ð¤·Â¦¤Î´Ø¿ô¤¬¤½¤Î¥Ç¡¼¥¿·¿¤¬Ê֤äƤ¯¤ë¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤ë¾ì¹ç¤Ë¸Â¤é¤ì¤ë¤¬¡£)
__builtin_apply_args ()
void * ·¿¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
¤³¤Î´Ø¿ô¤Ï°ú¿ô¥Ý¥¤¥ó¥¿¥ì¥¸¥¹¥¿¡¢¹½Â¤ÂÎÃÍ¥¢¥É¥ì¥¹¡¢´Ø¿ô¤Ø°ú¿ô¤òÅϤ¹¤Î¤Ë»È¤ï¤ì¤ë²ÄǽÀ¤Î¤¢¤ëÁ´¤Æ¤Î¥ì¥¸¥¹¥¿¤ò¡¢¥¹¥¿¥Ã¥¯¾å¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¥á¥â¥ê¥Ö¥í¥Ã¥¯¤Ë¥»¡¼¥Ö¤¹¤ë¡£¼¡¤Ë¡¢¤½¤Î¥Ö¥í¥Ã¥¯¤Î¥¢¥É¥ì¥¹¤òÊÖ¤¹¡£
__builtin_apply (function, arguments, size)
void (*)() ·¿)¤ò¡¢arguments (void * ·¿) ¤È size (int ·¿) ¤Çµ½Ò¤µ¤ì¤ë²¾°ú¿ô¤Î¥³¥Ô¡¼¤ò°ú¿ô¤È¤·¤Æ¸Æ¤Ó½Ð¤¹¡£
arguments ¤ÎÃͤϡ¢__builtin_apply_args ¤¬ÊÖ¤¹ÃͤȤ¹¤Ù¤¤Ç¤¢¤ë¡£°ú¿ô size ¤Ï¡¢¥¹¥¿¥Ã¥¯¤Î°ú¿ô¥Ç¡¼¥¿¤ÎÂ礤µ¤ò¥Ð¥¤¥Èñ°Ì¤Ç»ØÄꤹ¤ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢function ¤¬ÊÖ¤¹Ãͤò¤É¤Î¤è¤¦¤ËÊÖ¤¹¤«¤òµ½Ò¤¹¤ë¥Ç¡¼¥¿¤Ø¤Î¡¢void * ·¿¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£¤³¤Î¥Ç¡¼¥¿¤Ï¡¢¥¹¥¿¥Ã¥¯¾å¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¥á¥â¥ê¥Ö¥í¥Ã¥¯Ãæ¤Ë¥»¡¼¥Ö¤µ¤ì¤ë¡£
size ¤ÎŬÀÚ¤ÊÃͤò·×»»¤¹¤ë¤Î¤Ï¤¤¤Ä¤Ç¤â´Êñ¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¡£¤³¤ÎÃÍ¤Ï __buitin_apply ¤Ë¤è¤Ã¤Æ¡¢¥¹¥¿¥Ã¥¯¾å¤Ë¥×¥Ã¥·¥å¤µ¤ì¡¢ÆþÎϰú¿ôÎΰ褫¤é¥³¥Ô¡¼¤µ¤ì¤ë¥Ç¡¼¥¿Î̤ò·×»»¤¹¤ë¤Î¤Ë»È¤ï¤ì¤ë¡£
__builtin_return (result)
__builtin_apply ¤¬ÊÖ¤¹Ãͤò»ØÄꤹ¤Ù¤¤Ç¤¢¤ë¡£½é´ü²½¼°¤Î·Á¼°¤Î typedef Àë¸À¤ò»È¤¦¤³¤È¤Ç¡¢¤¢¤ë¼°¤Î·¿¤Ë̾Á°¤òÉÕ¤±¤ë¤³¤È¤¬¤Ç¤¤ë¡£°Ê²¼¤Ë¡¢exp ¤Î·¿¤Ë name ¤È¤¤¤¦·¿Ì¾¤òÄêµÁ¤¹¤ëÎã¤ò¼¨¤¹¡£
typedef name = exp;
¤³¤ì¤Ï¡¢¼°Ê¸¤È¶¦¤Ë»È¤¦¤È͸ú¤Ç¤¢¤ë¡£°Ê²¼¤Ë¡¢¼°Ê¸¤È¶¦¤Ë»È¤Ã¤Æ¤¤¤ë¡¢¤É¤Î»»½Ñ·¿¤Ë¤Ç¤âŬÍѤǤ¤ë¡¢°ÂÁ´¤ÊºÇÂçÃÍ¥Þ¥¯¥í¤ÎÄêµÁÎã¤ò¼¨¤¹¡£
#define max(a,b) \
({typedef _ta = (a), _tb = (b); \
_ta _a = (a); _tb _b = (b); \
_a > _b ? _a : _b; })
¥í¡¼¥«¥ëÊÑ¿ô̾¤ò¥¢¥ó¥À¡¼¥¹¥³¥¢¤Ç»Ï¤Þ¤ë̾Á°¤Ë¤¹¤ë¤Î¤Ï¡¢a ¤È b
¤¬ÃÖ¤´¹¤¨¤é¤ì¤¿¼°Æâ¤ÇȯÀ¸¤¹¤ëÊÑ¿ô̾¤Î¾×ÆÍ¤òÈò¤±¤ë¤¿¤á¤Ç¤¢¤ë¡£¾ÍèŪ¤Ë¤Ï¡¢¿·¤·¤¤Àë¸À¹½Ê¸¤Î·Á¼°¤ò¹Í¤¨¤Æ¡¢ÊÑ¿ô¤òÀë¸À¤¹¤ë¤Î¤Ë¡¢¤½¤Î¥¹¥³¡¼¥×¤¬¡¢¤½¤ÎÊÑ¿ô¤ËÂФ¹¤ë½é´ü²½»Ò°Ê¹ß¤Ë¤Î¤ß³«»Ï¤¹¤ë¤è¤¦¤Ë¤·¤¿¤¤¤È¹Í¤¨¤Æ¤¤¤ë¡£¤³¤ì¤Ï¡¢¾×ÆÍ¤òÈò¤±¤ë¤Î¤Ë¤è¤ê¿®ÍêÀ¤Î¹â¤¤ÊýË¡¤È¤Ê¤ë¤À¤í¤¦¡£
typeof ¤Ë¤è¤ë·¿¤Î»²¾È¼°¤Î·¿¤ò»²¾È¤¹¤ë¤Ë¤Ï¡¢typeof ¤ò»È¤¦ÊýË¡¤â¤¢¤ë¡£¤³¤Î¥¡¼¥ï¡¼¥É¤Î¹½Ê¸¤Ï¡¢sizeof ¤ËÎɤ¯»÷¤Æ¤¤¤ë¤¬¡¢°Ọ̃Ū¤Ë¤Ïtypedef ¤ÇÄêµÁ¤µ¤ì¤ë·¿Ì¾¤Ë»÷¤Æ¤¤¤ë¡£
typeof ¤Î°ú¿ô¤Ë¤Ï¡¢ÆóÄ̤ê¤Î½ñ¤Êý¤¬¤¢¤ë¡£¼°¤òÍ¿¤¨¤ëÊýË¡¤È·¿¤òÍ¿¤¨¤ëÊýË¡¤Ç¤¢¤ë¡£°Ê²¼¤Ë¼°¤ò»ØÄꤹ¤ëÎã¤ò¼¨¤¹¡£
typeof (x[0](1))
¤³¤³¤Ç¤Ï¡¢x ¤¬´Ø¿ô¤ÎÇÛÎó¤Ç¤¢¤ë¤³¤È¤ò²¾Äꤷ¤Æ¤¤¤ë¡£¤³¤Î¹½Ê¸¤Çµ½Ò¤µ¤ì¤ë·¿¤Ï¡¢´Ø¿ô¤ÎÌá¤êÃͤη¿¤Ë¤Ê¤ë¡£
¼¡¤Ë¡¢°ú¿ô¤Ë·¿Ì¾¤ò»ØÄꤷ¤¿Îã¤ò¼¨¤¹¡£
typeof (int *)
¤³¤ì¤Çµ½Ò¤µ¤ì¤ë·¿¤Ï¡¢int ¤Ø¤Î¥Ý¥¤¥ó¥¿¤È¤¤¤¦·¿¤Ë¤Ê¤ë¡£
ANSI C ¥×¥í¥°¥é¥à¤«¤é¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤¿¤È¤¤ËÀµ¤·¤¯Æ°ºî¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò½ñ¤¯¾ì¹ç¤Ï¡¢typeof ¤ÎÂå¤ï¤ê¤Ë __typeof__ ¤ò»È¤¦¤³¤È¡£See Alternate Keywords.
typeof¹½Ê¸¤Ï¡¢typedef ̾¤¬½ñ¤±¤ë¤È¤³¤í¤Ê¤é¤É¤³¤Ë¤Ç¤âÃÖ¤±¤ë¡£Î㤨¤Ð¡¢Àë¸À¤ä¡¢¥¥ã¥¹¥È¤ä¡¢sizeof ¤ä typeof ¤ÎÃæ¤Ç»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
y ¤Î·¿¤ò¡¢x ¤¬»Ø¤·¤Æ¤¤¤ë¤â¤Î¤Î·¿¤È¤·¤ÆÀë¸À¤·¤Æ¤¤¤ë¡£
typeof (*x) y;
y ¤ò¤½¤ÎÍͤÊÃͤÎÇÛÎó¤È¤·¤ÆÀë¸À¤·¤Æ¤¤¤ë¡£
typeof (*x) y[4];
y ¤òʸ»ú¤Ø¤Î¥Ý¥¤¥ó¥¿ÇÛÎó¤È¤·¤ÆÀë¸À¤·¤Æ¤¤¤ë¡£
typeof (typeof (char *)[4]) y;
¤³¤ì¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê¤ª¤Ê¤¸¤ß¤Î C ¤ÎÀë¸À¤ÈƱ¤¸¤Ç¤¢¤ë¡£
char *y[4];
typeof ¤ò»È¤Ã¤¿Àë¸À¤Î°ÕÌ£¤òÃΤ뤿¤á¤Ë¡¢¤½¤·¤Æ²¿¸ÎÊØÍø¤Ê½ñ¤Êý¤Ê¤Î¤«¤òÃΤ뤿¤á¤Ë¡¢°Ê²¼¤Î¥Þ¥¯¥í¤ò»È¤Ã¤Æ½ñ¤Ä¾¤·¤Æ¤ß¤ë¡£
#define pointer(T) typeof(T *) #define array(T, N) typeof(T [N])
¤³¤¦¤·¤Æ¤ª¤¯¤È¡¢°Ê²¼¤Î¤è¤¦¤ËÀë¸À¤ò½ñ¤´¹¤¨¤ë¤³¤È¤¬¤Ç¤¤ë¡£
array (pointer (char), 4) y;
¤Ä¤Þ¤ê¡¢arrray (pointer (char), 4) ¤Ï¡¢char ¤Ø¤Î4 ¸Ä¤Î¥Ý¥¤¥ó¥¿¤ÎÇÛÎó¤Î·¿¤Ç¤¢¤ë¡£
ʣʸ¼°¡¢3¹à±é»»¼°¡¢¤½¤ì¤Ë¥¥ã¥¹¥È¤Ï¡¢¤½¤Î¥ª¥Ú¥é¥ó¥É¤¬º¸ÊÕÃͤǤ¢¤ì¤Ð¡¢º¸ÊÕÃͤȤ·¤Æµö¤µ¤ì¤ë¡£¤Ä¤Þ¤ê¡¢¤³¤ì¤é¤Î¥¢¥É¥ì¥¹¤ò¼è¤Ã¤¿¤ê¡¢Ãͤò³ÊǼ½ÐÍè¤ë¡£
C++ ¤Îɸ½à¤Ï¡¢Ê£Ê¸¼°¤È3¹à±é»»»Ò¼°¤òº¸ÊÕÃͤȤ·¤Æ»È¤¦¤³¤È¡¢¤½¤ì¤«¤é»²¾È·¿¤Ø¤Î¥¥ã¥¹¥È¤òµö¤·¤Æ¤¤¤ë¤Î¤Ç¡¢C++ ¤Î¥³¡¼¥É¤Ç¤Ï¤³¤Î³ÈÄ¥¤ò»È¤¦°ÕÌ£¤Ï¤¢¤Þ¤ê¤Ê¤¤¡£
Î㤨¤Ð¡¢Ê£Ê¸¼°¤ÏÂêÆþ²Äǽ¤Ç¤¢¤ë¡£Îó¤ÎºÇ¸å¤Î¼°¤¬º¸ÊÕÃͤȤʤ롣°Ê²¼¤ÎÆó¤Ä¤Î¼°¤ÏÅù²Á¤Ç¤¢¤ë¡£
(a, b) += 5 a, (b += 5)
ƱÍͤˡ¢Ê£Ê¸¼°¤Î¥¢¥É¥ì¥¹¤ò¼è¤ë¤³¤È¤¬¤Ç¤¤ë¡£°Ê²¼¤ÎÆó¤Ä¤Î¼°¤ÏÅù²Á¤Ç¤¢¤ë¡£
&(a, b) a, &b
¾ò·ï¼°¤Ï¡¢¤½¤Î·¿¤¬ void ¤Ç¤Ê¤¯¤Æ¡¢¿¿¤Îʬ´ô¤Èµ¶¤Îʬ´ô¤¬¤É¤Á¤é¤â͸ú¤Êº¸ÊÕÃͤʤ顢¤ä¤Ï¤ê͸ú¤Êº¸ÊդȤʤ롣Î㤨¤Ð¡¢°Ê²¼¤ÎÆó¤Ä¤Î¼°¤ÏÅù²Á¤Ç¤¢¤ë¡£
(a ? b : c) = 5 (a ? b = 5 : (c = 5))
¥¥ã¥¹¥È¤â¡¢¤½¤Î¥ª¥Ú¥é¥ó¥É¤¬º¸ÊÕÃͤǤ¢¤ì¤Ð¡¢Í¸ú¤Êº¸ÊÕÃͤǤ¢¤ë¡£º¸ÊÕ¤¬¥¥ã¥¹¥È¤Ç¤¢¤ëñ½ã¤ÊÂåÆþ¤Î¾ì¹ç¡¢¤Þ¤º±¦ÊÕ¤¬¥¥ã¥¹¥È¤Ç»ØÄꤵ¤ì¤ë¥¿¥¤¥×¤ËÊÑ´¹¤µ¤ì¡¢¼¡¤Ë¥¥ã¥¹¥È¤Ê¤·¤Îº¸ÊÕ¼°¤Î·¿¤ËÊÑ´¹¤µ¤ì¤ë¡£¤½¤ì¤¬³ÊǼ¤µ¤ì¤¿¸å¡¢¤½¤ÎÃͤϥ¥ã¥¹¥È¤Ç»ØÄꤵ¤ì¤¿·¿¤ËÌᤵ¤ì¤Æ¡¢ÂåÆþ¼«ÂΤÎÃͤȤʤ롣¤Ä¤Þ¤ê¡¢a ¤Î·¿¤¬ char * ¤È¤¤¤¦¾ì¹ç¡¢°Ê²¼¤ÎÆó¤Ä¤Î¼°¤ÏÅù²Á¤Ç¤¢¤ë¡£
(int)a = 5 (int)(a = (char *)(int)5)
+= ¤Î¤è¤¦¤Ë»»½Ñ±é»»¤ÈÁȤ߹ç¤ï¤µ¤ì¤¿ÂåÆþ±é»»¤ò¥¥ã¥¹¥È¤ËŬÍѤ¹¤ë¤È¡¢¥¥ã¥¹¥È¤Î·ë²Ì¤Î·¿¤ò»È¤Ã¤Æ»»½Ñ±é»»¤ò¹Ô¤Ê¤¤¡¢¼¡¤ËÁ°½Ò¤Î¾ì¹ç¤ÈƱ¤¸¤è¤¦¤Ë³¹Ô¤µ¤ì¤ë¡£¤Ä¤Þ¤ê¡¢°Ê²¼¤ÎÆó¤Ä¤Î¼°¤ÏÅù²Á¤Ë¤Ê¤ë¡£
(int)a += 5 (int)(a = (char *)(int) ((int)a + 5))
º¸ÊÕÃͤΥ¥ã¥¹¥È¤Î¥¢¥É¥ì¥¹¤ò¼è¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£¤½¤Î¥¢¥É¥ì¥¹¤ò»È¤¦¤È°ì´ÓÀ¤¬¤Ê¤¯¤Ê¤ë¤«¤é¤Ç¤¢¤ë¡£&(int)f ¤È¤¤¤¦½ñ¤Êý¤¬µö¤µ¤ì¤ë¤È¤·¤è¤¦¡£f ¤Î·¿¤Ï float ·¿¤È¤¹¤ë¡£¤½¤¦¤¹¤ë¤È¡¢°Ê²¼¤Îʸ¤Ï¡¢À°¿ô¤Î¥Ó¥Ã¥È¥Ñ¥¿¡¼¥ó¤òÉâÆ°¾®¿ôÅÀ¿ô¤¬Â°¤¹¤ë¾ì½ê¤Ë³ÊǼ¤·¤è¤¦¤È¤¹¤ë¤³¤È¤Ë¤Ê¤ë¡£
*&(int)f = 1;
¤³¤ì¤Ï¡¢(int)f = 1 ¤¬¹Ô¤Ê¤¦¤³¤È¤ÈÁ´¤¯°ã¤¦¡£(int)f = 1 ¤Ï¡¢1 ¤òÉâÆ°¾®¿ôÅÀ¤ËÊÑ´¹¤·¡¢¤½¤ì¤ò³ÊǼ¤¹¤ë¡£¤³¤Î°ì´ÓÀ¤Î¤Ê¤µ¤òȯÀ¸¤µ¤»¤ë¤è¤ê¤â¡¢¥¥ã¥¹¥È¤Ë & ¤ò»È¤¦¤Î¤ò¶Ø»ß¤·¤¿¤Û¤¦¤¬Îɤ¤¤À¤í¤¦¤È²æ¡¹¤Ï¹Í¤¨¤Æ¤¤¤ë¡£
f ¤Î¥¢¥É¥ì¥¹¤ò int * ·¿¤Î¥Ý¥¤¥ó¥¿¤È¤·¤ÆËÜÅö¤ËɬÍפʤ顢ñ¤Ë (int *)&f ¤È½ñ¤±¤ÐÎɤ¤¡£
»°¹à±é»»»Ò¤Î¼°¤Ç¡¢ÆóÈÖÌܤΥª¥Ú¥é¥ó¥É¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¾Êά¤·¤¿¾ì¹ç¤Ï¡¢ºÇ½é¤Î¥ª¥Ú¥é¥ó¥É¤ÎÃͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¤½¤ÎÃͤ¬¼°¤ÎÃͤȤʤ롣
¤Ä¤Þ¤ê¡¢°Ê²¼¤Î¤è¤¦¤Ê¾ì¹ç¡¢
x ? : y
¼°¤ÎÃͤϡ¢x ¤ÎÃͤ¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¤½¤ÎÃͤȤʤꡢx ¤¬ 0 ¤Ê¤éy ¤ÎÃͤȤʤ롣
¤³¤ì¤Ï°Ê²¼¤Î¼°¤ÈÁ´¤¯Åù²Á¤Ç¤¢¤ë¡£
x ? x : y
¾åµ¤Î¤è¤¦¤Ê´Êñ¤Ê¥±¡¼¥¹¤Ç¤Ï¡¢ÆóÈÖÌܤΥª¥Ú¥é¥ó¥É¤ò¾Êά¤Ç¤¤ëͤêÆñ¤ß¤¬Îɤ¯¤ï¤«¤é¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¡£¤³¤ì¤¬Ìò¤ËΩ¤Ä¤Î¤Ï¡¢ºÇ½é¤Î¥ª¥Ú¥é¥ó¥É¤¬ÉûºîÍѤ¬»ý¤Ã¤Æ¤¤¤ë¤«¡¢ÉûºîÍѤò»ý¤Ä²ÄǽÀ¤¬¤¢¤ë(¥Þ¥¯¥í¤Î°ú¿ô¤Î¾ì¹ç)»þ¤Ç¤¢¤ë¡£¤½¤Î¾ì¹ç¡¢Ãæ´Ö¹à¤Ç¤½¤Î¥ª¥Ú¥é¥ó¥É¤ò·«¤êÊÖ¤·»È¤¦¤È¡¢ÉûºîÍѤ¬Æó²ó¼Â¹Ô¤µ¤ì¤ë¡£Ãæ´Ö¹à¤Î¥ª¥Ú¥é¥ó¥É¤ò¾Êά¤¹¤ë¤È¡¢´û¤Ë·×»»ºÑ¤ß¤ÎÃͤò»È¤¤¡¢ºÆ·×»»¤Ë¤è¤ë˾¤Þ¤·¤¯¤Ê¤¤ºîÍѤòȼ¤ï¤Ê¤¤¡£
GNU C ¤Ï¡¢int ¤ÎÆóÇܤÎÂ礤µ¤ÎÀ°¿ô·¿¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£¤³¤Î·¿¤Ï¡¢É乿ÉÕ¤¤Î¾ì¹ç¤Ï long long int¡¢Éä¹æÌµ¤·¤Î¾ì¹ç¤Ïunsigned long long int ¤È½ñ¤¯¡£long long int ·¿¤ÎÄê¿ô¤òºî¤ë¤Ë¤Ï¡¢À°¿ô¤Ë¥µ¥Õ¥£¥Ã¥¯¥¹ LL ¤òÉÕ¤±¤ë¡£unsigned long long int ·¿¤ÎÀ°¿ô¤Î¾ì¹ç¤Ë¤Ï¡¢ULL ¤Ç¤¢¤ë¡£
¾¤ÎÀ°¿ô·¿Æ±ÍÍ¡¢¤³¤ì¤é¤Î·¿¤ò»»½Ñ±é»»¤Ç»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ì¤é¤Î·¿¤Ë¤Ä¤¤¤Æ¤Î¡¢²Ã»»¡¢¸º»»¡¢¥Ó¥Ã¥ÈËè¤Î¥Ö¡¼¥ë±é»»¤Ï¡¢Á´¤Æ¤Îµ¡¼ï¤Ç³«¤«¤ì¤¿·Á¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¡£¾è»»¤Ï¡¢µ¡¼ï¤¬Á´¸ì¤«¤éÇÜ¸ì¤Ø¤Î³ÈÉý¾è»»Ì¿Îá¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Ê¤é¡¢³«¤«¤ì¤¿·Á¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¡£½ü»»¤È¥·¥Õ¥È¤Ï¡¢ÆÃÊ̤ʥµ¥Ý¡¼¥È¤òÄ󶡤·¤Æ¤¤¤ëµ¡¼ï¤Ç¤Î¤ß³«¤«¤ì¤¿·Á¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¡£³«¤«¤ì¤¿·Á¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤¤±é»»¤Ï¡¢GNU CC ÉÕ°¤ÎÆÃÊ̤ʥ饤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤ò»È¤¦¡£
long long ·¿¤ò´Ø¿ô¤Î°ú¿ô¤Ë»È¤¦¤È¤¤Ï¡¢´Ø¿ô¤Î¥×¥í¥È¥¿¥¤¥×Àë¸À¤Ê¤·¤Î¾ì¹ç¤Ï¡¢Íî¤È¤··ê¤ËÃí°Õ¤¹¤ë¤³¤È¡£¤¢¤ë´Ø¿ô¤¬°ú¿ô¤È¤·¤Æ int ·¿¤òÁÛÄꤷ¤Æ¤¤¤ë¾ì¹ç¡¢long long int ·¿¤ÎÃͤòÅϤ¹¤È¡¢¸Æ¤Ó½Ð¤·Â¦¤È¸Æ¤Ó½Ð¤µ¤ì¤ë¦¤ÇÁÛÄꤷ¤Æ¤¤¤ë°ú¿ô¤Î¥Ð¥¤¥È¿ô¤¬°ã¤¦¤Î¤Ç¡¢º®Íð¤¬À¸¤¸¤ë¡£´Ø¿ô¤¬ long long int ¤òÁÛÄꤷ¡¢¤½¤ì¤ËÂФ·¡¢int ·¿¤òÅϤ¹¾ì¹ç¤âƱ¤¸¤Ç¤¢¤ë¡£¤³¤Î¤è¤¦¤ÊÌäÂê¤òÈò¤±¤ëºÇ¤âÎɤ¤ÊýË¡¤Ï¡¢¥×¥í¥È¥¿¥¤¥×Àë¸À¤ò»È¤¦¤³¤È¤Ç¤¢¤ë¡£
GNU C ¤ÏÊ£ÁÇ¿ô·¿¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£À°¿ô¤ÎÊ£ÁÇ¿ô·¿¤âÉâÆ°¾®¿ôÅÀ¿ô¤ÎÊ£ÁÇ¿ô·¿¤â¤É¤Á¤é¤â»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ì¤Ë¤Ï¡¢__complex__ ¤È¤¤¤¦Í½Ìó¸ì¤ò»È¤¦¡£
Î㤨¤Ð¡¢__complex__ double x; ¤ÈÀë¸À¤¹¤ë¤È¡¢x ¤Ï¡¢¼Â¿ôÉô¤âµõ¿ôÉô¤â double ·¿¤ÎÊÑ¿ô¤Ë¤Ê¤ë¡£__complex__ short int y; ¤ÈÀë¸À¤¹¤ë¤È y ¤Ï¡¢¼Â¿ôÉô¤âµõ¿ôÉô¤â short int ·¿¤Ë¤Ê¤ë¡£¸å¼Ô¤ÎÊý¤Ï¤¢¤Þ¤êÌò¤Ë¤¿¤Á¤½¤¦¤â¤Ê¤¤¤¬¡¢Ê£ÁÇ¿ô·¿¤Ï°ìÄ̤êÁ´Éô·¤Ã¤Æ¤¤¤ë¤³¤È¤òɽ¤·¤Æ¤¤¤ë¡£
Ê£ÁÇ¿ô·¿¤ÎÄê¿ô¤Ï¡¢¥µ¥Õ¥£¥Ã¥¯¥¹ i ¤« j ¤ò¤Ä¤±¤Æ½ñ¤¯(¤É¤Á¤é¤«°ì¤Ä¤Ç¡¢¤É¤Á¤é¤Ç¤âƱ¤¸¤Ç¤¢¤ë)¡£Î㤨¤Ð¡¢2.5fi ¤È¤¤¤¦Äê¿ô¤Ï __complex__ float ·¿¤Ç¡¢3i ¤Ï __complex__ int ·¿¤Ë¤Ê¤ë¡£¤³¤Î¤è¤¦¤Ë½ñ¤¤¤¿À°¿ô¤Ï¡¢¾ï¤Ë½ãµõ¿ôÃͤˤʤ뤬¡¢¤³¤ì¤ò¼ÂÄê¿ô¤Ë¤»¤Ð¡¢Ë¾¤ß¤ÎÊ£ÁÇ¿ôÃͤòºî¤ë¤³¤È¤¬¤Ç¤¤ë¡£
Ê£ÁÇ¿ôÃͤò»ý¤Ä¼° exp ¤«¤é¼Â¿ôÉô¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢__real__ exp
¤È½ñ¤¯¡£Æ±Íͤˡ¢µõ¿ôÉô¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢__imag__ ¤ò»È¤¦¡£
±é»»»Ò ~ ¤òÊ£ÁÇ¿ô·¿¤ÎÃͤ˻Ȥ¦¤È¡¢Ê£ÁǶ¦Ìò¤ò¼è¤ë¡£
GNU CC ¤ÏÊ£ÁÇ¿ô·¿¤Î¼«Æ°ÊÑ¿ô¤ÏϢ³Ū¤Ë¤Ï³ÎÊݤ·¤Ê¤¤¡£¼Â¿ôÉô¤Ï¥ì¥¸¥¹¥¿¤Ë¼è¤ê¡¢µõ¿ôÉô¤ÎÊý¤Ï¥¹¥¿¥Ã¥¯¾å¤Ë¼è¤ë(¤¢¤ë¤¤¤Ï¤½¤ÎµÕ)
¤³¤È¤µ¤¨²Äǽ¤Ç¤¢¤ë¡£GNU CC ¤¬¸½ºß¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥Ç¥Ð¥Ã¥°¾ðÊó·Á¼°¤Ç¡¢¤³¤Î¤è¤¦¤ÊÈóϢ³Ū¤Ê³ÎÊݤòɽ¸½¤¹¤ë¼êÃʤò»ý¤Ã¤Æ¤¤¤ë¤â¤Î¤Ï¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢GNU CC ¤ÏÈóϢ³Ū¤Ë³ÎÊݤµ¤ì¤¿Ê£ÁÇÊÑ¿ô¤ò¡¢¤¢¤¿¤«¤âÊ£ÁÇ¿ô·¿¤Ç¤Ê¤¤Æó¤Ä¤ÎÆÈΩ¤·¤¿ÊÑ¿ô¤Ç¤¢¤ë¤«¤Î¤è¤¦¤Ëµ½Ò¤¹¤ë¡£¼ÂºÝ¤ÎÊÑ¿ô̾¤¬ foo ¤Ç¤¢¤ì¤Ð¡¢µ¿»÷Ū¤ÊÆó¤Ä¤ÎÊÑ¿ô̾¤Ï¡¢foo$real ¤È foo$imag ¤Ë¤Ê¤ë¡£¤³¤Î¤è¤¦¤Êµ¿»÷Ū¤ÊÊÑ¿ô¤Ï¡¢¥Ç¥Ð¥Ã¥¬¤«¤éÃͤòÄ´¤Ù¤¿¤êÀßÄꤷ¤¿¤ê¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£
GDB ¤Ï¾Íè¡¢¤³¤Î¤è¤¦¤ÊÊÑ¿ô¤ÎÁȤòǧ¼±¤·¡¢°ì¸Ä¤ÎÊ£ÁÇ¿ô·¿ÊÑ¿ô¤È¤·¤Æ°·¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¡£
GNU CC ¤Ï 1.55e1 ¤Î¤è¤¦¤ÊÉáÄ̤Î10¿Êɽµ¤Ç½ñ¤«¤ì¤¿ÉâÆ°¾®¿ôÅÀ¿ô¤À¤±¤Ç¤Ê¤¯¡¢0x1.fp3 ¤Î¤è¤¦¤Ë16¿Êɽµ¤Ç½ñ¤«¤ì¤¿¿ô¤âǧ¼±¤¹¤ë¡£¤³¤Îɽµ¤Ç¤Ï¡¢16¿ÊÀÜÆ¬¼ 0x ¤È»Ø¿ô¥Õ¥£¡¼¥ë¥É p ¤Þ¤¿¤ÏP ¤Ïɬ¿Ü¤Ç¤¢¤ë¡£»Ø¿ô¤Ï¡¢²¾¿ôÉô¤Ë³Ý¤±¤é¤ì¤ë 2 ¤ÎÑѾè¿ô¤òɽ¤¹10¿Ê¿ô¤Ç¤¢¤ë¡£¤¹¤Ê¤ï¤Á¡¢0x1.fp3 ¤Ï 1 15/16 ¤ò¡¢p3 ¤Ë¤è¤ê¡¢8 ¤ò³Ý¤±¤¿¤â¤Î¤Ë¤Ê¤ê¡¢·ë¶É 0x1.fp3 ¤ÎÃÍ¤Ï 1.55e1 ¤ÈƱ¤¸¤Ë¤Ê¤ë¡£
10¿Êɽµ¤ÎÉâÆ°¾®¿ôÅÀ¿ô¤È°ã¤¤¡¢16¿Êɽµ¤Ç¤Ï»Ø¿ô¤Ï¾ï¤ËɬÍפǤ¢¤ë¡£»Ø¿ô¤ò½ñ¤«¤Ê¤¤¤È¡¢Î㤨¤Ð 0x1.f ¤Ë¤¢¤ë¤è¤¦¤ÊÛ£Ëæ¤µ¤ò²ò·è¤Ç¤¤Ê¤¤¡£¤³¤Î¿ô¤Ï 1.0f ¤È¤â¼è¤ì¤ë¤·¡¢¤¢¤ë¤¤¤Ï f ¤Ï float ·¿¤ÎÉâÆ°¾®¿ôÅÀÄê¿ô¤Î³ÈÄ¥·Á¼°¤Ç¤â¤¢¤ë¤Î¤Ç 1.9375 ¤È¤â¼è¤ì¤ë¤Î¤Ç¤¢¤ë¡£
GNU C ¤Ç¤ÏŤµ¤¬ 0 ¤ÎÇÛÎó¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ì¤ò¹½Â¤ÂΤκǸå¤ÎÍ×ÁǤȤ·¤ÆÃÖ¤¡¢¼ÂºÝ¤Ë¤Ï²ÄÊÑĹ¤È¤Ê¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ø¥Ã¥À¤È¤·¤Æ»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
struct line {
int length;
char contents[0];
};
{
struct line *thisline = (struct line *)
malloc (sizeof (struct line) + this_length);
thisline->length = this_length;
}
C ¤Îɸ½à¤Ç¤Ï¡¢Ä¹¤µ 0 ¤ÎÇÛÎó¤Ïµö¤µ¤ì¤Ê¤¤¤¿¤á¡¢¾åµ¤Î contents ¤ÎŤµ¤ò 1 ¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢¥¹¥Ú¡¼¥¹¤¬ÌµÂ̤ˤʤ俤ꡢmalloc ¤Î°ú¿ô¤¬Ê£»¨¤Ë¤Ê¤Ã¤¿¤ê¤¹¤ë¡£
GNU C ¤Ç¤Ï²ÄÊÑĹ¤Î¼«Æ°ÊÑ¿ôÇÛÎó¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ÎÇÛÎó¤Ï¡¢ÉáÄ̤μ«Æ°ÇÛÎó¤ÈƱ¤¸¤è¤¦¤ËÀë¸À¤¹¤ë¤¬¡¢Ä¹¤µ»ØÄ꤬Äê¿ô¼°¤Ç¤Ê¤¤¤È¤³¤í¤¬°ã¤¦¡£¥á¥â¥ê¤ÏÀë¸À¤Î¤¢¤ë¾ì½ê¤Ç³ÎÊݤµ¤ì¡¢¤½¤ì¤¬Â°¤¹¤ë¥Ö¥í¥Ã¥¯¤òÈ´¤±¤ë¤È¤¤Ë²òÊü¤µ¤ì¤ë¡£°Ê²¼¤ËÎã¤ò¼¨¤¹¡£
FILE *
concat_fopen (char *s1, char *s2, char *mode)
{
char str[strlen (s1) + strlen (s2) + 1];
strcpy (str, s1);
strcat (str, s2);
return fopen (str, mode);
}
ÇÛÎó̾¤Î͸úÈϰϤ«¤é¡¢¥¸¥ã¥ó¥×¤ä break ¤ÇÈ´¤±¤ë¤È¡¢ÇÛÎó̾¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥á¥â¥ê¤Ï²òÊü¤µ¤ì¤ë¡£ÇÛÎó̾¤Î͸úÈϰϤ˥¸¥ã¥ó¥×¤·¤Æ¤¯¤ë¤Î¤Ïµö¤µ¤ì¤º¡¢¥¨¥é¡¼¤Ë¤Ê¤ë¡£
´Ø¿ô alloca ¤ò»È¤¨¤Ð¡¢²ÄÊÑĹÇÛÎó¤ÈƱ¤¸¤è¤¦¤Ê¸ú²Ì¤òÆÀ¤ë¤³¤È¤¬¤Ç¤¤ë¡£alloca ¤Ï¡¢Â¿¤¯¤Î C ¤Î½èÍý·Ï¤ÇÍøÍѲÄǽ¤Ç¤¢¤ë(¤¬¡¢Á´¤Æ¤Î½èÍý·Ï¤ÇÍøÍѲÄǽ¤Ê¤ï¤±¤Ç¤Ï¤Ê¤¤)¡£°ìÊý¡¢²ÄÊÑĹÇÛÎó¤ÎÊý¤¬¥¨¥ì¥¬¥ó¥È¤Ç¤¢¤ë¡£
¤³¤ÎÆó¤Ä¤ÎÊýË¡¤Ë¤Ï¾¤Ë¤â°ã¤¤¤¬¤¢¤ë¡£allocal ¤Ç³ÎÊݤ·¤¿Îΰè¤Ï¤½¤Î´Ø¿ô¤¬¥ê¥¿¡¼¥ó¤¹¤ë¤Þ¤Ç¸ºß¤·Â³¤±¤ë¡£²ÄÊÑĹÇÛÎó¤ÎÎΰè¤ÎÊý¤Ï¡¢ÇÛÎó̾¤Î¥¹¥³¡¼¥×¤òÈ´¤±¤¿½Ö´Ö¤Ë²òÊü¤µ¤ì¤ë¡£(¤¢¤ë°ì¤Ä¤Î´Ø¿ô¤Ç¡¢²ÄÊÑĹÇÛÎó¤Èalloca ¤ÎξÊý¤ò»È¤Ã¤¿¾ì¹ç¡¢¤¢¤ë²ÄÊÑĹÇÛÎó¤ò²òÊü¤¹¤ë¤È¡¢¤½¤Î²ÄÊÑĹÇÛÎó¤Î³ÎÊݰʸå¤Ë alloca ¤Ç³ÎÊݤµ¤ì¤¿Îΰè¤âÁ´¤Æ²òÊü¤µ¤ì¤ë¡£)
²ÄÊÑĹÇÛÎó¤ò´Ø¿ô¤Î°ú¿ô¤È¤·¤Æ»È¤¦¤³¤È¤â¤Ç¤¤ë¡£
struct entry
tester (int len, char data[len][len])
{
...
}
ÇÛÎó¤ÎŤµ¤Ï¡¢¥á¥â¥ê¤¬³ÎÊݤµ¤ì¤ë¤È¤¤Ë°ì²ó¤À¤±·×»»¤µ¤ì¡¢¤½¤ÎÇÛÎó¤Î͸úÈÏ°ÏÆâ¤Ç¤Ïµ²±¤µ¤ì¤Æ¤ª¤ê¡¢sizeof ¤Ç»²¾È¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
ºÇ½é¤ËÇÛÎó¤òÅϤ·¡¢Ä¹¤µ¤Ï¸å¤«¤éÅϤ·¤¿¤¤¾ì¹ç¤Ï¡¢²¾°ú¿ô¤Î¥ê¥¹¥È¤ÇÁ°ÊýÀë¸À¤ò¹Ô¤Ê¤¨¤ÐÎɤ¤¡£¤³¤ì¤â¤â¤¦°ì¤ÄÊ̤ΠGNU ¤Î³ÈÄ¥µ¡Ç½¤Ç¤¢¤ë¡£
struct entry
tester (int len; char data[len][len], int len)
{
...
}
¥»¥ß¥³¥í¥ó¤ÎÁ°¤Î int len ¤¬ ²¾°ú¿ô¤ÎÁ°ÊýÀë¸À¤Ç¤¢¤ë¡£¤³¤ì¤Ï¡¢data ¤ÎÀë¸À¤ò¥Ñ¡¼¥¹¤¹¤ë¤È¤¤Ë len ¤È¤¤¤¦Ì¾Á°¤ò´ûÃΤΤâ¤Î¤È¤¹¤ëÌò³ä¤ò²Ì¤¿¤¹¡£
²¾°ú¿ô¥ê¥¹¥È¤Ë¤Ï¡¢¤³¤¦¤¤¤¦Á°ÊýÀë¸À¤ò´ö¤Ä½ñ¤¤¤Æ¤âÎɤ¤¡£Á°ÊýÀë¸À¤Ï¡¢¥«¥ó¥Þ¤Þ¤¿¤Ï¥»¥ß¥³¥í¥ó¤ò»È¤Ã¤Æ¶èÀڤ롣¤¿¤À¤·¡¢ºÇ¸å¤ÎÁ°ÊýÀë¸À¤Ï¥»¥ß¥³¥í¥ó¤Ç½ª¤ï¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢¤½¤Î¸å¤Ë¡ÖËÜʪ¤Î¡×²¾°ú¿ô¥ê¥¹¥È¤¬Â³¤¯¡£¤É¤ÎÁ°ÊýÀë¸À¤â¡¢¡ÖËÜʪ¤Î¡×²¾°ú¿ôÀë¸À¤Î̾Á°¤È¥Ç¡¼¥¿·¿¤Ë°ìÃפ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
GNU C ¤Ç¤Ï¡¢´Ø¿ô¤ÈƱ¤¸¤è¤¦¤Ë¡¢¥Þ¥¯¥í¤â²ÄÊÑ¿ô¤Î°ú¿ô¤ò¼è¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤½¤Î¾ì¹ç¤Î¥Þ¥¯¥í¤ÎÄêµÁ¹½Ê¸¤Ï´Ø¿ô¤Î¾ì¹ç¤Ë»È¤ï¤ì¤ë¤â¤Î¤ËÎɤ¯»÷¤Æ¤¤¤ë¡£¼¡¤ËÎã¤ò¼¨¤¹¡£
#define eprintf(format, args...) \ fprintf (stderr, format , ## args)
args ¤Ï»Ä¤ê¤Î°ú¿ô¤Ç¤¢¤ë¡£¸Æ¤Ó½Ð¤·Â¦¤ÈƱ¤¸¤À¤±¤Î¡¢¥¼¥í¸Ä°Ê¾å¤Î°ú¿ô¤ò¼è¤ë¡£¤³¤ì¤éÁ´¤Æ¤Î°ú¿ô¤È¤½¤Î´Ö¤Ë¥«¥ó¥Þ¤ò²Ã¤¨¤¿¤â¤Î¤¬¡¢args ¤ÎÃͤȤʤꡢargs ¤¬»È¤ï¤ì¤ë¥Þ¥¯¥íËÜÂΤËÂåÆþ¤µ¤ì¤ë¡£·ë¶É¡¢¤³¤ÎÎã¤Ï°Ê²¼¤Î¤è¤¦¤ËŸ³«¤µ¤ì¤ë¡£
eprintf ("%s:%d: ", input_file_name, line_number)
==>
fprintf (stderr, "%s:%d: " , input_file_name, line_number)
ʸ»úÎóÄê¿ô¤Îľ¸å¤Î¥«¥ó¥Þ¤Ï eprintf ¤ÎÄêµÁ¤«¤éÍ褿¤â¤Î¤Ç¤¢¤ë¤Î¤ËÂФ·¡¢ºÇ¸å¤Î¥«¥ó¥Þ¤Ï args ¤ÎÃͤ«¤éÍ褿¤â¤Î¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¡£
## ¤ò»È¤¦Íýͳ¤Ï¡¢args ¤ËÁ´¤¯°ú¿ô¤¬¤Ê¤¤¾ì¹ç¤ò°·¤¦¤¿¤á¤Ç¤¢¤ë¡£¤½¤Î¾ì¹ç¡¢args ¤ÎÃͤ϶õ¤È¤Ê¤ë¡£¤½¤¦¤¹¤ë¤È¡¢¥Þ¥¯¥íÄêµÁÃæ¤ÎÆóÈÖÌܤΥ«¥ó¥Þ¤¬¼ÙËâ¤Ë¤Ê¤ë¡£¥Þ¥¯¥í¤ò¤½¤Î¤Þ¤ÞŸ³«¤¹¤ë¤È¡¢°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
fprintf (stderr, "success!\n" , )
¤³¤ì¤Ï¡¢C ¤Îʸˡ¤È¤·¤Æ¸í¤Ã¤¿¤â¤Î¤Ë¤Ê¤ë¡£## ¤ò»È¤¦¤È¤³¤Î¾ì¹ç¤Î¥«¥ó¥Þ¤ò¼è¤ê½ü¤¯¤Î¤Ç¡¢Âå¤ï¤ê¤Ë°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
fprintf (stderr, "success!\n")
¤³¤ì¤Ï¡¢GNU C ¥×¥ê¥×¥í¥»¥Ã¥µ¤ÎÆÃÊ̤ʵ¡Ç½¤Ç¤¢¤ë¡£## ¤Î¸å¤Î»Ä¤ê¤Î°ú¿ô¤¬¶õ¤Î¾ì¹ç¤Î ¡¢Àè¹Ô¤¹¤ë¡¢¥Þ¥¯¥íÄêµÁ¤«¤éÍè¤ëÈó¶õÇòʸ»ú¤ÎÎó¤ò¼Î¤Æ¤µ¤ë¡£(¤â¤¦°ì¤ÄÊ̤Υޥ¯¥í°ú¿ô¤¬Àè¹Ô¤¹¤ë¾ì¹ç¤Ï¡¢²¿¤â¼Î¤Æ¤Ê¤¤¡£)
ºÇ¸å¤ÎÀè¹Ô¤¹¤ëÈó¶õÇòʸ»ú¤ÎÎó¤ÎÂå¤ï¤ê¤Ë¡¢ºÇ¸å¤Î¥×¥ê¥×¥í¥»¥Ã¥µ¡¦¥È¡¼¥¯¥ó¤ò¼Î¤Æµî¤Ã¤¿¤Û¤¦¤¬Îɤ¤¤Î¤«¤â¤·¤ì¤Ê¤¤¡£¼ÂºÝ¡¢¤¤¤Ä¤«¤Ï¤³¤Îµ¡Ç½¤ò¤½¤Î¤è¤¦¤ËÊѤ¨¤¿¤¤¤È»×¤¦¡£²æ¡¹¤È¤·¤Æ¤Ï¡¢¥Þ¥¯¥íÄêµÁ¤ò½ñ¤¯¤È¤¤Ï¡¢Àè¹Ô¤¹¤ëÈó¶õÇòʸ»ú¤ÎÎó¤ò¤Á¤ç¤¦¤É°ì¸Ä¤Î¥È¡¼¥¯¥ó¤È¤Ê¤ë¤è¤¦¤Ë½ñ¤¤¤Æ¡¢²æ¡¹¤¬¤³¤Îµ¡Ç½¤ÎÄêµÁ¤òÊѤ¨¤¿¤È¤¤Ë¤â°ÕÌ£¤¬ÊѤï¤é¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤³¤È¤ò¤ª´«¤á¤¹¤ë¡£
º¸ÊÕÃͤǤʤ¤ÇÛÎó¤Îꤍ»ú¤ò¼è¤ë¤³¤È¤¬¡¢Ã±¹à¤Î & ±é»»»Ò¤¬µö¤µ¤ì¤Ê¤¤¾ì¹ç¤Ç¤â¡¢²Äǽ¤Ç¤¢¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Ï GNU C ¤Ç¤Ï͸ú¤À¤¬Â¾¤Î C ¤ÎÊý¸À¤Ç¤Ï͸ú¤Ç¤Ê¤¤¡£
struct foo {int a[4];};
struct foo f();
bar (int index)
{
return f().a[index];
}
void¥Ý¥¤¥ó¥¿¤È´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤ËÂФ¹¤ë±é»»GNU C ¤Ç¤Ï¡¢²Ã»»¤È¸º»»¤Î±é»»¤¬¡¢void ¤Ø¤Î¥Ý¥¤¥ó¥¿¤È´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤ËÂФ·¤Æ¤â»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ì¤Ï¡¢void ¤È´Ø¿ô¤ÎÂ礤µ¤ò1 ¤È¤·¤Æ°·¤¦¤³¤È¤Ë¤è¤ê¹Ô¤Ê¤ï¤ì¤ë¡£
¤³¤Î·ë²Ì¡¢sizeof ¤ò void ·¿¤È´Ø¿ô·¿¤Ë»È¤¦¤³¤È¤â¤Ç¤¡¢¤É¤Á¤é¤â 1 ¤òÊÖ¤¹¡£
¥ª¥×¥·¥ç¥ó -Wpointer-arith ¤ò»ØÄꤹ¤ë¤È¡¢¤³¤Î³ÈÄ¥¤¬»È¤ï¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë·Ù¹ð¤¹¤ë¤è¤¦¤ËÍ׵᤹¤ë¡£
C++ ¤Îɸ½à¤ÈƱÍͤˡ¢GNU C ¤Ç¤Ï¡¢¼«Æ°ÊÑ¿ô¤Ç¤¢¤ë½¸¹çÂΤνé´ü²½»Ò¤ÎÍ×ÁǤÏÄê¿ô¼°¤Ç¤Ê¤¯¤Æ¤âÎɤ¤¡£°Ê²¼¤Ë¡¢¼Â¹Ô»þ¤ËÊѲ½¤¹¤ëÍ×ÁǤò»ý¤Ä½é´ü²½»Ò¤ÎÎã¤òµó¤²¤ë¡£
foo (float f, float g)
{
float beat_freqs[2] = { f-g, f+g };
...
}
GNU C ¤Ï¥³¥ó¥¹¥È¥é¥¯¥¿¼°¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£¥³¥ó¥¹¥È¥é¥¯¥¿¤Ï¡¢¥¥ã¥¹¥È¤È½é´ü²½»Ò¤òÁȤ߹ç¤ï¤»¤¿¤è¤¦¤Ë¸«¤¨¤ë¡£¤½¤ÎÃͤϡ¢¥¥ã¥¹¥È¤Ë¤è¤ê»ØÄꤵ¤ì¤¿·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ê¡¢½é´ü²½»Ò¤Ç»ØÄꤵ¤ì¤¿Í×ÁǤò»ý¤Ä¡£
ÉáÄÌ¡¢·¿¤È¤·¤Æ»ØÄꤹ¤ë¤Î¤Ï¹½Â¤ÂΤǤ¢¤ë¡£struct foo ¤È structure ¤¬°Ê²¼¤Î¤è¤¦¤ËÀë¸À¤µ¤ì¤Æ¤¤¤ë¤È¤·¤è¤¦¡£
struct foo {int a; char b[2];} structure;
¼¡¤ÎÎã¤Ç¤Ï¡¢struct foo ¤ò¥³¥ó¥¹¥È¥é¥¯¥¿¤Ç¹½ÃÛ¤·¤Æ¤¤¤ë¡£
structure = ((struct foo) {x + y, 'a', 0});
¤³¤ì¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¤¤¿¤Î¤ÈƱ¤¸¤Ç¤¢¤ë¡£
{
struct foo temp = {x + y, 'a', 0};
structure = temp;
}
¤Þ¤¿¡¢ÇÛÎó¤ò¤â¹½ÃÛ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¥³¥ó¥¹¥È¥é¥¯¥¿¤ÎÁ´Í×ÁǤ¬¡¢Ã±½ã¤ÊÄê¿ô¼°¤«¤é¤Ê¤Ã¤Æ¤ª¤ê¡¢½é´ü²½»Ò¤È¤·¤Æ»È¤¦¤Î¤ËŬ¤·¤Æ¤¤¤ì¤Ð¡¢¤½¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Ïº¸ÊÕÃͤǤ¢¤ê¡¢¶¯À©Åª¤Ë¤½¤ÎÀèÆ¬¤ÎÍ×ÁǤؤΥݥ¤¥ó¥¿¤È¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£°Ê²¼¤ËÎã¤ò¼¨¤¹¡£
char **foo = (char *[]) { "x", "y", "z" };
Í×ÁǤ¬Ã±½ã¤ÊÄê¿ô¤Ç¤Ê¤¤ÇÛÎ󥳥󥹥ȥ饯¥¿¤Ï¤¢¤Þ¤êÌò¤ËΩ¤¿¤Ê¤¤¡£¤½¤Î¾ì¹ç¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¤Ïº¸ÊÕÃͤǤϤʤ¤¤«¤é¤Ç¤¢¤ë¡£Í¸ú¤Ê»È¤¤Êý¤ÏÆó¤Ä¤À¤±¤Ç¤¢¤ë¡£¤½¤ì¤òꤍ»ú¤Ç»²¾È¤¹¤ë¤³¤È¡¢¤¢¤ë¤¤¤Ï¡¢¤½¤ì¤ÇÇÛÎóÊÑ¿ô¤ò½é´ü²½¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£Á°¼Ô¤Ï¤ª¤½¤é¤¯ switch ʸ¤ò»È¤¦¤è¤êÃÙ¤¯¤Ê¤ë¡£°ìÊý¡¢¸å¼Ô¤ÏÄ̾ï¤Î C ¤Î½é´ü²½»Ò¤ÈƱ¤¸¤³¤È¤ò¤¹¤ë¡£°Ê²¼¤Ë¡¢ÇÛÎ󥳥󥹥ȥ饯¥¿¤Îꤍ»ú»²¾È¤ÎÎã¤ò¼¨¤¹¡£
output = ((int[]) { 2, x, 28 }) [input];
¥¹¥«¥é·¿¤È¶¦ÍÑÂη¿¤ËÂФ¹¤ë¥³¥ó¥¹¥È¥é¥¯¥¿¼°¤âµö¤µ¤ì¤ë¤¬¡¢¤½¤Î¾ì¹ç¥³¥ó¥¹¥È¥é¥¯¥¿¼°¤Ï¥¥ã¥¹¥È¤ÈÅù²Á¤Ë¤Ê¤ë¡£
ɸ½à¤Î C ¤Ç¤Ï¡¢½é´ü²½»Ò¤ÎÍ×ÁǤϷè¤Þ¤Ã¤¿½çÈ֤Ǹ½¤ì¤ë¤³¤È¤òÍ׵᤹¤ë¡£¤³¤Î½çÈ֤ϡ¢ÇÛÎó¤ä¹½Â¤ÂΤÎÍ×ÁǤ¬½é´ü²½¤µ¤ì¤ë½çÈÖ¤ÈÆ±¤¸¤Ç¤¢¤ë¡£
GNU C ¤Ç¤Ï¡¢Í×ÁǤòǤ°Õ¤Î½çÈ֤ǻØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ì¤Ë¤ÏÍ×ÁÇËè¤Ë¡¢¤½¤ì¤¬Å¬ÍѤµ¤ì¤ëÇÛÎó¤Îꤍ»ú¤ä¹½Â¤ÂΤΥե£¡¼¥ë¥É̾¤ò»ØÄꤹ¤ë¡£¤³¤Î³ÈÄ¥¤Ï¡¢GNU C++ ¤Ç¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
ÇÛÎó¤Îꤍ»ú¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢Í×ÁǤÎÃͤÎÁ°¤Ë¡¢[index] ¤«[index] = ¤È½ñ¤¯¡£Î㤨¤Ð¡¢
int a[6] = { [4] 29, [2] = 15 };
¤Ï¡¢
int a[6] = { 0, 0, 15, 0, 29, 0 };
¤ÈÅù²Á¤Ç¤¢¤ë¡£Åº¤¨»ú¤ÎÃͤϡ¢½é´ü²½¤µ¤ì¤ëÇÛÎ󤬼«Æ°ÊÑ¿ô¤Ç¤¢¤Ã¤Æ¤â¡¢Äê¿ô¼°¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¤¢¤ëÈϰϤÎÍ×ÁǤòƱ¤¸Ãͤǽé´ü²½¤¹¤ë¤Ë¤Ï¡¢[first ... last] = value ¤È½ñ¤¯¡£Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¯¡£
int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
¤³¤Î¾ì¹ç¡¢ÇÛÎó¤ÎÂ礤µ¤Ï¡¢ºÇ¤âÂ礤Êź¤¨»ú¤ÎÃÍ¤Ë 1 ¤ò²Ã¤¨¤¿¤â¤Î¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¡£
¹½Â¤Âνé´ü²½»Ò¤Ë¤ª¤¤¤Æ¤Ï¡¢Í×ÁǤÎÃͤÎÁ°¤Ë¡¢½é´ü²½¤¹¤ë¥Õ¥£¡¼¥ë¥É¤Î̾Á°¤òfieldname: ¤Ç»ØÄꤹ¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Î¹½Â¤ÂΤ¬¤¢¤ë¤È¤¹¤ë¡£
struct point { int x, y; };
°Ê²¼¤Î½é´ü²½¤Ï
struct point p = { y: yvalue, x: xvalue };
¼¡¤Î¤ÈÅù²Á¤Ç¤¢¤ë¡£
struct point p = { xvalue, yvalue };
Ʊ¤¸°ÕÌ£¤ò»ý¤ÄÊ̤νñ¤Êý¤Ï .fieldname = ¤Ç¤¢¤ë¡£°Ê²¼¤ËÎã¤ò¼¨¤¹¡£
struct point p = { .y = yvalue, .x = xvalue };
¤Þ¤¿¡¢Í×ÁÇ¥é¥Ù¥ë(¥³¥í¥ó·Á¼°¤«¥Ô¥ê¥ª¥É = ·Á¼°¤Ç)¤ò»È¤Ã¤Æ¶¦ÍÑÂΤò½é´ü²½¤·¡¢¶¦ÍÑÂΤΤɤÎÍ×ÁǤ¬»È¤ï¤ì¤ë¤Ù¤¤«¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£Î㤨¤Ð¡¢
union foo { int i; double d; };
union foo f = { d: 4 };
¤Ï¡¢4 ¤ò double ¤ËÊÑ´¹¤·¡¢ÆóÈÖÌܤÎÍ×ÁǤȤ·¤Æ¶¦ÍÑÂΤ˳ÊǼ¤¹¤ë¡£ÂоÈŪ¤Ë¡¢4 ¤ò union foo ·¿¤ËÊÑ´¹¤¹¤ë¤È¡¢À°¿ô i ¤È¤·¤Æ¶¦ÍÑÂΤ˳ÊǼ¤¹¤ë¡£²¿¸Î¤Ê¤é¡¢4 ¤¬À°¿ô¤À¤«¤é¤Ç¤¢¤ë¡£(See Cast to Union.)
¤³¤ÎÍ×ÁǤË̾Á°¤ò¤Ä¤±¤ëÊýË¡¤È¡¢Ä̾ï¤Î C ¤ÎϢ³¤¹¤ëÍ×ÁǤò½é´ü²½¤¹¤ëÊýË¡¤òÁȤ߹ç¤ï¤»¤ë¤³¤È¤¬¤Ç¤¤ë¡£½é´ü²½»Ò¤ÎÍ×ÁǤǥé¥Ù¥ë¤Î¤Ê¤¤¤â¤Î¤Ï¤½¤ì¤¾¤ì¡¢ÇÛÎ󤢤뤤¤Ï¹½Â¤ÂΤμ¡¤ÎϢ³¤¹¤ëÍ×ÁǤËŬÍѤµ¤ì¤ë¡£Î㤨¤Ð¡¢
int a[6] = { [1] = v1, v2, [4] = v4 };
¤Ï¡¢°Ê²¼¤Î¤â¤Î¤ÈÅù²Á¤Ç¤¢¤ë¡£
int a[6] = { 0, v1, v2, 0, v4, 0 };
ÇÛÎó½é´ü²½»Ò¤ÎÍ×ÁǤ˥é¥Ù¥ë¤òÉÕ¤±¤ë¤Î¤Ï¡¢Åº¤¨»ú¤¬Ê¸»ú¤À¤Ã¤¿¤ê¡¢enum ·¿¤Ë°¤¹¤ë¾ì¹ç¤ËÆÃ¤ËÊØÍø¤Ç¤¢¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¯¤³¤È¤¬¤Ç¤¤ë¡£
int whitespace[256]
= { [' '] = 1, ['\t'] = 1, ['\h'] = 1,
['\f'] = 1, ['\n'] = 1, ['\r'] = 1 };
°ì¸Ä¤Î case ¥é¥Ù¥ë¤Ë¤¢¤ëÈϰϤÎϢ³¤¹¤ëÃͤò°Ê²¼¤Î¤è¤¦¤Ë»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
case low ... high:
¤³¤ì¤Ï¡¢Å¬Àڤʿô¤Î case ¥é¥Ù¥ë¤òÍѰդ·¡¢¤½¤Î°ì¤Ä°ì¤Ä¤¬low ¤«¤é high ¤ÎÈϰϤγÆÀ°¿ôÃͤò»ý¤Ä¤è¤¦¤Ë¤¹¤ë¤Î¤ÈƱ¤¸¸ú²Ì¤¬ÆÀ¤é¤ì¤ë¡£¤³¤³¤Ç¡¢low ¤È high ¤â´Þ¤Þ¤ì¤ë¡£
¤³¤Îµ¡Ç½¤Ï¡¢ASCII ʸ»ú¥³¡¼¥É¤ÎÈϰϤ˻Ȥ¦¤È¤È¤ê¤ï¤±ÊØÍø¤Ç¤¢¤ë¡£
case 'A' ... 'Z':
Ãí°Õ¡£... ¤Îξ¦¤Ë¤Ï¶õÇò¤òÃÖ¤¯¤³¤È¡£¤½¤¦¤·¤Ê¤¤¤È¡¢¤½¤ì¤òÀ°¿ôÃͤȤ·¤Æ»È¤¦¤È¤¤Ë´Ö°ã¤Ã¤Æ²ò¼á¤µ¤ì¤ë¡£Î㤨¤Ð¡¢
case 1 ... 5:
¤È½ñ¤¯¤è¤¦¤Ë¤·¤Æ¡¢°Ê²¼¤Î¤è¤¦¤Ë¤Ï¤·¤Ê¤¤¤³¤È¡£
case 1...5:
¶¦ÍÑÂη¿¤Ø¤Î¥¥ã¥¹¥È¤Ï¡¢»ØÄꤵ¤ì¤¿·¿¤¬¶¦ÍÑÂη¿¤Ç¤¢¤ë¤³¤È¤ò½ü¤±¤Ð¾¤Î¥¥ã¥¹¥È¤ÈƱ¤¸¤Ç¤¢¤ë¡£·¿¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢union tag ¤«typedef ̾¤Ç²Äǽ¤Ç¤¢¤ë¡£¤À¤¬¡¢¶¦ÍÑÂΤؤΥ¥ã¥¹¥È¤Ï¼ÂºÝ¤Ë¤Ï¥³¥ó¥¹¥È¥é¥¯¥¿¤Ç¤¢¤ê¡¢¥¥ã¥¹¥È¤Ç¤Ï¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢Ä̾ï¤Î¥¥ã¥¹¥È¤Î¤è¤¦¤Êº¸ÊÕÃͤÏÀ¸¤¸¤Ê¤¤¡£(See Constructors.)
¶¦ÍÑÂη¿¤Ë¥¥ã¥¹¥È²Äǽ¤Ê·¿¤Ï¡¢¶¦ÍÑÂΤΥá¥ó¥Ð¤Î·¿¤Ç¤¢¤ë¡£¤¹¤Ê¤ï¤Á¡¢°Ê²¼¤Î¤è¤¦¤Ê¶¦ÍÑÂΤÈÊÑ¿ô¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤ë¤È¡¢
union foo { int i; double d; };
int x;
double y;
x ¤È y ¤Ï¤É¤Á¤é¤â union foo ·¿¤Ë¥¥ã¥¹¥È²Äǽ¤Ç¤¢¤ë¡£
¥¥ã¥¹¥È¤ò¶¦ÍÑÂη¿ÊÑ¿ô¤Ø¤ÎÂåÆþ¤Î±¦ÊդȤ·¤Æ»È¤¦¤Î¤Ï¡¢¶¦ÍÑÂΤΥá¥ó¥Ð¤Ë³ÊǼ¤¹¤ë¤Î¤ÈƱ¤¸¤³¤È¤Ç¤¢¤ë¡£
union foo u; ... u = (union foo) x == u.i = x u = (union foo) y == u.d = y
¤Þ¤¿¡¢¶¦ÍÑÂΤΥ¥ã¥¹¥È¤ò´Ø¿ô¤Î°ú¿ô¤È¤·¤Æ»È¤¦¤³¤È¤â¤Ç¤¤ë¡£
void hack (union foo); ... hack ((union foo) x);
GNU C ¤Ç¤Ï¡¢ÆÉ¼Ô¤Î¥×¥í¥°¥é¥à¤Ç¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë´Ø¿ô¤Ë¤Ä¤¤¤Æ°ìÄê¤ÎÀë¸À¤ò¹Ô¤¦¤È¡¢GNU CC ¤¬´Ø¿ô¸Æ½Ð¤·¤òºÇŬ²½¤·¤¿¤ê¡¢ÆÉ¼Ô¤Î¥³¡¼¥É¤ò¤µ¤é¤ËÃí°Õ¿¼¤¯¸¡ºº¤¹¤ë¤³¤È¤Î¼ê½õ¤±¤È¤Ê¤ë¡£
¥¡¼¥ï¡¼¥É __attribute__ ¤ò»È¤¦¤³¤È¤Ë¤è¤ê¡¢Àë¸À¤ò½ñ¤¯¤È¤¤ËÆÃÊ̤ʰÀ¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤³¤Î¥¡¼¥ï¡¼¥É¤Î¸å¤Ë¡¢Æó½Å¤Î³ç¸Ì¤Ç°Ï¤ó¤À°À¤Î»ØÄê¤òÃÖ¤¯¡£´Ø¿ô¤ËÂФ·¤Æ¤Ï¸½ºß 9 ¸Ä¤Î°À¡¢noreturn¡¢const¡¢format¡¢no_instrument_function¡¢section¡¢constructor¡¢destructor¡¢unused¡¢weak ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£section ¤ò´Þ¤à¤½¤Î¾¤Î°À¤Ï¡¢ÊÑ¿ôÀë¸À(see Variable Attributes)¤ä·¿(see Type Attributes)
¤ËÂФ·¤Æ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£
¤Þ¤¿¡¢³Æ¥¡¼¥ï¡¼¥É¤ÎÁ°¸å¤Ë __ ¤òÉÕ¤±¤¿Â°À¤ò»ØÄꤷ¤Æ¤âÎɤ¤¡£¤³¤ì¤Ë¤è¤ê¡¢Æ±¤¸Ì¾Á°¤Î¥Þ¥¯¥í¤¬¤¢¤ë²ÄǽÀ¤ò¿´ÇÛ¤¹¤ë¤³¤È¤Ê¤¯¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¤³¤ì¤é¤Î°À¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£Î㤨¤Ð¡¢noreturn ¤ÎÂå¤ï¤ê¤Ë __noreturn__ ¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
noreturn
abort ¤ä exit ¤Î¤è¤¦¤ËÌá¤ë¤³¤È¤¬ÉÔ²Äǽ¤Ê´Ø¿ô¤¬¤¢¤ë¡£GNU CC ¤Ï¤³¤Î¤³¤È¤ò´û¤ËÃΤäƤ¤¤ë¡£¥×¥í¥°¥é¥à¤ÎÃæ¤Ë¤Ï¡¢·è¤·¤ÆÌá¤é¤Ê¤¤´Ø¿ô¤ò¼«Ê¬¤ÇÄêµÁ¤¹¤ë¤³¤È¤â¤¢¤ë¤À¤í¤¦¡£ÆÉ¼Ô¤Ï¡¢¤½¤¦¤¤¤¦´Ø¿ô¤ò noreturn ¤ÈÀë¸À¤¹¤ë¤³¤È¤Ç¡¢¤½¤Î»ö¼Â¤ò GNU CC ¤ËÃΤ餻¤ë¤³¤È¤¬¤Ç¤¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¤¤¿¤È¤¹¤ë¡£
void fatal () __attribute__ ((noreturn));
void
fatal (...)
{
... /* Print error message. */ ...
exit (1);
}
¥¡¼¥ï¡¼¥É noreturn ¤òÉÕ¤±¤ë¤È¡¢GNU CC ¤Ï´Ø¿ô fatal ¤¬Ìá¤ê¤¨¤Ê¤¤¤³¤È¤òÁÛÄꤹ¤ë¡£¤½¤¦¤¹¤ë¤È¡¢fatal ¤¬Ìá¤Ã¤¿¾ì¹ç¤Ë²¿¤¬µ¯¤¤ë¤«¤ò¹Í¤¨¤ë¤³¤È¤Ê¤·¤ËºÇŬ²½¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ì¤Ë¤è¤ê¤Á¤ç¤Ã¤È¤À¤±Îɤ¤¥³¡¼¥É¤Ë¤Ê¤ë¡£¤â¤Ã¤È½ÅÍפʤΤϡ¢ÊÑ¿ô¤¬½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¤¤¤¦¸«¤»³Ý¤±¤Î·Ù¹ð¤ò²¡¤µ¤¨¤ë¤³¤È¤¬¤Ç¤¤ëÅÀ¤Ë¤¢¤ë¡£
¸Æ½Ð¤·Â¦´Ø¿ô¤Ë¤è¤ê¥»¡¼¥Ö¤µ¤ì¤ë¥ì¥¸¥¹¥¿¤¬¡¢noreturn ´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Á°¤Ë¥ê¥¹¥È¥¢¤µ¤ì¤ë¤ÈÁÛÄꤷ¤Æ¤Ï¤¤¤±¤Ê¤¤¡£
nonreturn ¤È»ØÄꤵ¤ì¤¿´Ø¿ô¤Ë void ·¿°Ê³°¤ÎÌá¤êÃÍ·¿¤ò»ý¤¿¤»¤ë¤Î¤Ï°ÕÌ£¤¬¤Ê¤¤¡£
noreturn °À¤Ï¡¢GNU C ¤Î¥Ð¡¼¥¸¥ç¥ó 2.5 °ÊÁ°¤Ç¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£Ìá¤ë¤³¤È¤Î¤Ê¤¤´Ø¿ô¤òÀë¸À¤¹¤ë¤â¤¦°ì¤Ä¤ÎÊýË¡¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ë¡£¤³¤ÎÊýË¡¤Ï¡¢¸½ºß¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤â»È¤¨¤ë¤·¡¢¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Î´ö¤Ä¤«¤Ç¤â»È¤¨¤ë¡£
typedef void voidfn (); volatile voidfn fatal;
const
const ¤òÉÕ¤±¤ÆÀë¸À¤¹¤Ù¤¤À¤í¤¦¡£Î㤨¤Ð¡¢
int square (int) __attribute__ ((const));
¤È¤¹¤ë¤È¡¢²Í¶õ¤Î´Ø¿ô square ¤Ï¡¢¥×¥í¥°¥é¥à¤¬¼¨¤¹¤è¤ê¤â¸Æ¤Ó½Ð¤¹²ó¿ô¤¬¾¯¤Ê¤¯¤Æ¤â°ÂÁ´¤Ç¤¢¤ë¤³¤È¤òɽ¤¹¡£
const °À¤Ï¡¢GNU ¤Î¥Ð¡¼¥¸¥ç¥ó 2.5 °ÊÁ°¤Ç¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£´Ø¿ô¤ËÉûºîÍѤ¬Ìµ¤¤¤³¤È¤òÀë¸À¤¹¤ëÊ̤ÎÊýË¡¤È¤·¤Æ¤Ï¡¢°Ê²¼¤ÎÊýË¡¤¬¤¢¤ë¡£¤³¤ì¤Ï¸½ºß¤Î¥Ð¡¼¥¸¥ç¥ó¤È´ö¤Ä¤«¤Î¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Çưºî¤¹¤ë¡£
typedef int intfn (); extern const intfn square;
¤³¤ÎÊýË¡¤Ï GNU C++ 2.6.0 °Ê¹ß¤Ç¤Ï»È¤¨¤Ê¤¤¡£¸À¸ì»ÅÍÍ¤Ç const ¤Ï¡¢Ìá¤êÃͤËÉÕ¤±¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
¥Ý¥¤¥ó¥¿¤Î°ú¿ô¤¬¤¢¤ê¡¢¤½¤ì¤Ë¤è¤ê»Ø¤·¼¨¤µ¤ì¤ë¥Ç¡¼¥¿¤ò»²¾È¤·¤Æ¤¤¤ë´Ø¿ô¤Ï¡¢const ¤ÈÀë¸À¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¤³¤È¤ËÃí°Õ¡£Æ±Íͤˡ¢Èó const ´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë´Ø¿ô¤ÏÉáÄÌ¤Ï const
¤Ç¤¢¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£void ·¿¤Î´Ø¿ô¤Ë const ¤òÉÕ¤±¤ë¤Î¤Ï°ÕÌ£¤¬¤Ê¤¤¡£
format (archetype, string-index, first-to-check)
format ¤Ï¡¢´Ø¿ô¤¬ printf ¤ä scanf¡¢strftime ·Á¼°¤Î°ú¿ô¤ò¼è¤ê¡¢¤½¤Î°ú¿ô¤ò¥Õ¥©¡¼¥Þ¥Ã¥È»ØÄêʸ»úÎó¤ËÂФ·¤Æ·¿¸¡ºº¤ò¹Ô¤¦¤³¤È¤ò»ØÄꤹ¤ë¡£Î㤨¤Ð¡¢
extern int
my_printf (void *my_object, const char *my_format, ...)
__attribute__ ((format (printf, 2, 3)));
¤ÈÀë¸À¤¹¤ë¤È¡¢GNU CC ¤Ï¡¢my_printf ¤Ø¤Î¸Æ½Ð¤·¤Î°ú¿ô¤ò¡¢ printf ·Á¼°¤Î¥Õ¥©¡¼¥Þ¥Ã¥È»ØÄêʸ»úÎó¤Ç¤¢¤ë°ú¿ô my_format
¤È¤Î°ì´ÓÀ¤Ë¤Ä¤¤¤Æ¸¡ºº¤ò¹Ô¤ï¤»¤ë¡£
¥Ñ¥é¥á¡¼¥¿ archetype ¤Ï¡¢¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎ󤬤ɤΤ褦¤Ë²ò¼á¤µ¤ì¤ë¤«¤ò·è¤á¡¢printf¡¢scanf¡¢strftime ¤Î¤É¤ì¤«¤Ë¤·¤Ê¤¤¤È¤¤¤±¤Ê¤¤¡£¥Ñ¥é¥á¡¼¥¿ string-index ¤Ï¤É¤Î°ú¿ô¤¬¥Õ¥©¡¼¥Þ¥Ã¥È»ØÄêʸ»úÎó¤Î°ú¿ô¤«¤ò»ØÄꤹ¤ë(1 ¤«¤é»Ï¤á¤ë)¡£°ìÊý¡¢first-to-check ¤Ï¥Õ¥©¡¼¥Þ¥Ã¥È»ØÄêʸ»úÎó¤ËÂФ·¤Æ¸¡ºº¤ò¹Ô¤¦¤Ù¤ºÇ½é¤Î°ú¿ô¤ÎÈÖ¹æ¤Ç¤¢¤ë¡£¸¡ºº¤Ë»È¤¨¤ë°ú¿ô¤¬¤Ê¤¤´Ø¿ô(Î㤨¤Ð vprintf)¤ËÂФ·¤Æ¤Ï¡¢3ÈÖÌܤΥѥé¥á¡¼¥¿¤ò¥¼¥í¤È»ØÄꤹ¤ë¤³¤È¡£¤³¤Î¾ì¹ç¡¢¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤Ë¤Ä¤¤¤Æ¤À¤±°ì´ÓÀ¤¬¤¢¤ë¤«¤É¤¦¤«¤Î¸¡ºº¤¬¹Ô¤ï¤ì¤ë¡£
¾å¤ÎÎã¤Ç¸À¤¦¤È¡¢¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó (my_format) ¤Ï´Ø¿ô my_print ¤ÎÆóÈÖÌܤΰú¿ô¤Ç¤¢¤ê¡¢¸¡ºº¤¹¤Ù¤°ú¿ô¤Ï3ÈÖÌܤΰú¿ô¤«¤é»Ï¤Þ¤ë¤Î¤Ç¡¢format °À¤ÎÀµ¤·¤¤¥Ñ¥é¥á¡¼¥¿¤Ï2 ¤È 3 ¤Ë¤Ê¤ë¡£
format °À¤ò»È¤¦¤È¡¢¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤ò°ú¿ô¤È¤·¤Æ¼è¤ëÆÉ¼Ô¼«¿È¤Î´Ø¿ô¤òǧ¼±¤·¤Æ¡¢GNU CC ¤¬¤³¤ì¤é¤Î´Ø¿ô¤Ø¤Î¸Æ½Ð¤·¤Ë¸í¤ê¤¬¤Ê¤¤¤«¤É¤¦¤«¸¡ºº¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤ë¡£GCC ¤Ï ANSI ¥é¥¤¥Ö¥é¥ê´Ø¿ô printf¡¢fprintf¡¢sprintf¡¢scanf¡¢fscanf¡¢sscanf¡¢strftime¡¢vprintf¡¢vfprintf¡¢vsprintf ¤Ë¤Ä¤¤¤Æ¤Ï¡¢·Ù¹ð¤òÍ׵ᤷ¤¿¤È¤(-Wformat ¤ò»ØÄꤷ¤¿¤È¤)¤Ï¡¢¾ï¤Ë¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¸¡ºº¤¹¤ë¤Î¤Ç¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë stdio.h ¤ò½¤Àµ¤¹¤ëɬÍפϤʤ¤¡£
format_arg (string-index)
format_arg °À¤Ï¡¢´Ø¿ô¤¬¡¢ printf ¤¢¤ë¤¤¤Ï scanf
·Á¼°¤Î°ú¿ô¤ò¼è¤ê¡¢¤½¤ì¤òÊѹ¹¤·(Î㤨¤ÐÊ̤θÀ¸ì¤ØËÝÌõ¤¹¤ë)¡¢¤µ¤é¤Ëprintf ¤¢¤ë¤¤¤Ï scanf ·Á¼°¤Î´Ø¿ô¤ËÅϤ¹¤È¤¤¤¦¤³¤È¤ò»ØÄꤹ¤ë¡£Î㤨¤Ð¡¢
extern char *
my_dgettext (char *my_domain, const char *my_format)
__attribute__ ((format_arg (2)));
¤ÈÀë¸À¤¹¤ë¤È¡¢GCC ¤Ï¡¢·ë²Ì¤¬ printf¡¢scanf¡¢strftime ·Á¼°¤Î´Ø¿ô¤ËÅϤµ¤ì¤ë my_dgettext ¤Ø¤Î¸Æ½Ð¤·¤Ë¸½¤ì¤ë°ú¿ô¤ò¡¢printf ·Á¼°¤Î¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó°ú¿ô my_format
¤ÈÈæ¤Ù¤Æ¡¢°ì´ÓÀ¤¬¤¢¤ë¤«¤É¤¦¤«¤ò¸¡ºº¤¹¤ë¡£
¥Ñ¥é¥á¡¼¥¿ string-index ¤Ï¡¢¤É¤Î°ú¿ô¤¬¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó°ú¿ô¤Ç¤¢¤ë¤«¤ò»ØÄꤹ¤ë(1¤«¤é»Ï¤Þ¤ë)¡£
format-arg °À¤ò»È¤¦¤È¡¢¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤ò½¤Àµ¤¹¤ë¤è¤¦¤ÊÆÉ¼Ô¼«¿È¤Î´Ø¿ô¤òǧ¼±¤·¤Æ¡¢°ú¿ô¤¬¡¢ÆÉ¼Ô¼«¿È¤Î´Ø¿ô¤Î°ì¤Ä¤Ø¤Î¸Æ½Ð¤·¤Ç¤¢¤ë¤è¤¦¤Ê printf¡¢scanf¡¢strftime´Ø¿ô¤Î¸Æ½Ð¤·¤ò¸¡ºº¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¡£GCC ¤Ï¡¢gettext¡¢dgettext¡¢dcgettext ¤ò¾ï¤Ë¤³¤Î¤è¤¦¤Ë¼è¤ê°·¤¦¡£
no_instrument_function
-finstrument-functions ¤ò»ØÄꤹ¤ë¤È¡¢¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¤ò¹Ô¤¦´Ø¿ô¤Ø¤Î¸Æ½Ð¤·¤¬¡¢¤Û¤È¤ó¤É¤Î¥æ¡¼¥¶¤¬¥³¥ó¥Ñ¥¤¥ë¤·¤¿´Ø¿ô¤ÎÆþ¤ê¸ý¤È½Ð¸ý¤ËÀ¸À®¤µ¤ì¤ë¡£¤³¤Î°À¤ò»ØÄꤷ¤¿´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤½¤ì¤¬¹Ô¤ï¤ì¤Ê¤¤¡£
section ("section-name")
text ¥»¥¯¥·¥ç¥ó¤ËÃÖ¤¯¡£¤À¤¬¡¢»þ¤Ë¤è¤Ã¤Æ¤Ï¡¢ÄɲäΥ»¥¯¥·¥ç¥ó¤¬É¬Íפˤʤ俤ꡢ¤¢¤ëÆÃÄê¤Î´Ø¿ô¤òÆÃÊ̤ʥ»¥¯¥·¥ç¥ó¤ËÃÖ¤¯É¬Íפ¬½Ð¤Æ¤¯¤ë¡£section °À¤Ï¡¢´Ø¿ô¤òÆÃÄê¤Î¥»¥¯¥·¥ç¥ó¤ËÃÖ¤¯¤³¤È¤ò»ØÄꤹ¤ë¡£Î㤨¤Ð¡¢
extern void foobar (void) __attribute__ ((section ("bar")));
¤ÈÀë¸À¤¹¤ë¤È¡¢´Ø¿ô foobar ¤Ï bar ¥»¥¯¥·¥ç¥ó¤ËÃÖ¤«¤ì¤ë¡£
¥Õ¥¡¥¤¥ë·Á¼°¤Ë¤è¤Ã¤Æ¤Ï¡¢¾¡¼ê¤Ë¥»¥¯¥·¥ç¥ó¤òºî¤ë¤³¤È¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢section °À¤ÏÁ´¤Æ¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç»È¤¨¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£¤¢¤ë¥â¥¸¥å¡¼¥ë¤ÎÆâÍÆÁ´Éô¤ò¤¢¤ëÆÃÄê¤Î¥»¥¯¥·¥ç¥ó¤Ë°Ü¤·¤¿¤¤¾ì¹ç¤Ï¡¢¥ê¥ó¥«¤Îµ¡Ç½¤ò»È¤¦¤³¤È¤ò¹Í¤¨¤Æ¤ß¤ÆÍߤ·¤¤¡£
constructor
destructor
constructor °À¤Ï¡¢»ØÄꤷ¤¿´Ø¿ô¤¬¡¢¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤¬main () ¤ËÆþ¤ëÁ°¤Ë¼«Æ°Åª¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¡£Æ±¤¸¤è¤¦¤Ë¡¢destructor °À¤ò»ØÄꤹ¤ë¤È¡¢¤½¤Î´Ø¿ô¤¬¡¢main () ¤¬½ªÎ»¤·¤¿¸å¤« exit () ¤¬¸Æ¤Ð¤ì¤¿¸å¤Ë¡¢¼«Æ°Åª¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¡£¤³¤ì¤é¤Î°À¤ò»ØÄꤷ¤¿´Ø¿ô¤Ï¡¢¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤Î´Ö¤Ë°ÅÌۤ˻Ȥï¤ì¤ë¥Ç¡¼¥¿¤ò½é´ü²½¤¹¤ë¤Î¤Ë»È¤¨¤ë¡£
¤³¤ì¤é¤Î°À¤Ï Objective C ¤Ë¤Ä¤¤¤Æ¤Ï¸½ºß¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
unused
weak
weak °À¤ò»È¤¦¤È¡¢¤½¤ì¤ò»ØÄꤷ¤¿Àë¸À¤Ï¡¢¥°¥í¡¼¥Ð¥ë¥·¥ó¥Ü¥ë¤Ç¤Ï¤Ê¤¯¥¦¥£¡¼¥¯¥·¥ó¥Ü¥ë¤È¤·¤ÆÀ¸À®¤µ¤ì¤ë¡£¤³¤ì¤Ï¼ç¤Ë¥æ¡¼¥¶¥³¡¼¥É¤Ç¾å½ñ¤²Äǽ¤Ê¥é¥¤¥Ö¥é¥ê´Ø¿ô¤òÄêµÁ¤¹¤ë¤Î¤Ë»È¤ï¤ì¤ë¤¬¡¢´Ø¿ô¤Ç¤Ê¤¤Àë¸À¤Ç¤â»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£¥¦¥£¡¼¥¯¥·¥ó¥Ü¥ë¤Ï ELF ¥¿¡¼¥²¥Ã¥È¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£GNU ¥¢¥»¥ó¥Ö¥é¤È¥ê¥ó¥«¤ò»È¤¦¾ì¹ç¤Ï a.out ¥¿¡¼¥²¥Ã¥È¤Ç¤â¥µ¥Ý¡¼¥È¤µ¤ì¤ë¡£
alias ("target")
alias °À¤ò»ØÄꤹ¤ë¤È¡¢¤½¤ÎÀë¸À¤Ï²¿¤«Ê̤Υ·¥ó¥Ü¥ë¤ÎÊÌ̾¤È¤·¤ÆÀ¸À®¤µ¤ì¤ë¡£Ê̤Υ·¥ó¥Ü¥ë¤Ï¤«¤Ê¤é¤º»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£Î㤨¤Ð¡¢
void __f () { /* do something */; }
void f () __attribute__ ((weak, alias ("__f")));
¤È¤¹¤ë¤È¡¢f ¤ò __f ¤Î¥¦¥£¡¼¥¯¤ÊÊÌ̾¤È¤·¤ÆÀë¸À¤¹¤ë¡£C++ ¤Ç¤Ï¡¢¸µ¤Î̾Á°¤Ë¤Ï¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿Ì¾Á°¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
Á´¤Æ¤Î¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Ç¤³¤Î°À¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£
no_check_memory_usage
-fcheck-memory-usage ¤ò»ØÄꤹ¤ë¤È¡¢¥µ¥Ý¡¼¥È¡¦¥ë¡¼¥Á¥ó¤Î¸Æ½Ð¤·¤¬¤Û¤È¤ó¤É¤Î¥á¥â¥ê¥¢¥¯¥»¥¹¤ÎÁ°¤ËÀ¸À®¤µ¤ì¡¢¥µ¥Ý¡¼¥È¥³¡¼¥É¤¬»ÈÍѾõ¶·¤òµÏ¿¤Ç¤¤ë¤è¤¦¤Ë¤·¡¢¤«¤ÄÈó½é´ü²½¤Þ¤¿Ì¤³äÅö¤Î¥á¥â¥êÎΰè¤ò»È¤Ã¤¿¤Î¤ò¸¡ÃΤǤ¤ë¤è¤¦¤Ë¤¹¤ë¡£GCC ¤¬Àµ¤·¤¯°·¤¨¤Ê¤¤¤Î¤Ç¡¢asm ʸ¤Ïµö¤µ¤ì¤Ê¤¤¡£´Ø¿ô¤Ë¤³¤Î°À¤òÉÕ¤±¤ÆÀë¸À¤¹¤ë¤È¡¢¤½¤Î´Ø¿ô¤ËÂФ¹¤ë¥á¥â¥ê¸¡ºº¥³¡¼¥É¤ò½Ð¤µ¤Ê¤¤¤è¤¦¤Ë¤·¡¢°Û¤Ê¤ë¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤ÆÊ̸Ĥ˥³¥ó¥Ñ¥¤¥ë¤»¤º¤È¤âasm ʸ¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¡¢¤µ¤é¤Ë¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤â̵¸ÂºÆµ¢¤Ë¤Ê¤ë¤³¤È¤Ê¤¯¡¢Ë¾¤à¤Ê¤éÆÉ¼Ô¼«¿È¤Î¥µ¥Ý¡¼¥È¥ë¡¼¥Á¥ó¤ò½ñ¤±¤ë¤è¤¦¤Ë¤Ê¤ë¡£
regparm (number)
regparm °À¤ò»ØÄꤹ¤ë¤È¡¢number ¸Ä¤ÎÀ°¿ô°ú¿ô¤ò¡¢¥¹¥¿¥Ã¥¯¤ÎÂå¤ï¤ê¤Ë¥ì¥¸¥¹¥¿ EAX¡¢EDX¡¢ECX
¤ÇÅϤ¹¤è¤¦¤Ë¤Ê¤ë¡£²ÄÊÑ¿ô°ú¿ô¤ò¼è¤ë´Ø¿ô¤Ï¡¢°ÍÁ³¤È¤·¤ÆÁ´Éô¤Î°ú¿ô¤¬¥¹¥¿¥Ã¥¯¤ÇÅϤµ¤ì¤ë¡£
stdcall
stdcall °À¤ò»ØÄꤹ¤ë¤È¡¢²ÄÊÑ¿ô°ú¿ô¤ò¼è¤ë¤Î¤Ç¤Ê¤¤¸Â¤ê¡¢¸Æ¤Ð¤ì¤¿´Ø¿ô¤¬¡¢°ú¿ô¤òÅϤ¹¤Î¤Ë»È¤ï¤ì¤¿¥¹¥¿¥Ã¥¯¤ò¥Ý¥Ã¥×¤¹¤ë¤ÈÁÛÄꤹ¤ë¡£
Windows NT ¸þ¤± PowerPC ¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¸½ºß¡¢stdcall °À¤ò̵»ë¤¹¤ë¡£
cdecl
cdecl °À¤ò»ØÄꤹ¤ë¤È¡¢²ÄÊÑ¿ô°ú¿ô¤ò¼è¤ë¤Î¤Ç¤Ê¤¤¸Â¤ê¡¢¸Æ¤Ó¤À¤·Â¦´Ø¿ô¤¬¡¢°ú¿ô¤òÅϤ¹¤Î¤Ë»È¤ï¤ì¤¿¥¹¥¿¥Ã¥¯¤ò¥Ý¥Ã¥×¤¹¤ë¤ÈÁÛÄꤹ¤ë¡£¤³¤ì¤Ï¡¢-mrtd ¥ª¥×¥·¥ç¥ó¤Î¸ú²Ì¤òÂǤÁ¾Ã¤¹¤Î¤Ë»È¤¨¤ë¡£
Windows NT ¸þ¤± PowerPC ¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¸½ºß¡¢cdecl °À¤ò̵»ë¤¹¤ë¡£
longcall
longcall °À¤ò»ØÄꤹ¤ë¤ÈGCC ¤Ï¤½¤Î´Ø¿ô¤ò¾ï¤Ë¥Ý¥¤¥ó¥¿·Ðͳ¤Ç¸Æ¤Ó½Ð¤¹¤è¤¦¤Ë¤¹¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢¸½ºß°ÌÃÖ¤«¤é 64 ¥á¥¬¥Ð¥¤¥È(67,108,864¥Ð¥¤¥È)°Ê¾åÎ¥¤ì¤¿°ÌÃ֤ˤ¢¤ë´Ø¿ô¤â¸Æ¤Ó½Ð¤»¤ë¤è¤¦¤Ë¤Ê¤ë¡£
dllimport
dllimport °À¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤Ï¡¢¤½¤Î´Ø¿ô¤ò¡¢Windows NT dll ¥é¥¤¥Ö¥é¥ê¤Ë¤è¤êÀßÄꤵ¤ì¤ë´Ø¿ô¥Ý¥¤¥ó¥¿¤Ø¤Î¥°¥í¡¼¥Ð¥ë¥Ý¥¤¥ó¥¿·Ðͳ¤Ç¸Æ¤Ó½Ð¤¹¡£¤³¤Î¥Ý¥¤¥ó¥¿Ì¾¤Ï¡¢__imp_ ¤È¤½¤Î´Ø¿ô̾¤òÁȤ߹ç¤ï¤»¤Æºî¤é¤ì¤ë¡£
dllexport
dllexport °À¤ò»ØÄꤹ¤ë¤È¡¢GCC ¤Ï¡¢´Ø¿ô¥Ý¥¤¥ó¥¿¤Ø¤Î¥°¥í¡¼¥Ð¥ë¥Ý¥¤¥ó¥¿¤òÄ󶡤¹¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢¤½¤Î´Ø¿ô¤Ï dllimport °À¤ò»ØÄꤹ¤ë¤³¤È¤Ç¸Æ¤Ó½Ð¤»¤ë¤è¤¦¤Ë¤Ê¤ë¡£¤³¤Î¥Ý¥¤¥ó¥¿Ì¾¤Ï¡¢__imp_ ¤È¤½¤Î´Ø¿ô̾¤òÁȤ߹ç¤ï¤»¤Æºî¤é¤ì¤ë¡£
exception (except-func [, except-arg])
exception °À¤ò»ØÄꤹ¤ë¤È GCC ¤Ï¡¢Àë¸À¤µ¤ì¤¿´Ø¿ô¤ËÂФ·À¸À®¤µ¤ì¤ë¹½Â¤²½Îã³°¥Æ¡¼¥Ö¥ë¤Î¥¨¥ó¥È¥ê¤ò½¤Àµ¤¹¤ë¡£Ê¸»úÎó¤Þ¤¿¤Ï¼±ÊÌ»Ò except-func ¤¬¡¢¹½Â¤²½Îã³°¥Æ¡¼¥Ö¥ë¤Î 3ÈÖÌܤΥ¨¥ó¥È¥ê¤ËÃÖ¤«¤ì¤ë¡£¤³¤ì¤Ï¡¢¤¢¤ë´Ø¿ô¤òɽ¤¹¡£¤³¤Î´Ø¿ô¤Ï¡¢Îã³°¤¬È¯À¸¤·¤¿¤È¤¤ËÎã³°½èÍýµ¡¹½¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤ë¡£»ØÄꤵ¤ì¤Æ¤¤¤ì¤Ð¡¢Ê¸»úÎ󤢤뤤¤Ï¼±ÊÌ»Ò except-arg ¤¬¡¢¹½Â¤²½Îã³°¥Æ¡¼¥Ö¥ë¤Î4ÈÖÌܤΥ¨¥ó¥È¥ê¤ËÃÖ¤«¤ì¤ë¡£
function_vector
¤³¤Î¥ª¥×¥·¥ç¥ó¤òÀµ¤·¤¯Æ°ºî¤µ¤»¤ë¤Ë¤Ï¡¢GNU binutils ¥Ð¡¼¥¸¥ç¥ó 2.7
°Ê¹ß¤Î GAS ¤È GLD ¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
interrupt_handler
eightbit_data
¤³¤Î¥ª¥×¥·¥ç¥ó¤òÀµ¤·¤¯Æ°ºî¤µ¤»¤ë¤Ë¤Ï¡¢GNU binutils ¥Ð¡¼¥¸¥ç¥ó 2.7
°Ê¹ß¤Î GAS ¤È GLD ¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
tiny_data
interrupt
model (model-name)
small¡¢medium¡¢large
¤Î¤¦¤Á¤Î¤É¤ì¤«°ì¤Ä¤Ç¤¢¤ë¡£¤³¤ì¤é¤Ï¤½¤ì¤¾¤ì¥³¡¼¥É¡¦¥â¥Ç¥ë¤òɽ¤¹¡£
small ¥â¥Ç¥ë¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¥á¥â¥ê¤Î²¼°Ì 16MB ¤ËÃÖ¤«¤ì(¤³¤ì¤Ë¤è¤ê¡¢¤½¤ì¤é¤Î¥¢¥É¥ì¥¹¤Ï ld24 Ì¿Îá¤Ë¤è¤ê¥í¡¼¥É²Äǽ¤Ë¤Ê¤ë)¡¢bl Ì¿Îá¤Ç¸Æ¤Ó¤À¤·²Äǽ¤Ç¤¢¤ë¡£
medium ¥â¥Ç¥ë¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢32¥Ó¥Ã¥È¥¢¥É¥ì¥¹¶õ´Ö¤Î¤É¤³¤ËÃÖ¤¤¤Æ¤âÎɤ¯(GCC ¤Ï¡¢¤³¤ì¤é¤Î¥¢¥É¥ì¥¹¤ò¥í¡¼¥É¤¹¤ë¤Î¤Ë seth/add3 Ì¿ÎáÎó¤òÀ¸À®¤¹¤ë)¡¢bl Ì¿Îá¤Ç¸Æ¤Ó¤À¤·²Äǽ¤Ç¤¢¤ë¡£
large ¥â¥Ç¥ë¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢32¥Ó¥Ã¥È¥¢¥É¥ì¥¹¶õ´Ö¤Î¤É¤³¤ËÃÖ¤¤¤Æ¤âÎɤ¯(GCC ¤Ï¡¢¤³¤ì¤é¤Î¥¢¥É¥ì¥¹¤ò¥í¡¼¥É¤¹¤ë¤Î¤Ë seth/add3 Ì¿ÎáÎó¤òÀ¸À®¤¹¤ë)¡¢bl Ì¿Îá¤Ç¤ÏÅþã²Äǽ¤Ç¤Ê¤¤²ÄǽÀ¤¬¤¢¤ë(GCC ¤Ï¡¢¤µ¤é¤ËÃÙ¤¤ seth/add3/jl Ì¿ÎáÎó¤òÀ¸À®¤¹¤ë)¡£
Ê£¿ô¤Î°À¤ò°ì¸Ä¤ÎÀë¸À¤ÎÃæ¤Ç»ØÄꤹ¤ë¤Ë¤Ï¡¢Æó½Å³ç¸Ì¤ÎÃæ¤Ë¥«¥ó¥Þ¤Ç¶èÀڤäÆÊ¤٤뤫¡¢°ì¤Ä¤Î°ÀÀë¸À¤Îľ¸å¤Ë°ÀÀë¸À¤ò³¤±¤Æ½ñ¤±¤ÐÎɤ¤¡£
__attribute__ µ¡Ç½¤ËÈ¿ÂФ¹¤ë¿Íã¤â¤¤¤Æ¡¢Âå¤ï¤ê¤ËANSI C ¤Î #pragma ¤ò»È¤¦¤Ù¤¤À¤È¼çÄ¥¤·¤Æ¤¤¤ë¡£#pragma ¤ò»È¤ï¤Ê¤¤¤Î¤Ë¤ÏÍýͳ¤¬Æó¤Ä¤¢¤ë¡£
#pragma ¥³¥Þ¥ó¥É¤ò¥Þ¥¯¥í¤«¤éÀ¸À®¤¹¤ë¤Î¤ÏÉÔ²Äǽ¤Ç¤¢¤ë¡£
#pragma ¤¬¤É¤ó¤Ê°ÕÌ£¤ò»ý¤Ä¤«¤ï¤«¤é¤Ê¤¤¡£
¤³¤ÎÆó¤Ä¤ÎÍýͳ¤Ï¡¢#pragma ¤ò»È¤¨¤ÐÎɤ¤¤Î¤Ç¤Ï¤Ê¤¤¤«¤ÈÄ󰯤µ¤ì¤Æ¤¤¤ë¤Û¤È¤ó¤ÉÁ´¤Æ¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËÂФ·¤ÆÅ¬ÍѤµ¤ì¤ë¡£#pragma ¤Ï²¿¤ËÂФ·¤Æ»È¤Ã¤Æ¤â´ðËÜŪ¤Ë¸í¤ê¤Ê¤Î¤Ç¤¢¤ë¡£
GNU C ¤Ï ANSI C ¤ò³ÈÄ¥¤·¤Æ¡¢´Ø¿ô¤Î¥×¥í¥È¥¿¥¤¥×¤¬¤½¤Î¸å¤Ë¸½¤ì¤ë¸Å¤¤·Á¼°¤Î¡¢Èó¥×¥í¥È¥¿¥¤¥×ŪÄêµÁ¤ò¾å½ñ¤¤¹¤ë¤³¤È¤òµö¤·¤Æ¤¤¤ë¡£°Ê²¼¤ÎÎã¤ò¹Í¤¨¤Æ¤ß¤è¤¦¡£
/* Use prototypes unless the compiler is old-fashioned. */
#ifdef __STDC__
#define P(x) x
#else
#define P(x) ()
#endif
/* Prototype function declaration. */
int isroot P((uid_t));
/* Old-style function definition. */
int
isroot (x) /* ??? lossage here ??? */
uid_t x;
{
return x == 0;
}
uid_t ·¿¤¬¤¿¤Þ¤¿¤Þ short ¤Ë¤Ê¤ë¾ì¹ç¤ò¹Í¤¨¤Æ¤ß¤è¤¦¡£ANSI C ¤Ç¤Ï¤³¤ÎÎã¤Ïµö¤µ¤ì¤Ê¤¤¡£¤Ê¤¼¤Ê¤é¡¢¸Å¤¤·Á¼°¤ÎÈó¥×¥í¥È¥¿¥¤¥×Ū¤ÊÄêµÁ¤Ë¤ª¤¤¤Æ¤Ï¡¢¥ï¡¼¥É¤è¤ê¾®¤µ¤¤¥µ¥¤¥º¤Î°ú¿ô¤Ï³Ê¾å¤²¤µ¤ì¤ë¤«¤é¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¡¢¤³¤ÎÎã¤Ç¤Ï¡¢´Ø¿ô¤ÎÄêµÁ¤Ç¤Î°ú¿ô¤Ï¼ÂºÝ¤Ë¤Ï int ¤Ë¤Ê¤ë¤Î¤Ç¡¢°ú¿ô¤Î·¿¤¬ short ¤Ç¤¢¤ë¥×¥í¥È¥¿¥¤¥×¤È°ìÃפ·¤Ê¤¤¤Î¤Ç¤¢¤ë¡£
ANSI C ¤Î¤³¤ÎÀ©¸Â¤Ë¤è¤ê¡¢µìÍè¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ç¤âưºî¤¹¤ë¥³¡¼¥É¤ò½ñ¤¯¤Î¤¬Æñ¤·¤¯¤Ê¤Ã¤Æ¤¤¤ë¡£¥×¥í¥°¥é¥Þ¤Ï¡¢uid_t ·¿¤¬¡¢short ¤Ê¤Î¤«¡¢int ¤Ê¤Î¤«¡¢¤¢¤ë¤¤¤Ï long ¤Ê¤Î¤«ÃΤé¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¡¢GNU C ¤Ç¤Ï¤³¤¦¤¤¤¦¾ì¹ç¡¢¥×¥í¥È¥¿¥¤¥×¤Ç¸å³¤Î¸Å¤¤·Á¼°¤ÎÄêµÁ¤ò¾å½ñ¤¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¤â¤Ã¤ÈÀµ³Î¤Ë¸À¤¦¤È¡¢GNU C ¤Ç¤Ï¡¢´Ø¿ô¤Î¥×¥í¥È¥¿¥¤¥×¤Î°ú¿ô·¿¤¬¡¢¸å¤Ë¸½¤ì¤ë¸Å¤¤·Á¼°¤ÎÄêµÁ¤Ç»ØÄꤵ¤ì¤ë·¿¤ò¡¢Á°¼Ô¤Î·¿¤¬³Ê¾å¤²Á°¤Î¸å¼Ô¤Î·¿¤ÈƱ¤¸¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¾å½ñ¤¤¹¤ë¤Î¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¡¢GNU C ¤Ç¤Ï¾å¤ÎÎã¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¤¤¿¤Î¤ÈƱ¤¸¤Ç¤¢¤ë¡£
int isroot (uid_t);
int
isroot (uid_t x)
{
return x == 0;
}
GNU C++ ¤Ç¤Ï¸Å¤¤·Á¼°¤Î´Ø¿ôÄêµÁ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢¤³¤Î³ÈÄ¥¤Ï´Ø·¸¤Ê¤¤¡£
GNU C ¤Ç¤Ï¡¢C++ ·Á¼°¤Î¥³¥á¥ó¥È¡¢¤¹¤Ê¤ï¤Á¡¢// ¤Ç»Ï¤Þ¤ê¡¢¹ÔËö¤Þ¤Ç¤È¤Ê¤ë¥³¥á¥ó¥È¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£Â¾¤Î¿¤¯¤Î C ¤Î¼ÂÁõ¤Ç¤â¤³¤Î¥³¥á¥ó¥È·Á¼°¤òµö¤·¤Æ¤ª¤ê¡¢¾Íè C ¤Îµ¬³Ê¤Ë¼è¤êÆþ¤ì¤é¤ì¤½¤¦¤Ç¤¢¤ë¡£¤·¤«¤·¡¢-ansi ¤« -traditional ¤ò»ØÄꤷ¤¿¾ì¹ç¤ÏC++ ·Á¼°¤Î¥³¥á¥ó¥È¤òǧ¼±¤·¤Ê¤¤¡£¤½¤ì¤é¤Ï¡¢dividend//*comment*/divisor
¤Î¤è¤¦¤Ê¸Å¤¤·Á¤Î¹½Ê¸¤È¸ß´¹¤Ç¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
GNU C ¤Ç¤Ï¡¢ÉáÄÌ¡¢¥É¥ëµ¹æ¤ò¼±ÊÌ»Ò̾¤ÎÃæ¤Ç»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ì¤Ï¡¢Â¿¤¯¤Î¸Å¤¤ C ¤Î¼ÂÁõ¤Ç¤½¤¦¤¤¤¦¼±Ê̻Ҥòµö¤·¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë¡£¤·¤«¤·¡¢2,3¤Î¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Ç¤Ï¼±ÊÌ»Ò̾¤ÎÃæ¤Ë¥É¥ëµ¹æ¤¬»È¤¨¤Ê¤¤¡£¤³¤ì¤Ï¡¢¤½¤Î¥¿¡¼¥²¥Ã¥È¤Î¥¢¥»¥ó¥Ö¥é¤¬¼±ÊÌ»ÒÌ¾Ãæ¤Î¥É¥ëµ¹æ¤òµö¤·¤Æ¤¤¤Ê¤¤¤¿¤á¤Ç¤¢¤ë¤³¤È¤¬Â¿¤¤¡£
ʸ»úÎó¤äʸ»úÄê¿ôÃæ¤Ç¡¢Ê¸»ú¥·¡¼¥±¥ó¥¹ \e ¤ò»È¤Ã¤Æ ASCII ʸ»ú<ESC> ¤òɽ¤¹¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£
¥¡¼¥ï¡¼¥É __alignof__ ¤ò¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ»È¤¦¤È¡¢¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤òÊÖ¤·¡¢·¿¤ËÂФ·¤Æ»È¤¦¤È¤½¤Î·¿¤ÇÄ̾ïɬÍפȤµ¤ì¤ëºÇ¾®¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤òÊÖ¤¹¡£¹½Ê¸¤Ï sizeof ¤ÈƱ¤¸¤Ç¤¢¤ë¡£
Î㤨¤Ð¡¢¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤¬ double ¤ÎÃͤ¬ 8 ¥Ð¥¤¥È¶³¦¤Ë·¤¦¤³¤È¤òÍ׵ᤷ¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢__alignof__ (double) ¤Ï 8 ¤Ë¤Ê¤ë¡£¤³¤ì¤Ï¡¢Â¿¤¯¤Î RISC µ¡¼ï¤Ç¼ÂºÝ¤ËÀµ¤·¤¤¡£¤½¤ì¤è¤ê¤Ï¸ÅÌܤÎÀ߷פε¡¼ï¤Ç¤Ï¡¢__alignof__ (double) ¤Ï 4 ¤À¤Ã¤¿¤ê¡¢2 ¤È¤¤¤¦¤³¤È¤µ¤¨¤¢¤ë¡£
µ¡¼ï¤Ë¤è¤Ã¤Æ¤Ï¥¢¥é¥¤¥ó¥á¥ó¥È¤òÁ´¤¯É¬ÍפȤ·¤Ê¤¤¤â¤Î¤â¤¢¤ë¡£¤½¤¦¤¤¤¦µ¡¼ï¤Ç¤Ï¡¢¤É¤ó¤Ê·¿¤ËÂФ¹¤ë»²¾È¤â¡¢¤¿¤È¤¨´ñ¿ô¥¢¥É¥ì¥¹¤Ë¤¢¤Ã¤Æ¤âµö¤µ¤ì¤ë¡£¤³¤¦¤¤¤¦µ¡¼ï¤ËÂФ·¤Æ¤Ï¡¢__alignof__ ¤Ï¡¢·¿¤Î ¿ä¾© ¥¢¥é¥¤¥á¥ó¥È¤òÊó¹ð¤¹¤ë¡£
__alignof__ ¤Î¥ª¥Ú¥é¥ó¥É¤¬·¿¤Ç¤Ï¤Ê¤¯¤Æº¸ÊÕÃͤλþ¤Ï¡¢¤½¤Îº¸ÊÕÃͤ¬¼è¤ë¤³¤È¤¬ÃΤé¤ì¤Æ¤¤¤ë¤¦¤Á¤ÎºÇÂç¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤¬¡¢__alignof__ ¤ÎÃͤȤʤ롣¤³¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤Ï¤½¤Î¥Ç¡¼¥¿·¿¼«ÂΤˤè¤ë¾ì¹ç¤â¤¢¤ë¤·¡¢¤½¤ì¤¬¹½Â¤ÂΤΰìÉô¤Ç¤¢¤ê¡¢¤½¤Î¹½Â¤ÂΤΥ¢¥é¥¤¥ó¥á¥ó¥È¤ò·Ñ¾µ¤·¤Æ¤¤¤ë¤³¤È¤Ë¤è¤ë¾ì¹ç¤â¤¢¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤ËÀë¸À¤·¤¿¤È¤¹¤ë¡£
struct foo { int x; char y; } foo1;
__alignof__ (foo1.y) ¤ÎÃͤϤª¤½¤é¤¯ 2 ¤« 4 ¤Ë¤Ê¤ê¡¢¤½¤ì¤Ï__alignof__ (int) ¤ÈƱ¤¸¤Ë¤Ê¤ë¡£¤³¤ì¤Ï¡¢foo1.y ¤Î¥Ç¡¼¥¿·¿¤Ï¤½¤ì¼«ÂΤϤʤó¤é¥¢¥é¥¤¥ó¥á¥ó¥È¤òÍ׵ᤷ¤Ê¤¤¤È¤·¤Æ¤â¤Ç¤¢¤ë¡£
¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤ò»ØÄꤹ¤ë´ØÏ¢¤¹¤ëµ¡Ç½¤È¤·¤Æ¤Ï¡¢__attribute__ ((aligned (alignment))) ¤¬¤¢¤ë¡£¼¡¤Î¥»¥¯¥·¥ç¥ó¤ò»²¾È¤Î¤³¤È¡£
¥¡¼¥ï¡¼¥É __attribute__ ¤ò»È¤¦¤È¡¢ÊÑ¿ô¤ä¹½Â¤ÂΤΥե£¡¼¥ë¥É¤ÎÆÃÊ̤ʰÀ¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤³¤Î¥¡¼¥ï¡¼¥É¤Î¸å¤í¤Ë°À¤Î»ØÄê¤òÆó½Å³ç¸Ì¤ÎÃæ¤ËÆþ¤ì¤Æ½ñ¤¯¡£¸½ºß¡¢ÊÑ¿ôÍÑ¤Ë¤Ï 8 ¸Ä¤Î°À¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£aligned¡¢mode¡¢nocommon¡¢packed¡¢section¡¢transparent_union¡¢unused¡¢weak ¤Ç¤¢¤ë¡£¤½¤Î¾¤Ë¡¢´Ø¿ô(see Function Attributes) ¤È·¿(see Type Attributes) ¤Ç»È¤¨¤ë°À¤¬¤¢¤ë¡£
¤Þ¤¿¡¢³Æ¥¡¼¥ï¡¼¥É¤ÎÁ°¸å¤Ë __ ¤òÉÕ¤±¤¿Â°À¤ò»ØÄꤷ¤Æ¤âÎɤ¤¡£¤³¤ì¤Ë¤è¤ê¡¢Æ±¤¸Ì¾Á°¤Î¥Þ¥¯¥í¤¬¤¢¤ë²ÄǽÀ¤ò¿´ÇÛ¤¹¤ë¤³¤È¤Ê¤¯¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¤³¤ì¤é¤Î°À¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£Î㤨¤Ð¡¢aligned ¤ÎÂå¤ï¤ê¤Ë __aligned__ ¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
aligned (alignment)
int x __attribute__ ((aligned (16))) = 0;
¤ÈÀë¸À¤¹¤ë¤È¡¢GCC ¤Ï¥°¥í¡¼¥Ð¥ëÊÑ¿ô x ¤ò 16 ¥Ð¥¤¥È¶³¦¤Ë³ä¤êÅö¤Æ¤ë¡£68040 ¤Ç¤Ï¡¢¤³¤ì¤òasm ¼°¤ÈÁȤ߹ç¤ï¤»¤ë¤³¤È¤Ç¡¢¥ª¥Ú¥é¥ó¥É¤¬16¥Ð¥¤¥È¶³¦¤ËÀ°Î󤷤Ƥ¤¤ëɬÍפ¬¤¢¤ë move16 Ì¿Îá¤ò»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£
¤Þ¤¿¡¢¹½Â¤ÂΤΥե£¡¼¥ë¥É¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤ë¡£Î㤨¤Ð¡¢Çܸ춳¦¤ËÀ°Îó¤·¤¿ int ¤ÎÂФòºî¤ë¤Ë¤Ï°Ê²¼¤Î¤è¤¦¤Ë½ñ¤±¤ÐÎɤ¤¡£
struct foo { int x[2] __attribute__ ((aligned (8))); };
¤³¤ì¤Ï¡¢double ·¿¤Î¥á¥ó¥Ð¤òÆþ¤ì¤¿¶¦ÍÑÂΤòºî¤Ã¤Æ¡¢¤½¤Î¶¦ÍÑÂΤòÇܸ춳¦¤ËÀ°Î󤵤»¤ë¤È¤¤¤¦Ä̾ï¤Î¼êÃʤÎÂåÂØÊýË¡¤Ç¤¢¤ë¡£
´Ø¿ô¤ËÂФ·¤Æ¤Ï¥¢¥é¥¤¥ó¥á¥ó¥È¤ò»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£´Ø¿ô¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤Ïµ¡¼ï¤Ë¤è¤Ã¤Æ·è¤Þ¤Ã¤Æ¤ª¤ê¡¢Êѹ¹ÉÔ²Äǽ¤Ç¤¢¤ë¡£typedef ̾¤ËÂФ·¤Æ¤â¥¢¥é¥¤¥ó¥á¥ó¥È¤ò»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£typedef ̾¤Ï¿·¤¿¤Ê·¿¤Ç¤Ï¤Ê¤¯¤Æ¡¢Ã±¤Ê¤ëÊÌ̾¤Ë²á¤®¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
¾å¤ÎÎã¤Î¤è¤¦¤Ë¡¢Í¿¤¨¤é¤ì¤¿ÊÑ¿ô¤ä¹½Â¤ÂÎ¥Õ¥£¡¼¥ë¥É¤ËÂФ·¤Æ GCC ¤Ë»È¤Ã¤ÆÍߤ·¤¤¤È»×¤¦¥¢¥é¥¤¥ó¥á¥ó¥È¤òÌÀ¼¨Åª¤Ë»ØÄꤹ¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£¤â¤¦°ì¤Ä¤ÎÊýË¡¤È¤·¤Æ¡¢¥¢¥é¥¤¥ó¥á¥ó¥È°ø»Ò¤ò½ñ¤«¤º¤Ë¡¢¥³¥ó¥Ñ¥¤¥ë¤Î¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Î°ÕÌ£¤Î¤¢¤ëºÇÂç¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤òÊÑ¿ô¤ä¥Õ¥£¡¼¥ë¥É¤ËÍ¿¤¨¤ë¤è¤¦¥³¥ó¥Ñ¥¤¥é¤ËǤ¤»¤ë¤³¤È¤â¤Ç¤¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¯¤³¤È¤¬¤Ç¤¤ë¡£
short array[3] __attribute__ ((aligned));
aligned °À¤Î»ØÄê¤Ç¡¢¥¢¥é¥¤¥ó¥á¥ó¥È°ø»Ò¤ò½ñ¤«¤Ê¤¤¤È¡¢GCC ¤Ï¡¢Àë¸À¤µ¤ì¤¿ÊÑ¿ô¤ä¥Õ¥£¡¼¥ë¥É¤Ë¡¢ÆÉ¼Ô¤Î¥³¥ó¥Ñ¥¤¥ë¤Î¥¿¡¼¥²¥Ã¥È¤Ç¤¢¤ëµ¡¼ï¤ÇǤ°Õ¤Î¥Ç¡¼¥¿·¿¤ËÂФ·¤Æ»È¤ï¤ì¤ëºÇÂç¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤ò¼«Æ°Åª¤ËÀßÄꤹ¤ë¡£¤³¤¦¤¹¤ë¤È¡¢¥³¥Ô¡¼Áàºî¤Î¸úΨ¤¬Îɤ¯¤Ê¤ë¤³¤È¤¬Â¿¤¤¡£GCC ¤Ï¡¢¤³¤Î¤è¤¦¤Ë¥¢¥é¥¤¥ó¥á¥ó¥È¤òÀßÄꤷ¤¿ÊÑ¿ô¤ä¥Õ¥£¡¼¥ë¥É¤È¤Î´Ö¤Î¥³¥Ô¡¼¤ò¹Ô¤¦¤È¤¤Ë¡¢ºÇÂç¤Î¥á¥â¥ê¤Î²ô¤ò¥³¥Ô¡¼¤¹¤ëÌ¿Îá¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¤«¤é¤Ç¤¢¤ë¡£
aligned °À¤¬¤Ç¤¤ë¤Î¤Ï¥¢¥é¥¤¥ó¥á¥ó¥È¤òÂ礤¯¤¹¤ë¤³¤È¤À¤±¤Ç¤¢¤ë¡£¤À¤¬¡¢¾®¤µ¤¯¤¹¤ë¤Ë¤Ï packed °À¤ò»ØÄꤹ¤ì¤ÐÎɤ¤¡£
aligned °À¤Î¸ú²Ì¤Ï¡¢¥ê¥ó¥«¤Î»ý¤ÄÀ©¸Â¤Ë¤è¤êÀ©¸Â¤ò¼õ¤±¤ë²ÄǽÀ¤¬¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤ÆÍߤ·¤¤¡£Â¿¤¯¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥ê¥ó¥«¤Ï¡¢ÊÑ¿ô¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤ò¡¢¤¢¤ë·è¤Þ¤Ã¤¿ºÇÂç¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤Þ¤Ç¤·¤«Ä´À°¤Ç¤¤Ê¤¤¡£(¥ê¥ó¥«¤ÎÃæ¤Ë¤Ï¡¢²Äǽ¤Ê¥¢¥é¥¤¥ó¥á¥ó¥È¤ÎºÇÂçÃͤ¬Èó¾ï¤Ë¾®¤µ¤¤¤â¤Î¤¬¤¢¤ë¡£)
ÆÉ¼Ô¤Î¤È¤³¤í¤Î¥ê¥ó¥«¤¬¡¢ÊÑ¿ô¤òºÇÂç¤Ç 8 ¥Ð¥¤¥È¶³¦¤Ë¤Þ¤Ç¤·¤«À°Îó¤Ç¤¤Ê¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢__attribute__ ¤Ç aligned(16) ¤È»ØÄꤷ¤Æ¤â¡¢8 ¥Ð¥¤¥È¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤·¤«Ä󶡤µ¤ì¤Ê¤¤¡£¾ÜºÙ¤Ê¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¥ê¥ó¥«¤Î¥É¥¥å¥á¥ó¥È¤ò¸«¤ÆÍߤ·¤¤¡£
mode (mode)
¤Þ¤¿¡¢¥â¡¼¥É byte ¤Þ¤¿¤Ï __byte__ ¤ò»ØÄꤷ¤Æ¡¢°ì¥Ð¥¤¥ÈÀ°¿ô¤ËÂбþ¤¹¤ë¥â¡¼¥É¤Ç¤¢¤ë¤³¤È¤ò»Ø¼¨¤¹¤ë¤³¤È¤â¤Ç¤¤ë¡£Æ±Íͤˡ¢word ¤Þ¤¿¤Ï __word__ ¤Ç°ì¸ìŤÎÀ°¿ô¥â¡¼¥É¤ò¡¢pointer ¤Þ¤¿¤Ï __pointer__ ¤Ç¥Ý¥¤¥ó¥¿¤òɽ¸½¤¹¤ë¤Î¤Ë»È¤ï¤ì¤ë¥â¡¼¥É¤ò»Ø¼¨¤¹¤ë¡£
nocommon
-fno-common ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢Á´¤Æ¤ÎÊÑ¿ô¤ËÂФ·¤³¤ì¤ò¹Ô¤Ê¤¦¡£
ÊÑ¿ô¤ËÂФ· nocommon °À¤ò»ØÄꤹ¤ë¤È¡¢¥¼¥í¤Ë¤è¤ë½é´ü²½¤¬¹Ô¤Ê¤ï¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡£¤¢¤ëÊÑ¿ô¤Ï¡¢°ì¸Ä¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ç¤·¤«½é´ü²½¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
packed
packed °À¤Ï¡¢ÊÑ¿ô¤ä¹½Â¤ÂÎ¥Õ¥£¡¼¥ë¥É¤¬»ý¤Ä¥¢¥é¥¤¥ó¥á¥ó¥È¤òºÇ¾®¸Â¤Ë¤¹¤Ù¤¤Ç¤¢¤ë¤³¤È¤ò»ØÄꤹ¤ë¡£ºÇ¾®¸Â¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤È¤Ï¡¢aligned °À¤Ç¤â¤Ã¤ÈÂ礤ÊÃͤò»ØÄꤷ¤Ê¤¤¸Â¤ê¡¢ÊÑ¿ô¤Î¾ì¹ç¤Ï1¥Ð¥¤¥È¤Ç¤¢¤ê¡¢¹½Â¤ÂÎ¥Õ¥£¡¼¥ë¥É¤Î¾ì¹ç¤Ï 1 ¥Ó¥Ã¥È¤Ç¤¢¤ë¡£
°Ê²¼¤Î¹½Â¤ÂΤǤϡ¢¥Õ¥£¡¼¥ë¥É x ¤¬¥Ñ¥Ã¥¯¤µ¤ì¤Æ¤ª¤ê¡¢¤³¤Î¤¿¤á a ¤Îľ¸å¤ËÇÛÃÖ¤µ¤ì¤ë¡£
struct foo
{
char a;
int x[2] __attribute__ ((packed));
};
section ("section-name")
data ¤ä bss ¤È¤¤¤Ã¤¿¥»¥¯¥·¥ç¥ó¤ËÃÖ¤¯¡£¤À¤¬¡¢ÄɲäÇÊ̤Υ»¥¯¥·¥ç¥ó¤¬É¬Íפˤʤ俤ꡢ¤¢¤ë¤¤¤Ï¤¢¤ë¼ï¤ÎÆÃÊ̤ÊÊÑ¿ô¤òÆÃÊ̤ʥ»¥¯¥·¥ç¥ó¤ËÃÖ¤¯É¬Íפ¬¤¢¤Ã¤¿¤ê¤¹¤ë¤³¤È¤¬¤¢¤ë¡£¤³¤ì¤Ï¡¢Î㤨¤ÐÆÃÊ̤ʥϡ¼¥É¥¦¥§¥¢¤Ë¥Þ¥Ã¥×¤¹¤ë¤¿¤áÅù¤ÎÍýͳ¤ÇɬÍפˤʤ롣section °À¤Ï¡¢ÊÑ¿ô(¤Þ¤¿¤Ï´Ø¿ô)¤ò¤¢¤ëÆÃÄê¤Î¥»¥¯¥·¥ç¥ó¤ËÃÖ¤¯¤³¤È¤ò»ØÄꤹ¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¿§¡¹¤Ê¸ÇͤΥ»¥¯¥·¥ç¥ó̾¤ò»È¤Ã¤Æ¤¤¤ë¡£
struct duart a __attribute__ ((section ("DUART_A"))) = { 0 };
struct duart b __attribute__ ((section ("DUART_B"))) = { 0 };
char stack[10000] __attribute__ ((section ("STACK"))) = { 0 };
int init_data __attribute__ ((section ("INITDATA"))) = 0;
main()
{
/* Initialize stack pointer */
init_sp (stack + sizeof (stack));
/* Initialize initialized data */
memcpy (&init_data, &data, &edata - &data);
/* Turn on the serial ports */
init_duart (&a);
init_duart (&b);
}
section °À¤Ï¡¢¾åµ¤ÎÎã¤Î¤è¤¦¤Ë¡¢¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤Î½é´üÃÍÉÕ¤ÄêµÁ¤Ë»È¤¦¤³¤È¡£GNU CC ¤Ï¡¢½é´üÃͤʤ·¤ÎÊÑ¿ôÀë¸À¤Ësection °À¤ò»È¤¦¤È¡¢·Ù¹ð¤òȯ¤¹¤ë¤«¡¢¤µ¤â¤Ê¤±¤ì¤Ð̵»ë¤¹¤ë¡£
section °À¤Ï¡¢¥ê¥ó¥«¤Îưºî¤¹¤ë»ÅÁȤߤˤè¤ê¡¢´°Á´¤Ë½é´ü²½¤µ¤ì¤¿¥°¥í¡¼¥Ð¥ë¤ÊÄêµÁ¤Ë¤·¤«»È¤¦¤³¤È¤¬¤Ç¤¤Ê¤¤¡£¥ê¥ó¥«¤Ï³Æ¥ª¥Ö¥¸¥§¥¯¥È¤Ï°ì²ó¤À¤±ÄêµÁ¤µ¤ì¤ë¤³¤È¤òÍ׵᤹¤ë¡£Îã³°¤Ï¡¢Èó½é´ü²½ÊÑ¿ô¤Ç¤¢¤ê¡¢°ì»þŪ¤Ë common (¤¢¤ë¤¤¤Ïbss) ¥»¥¯¥·¥ç¥ó¤ËÃÖ¤«¤ì¡¢¤³¤Î¤¿¤áÊ£¿ô²ó¡ÖÄêµÁ¡×²Äǽ¤Ç¤¢¤ë¡£ÊÑ¿ô¤ò¶¯À©Åª¤Ë½é´ü²½¤¹¤ë¤Ë¤Ï¡¢-fno-common ¥ª¥×¥·¥ç¥ó¤«nocommon °À¤ò»È¤¦¤³¤È¤¬½ÐÍè¤ë¡£
¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë·Á¼°¤ÎÃæ¤Ë¤Ï¡¢Ç¤°Õ¤Î¥»¥¯¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¤Ê¤¤¤â¤Î¤¬¤¢¤ê¡¢¤½¤Î¤¿¤á section °À¤ÏÁ´¤Æ¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤ÇÍøÍѤǤ¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£¤¢¤ë¥â¥¸¥å¡¼¥ë¤ÎÁ´ÆâÍÆ¤ò¤¢¤ëÆÃÄê¤Î¥»¥¯¥·¥ç¥ó¤ËÂбþ¤µ¤»¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢Âå¤ï¤ê¤Ë¥ê¥ó¥«¤Îµ¡Ç½¤ò»È¤¦¤³¤È¤ò¹Í¤¨¤¿¤Û¤¦¤¬Îɤ¤¡£
transparent_union
typedef ¤Ë»È¤¦¤³¤È¤â¤Ç¤¤ë¡£¤½¤Î¾ì¹ç¡¢¤³¤Î·¿¤ò»ý¤ÄÁ´¤Æ¤Î´Ø¿ô²¾°ú¿ô¤ËŬÍѤµ¤ì¤ë¡£
unused
weak
weak °À¤Ï¡¢See Function Attributes ¤ÇÀâÌÀ¤¹¤ë¡£
model (model-name)
small¡¢medium¡¢large ¤Î°ì¤Ä¤Ç¡¢¤½¤ì¤¾¤ì¥³¡¼¥É¥â¥Ç¥ë¤òɽ¤¹¡£
small ¥â¥Ç¥ë¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¥á¥â¥ê¤Î²¼°Ì 16MB ¤ËÃÖ¤«¤ì¤ë(¤³¤ì¤Ë¤è¤ê¡¢¤³¤ì¤é¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥É¥ì¥¹¤Ï ld24 Ì¿Îá¤Ç¥í¡¼¥É²Äǽ¤Ç¤¢¤ë¡£)
medium ¥â¥Ç¥ë¤È large ¥â¥Ç¥ë¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï 32 ¥Ó¥Ã¥È¤Î¥¢¥É¥ì¥¹¶õ´Ö¤Î¤É¤³¤Ë¤Ç¤âÃÖ¤«¤ì¤ë(GNU CC ¤Ï¤³¤ì¤é¤Î¥¢¥É¥ì¥¹¤ò¥í¡¼¥É¤¹¤ë¤¿¤á¤Ë¡¢seth/add3 Ì¿Îá¤òÀ¸À®¤¹¤ë)¡£
Ê£¿ô¤Î°À¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢¤½¤ì¤é¤òÆó½Å³ç¸Ì¤Ç°Ï¤ß¡¢¤½¤ÎÃæ¤Ç¥«¥ó¥Þ¤Ç³ÆÂ°À¤ò¶èÀڤ롣Î㤨¤Ð¡¢__attribute__ ((aligned (16),
packed)) ¤È¤¹¤ë¡£
¥¡¼¥ï¡¼¥É __attribute__ ¤ò»È¤¦¤È¡¢struct ·¿¤äunion ·¿¤òÄêµÁ¤¹¤ë¤È¤¤Ë¡¢ÆÃÊ̤ʰÀ¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤³¤Î¥¡¼¥ï¡¼¥É¤Î¸å¤í¤Ë¡¢Â°À¤Î»ØÄê¤òÆó½Å³ç¸Ì¤ËÆþ¤ì¤ÆÂ³¤±¤Æ¤ª¤¯¡£·¿¤òÄêµÁ¤¹¤ëºÝ¤Î°À¤È¤·¤Æ¤Ï¡¢¸½ºß»°¤ÄÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£aligned¡¢packed¡¢transparent_union ¤Ç¤¢¤ë¡£¤³¤ì°Ê³°¤Î°À¤¬¡¢´Ø¿ô(see Function Attributes)¤äÊÑ¿ô(see Variable Attributes)ÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
¤³¤ì¤é¤Î¤¦¤Á¤Î°À¤Ï¡¢¥¡¼¥ï¡¼¥É¤ÎÁ°¸å¤Ë __ ¤òÉղ䷤ƻØÄꤷ¤Æ¤âÎɤ¤¡£¤³¤Á¤é¤ò»È¤¦¤È¡¢Æ±¤¸Ì¾Á°¤Î¥Þ¥¯¥í¤¬¤¢¤ë¤«¤É¤¦¤«¤òµ¤¤Ë¤»¤º¤Ë¥Ø¥Ã¥À¥Õ¥£¥¢¥ë¤ÎÃæ¤Ç»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£Î㤨¤Ð¡¢aligned ¤ÎÂå¤ï¤ê¤Ë __aligned__ ¤ò»È¤Ã¤Æ¤âÎɤ¤¡£
°À aligned ¤È transparent_union ¤Ï¡¢typedef Àë¸À¤ÎÃæ¤«¡¢´°Á´¤Ê enum¡¢struct¡¢union ·¿¤ÎÄêµÁ ¤ÎÊĤ¸Ãæ³ç¸Ì¤Îľ¸å¤ËÃÖ¤¯¤³¤È¤¬¤Ç¤¤ë¡£Â°À packed ¤Ï¡¢ÄêµÁ¤ÎÊĤ¸Ãæ³ç¸Ì¤Îľ¸å¤Ë¤À¤±ÃÖ¤¯¤³¤È¤¬¤Ç¤¤ë¡£
¤Þ¤¿¡¢Â°À¤ò¡¢ÊĤ¸³ç¸Ì¤Î¸å¤í¤Ç¤Ï¤Ê¤¯¤Æ¡¢enum¡¢struct¡¢union ¥¿¥°¤È¤½¤Î·¿Ì¾¤Î´Ö¤ËÃÖ¤¯¤³¤È¤â¤Ç¤¤ë¡£
aligned (alignment)
struct S { short f[3]; } __attribute__ ((aligned (8)));
typedef int more_aligned_int __attribute__ ((aligned (8)));
¤ÈÀë¸À¤¹¤ë¤È¡¢struct S ·¿¤ä more_aligned_int ·¿¤ÎÊÑ¿ô¤¬¤½¤ì¤¾¤ì¡¢¾¯¤Ê¤¯¤È¤â 8 ¥Ð¥¤¥È¶³¦¤Ë³ä¤êÅö¤Æ¤é¤ì¡¢À°Î󤵤ì¤ë¤³¤È¤òÊݾڤ¹¤ë¡£SPARC ¤Ç¤Ï¡¢struct S ·¿¤ÎÊÑ¿ô¤òÁ´¤Æ8 ¥Ð¥¤¥È¶³¦¤ËÀ°Î󤹤ë¤È¡¢GNU CC ¤¬ ldd Ì¿Îá¤È std Ì¿Îá(Çܸì¥í¡¼¥É¤ÈÇܸ쥹¥È¥¢)¤ò struct S ·¿¤Î°ì¤Ä¤ÎÊÑ¿ô¤òƱ¤¸·¿¤ÎÊÑ¿ô¤Ë¥³¥Ô¡¼¤¹¤ë¤Î¤Ë»È¤¦¤³¤È¤¬¤Ç¤¡¢¤½¤Î¤¿¤á¼Â¹Ô»þ¤Î¸úΨ¤¬²þÁ±¤µ¤ì¤ë¡£
Ǥ°Õ¤ÎÍ¿¤¨¤é¤ì¤¿ struct ·¿¤ä union ·¿¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤ÏANSI C µ¬³Ê¤Ë¤è¤ê¡¢¾¯¤Ê¤¯¤È¤â¡¢ÌäÂê¤Î struct ¤ä union ¤ÎÁ´¤Æ¤Î¥á¥ó¥Ð¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤ÎºÇ¾®¸øÇÜ¿ô¤ÎÇÜ¿ô¤Ë¤Ê¤ë¤³¤È¤¬Í׵ᤵ¤ì¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¤·¤ÆÍߤ·¤¤¡£¤³¤Î¤¿¤á¡¢struct ¤ä union ·¿¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤òÄ´À°¤¹¤ë¤Î¤Ë¡¢¤½¤Î¥á¥ó¥Ð¤Î¤É¤ì¤«°ì¤Ä¤Ë alignment ¤ò°À¤òÉղ乤뤳¤È¤Ç¡¢¼Â¼ÁŪ¤Ë¹Ô¤Ê¤¨¤ë¤³¤È¤Ë¤Ê¤ë¡£¤À¤¬¡¢¾å¤ÎÎã¤ÇÀâÌÀ¤·¤¿½ñ¤Êý¤ÎÊý¤¬¡¢struct ·¿¤ä union ·¿Á´ÂΤΥ¢¥é¥¤¥ó¥á¥ó¥È¤òÄ´À°¤¹¤ë¤¿¤á¤Î»ØÄê¤È¤·¤Æ¤Ï¡¢¤è¤êÌÀÇò¤Ç¡¢È½¤ê¤ä¤¹¤¯¡¢ÆÉ¤ß¤ä¤¹¤¤ÊýË¡¤È¸À¤¨¤ë¡£
Á°½Ð¤ÎÎã¤Î¤è¤¦¤Ë¡¢Í¿¤¨¤é¤ì¤¿ struct ·¿¤ä union ·¿¤ËÂФ·¤Æ»È¤Ã¤ÆÍߤ·¤¤¥¢¥é¥¤¥ó¥á¥ó¥È¤ò¥Ð¥¤¥Èñ°Ì¤ÇÌÀ¼¨Åª¤Ë»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£Ê̤ÎÊýË¡¤È¤·¤Æ¤Ï¡¢¥¢¥é¥¤¥ó¥á¥ó¥È°ø»Ò¤ò½ñ¤«¤º¤Ë¡¢¥³¥ó¥Ñ¥¤¥ë¤Î¥¿¡¼¥²¥Ã¥Èµ¡¼ï¤Ç°ÕÌ£¤Î¤¢¤ëºÇÂç¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤ò¤½¤Î·¿¤Ë»ØÄꤵ¤»¤ë¤Î¤ò¡¢GNU CC ¤ËǤ¤»¤ë¤³¤È¤â¤Ç¤¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¤¤Æ¤âÎɤ¤¡£
struct S { short f[3]; } __attribute__ ((aligned));
aligned °À¤Î»ØÄê¤Ç¡¢¥¢¥é¥¤¥ó¥á¥ó¥È°ø»Ò¤ò½ñ¤«¤Ê¤¤¤È¡¢GCC ¤Ï¡¢¤½¤Î·¿¤Ë¡¢ÆÉ¼Ô¤Î¥³¥ó¥Ñ¥¤¥ë¤Î¥¿¡¼¥²¥Ã¥È¤Ç¤¢¤ëµ¡¼ï¤ÇǤ°Õ¤Î¥Ç¡¼¥¿·¿¤ËÂФ·¤Æ»È¤ï¤ì¤ëºÇÂç¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤ò¼«Æ°Åª¤ËÀßÄꤹ¤ë¡£¤³¤¦¤¹¤ë¤È¡¢¥³¥Ô¡¼Áàºî¤Î¸úΨ¤¬Îɤ¯¤Ê¤ë¤³¤È¤¬Â¿¤¤¡£GCC ¤Ï¡¢¤³¤Î¤è¤¦¤Ë¥¢¥é¥¤¥ó¥á¥ó¥È¤òÀßÄꤷ¤¿ÊÑ¿ô¤ä¥Õ¥£¡¼¥ë¥É¤È¤Î´Ö¤Î¥³¥Ô¡¼¤ò¹Ô¤¦¤È¤¤Ë¡¢ºÇÂç¤Î¥á¥â¥ê¤Î²ô¤ò¥³¥Ô¡¼¤¹¤ëÌ¿Îá¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¤«¤é¤Ç¤¢¤ë¡£
¾å¤ÎÎã¤Ç¡¢short ¤ÎÂ礤µ¤¬¤É¤ì¤â 2 ¥Ð¥¤¥È¤Ç¤¢¤ì¤Ð¡¢struct S ·¿Á´ÂΤÎÂ礤µ¤Ï 6 ¥Ð¥¤¥È¤Ë¤Ê¤ë¡£¤³¤ÎÂ礤µ°Ê¾å¤Ç¡¢ºÇ¾®¤Î 2 ¤ÎÑѾè¤Ï 8 ¤Ê¤Î¤Ç¡¢GCC ¤Ï struct S ·¿Á´ÂΤΥ¢¥é¥¤¥ó¥á¥ó¥È¤ò 8 ¥Ð¥¤¥È¤ËÀßÄꤹ¤ë¡£
Í¿¤¨¤é¤ì¤¿·¿¤ËÂФ·»þ´Ö¸úΨ¤ÎÎɤ¤¥¢¥é¥¤¥ó¥á¥ó¥È¤òÁªÂò¤¹¤ë¤è¤¦¤ËGCC ¤ËÍ׵ᤷ¡¢¤½¤Î·¿¤ÎñÆÈ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤À¤±¤ò¸Ä¡¹¤ËÀë¸À¤¹¤ë¤³¤È¤â¤Ç¤¤ë¤¬¡¢GCC ¤Î»þ´ÖÍ¥À襢¥é¥¤¥ó¥á¥ó¥È¤òÁªÂò¤¹¤ëǽÎϤϡ¢¼ç¤ËŬÀÚ¤Ê(¸úΨÎɤ¯À°Î󤹤ë)·¿¤ò»ý¤ÄÊÑ¿ô¤ÎÇÛÎó¤òºî¤í¤¦¤È¤·¤Æ¤¤¤ë»þ¤Ë¤·¤«Ìò¤ËΩ¤¿¤Ê¤¤¡£¸úΨÎɤ¯À°Î󤵤ì¤ë·¿¤ÎÊÑ¿ô¤ÎÇÛÎó¤òÀë¸À¤·¤¿¤ê¡¢»È¤¦»þ¤Ï¡¢ÆÉ¼Ô¤Î¥×¥í¥°¥é¥à¤Ï´ØÏ¢¤¹¤ë·¿¤Ø¤Î¥Ý¥¤¥ó¥¿¤ËÂФ¹¤ë¥Ý¥¤¥ó¥¿»»½Ñ±é»»(¤¢¤ë¤¤¤ÏƱ¤¸¤³¤È¤À¤¬Åº¤¨»ú¤Ë¤è¤ë»²¾È) ¤â¹Ô¤ï¤ì¤ë¤À¤í¤¦¡£¤³¤ì¤é¤Î¥Ý¥¤¥ó¥¿»»½Ñ±é»»¤ËÂФ·¤Æ GCC ¤¬À¸À®¤¹¤ë¥³¡¼¥É¤Ï¡¢¸úΨÎɤ¯À°Î󤵤ì¤ë·¿¤ËÂФ¹¤ë¤â¤Î¤Î¤Û¤¦¤¬¡¢Â¾¤Î·¿¤ËÂФ¹¤ë¤â¤Î¤è¤ê¸úΨ¤¬Îɤ¯¤Ê¤ë¡£
°À aligned ¤Ï¥¢¥é¥¤¥ó¥á¥ó¥È¤òÁý²Ã¤µ¤»¤ë¤À¤±¤À¤¬¡¢packed ¤ò»ØÄꤹ¤ì¤Ð¸º¾¯¤µ¤»¤ë¤³¤È¤â¤Ç¤¤ë¡£°Ê²¼¤ò»²¾È¡£
aligned °À¤Î¸ú²Ì¤Ï¡¢¥ê¥ó¥«¤Î»ý¤ÄÀ©¸Â¤Ë¤è¤ê¸ÂÄꤵ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤Û¤·¤¤¡£Â¿¤¯¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥ê¥ó¥«¤Ï¤¢¤ë·è¤Þ¤Ã¤¿ºÇÂç¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤ËÊÑ¿ô¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤òÀÚ¤ê¾å¤²¤ë¤è¤¦Ä´À°¤¹¤ë¤³¤È¤·¤«¤Ç¤¤Ê¤¤¡£(¥ê¥ó¥«¤Ë¤è¤Ã¤Æ¤Ï¡¢¤³¤Î¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëºÇÂç¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤¬Èó¾ï¤Ë¾®¤µ¤¤¤³¤È¤â¤¢¤ë¡£)
ÆÉ¼Ô¤Î¤È¤³¤í¤Î¥ê¥ó¥«¤¬¡¢ºÇÂç 8 ¥Ð¥¤¥È¤Þ¤Ç¤·¤«ÊÑ¿ô¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤ò¼è¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢__attribute__ ¤Çaligned(16) ¤ò»ØÄꤷ¤Æ¤â¡¢8 ¥Ð¥¤¥È¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤·¤«¼è¤ì¤Ê¤¤¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤ÏÆÉ¼Ô¤Î¤È¤³¤í¤Î¥ê¥ó¥«¤Î¥É¥¥å¥á¥ó¥È¤ò¸«¤ÆÍߤ·¤¤¡£
packed
enum ·¿¡¢struct ·¿¡¢union ·¿¤ÎÄêµÁ¤ËÉÕ¤±¤Æ¡¢¤½¤Î·¿¤òɽ¸½¤¹¤ë¤Î¤ËºÇÄã¸ÂɬÍפʥá¥â¥ê¤ò»ØÄꤹ¤ë¡£
¤³¤Î°À¤ò struct ·¿¤È union ·¿¤Ë»ØÄꤹ¤ë¤Î¤Ï¡¢¤½¤Î¹½Â¤ÂΤ䶦ÍÑÂΤΥá¥ó¥Ð¤Î¤½¤ì¤¾¤ì¤Ë packed °À¤ò»ØÄꤹ¤ë¤Î¤ÈƱ¤¸¤Ç¤¢¤ë¡£¥³¥Þ¥ó¥É¹Ô¤Ç -fshort-enums ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤Î¤Ï¡¢Á´¤Æ¤Î enum ·¿¤ÎÄêµÁ¤Ë packed °À¤ò»ØÄꤹ¤ë¤ÈƱ¤¸¤Ç¤¢¤ë¡£
¤³¤Î°À¤Ï enum ¤ÎÄêµÁ¤ÎÊĤ¸Ãæ³ç¸Ì¤Î¸å¤Ë¤·¤«»ØÄê¤Ç¤¤Ê¤¤¡£typedef ¤ÎÃæ¤Ç¤Ï¡¢¤½¤ÎÃæ¤Ë enum ¤ÎÄêµÁ¤â´Þ¤ó¤Ç¤¤¤Ê¤¤¸Â¤ê¡¢»ØÄê¤Ç¤¤Ê¤¤¡£
transparent_union
union ·¿¤ÎÄêµÁ¤ËÉÕ¤±¤ë¤È¡¢¤½¤Î¶¦ÍÑÂη¿¤ò»ý¤Ä´Ø¿ô¤Î¥Ñ¥é¥á¡¼¥¿¤¬¤¢¤ë¾ì¹ç¡¢¤½¤Î´Ø¿ô¤Ø¤Î¸Æ½Ð¤·¤¬ÆÃÊ̤ÊÊýË¡¤Ç¼è¤ê°·¤ï¤ì¤ë¡£
Âè°ì¤Ë¡¢¤¢¤ëÆ©²á¶¦ÍÑÂη¿¤ËÂбþ¤¹¤ë°ú¿ô¤Ï¡¢¤½¤Î¶¦ÍÑÂΤΥá¥ó¥Ð¤Î¤¦¤Á¤Î¤É¤Î·¿¤Ë¤Ç¤â¤Ê¤ê¤¦¤ë¡£¤³¤Î¾ì¹ç¡¢¥¥ã¥¹¥È¤ÏÉÔÍפǤ¢¤ë¡£¤Þ¤¿¡¢¶¦ÍÑÂΤ¬¥Ý¥¤¥ó¥¿·¿¤ò´Þ¤ó¤Ç¤¤¤ì¤Ð¡¢Âбþ¤¹¤ë°ú¿ô¤Ï¥Ì¥ë¥Ý¥¤¥ó¥¿Äê¿ô¤« void ¥Ý¥¤¥ó¥¿¼°¤Ë¤Ê¤ê¤¦¤ë¡£¶¦ÍÑÂΤ¬¡¢void ¥Ý¥¤¥ó¥¿·¿¤ò´Þ¤ó¤Ç¤¤¤ì¤Ð¡¢Âбþ¤¹¤ë°ú¿ô¤ÏǤ°Õ¤Î¥Ý¥¤¥ó¥¿¼°¤Ë¤Ê¤ê¤¦¤ë¡£¶¦ÍÑÂΤΥá¥ó¥Ð¤Î·¿¤¬¥Ý¥¤¥ó¥¿¤Ç¤¢¤ì¤Ð¡¢¤½¤ì¤¬»²¾È¤·¤Æ¤¤¤ë·¿¤Ë¤Ä¤¤¤Æ¤Î const ¤Î¤è¤¦¤Ê½¤¾þ»Ò¤Ï¡¢Êݸ¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤ì¤ÏÉáÄ̤Υݥ¤¥ó¥¿¤ÎÊÑ´¹¤ÈƱ¤¸¤Ç¤¢¤ë¡£
ÂèÆó¤Ë¡¢¤½¤Î°ú¿ô¤Ï¡¢Æ©²á¶¦ÍÑÂμ«¿È¤Î¸Æ½Ð¤·µ¬Ìó¤Ç¤Ï¤Ê¤¯¤Æ¡¢¶¦ÍÑÂΤÎÀèÆ¬¤Î¥á¥ó¥Ð¤Î¸Æ½Ð¤·µ¬Ìó¤ò»È¤Ã¤Æ´Ø¿ô¤ËÅϤµ¤ì¤ë¡£¤½¤Î¶¦ÍÑÂΤΥá¥ó¥Ð¤ÏÁ´¤ÆÆ±¤¸¥Þ¥·¥óɽ¸½¤Ë¤Ê¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤ì¤Ï¡¢¤³¤Î°ú¿ô¤òÀµ¤·¤¯ÅϤ¹¤¿¤á¤ËɬÍפǤ¢¤ë¡£
Æ©²á¶¦ÍÑÂΤϡ¢¸ß´¹À¤ÎÍýͳ¤Ë¤è¤êÊ£¿ô¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò»ý¤Ä¥é¥¤¥Ö¥é¥ê´Ø¿ô¤Î¤¿¤á¤ËÀ߷פµ¤ì¤Æ¤¤¤ë¡£Î㤨¤Ð¡¢´Ø¿ô wait ¤Ï¡¢Posix ¤Ë½àµò¤¹¤ë¤¿¤á¤Ë¤Ï int * ·¿¤ÎÃͤò¼õ¤±ÉÕ¤±¤ë¤«¡¢4.1BSD ¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ë½àµò¤¹¤ë¤¿¤á¤Ë¤Ï union wait * ·¿¤ÎÃͤò¼õ¤±ÉÕ¤±¤ë¤«¤Î¤É¤Á¤é¤«¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£wait ¤Î²¾°ú¿ô¤¬void * ¤Ç¤¢¤ì¤Ð¡¢wait ¤Ï¤É¤Á¤é¤Î¼ïÎà¤Î°ú¿ô¤Ç¤â¼õÉÕ²Äǽ¤Ë¤Ê¤ë¤¬¡¢Â¾¤Î¤É¤ó¤Ê¥Ý¥¤¥ó¥¿·¿¤Ç¤â¼õ¤±ÉÕ¤±¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¡¢°ú¿ô·¿¤Î¸¡ºº¤¬Ìò¤ËΩ¤¿¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¡£Âå¤ï¤ê¤Ë¡¢<sys/wait.h>
¤Ç¤Ï°Ê²¼¤Î¤è¤¦¤Ë¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÄêµÁ¤·¤Æ¤âÎɤ¤¡£
typedef union
{
int *__ip;
union wait *__up;
} wait_status_ptr_t __attribute__ ((__transparent_union__));
pid_t wait (wait_status_ptr_t);
¤³¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¤Ï¡¢int * ·¿¤« union wait * ·¿¤Î°ú¿ô¤òÅϤ¹¤³¤È¤¬¤Ç¤¤ë¡£¸Æ½Ð¤·µ¬Ìó¤Ï int * ¤ò»È¤¦¡£¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¤É¤Á¤«¤Î·¿¤Î°ú¿ô¤Ç wait ¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤¤ë¡£
int w1 () { int w; return wait (&w); }
int w2 () { union wait w; return wait (&w); }
¤³¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò»È¤Ã¤¿¾ì¹ç¡¢ wait ¤Î¼ÂÁõ¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¡£
pid_t wait (wait_status_ptr_t p)
{
return waitpid (-1, p.__ip, 0);
}
unused
union ¤ä struct ¤ò´Þ¤à)¤Ë»ØÄꤹ¤ë¤È¡¢¤³¤Î·¿¤ÎÊÑ¿ô¤¬»È¤ï¤ì¤Ê¤¤²ÄǽÀ¤¬¤¢¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£GNU CC ¤Ï¡¢¤³¤Î·¿¤ÎÊÑ¿ô¤¬²¿¤â¤·¤Ê¤¤¤è¤¦¤Ë¸«¤¨¤¿¾ì¹ç¤Ç¤â¡¢¤³¤ì¤é¤ÎÊÑ¿ô¤ËÂФ·¤Æ¤Ï·Ù¹ð¤ò½Ð¤µ¤Ê¤¤¡£¤³¤ì¤Ï¡¢¥í¥Ã¥¯¤ä¥¹¥ì¥Ã¥É¤Î¥¯¥é¥¹¤Ç¤ÏÎɤ¯¤¢¤ë¤³¤È¤Ç¤¢¤ë¡£¤³¤ì¤é¤Î¾ì¹ç¡¢ÄêµÁ¤Ï¤µ¤ì¤ë¤¬»²¾È¤Ï¤µ¤ì¤Ê¤¤¡£¤À¤¬¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¤ä¥Ç¥¹¥È¥é¥¯¥¿¤¬´Þ¤Þ¤ì¤Æ¤¤¤Æ¡¢¤½¤ÎÃæ¤Ë¤Ï¿§¡¹¤Ê´ÉÍý¤ò¹Ô¤Ê¤¦µ¡Ç½¤ò»ý¤Ä¡£
°À¤òÊ£¿ô»ØÄꤹ¤ë¤Ë¤Ï¡¢¥«¥ó¥Þ¤Ç¶èÀڤäÆÁ´ÂΤòÆó½Å³ç¸Ì¤Ç°Ï¤à¡£Î㤨¤Ð¡¢__attribute__ ((aligned (16), packed)) ¤È¤¹¤ë¡£
´Ø¿ô¤ò inline ¤ÈÀë¸À¤¹¤ë¤³¤È¤Ç¡¢¤½¤Î´Ø¿ô¤Î¥³¡¼¥É¤ò¸Æ½Ð¤·²Õ½ê¤ËÅý¹ç¤¹¤ë¤³¤È¤ò GNU CC ¤Ë»Ø¼¨¤¹¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢´Ø¿ô¸Æ½Ð¤·¤ÎÉé²Ù¤òºï½ü¤¹¤ë¤Î¤Ç¼Â¹Ô¤¬Â®¤¯¤Ê¤ë¡£¤µ¤é¤Ë¡¢¼Â°ú¿ôÃͤΤɤ줫¤¬Äê¿ô¤Ç¤¢¤ì¤Ð¡¢¤½¤ì¤é¤ÎÃͤ¬´ûÃΤǤ¢¤ë¤³¤È¤Ë¤è¤ê¡¢¥¤¥ó¥é¥¤¥ó»ØÄê¤Î¤Ä¤¤¤¿´Ø¿ô¤Î¥³¡¼¥É¤òÁ´¤Æ´Þ¤á¤ëɬÍפ¬Ìµ¤¤¤è¤¦¤Ë¡¢¥³¥ó¥Ñ¥¤¥ë»þ¤Î¥³¡¼¥É¤Îñ½ã²½¤¬²Äǽ¤Ë¤Ê¤ë¡£¥¤¥ó¥é¥¤¥óŸ³«¤Ë¤è¤ê¥³¡¼¥É¥µ¥¤¥º¤¬¤É¤¦¤Ê¤ë¤«¤Ïͽ¬¤¬Æñ¤·¤¤¡£¥¤¥ó¥é¥¤¥óŸ³«¤Ë¤è¤ê¡¢¥ª¥Ö¥¸¥§¥¯¥È¥³¡¼¥É¤ÏÂ礤¯¤Ê¤ë¤³¤È¤â¤¢¤ë¤·¡¢¾®¤µ¤¯¤Ê¤ë¤³¤È¤â¤¢¤ë¡£¸Ä¡¹¤Î¾ì¹ç¤Ë¤è¤ë¡£´Ø¿ô¤Î¥¤¥ó¥é¥¤¥óŸ³«¤ÏºÇŬ²½¤Î°ì¤Ä¤Ç¤¢¤ê¡¢ºÇŬ²½ÉÕ¤¥³¥ó¥Ñ¥¤¥ë¤Î¾ì¹ç¤Ë¤·¤«¼ÂºÝ¤Ë¤Ïµ¡Ç½¤·¤Ê¤¤¡£-O ¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¡¢¼ÂºÝ¤Ë¤Ï¤É¤Î´Ø¿ô¤â¥¤¥ó¥é¥¤¥óŸ³«¤µ¤ì¤Ê¤¤¡£
´Ø¿ô¤Î¥¤¥ó¥é¥¤¥óŸ³«¤òÀë¸À¤¹¤ë¤Ë¤Ï¡¢¤½¤ÎÀë¸À¤Ç inline ¤È¤¤¤¦¥¡¼¥ï¡¼¥É¤ò°Ê²¼¤Î¤è¤¦¤Ë»È¤¦¡£
inline int
inc (int *a)
{
(*a)++;
}
(ANSI C ¤Ë½àµò¤¹¤ë¥×¥í¥°¥é¥à¤Ç¼è¤ê¹þ¤Þ¤ì¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò³Æ¾ì¹ç¤Ï¡¢inline ¤ÎÂå¤ï¤ê¤Ë __inline__ ¤È½ñ¤¯¤è¤¦¤Ë¤¹¤ë¡£See Alternate Keywords¡£)
¡Ö½¼Ê¬Ã±½ã¡×¤Ê´Ø¿ô¤Ï¡¢-finline-functions ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢Á´¤Æ¥¤¥ó¥é¥¤¥óŸ³«´Ø¿ô¤È¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
´Ø¿ôÄêµÁÃæ¤Ç¤¢¤ëÆÃÄê¤Î»È¤¤Êý¤ò¤·¤Æ¤¤¤ë¤È¡¢¥¤¥ó¥é¥¤¥óŸ³«¤ËŬ¤µ¤Ê¤¯¤Ê¤ë¤³¤È¤ËÃí°Õ¡£¤½¤¦¤¤¤¦»È¤¤Êý¤Ë¤Ï¼¡¤Î¤â¤Î¤¬¤¢¤ë¡£varargs ¤ò»È¤Ã¤Æ¤¤¤ë¡¢alloca ¤ò»È¤Ã¤Æ¤¤¤ë¡¢²ÄÊÑĹ¥Ç¡¼¥¿·¿¤ò»È¤Ã¤Æ¤¤¤ë(see Variable Length)¡¢·×»»·Á goto ¤ò»È¤Ã¤Æ¤¤¤ë(see Labels as Values)¡¢Èó¶É½ê goto ¤ò»È¤Ã¤Æ¤¤¤ë¡¢Æþ¤ì»Ò´Ø¿ô¤ò»È¤Ã¤Æ¤¤¤ë(see Nested Functions)¡£-Winline ¤ò»ØÄꤹ¤ë¤È¡¢inline ÉÕ¤¤Î´Ø¿ô¤¬ÃÖ¤´¹¤¨²Äǽ¤Ç¤Ê¤¤¾ì¹ç¤Ï·Ù¹ð¤ò½Ð¤·¡¢²Äǽ¤Ç¤Ê¤¤Íýͳ¤òɽ¼¨¤¹¤ë¡£
C ¤È Objective C ¤Ç¤Ï¡¢C++ ¤È¤Ï°ã¤Ã¤Æ¡¢¥¡¼¥ï¡¼¥É inline ¤Ï¡¢´Ø¿ô¤Î¥ê¥ó¥±¡¼¥¸¤Ë¤Ï±Æ¶Á¤·¤Ê¤¤¤³¤È¤ËÃí°Õ¡£
GNU CC ¤Ï¡¢C++ ¥×¥í¥°¥é¥à¤Î¥¯¥é¥¹ËÜÂÎÆâ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥á¥ó¥Ð´Ø¿ô¤Ï¡¢ÌÀ¼¨Åª¤Ë inline ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤â¡¢¼«Æ°Åª¤Ë¥¤¥ó¥é¥¤¥óŸ³«¤¹¤ë¡£(¤³¤Î¸ú²Ì¤ò¤Ê¤¯¤¹¤Ë¤Ï¡¢-fno-default-inline ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¡£see Options Controlling C++ Dialect.)
¤¢¤ë´Ø¿ô¤¬¥¤¥ó¥é¥¤¥óŸ³«´Ø¿ô¤Ç¤¢¤ê static ¤Ç¤â¤¢¤ë¤È¤¡¢¤½¤Î´Ø¿ô¤Ø¤Î¸Æ½Ð¤·¤¬Á´¤Æ¸Æ½Ð¤·Â¦¤ËÅý¹ç¤µ¤ì¤Æ¡¢¤«¤Ä¤½¤Î´Ø¿ô¤Î¥¢¥É¥ì¥¹¤¬»È¤ï¤ì¤ë¤³¤È¤¬¤Ê¤¤¾ì¹ç¤Ï¡¢´Ø¿ô¼«¿È¤Î¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤Ï·è¤·¤Æ»²¾È¤µ¤ì¤ë¤³¤È¤¬¤Ê¤¤¡£¤³¤Î¾ì¹ç¡¢GNU CC ¤Ï¡¢-fkeep-inline-functions ¤ò»ØÄꤷ¤Ê¤¤¸Â¤ê¡¢¤½¤Î´Ø¿ô¤Î¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤ò¼ÂºÝ¤Ë¤Ï½ÐÎϤ·¤Ê¤¤¡£¸Æ½Ð¤·¤ÎÃæ¤Ë¤ÏÍÍ¡¹¤ÊÍýͳ(ÆÃ¤Ë¡¢´Ø¿ôÄêµÁ¤ÎÁ°¤Ë¤¢¤ë¸Æ½Ð¤·¤ä¡¢´Ø¿ôÄêµÁÆâ¤ÎºÆµ¢¸Æ½Ð¤·¤ÏÅý¹ç¤¬ÉÔ²Äǽ¤Ç¤¢¤ë)¤ËÅý¹ç¤Ç¤¤Ê¤¤¡£Åý¹ç¤µ¤ì¤Ê¤¤¸Æ½Ð¤·¤¬¤¢¤ë¤È¡¢¤½¤Î´Ø¿ô¤ÏÄ̾ï¤Î¤è¤¦¤Ë¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¡£´Ø¿ô¤Ï¡¢¥×¥í¥°¥é¥à¤¬¤½¤Î¥¢¥É¥ì¥¹¤ò»²¾È¤·¤Æ¤¤¤ë¾ì¹ç¤â¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¥¤¥ó¥é¥¤¥óŸ³«¤¬ÉÔ²Äǽ¤À¤«¤é¤Ç¤¢¤ë¡£
¥¤¥ó¥é¥¤¥ó´Ø¿ô¤¬ static ¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¾¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤«¤é¤Î¸Æ½Ð¤·¤¬¤¢¤ë¤³¤È¤òÁÛÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¥°¥í¡¼¥Ð¥ë¥·¥ó¥Ü¥ë¤Ï¤É¤ó¤Ê¥×¥í¥°¥é¥à¤Ç¤â°ì²Õ½ê¤Ç¤·¤«ÄêµÁ¤Ç¤¤Ê¤¤¤Î¤Ç¡¢¤½¤Î´Ø¿ô¤Ï¾¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ÇÄêµÁ¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢Â¾¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ë¤¢¤ë¸Æ½Ð¤·¤ÏÅý¹ç¤Ç¤¤Ê¤¤¤Î¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¡¢Èó static ¥¤¥ó¥é¥¤¥ó´Ø¿ô¤Ï¾ï¤ËÉáÄ̤ηÁ¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¡£
´Ø¿ôÄêµÁ¤Ë inline ¤È extern ¤ÎξÊý¤ò»ØÄꤹ¤ë¤È¡¢¤½¤ÎÄêµÁ¤Ï¥¤¥ó¥é¥¤¥óŸ³«¤Ç¤Î¤ß»È¤ï¤ì¤ë¡£´Ø¿ôÄêµÁ¼«ÂΤ¬¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤³¤È¤Ï·è¤·¤Æ¤Ê¤¤¡£¤½¤Î´Ø¿ô¤Î¥¢¥É¥ì¥¹¤òÌÀ¼¨Åª¤Ë»²¾È¤·¤Æ¤â¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Ê¤¤¤Î¤Ç¤¢¤ë¡£¤½¤Î¤è¤¦¤Ê¥¢¥É¥ì¥¹¤Ï¡¢´Ø¿ô¤òÀë¸À¤·¤¿¤À¤±¤ÇÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Î¤è¤¦¤Ë¡¢³°Éô»²¾È¤Ë¤Ê¤ë¡£
inline ¤È extern ¤ò¤³¤Î¤è¤¦¤ËÁȤ߹ç¤ï¤»¤ë¤È¡¢¤Û¤È¤ó¤É¥Þ¥¯¥í¤ÈƱ¤¸¸ú²Ì¤Ë¤Ê¤ë¡£¤³¤ì¤Î»È¤¤Êý¤Ï¡¢¤³¤ÎÆó¤Ä¤Î¥¡¼¥ï¡¼¥É¤òÉÕ¤±¤¿´Ø¿ôÄêµÁ¤ò¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ËÃÖ¤¤¤Æ¤ª¤¡¢¤³¤ÎÄêµÁ¤Î¥³¥Ô¡¼(inline ¤È extern ¤òÉÕ¤±¤Ê¤¤¤â¤Î)¤ò¥é¥¤¥Ö¥é¥ê¥Õ¥¡¥¤¥ë¤ËÃÖ¤¤¤Æ¤ª¤¯¤Î¤Ç¤¢¤ë¡£¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÎÊý¤Î´Ø¿ôÄêµÁ¤Ï¡¢¤³¤Î´Ø¿ô¤Î¤Û¤È¤ó¤É¤Î¸Æ½Ð¤·¤ò¥¤¥ó¥é¥¤¥óŸ³«¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¡£¤³¤Î´Ø¿ô¤Î¤½¤ì°Ê³°¤Î»È¤¤Êý¤ò¤¹¤ì¤Ð¡¢¥é¥¤¥Ö¥é¥êÃæ¤Î°ì¸Ä¤Î¥³¥Ô¡¼¤ÎÊý¤ò»²¾È¤¹¤ë¡£
GNU C ¤Ï¡¢ºÇŬ²½¤ò¹Ô¤ï¤Ê¤¤¾ì¹ç¤Ï¤É¤ó¤Ê´Ø¿ô¤â¥¤¥ó¥é¥¤¥óŸ³«¤·¤Ê¤¤¡£¤³¤¦¤¤¤¦¾ì¹ç¤Ë¥¤¥ó¥é¥¤¥óŸ³«¤·¤¿Êý¤¬Îɤ¤¤Î¤«¤É¤¦¤«¤Ï¤Ã¤¤ê¤·¤Æ¤¤¤Ê¤¤¡£¤À¤¬¡¢ºÇŬ²½¤ò¹Ô¤ï¤Ê¤¤¾ì¹ç¤ÎÀµ¤·¤¤¼ÂÁõ¤¬Æñ¤·¤¤¤È¤¤¤¦¤³¤È¤¬È½¤Ã¤¿¤Î¤Ç¡¢²æ¡¹¤Ï´Êñ¤ÊÊý¤Ë¤·¤¿¡£¤¹¤Ê¤ï¤Á¡¢¥¤¥ó¥é¥¤¥óŸ³«¤ò¤·¤Ê¤¤¤³¤È¤Ë¤·¤¿¡£
asm ¤ò»È¤Ã¤¿¾ì¹ç¤Î¥¢¥»¥ó¥Ö¥éÌ¿Îá¤Ç¡¢¤½¤ÎÌ¿Îá¤Î¥ª¥Ú¥é¥ó¥É¤òC ¤Î¼°¤ò»È¤Ã¤Æ»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤³¤ì¤Ï¡¢ÆÉ¼Ô¤¬»È¤¤¤¿¤¤¥Ç¡¼¥¿¤¬¤É¤Î¥ì¥¸¥¹¥¿¤Ë¤¢¤ë¤Î¤«¡¢¥á¥â¥ê¤Î¤É¤³¤Ë¤¢¤ë¤Î¤«¤ò¹Í¤¨¤ëɬÍפ¬¤Ê¤¤¤È¤¤¤¦¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
¥Þ¥·¥óµ½Ò¤Ë¸½¤ì¤ë¤è¤¦¤Ê¥¢¥»¥ó¥Ö¥éÌ¿Îá¤Î¥Æ¥ó¥×¥ì¡¼¥È¡¢¤½¤ì¤Ë³Æ¥ª¥Ú¥é¥ó¥É¤ËÂФ¹¤ë¥ª¥Ú¥é¥ó¥ÉÀ©Ìóʸ»úÎó¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
Î㤨¤Ð¡¢°Ê²¼¤Ë 68881 ¤Î fsinx Ì¿Îá¤Î»È¤¤Êý¤ò¼¨¤¹¡£
asm ("fsinx %1,%0" : "=f" (result) : "f" (angle));
¤³¤³¤Ç¡¢angle ÆþÎÏ¥ª¥Ú¥é¥ó¥É¤òɽ¤¹ C ¤Î¼°¤Ç¤¢¤ê¡¢result ¤Ï½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤òɽ¤¹ C ¤Î¼°¤Ç¤¢¤ë¡£¤½¤ì¤¾¤ì¡¢"f" ¤ò¥ª¥Ú¥é¥ó¥ÉÀ©Ìó¤È¤·¤Æ»ý¤Á¡¢ÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿¤¬É¬ÍפǤ¢¤ë»ö¤ò¼¨¤·¤Æ¤¤¤ë¡£=f ¤Î = ¤Ï¡¢¥ª¥Ú¥é¥ó¥É¤¬½ÐÎϤǤ¢¤ë¤³¤È¤òɽ¤·¤Æ¤¤¤ë¡£½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤ÎÀ©Ìó¤ÏÁ´¤Æ = ¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£À©Ìó¤Î½ñ¤Êý¤Ï¥Þ¥·¥óµ½Ò¤Ç»È¤ï¤ì¤Æ¤¤¤ë¤â¤Î¤ÈƱ¤¸¤Ç¤¢¤ë(see Constraints)¡£
³Æ¥ª¥Ú¥é¥ó¥É¤Ï°ì¸Ä¤Î¥ª¥Ú¥é¥ó¥ÉÀ©Ìóʸ»úÎó¤È¤½¤ì¤Ë³¤¯³ç¸Ì¤ËÆþ¤Ã¤¿ C ¤Î¼°¤Çµ½Ò¤µ¤ì¤ë¡£¥³¥í¥ó¤Ç¥¢¥»¥ó¥Ö¥é¥Æ¥ó¥×¥ì¡¼¥È¤È½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤ÎÀèÆ¬¤ò¶èÀڤꡢ¤â¤¦°ì¤Ä¤Î¥³¥í¥ó¤ÇºÇ¸å¤Î½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤ÈÆþÎÏ¥ª¥Ú¥é¥ó¥É¤ÎÀèÆ¬¤ò¶èÀڤ롣¥«¥ó¥Þ¤Ç¡¢¤½¤ì¤¾¤ì¤Î¥°¥ë¡¼¥×¤Î¥ª¥Ú¥é¥ó¥É¤ò¶èÀڤ롣¥ª¥Ú¥é¥ó¥É¤ÎÁí¿ô¤Ï¡¢10 ¤«¡¢¥Þ¥·¥óµ½ÒÃæ¤ÎÌ¿Îá¥Ñ¥¿¡¼¥ó¤Ç»È¤ï¤ì¤Æ¤¤¤ë¤â¤Î¤ÎÃæ¤ÇºÇÂç¤Î¥ª¥Ú¥é¥ó¥É¿ô¤«¡¢¤É¤Á¤é¤«Â礤¤¤Û¤¦¤ËÀ©¸Â¤µ¤ì¤ë¡£
½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤Ï¤Ê¤¤¤¬¡¢ÆþÎÏ¥ª¥Ú¥é¥ó¥É¤Ï¤¢¤ë¤È¤¤¤¦¾ì¹ç¤Ï¡¢½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤¬ËÜÍèÃÖ¤«¤ì¤ë¾ì½ê¤ò°Ï¤à¤è¤¦¤Ë¥³¥í¥ó¤òÆó¤Ä³¤±¤ÆÃÖ¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤Î¼°¤Ïº¸ÊÕÃͤǤʤ±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£GNU CC ¤Ï¤³¤ì¤ò¸¡ºº¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£ÆþÎÏ¥ª¥Ú¥é¥ó¥É¤Ïº¸ÊÕÃͤǤ¢¤ëɬÍפϤʤ¤¡£GNU CC ¤Ï¡¢¥ª¥Ú¥é¥ó¥É¤Î¥Ç¡¼¥¿·¿¤¬¼Â¹Ô¤µ¤ì¤ëÌ¿Îá¤ËŬÀڤʤâ¤Î¤«¤É¤¦¤«¤Î¸¡ºº¤Ï¹Ô¤¨¤Ê¤¤¡£¥¢¥»¥ó¥Ö¥éÌ¿Îá¥Æ¥ó¥×¥ì¡¼¥È¤Î¹½Ê¸²òÀϤϹԤï¤Ê¤¤¤Î¤Ç¡¢¤½¤ì¤¬²¿¤ò°ÕÌ£¤¹¤ë¤â¤Î¤«¡¢¤¢¤ë¤¤¤Ï¤½¤ì¤¬¥¢¥»¥ó¥Ö¥é¤Ø¤ÎÆþÎϤȤ·¤ÆÍ¸ú¤Ê¤â¤Î¤«¤É¤¦¤«¤µ¤¨¤âȽ¤é¤Ê¤¤¤Î¤Ç¤¢¤ë¡£³ÈÄ¥¤µ¤ì¤¿ asm ¤Îµ¡Ç½¤¬¤â¤Ã¤È¤âÎɤ¯»È¤ï¤ì¤ë¤Î¤Ï¡¢GNU CC ¤¬¤½¤Î¸ºß¤òÃΤé¤Ê¤¤¤è¤¦¤Êµ¡³£¸ìÌ¿Îá¤ËÂФ·¤Æ¤Ç¤¢¤ë¡£½ÐÎϼ°¤¬Ä¾ÀÜ¥¢¥É¥ì¥¹¤ò»ØÄê¤Ç¤¤Ê¤¤¤â¤Î¤Ç¤¢¤ë¾ì¹ç¤Ï(Î㤨¤Ð¡¢¥Ó¥Ã¥È¡¼¥Õ¥£¡¼¥ë¥É)¡¢À©Ìó¤Ç¥ì¥¸¥¹¥¿¤òµö¤¹¤è¤¦¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤½¤Î¾ì¹ç¡¢GNU CC ¤Ï asm ¤Î½ÐÎϤȤ·¤Æ¥ì¥¸¥¹¥¿¤ò»È¤¤¡¢¤½¤Î¸å¤½¤Î¥ì¥¸¥¹¥¿¤ò½ÐÎÏÀè¤Ë³ÊǼ¤¹¤ë¡£
Ä̾ï¤Î½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤Ï½ñ¤¹þ¤ßÀìÍѤǤʤ±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£GNU CC ¤Ï¡¢¸½ºß¤ÎÌ¿Îá¤ÎÁ°¤Ë¤³¤ì¤é¤Î¥ª¥Ú¥é¥ó¥É¤ËÆþ¤Ã¤Æ¤¤¤¿Ãͤϻà¤ó¤Ç¤ª¤ê¡¢À¸À®¤¹¤ëɬÍפ¬¤Ê¤¤¤ÈÁÛÄꤹ¤ë¡£³ÈÄ¥ asm ¤Ï¡¢ÆþÎÏ¡¿½ÐÎÏξÍÑ¡¢¤¢¤ë¤¤¤ÏÆÉ¤ß½ñ¤Î¾ÍѤΥª¥Ú¥é¥ó¥É¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£¤½¤¦¤¤¤¦¥ª¥Ú¥é¥ó¥É¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹¤Ë¤ÏÀ©Ìóʸ»ú + ¤ò»È¤¤¡¢½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤È¤·¤ÆÎóµó¤¹¤ë¡£
ÆÉ¤ß½ñ¤Î¾ÍѤΥª¥Ú¥é¥ó¥É(¤¢¤ë¤¤¤Ï°ìÉô¤Î¥Ó¥Ã¥È¤·¤«ÊѲ½¤·¤Ê¤¤¥ª¥Ú¥é¥ó¥É)
¤ËÂФ¹¤ëÀ©Ì󤬥쥸¥¹¥¿¤òµö¤·¤Æ¤¤¤ë¤Ê¤é¡¢Ê̤ÎÁªÂò»è¤È¤·¤Æ¡¢ÏÀÍýŪ¤Ë¤Ï¤½¤Îµ¡Ç½¤òÆó¤Ä¤ÎÊÌ¡¹¤Î¥ª¥Ú¥é¥ó¥É¤Ëʬ³ä¤·¡¢°ì¤Ä¤òÆþÎÏ¥ª¥Ú¥é¥ó¥É¡¢¤â¤¦°ì¤Ä¤ò½ñ¤¹þ¤ßÀìÍѽÐÎÏ¥ª¥Ú¥é¥ó¥É¤È¤¹¤ë¤³¤È¤â¤Ç¤¤ë¡£¤³¤ÎÆó¤Ä¤Î¥ª¥Ú¥é¥ó¥É¤Î´Ö¤Î´Ø·¸¤Ï¡¢À©Ìó¤Ë¤è¤ê¡¢Ì¿Îá¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë¤ÏÆó¤Ä¤Î¥ª¥Ú¥é¥ó¥É¤¬Æ±¤¸°ÌÃ֤ˤ¢¤ëɬÍפ¬¤¢¤ë¤È»ØÄꤹ¤ë¤³¤È¤Ç¡¢É½¤µ¤ì¤ë¡£Î¾Êý¤Î¥ª¥Ú¥é¥ó¥É¤ËƱ¤¸ C ¤Î¼°¤ò»È¤¦¤³¤È¤â½ÐÍè¤ë¤·¡¢°ã¤¦¼°¤ò»È¤Ã¤Æ¤âÎɤ¤¡£Î㤨¤Ð¡¢°Ê²¼¤Ç¤Ï¡¢(²Í¶õ¤Î) combine Ì¿Îá¤ò bar ¤òÆÉ¤ß¤À¤·ÀìÍÑÆÉ¤ß¤À¤·¸µ¥ª¥Ú¥é¥ó¥É¤È¤·¤Æ¡¢foo ¤òÆÉ¤ß½ñ¤Î¾ÍÑÌÜŪÀ襪¥Ú¥é¥ó¥É¤È¤·¤Æ½ñ¤¤¤Æ¤¤¤ë¡£
asm ("combine %2,%0" : "=r" (foo) : "0" (foo), "g" (bar));
¥ª¥Ú¥é¥ó¥É 1 ¤ÎÀ©Ìó "0" ¤Ï¡¢¥ª¥Ú¥é¥ó¥É 0 ¤ÈƱ¤¸°ÌÃÖ¤òÀê¤á¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤È¤¤¤¦¤³¤È¤òɽ¤¹¡£À©Ìó¤ÎÃæ¤Ë¿ô»ú¤òÃÖ¤¯¤Î¤ÏÆþÎÏ¥ª¥Ú¥é¥ó¥É¤Î¾ì¹ç¤À¤±µö¤µ¤ì¡¢¤½¤ì¤Ï½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤ò»²¾È¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
À©Ìó¤ÎÃæ¤Î¿ô»ú¤À¤±¤¬¡¢°ì¤Ä¤Î¥ª¥Ú¥é¥ó¥É¤¬¤â¤¦°ì¤ÄÊ̤Υª¥Ú¥é¥ó¥É¤ÈƱ¤¸°ÌÃ֤ˤʤ뤳¤È¤òÊݾڤǤ¤ë¡£Ã±¤Ë foo ¤¬Î¾Êý¤Î¥ª¥Ú¥é¥ó¥É¤ÎÃͤˤʤäƤ¤¤ë¤È¤¤¤¦¤À¤±¤Ç¤Ï¡¢À¸À®¤µ¤ì¤ë¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤ÇƱ¤¸°ÌÃ֤ˤʤë¤È¤¤¤¦¤³¤È¤òÊݾڤ¹¤ë¤Ë¤Ï½¼Ê¬¤Ç¤Ï¤Ê¤¤¡£°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¤¤¿¤Î¤Ç¤ÏÀµ¤·¤¯Æ°ºî¤·¤Ê¤¤¡£
asm ("combine %2,%0" : "=r" (foo) : "r" (foo), "g" (bar));
¿§¡¹¤ÊºÇŬ²½¤äºÆ¥í¡¼¥É¤Ë¤è¤ê¡¢¥ª¥Ú¥é¥ó¥É 0 ¤È 1 ¤¬°Û¤Ê¤ë¥ì¥¸¥¹¥¿¤ËÃÖ¤«¤ì¤ë²ÄǽÀ¤Ï¤¢¤ë¡£GNU CC ¤Ï¡¢¤½¤¦¤·¤Ê¤¤Íýͳ¤Ï¤Ê¤¤¤È¤¤¤¦¤³¤È¤òÃΤäƤ¤¤ë¡£Î㤨¤Ð¡¢GCC ¤Ï foo ¤ÎÃͤΥ³¥Ô¡¼¤¬°ì¤Ä¤Î¥ì¥¸¥¹¥¿¤Ë¤¢¤ë¤³¤È¤ò¸«¤Ä¤±¡¢¥ª¥Ú¥é¥ó¥É 1 ÍѤˤ½¤ì¤ò»È¤¦¤¬¡¢¥ª¥Ú¥é¥ó¥É 0 ¤òÊ̤Υ쥸¥¹¥¿¤Ë½ÐÎϤ¹¤ë¤«¤â¤·¤ì¤Ê¤¤(¸å¤Ç foo ¼«¿È¤Î¥¢¥É¥ì¥¹¤Ë¥³¥Ô¡¼¤¹¤ë)¡£ÅöÁ³¡¢¥ª¥Ú¥é¥ó¥É 1 ÍѤΥ쥸¥¹¥¿¤Ï¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤Ç¤Ï¸ÀµÚ¤µ¤¨¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢¤½¤Î·ë²Ì¤Ïưºî¤·¤Ê¤¤¤Î¤À¤¬¡¢GNU CC ¤Ë¤Ï¤½¤ì¤¬È½¤é¤Ê¤¤¤Î¤Ç¤¢¤ë¡£
Ì¿Îá¤Ë¤è¤Ã¤Æ¤ÏÆÃÄê¤Î¥Ï¡¼¥É¥ì¥¸¥¹¥¿¤ò¾å½ñ¤¤¹¤ë¤â¤Î¤¬¤¢¤ë¡£¤³¤Î¤³¤È¤òµ½Ò¤¹¤ë¤Ë¤Ï¡¢ÆþÎÏ¥ª¥Ú¥é¥ó¥É¤Î¸å¤í¤Ë3ÈÖÌܤΥ³¥í¥ó¤òÃÖ¤¡¢¤½¤Î¸å¤Ë¾å½ñ¤¤µ¤ì¤ë¥Ï¡¼¥É¥ì¥¸¥¹¥¿Ì¾¤ò¡¢¥ì¥¸¥¹¥¿°ì¤Ä¤ò°ì¤Ä¤Îʸ»úÎó¤È¤·¤ÆÃÖ¤¯¡£°Ê²¼¤Ë VAX ÍѤμºݤÎÎã¤ò¼¨¤¹¡£
asm volatile ("movc3 %0,%1,%2"
: /* no outputs */
: "g" (from), "g" (to), "g" (count)
: "r0", "r1", "r2", "r3", "r4", "r5");
ÆþÎÏ¥ª¥Ú¥é¥ó¥É¤È½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤¬½Å¤Ê¤ë¤è¤¦¤ÊÇ˲õ»ØÄê¤Ï¥¨¥é¡¼¤Ç¤¢¤ë(Î㤨¤Ð¡¢°ì¤Ä¤Î¥á¥ó¥Ð¤«¤é¤Ê¤ë¥ì¥¸¥¹¥¿¥¯¥é¥¹¤òµ½Ò¤¹¤ë¥ª¥Ú¥é¥ó¥É¤òÇ˲õ¤µ¤ì¤ë¥ê¥¹¥È¤Ç¸ÀµÚ¤¹¤ë¤³¤È)¡£°ìÈ֤Ϥä¤ê¤·¤Æ¤¤¤ëÎã¤Ï¡¢ÆþÎÏ¥ª¥Ú¥é¥ó¥É¤¬Êѹ¹¤ò¼õ¤±¤ë¤Î¤Ë¡¢½ÐÎϤȤ·¤Æ»È¤ï¤ì¤Æ¤¤¤Ê¤¤¤È¤¤¤¦µ½Ò¤ò¹Ô¤¦¤Î¤ÏÀµ¤·¤¯¤Ê¤¤¡£¤¤¤º¤ì¤Ë¤·¤Æ¤âÆþÎÏ¥ª¥Ú¥é¥ó¥É¤È½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤È¤·¤Æ»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¡£»È¤ï¤ì¤Ê¤¤½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤·¤«¤Ê¤¤¾ì¹ç¤Ï¡¢°Ê²¼¤ÇÀâÌÀ¤¹¤ë¤è¤¦¤Ë¡¢asm ʬ¤Ë volatile ¤ò»ØÄꤹ¤ëɬÍפ⤢¤ë¡£
¤³¤Î¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤«¤éÆÃÄê¤Î¥Ï¡¼¥É¥¦¥§¥¢¥ì¥¸¥¹¥¿¤ò»²¾È¤¹¤ë¾ì¹ç¤Ï¡¢¤ª¤½¤é¤¯¡¢»°ÈÖÌܤΥ³¥í¥ó¤Î¸å¤Ë¤½¤Î¥ì¥¸¥¹¥¿¤òÎóµó¤·¤Æ¡¢GCC ¤ËÂФ·¤Æ¤½¤Î¥ì¥¸¥¹¥¿¤ÎÃͤ¬Êѹ¹¤ò¼õ¤±¤ë¤³¤È¤òÃΤ餻¤ëɬÍפ¬¤¢¤ë¤À¤í¤¦¡£
ÆÉ¼Ô¤Î½ñ¤¤¤¿¥¢¥»¥ó¥Ö¥éÌ¿Î᤬¾ò·ï¥³¡¼¥É¥ì¥¸¥¹¥¿¤òÊѹ¹¤·ÆÀ¤ë¤Ê¤é¡¢cc ¤òÇ˲õ¤µ¤ì¤ë¥ì¥¸¥¹¥¿¤Î¥ê¥¹¥È¤ËÆþ¤ì¤Æ¤ª¤¯¡£¤¤¤¯¤Ä¤«¤Îµ¡¼ï¤Ç¤Ï GNU CC ¤Ï¡¢¾ò·ï¥³¡¼¥É¤ò¤¢¤ëÆÃÄê¤Î¥Ï¡¼¥É¥¦¥§¥¢¥ì¥¸¥¹¥¿¤Çɽ¸½¤¹¤ë¡£¤½¤ì°Ê³°¤Îµ¡¼ï¤Ç¤Ï¡¢¾ò·ï¥³¡¼¥É¤Ï°ã¤¦¼è°·¤¤¤ò¼õ¤±¤ë¤Î¤Ç¡¢cc ¤ò»ØÄꤷ¤Æ¤â°ÕÌ£¤¬¤Ê¤¤¡£¤À¤¬¡¢¤É¤ó¤Êµ¡¼ï¤Ç¤â¥³¡¼¥É¤È¤·¤Æ¤Ï͸ú¤Ç¤¢¤ë¡£
ÆÉ¼Ô¤Î½ñ¤¤¤¿¥¢¥»¥ó¥Ö¥éÌ¿Î᤬ͽ´ü¤Ç¤¤Ê¤¤·Á¤Ç¥á¥â¥ê¤òÊѹ¹¤¹¤ë¤Ê¤é¡¢memory ¤òÇ˲õ¤µ¤ì¤ë¥ì¥¸¥¹¥¿¤Î¥ê¥¹¥È¤ËÄɲ䷤Ƥª¤¯¡£¤³¤¦¤¹¤ë¤È¡¢GCC ¤Ï¡¢¤½¤Î¥¢¥»¥ó¥Ö¥éÌ¿Îá¤ò±Û¤¨¤Æ¤Ï¡¢¥á¥â¥êÃͤò¥ì¥¸¥¹¥¿¤Ë¥¥ã¥Ã¥·¥å¤·¤Æ¤ª¤¯¤³¤È¤Ï¤·¤Ê¤¤¡£
Ê£¿ô¤Î¥¢¥»¥ó¥Ö¥éÌ¿Îá¤ò¤Þ¤È¤á¤Æ°ì¸Ä¤Î asm ¥Æ¥ó¥×¥ì¡¼¥È¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤½¤Î¾ì¹ç¡¢¤½¤ì¤¾¤ì¤ò²þ¹Ô(\n ¤È½ñ¤¯)¤«¥¢¥»¥ó¥Ö¥é¤¬µö¤¹¤Ê¤é¡¢¥»¥ß¥³¥í¥ó¤Ç¶èÀڤ롣GNU ¥¢¥»¥ó¥Ö¥é¤Ï¥»¥ß¥³¥í¥ó¤¬»È¤¨¤ë¤·¡¢¤Û¤È¤ó¤É¤Î Unix ¥¢¥»¥ó¥Ö¥é¤Ç¤â»È¤¨¤ë¤è¤¦¤À¡£ÆþÎÏ¥ª¥Ú¥é¥ó¥É¤Ï¤É¤ÎÇ˲õ¥ì¥¸¥¹¥¿¤â»È¤ï¤Ê¤¤¤³¤È¡¢¤½¤·¤Æ¡¢½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤Î¥¢¥É¥ì¥¹¤â»È¤ï¤ì¤Ê¤¤¤³¤È¤¬Êݾڤµ¤ì¤Æ¤¤¤ë¡£¤³¤Î¤¿¤á¡¢Ç˲õ¥ì¥¸¥¹¥¿¤Ï¹¥¤¤Ê¤À¤±²¿Å٤ǤâÆÉ¤ß½ñ¤¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£°ì¸Ä¤Î¥Æ¥ó¥×¥ì¡¼¥È¤ËÊ£¿ô¤ÎÌ¿Îá¤òÆþ¤ì¤ëÎã¤ò°Ê²¼¤Ë¼¨¤¹¡£¥µ¥Ö¥ë¡¼¥Á¥ó _foo ¤Ï¥ì¥¸¥¹¥¿ 9 ¤È 10 ¤Ç°ú¿ô¤ò¼õ¤±¼è¤ë¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤ë¡£
asm ("movl %0,r9;movl %1,r10;call _foo"
: /* no outputs */
: "g" (from), "g" (to)
: "r9", "r10");
½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤Ë & À©Ì󽤾þ»Ò¤¬¤Ê¤¤¸Â¤ê¡¢GNU CC ¤Ï¡¢´Ø·¸¤Î¤Ê¤¤ÆþÎÏ¥ª¥Ú¥é¥ó¥É¤ÈƱ¤¸¥ì¥¸¥¹¥¿¤Ë¤½¤ì¤ò³ä¤êÅö¤Æ¤ë¡£¤³¤Î»þ¡¢ÆþÎϤϽÐÎϤ¬À¸À®¤µ¤ì¤ëÁ°¤Ë¾ÃÈñ¤µ¤ì¤ë¤È¤¤¤¦ÁÛÄê¤ò¹Ô¤¦¡£¤³¤ÎÁÛÄê¤Ï¡¢¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤¬¼ÂºÝ¤ËÊ£¿ô¤ÎÌ¿Îᤫ¤éÀ®¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ïµ¶¤Ë¤Ê¤ë²ÄǽÀ¤¬¤¢¤ë¡£¤½¤¦¤¤¤¦¾ì¹ç¡¢ÆþÎϤȽŤʤäƤϤʤé¤Ê¤¤½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤Ë¤Ï¤½¤ì¤¾¤ì& ¤òÉÕ¤±¤ë¤³¤È¡£ See Modifiers¡£
¥¢¥»¥ó¥Ö¥éÌ¿Îá¤Ë¤è¤êÀ¸À®¤µ¤ì¤ë¾ò·ï¥³¡¼¥É¤ò¥Æ¥¹¥È¤·¤¿¤¤¾ì¹ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢asm ¹½Ê¸¤Ëʬ´ô¤ÈÌ¿Îá¤ò´Þ¤á¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
asm ("clr %0;frob %1;beq 0f;mov #1,%0;0:"
: "g" (result)
: "g" (input));
¤³¤ì¤Ï¥¢¥»¥ó¥Ö¥é¤¬¡¢GNU ¥¢¥»¥ó¥Ö¥é¤ä¤Û¤È¤ó¤É¤Î Unix ¤Î¥¢¥»¥ó¥Ö¥é¤Î¤è¤¦¤Ë¡¢¥í¡¼¥«¥ë¥é¥Ù¥ë¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤ë¡£
¥é¥Ù¥ë¤Ë¤Ä¤¤¤Æ¸À¤¨¤Ð¡¢°ì¤Ä¤Î asm ¤«¤éÊ̤Πasm ¤Ø¤Î¥¸¥ã¥ó¥×¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£GCC ¤ÎºÇŬ²½´ï¤Ï¤½¤¦¤¤¤¦¥¸¥ã¥ó¥×¤Ë¤Ä¤¤¤Æ¤ÏÃΤé¤Ê¤¤¤Î¤Ç¡¢¤É¤Î¤è¤¦¤ËºÇŬ²½¤¹¤ë¤«¤ò·è¤á¤ë¤È¤¤Ë¹Íθ¤Ë¤¤¤ì¤ë¤³¤È¤¬¤Ç¤¤Ê¤¤¤Î¤Ç¤¢¤ë¡£
ÉáÄÌ¡¢¤³¤ì¤é¤Î asm Ì¿Îá¤òºÇ¤â¼ê·Ú¤Ë»È¤¦¤Ë¤Ï¡¢´Ø¿ô¤Î¤è¤¦¤Ë¸«¤¨¤ë¥Þ¥¯¥í¤Ë²¡¤·¹þ¤á¤ë¤³¤È¤Ç¤¢¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ë¡£
#define sin(x) \
({ double __value, __arg = (x); \
asm ("fsinx %1,%0": "=f" (__value): "f" (__arg)); \
__value; })
¤³¤³¤Ç¤Ï¡¢ÊÑ¿ô __arg ¤ò»È¤Ã¤Æ¡¢Ì¿Î᤬ŬÀÚ¤Ê double ·¿¤ÎÃͤ˺îÍѤ¹¤ë¤³¤È¡¢¤½¤ì¤Ë°ú¿ô x ¤È¤·¤Æ¼«Æ°Åª¤Ë double ·¿¤ËÊÑ´¹²Äǽ¤Ê¤â¤Î¤À¤±¤ò¼õ¤±ÉÕ¤±¤ë¤³¤È¤òÊݾڤ·¤Æ¤¤¤ë¡£
Ì¿Î᤬Àµ¤·¤¤¥Ç¡¼¥¿·¿¤ËºîÍѤ¹¤ë¤³¤È¤òÊݾڤ¹¤ë¤â¤¦°ì¤Ä¤ÎÊýË¡¤Ï¡¢asm ¤ÎÃæ¤Ç¥¥ã¥¹¥È¤ò»È¤¦¤³¤È¤Ç¤¢¤ë¡£¤³¤ì¤Ï¡¢ÊÑ¿ô __arg ¤ò»È¤¦ÊýË¡¤È¤Ï¡¢¤µ¤é¤Ëº¹°Û¤ÎÂ礤ʷ¿¤ËÊÑ´¹¤¹¤ë¤È¤¤¤¦ÅÀ¤Ë¤ª¤¤¤Æ°Û¤Ê¤ë¡£Î㤨¤Ð¡¢Ë¾¤Þ¤·¤¤·¿¤¬ int ¤À¤È¤¹¤ë¤È¡¢°ú¿ô¤ò int ¤Ë¥¥ã¥¹¥È¤·¤¿¾ì¹ç¡¢¤½¤Î°ú¿ô¤È¤·¤Æ¥Ý¥¤¥ó¥¿¤ò²¿¤ÎÉÔËþ¤â¤Ê¤¯¼õ¤±ÉÕ¤±¤ë¡£°ìÊý¡¢¤½¤Î°ú¿ô¤ò¡¢__arg ¤Ç»ØÄꤵ¤ì¤ë int ·¿¤ÎÊÑ¿ô¤ËÂåÆþ¤¹¤ë¤È¡¢¸Æ½Ð¤·Â¦¤ÇÌÀ¼¨Åª¤Ë¥¥ã¥¹¥È¤·¤Æ¤¤¤Ê¤¤¸Â¤ê¡¢¥Ý¥¤¥ó¥¿·¿¤ò»È¤¦¤È·Ù¹ð¤¬¤Ç¤ë¡£
asm ʸ¤Ë½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤¬¤¢¤ë¤È¡¢GNU CC ¤ÏºÇŬ²½ÌÜŪ¤Î¤¿¤á¤Ë¤½¤ÎÌ¿Îá¤Ë¡¢½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤òÊѹ¹¤¹¤ë°Ê³°¤ÎÉûºîÍѤ¬¤Ê¤¤¤³¤È¤òÁÛÄꤹ¤ë¡£¤³¤ì¤ÏÉûºîÍѤ¬¤¢¤ëÌ¿Îá¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤Ï¤Ê¤¤¤¬¡¢Ãí°Õ¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£GCC ¤Ï¡¢½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤¬»È¤ï¤ì¤Æ¤¤¤Ê¤¤¤È¤½¤ÎÌ¿Îá¤ò¾Ãµî¤·¤¿¤ê¡¢¥ë¡¼¥×¤Î³°Â¦¤Ë°Üư¤·¤¿¤ê¡¢¶¦ÄÌÉôʬ¼°¤ò¹½À®¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤ÏÆó¤Ä¤ÎÌ¿Îá¤ò°ì¤Ä¤ËÃÖ¤´¹¤¨¤¿¤ê¤¹¤ë¤«¤é¤Ç¤¢¤ë¡£¤Þ¤¿¡¢ÆÉ¼Ô¤ÎÌ¿Îá¤ËÊÑ¿ô¤Ë¤Ä¤¤¤ÆÉûºîÍѤ¬¤¢¤ê¡¢¤½¤ÎÊÑ¿ô¤¬¤½¤ì°Ê³°¤Ë¤ÏÊѹ¹¤ò¼õ¤±¤Ê¤¤¤â¤Î¤Ë¸«¤¨¤¿¤Ê¤é¡¢¤½¤ÎÊÑ¿ô¤Î¸µ¤ÎÃͤϡ¢¥ì¥¸¥¹¥¿¤Ë»Ä¤Ã¤Æ¤¤¤ì¤Ð¡¢¸å¤ÇºÆ»ÈÍѤµ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£
asm ¤Î¸å¤Ë¥¡¼¥ï¡¼¥É volatile ¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢¤½¤Î asm Ì¿Î᤬ºï½ü¤µ¤ì¤¿¤ê¡¢Ãø¤·¤¯°Üư¤µ¤ì¤¿¤ê¡¢ÁȤ߹ç¤ï¤»¤é¤ì¤¿¤ê¤¹¤ë¤Î¤òÈò¤±¤ë¤³¤È¤¬¤Ç¤¤ë¡£
#define get_and_set_priority(new) \
({ int __old; \
asm volatile ("get_and_set_priority %0, %1": "=g" (__old) : "g" (new)); \
__old; })
½ÐÎϤΤʤ¤ asm Ì¿Îá¤ò½ñ¤¯¤È¡¢GNU CC ¤Ï¤½¤ÎÌ¿Îá¤ËÉûºîÍѤ¬¤¢¤ë¤³¤È¤òÃΤꡢ¤½¤ÎÌ¿Îá¤ò¾Ã¤·¤¿¤ê¥ë¡¼¥×¤Î³°Â¦¤Ë°Üư¤·¤¿¤ê¤·¤Ê¤¤¡£ÆÉ¼Ô¤Î½ñ¤¤¤¿Ì¿Îá¤ÎÉûºîÍѤ¬½ã¿è¤Ë³°ÉôŪ¤Ê¤â¤Î¤Ç¤Ê¤¤¤¬¡¢ÆþÎϤòÆÉ¤ß¹þ¤ß¡¢»ØÄꤵ¤ì¤¿¥ì¥¸¥¹¥¿¤ä¥á¥â¥ê¤òÇ˲õ¤¹¤ë°Ê³°¤ÎÊýË¡¤ÇÆÉ¼Ô¤Î¥×¥í¥°¥é¥àÃæ¤ÎÊÑ¿ô¤Ë±Æ¶Á¤òÍ¿¤¨¤ë¤Ê¤é¡¢¥¡¼¥ï¡¼¥É volatile
¤ò»ØÄꤷ¤Æ¡¢GNU CC ¤Î¾Íè¤Î¥Ð¡¼¥¸¥ç¥ó¤¬Ãæ¿´ÎΰèÆâ¤ÇÌ¿Îá¤ò°Üư¤¹¤ë¤Î¤òËɤ¤¤Ç¤ª¤¯¤Ù¤¤Ç¤¢¤ë¡£
¥ª¥Ú¥é¥ó¥É¤äÇ˲õ¤¬°ì¤Ä¤â¤Ê¤¤ asm Ì¿Îá(¤½¤ì¤Ë¡Ö¸Å¤¤·Á¼°¤Î¡×asm)¤Ï¡¢ÅþãÉÔǽ¤Ç¤Ê¤¤¸Â¤ê¡¢¤ª¤«¤Þ¤¤¤Ê¤·¤Ëºï½ü¤µ¤ì¤¿¤êÂ礤¯°Üư¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤Ï¤Ê¤¤¡£¥¡¼¥ï¡¼¥É volatile ¤ò½ñ¤¤¤¿¤Î¤ÈƱ¤¸¤Ç¤¢¤ë¡£
volatile »ØÄêÉÕ¤¤Î asm Ì¿Îá¤Ç¤¢¤Ã¤Æ¤â¡¢GCC ¤Ë¤È¤Ã¤Æ°ã¤¤¤¬¤Ê¤¤¤È¸«¤ì¤Ð¡¢Î㤨¤Ð¥¸¥ã¥ó¥×Ì¿Îá¤ò¤Þ¤¿¤°¤È¤¤¤Ã¤¿¤è¤¦¤Ê°Üư¤â¹Ô¤ï¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¤Î¤ÇÃí°Õ¤·¤ÆÍߤ·¤¤¡£´øÈ¯À asm Ì¿Îá¤ÎÎ󤬤½¤Î¤Þ¤ÞϢ³¤ËÊݤ¿¤ì¤ë¤È´üÂÔ¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£½ÐÎϤ¬Ï¢Â³¤Ë¤Ê¤Ã¤ÆÍߤ·¤±¤ì¤Ð¡¢°ì¸Ä¤Î asm ʸ¤ò»È¤¦¤³¤È¤Ç¤¢¤ë¡£
¥¢¥»¥ó¥Ö¥éÌ¿Îá¤Ç»Ä¤µ¤ì¤¿¾ò·ï¥³¡¼¥É¤ò¥¢¥¯¥»¥¹¤¹¤ëÊýË¡¤òõ¤½¤¦¤È路¤â»×¤¦¤À¤í¤¦¡£¤À¤¬¡¢¤½¤ì¤ò¼ÂÁõ¤·¤è¤¦¤È¤¹¤ë¤È¡¢¿®Íê¤Ç¤¤ëÊýË¡¤¬¤Ê¤¤¤³¤È¤¬¤ï¤«¤Ã¤¿¡£ÌäÂê¤Ï¡¢½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤ÏºÆ¥í¡¼¥É¤òɬÍפȤ¹¤ë¤³¤È¤¬¤¢¤ê¡¢¤½¤ì¤Ë¤Ï¥¹¥È¥¢Ì¿Îá¤ò³¤±¤ëɬÍפ¬½Ð¤Æ¤¯¤ë¡£¤Û¤È¤ó¤É¤Îµ¡¼ï¤Ç¤Ï¤³¤ì¤é¤ÎÌ¿Îá¤Ë¤è¤ê¡¢Ãͤò¸¡ºº¤¹¤ëÁ°¤Ë¾ò·ï¥³¡¼¥É¤òÊѤ¨¤Æ¤·¤Þ¤¦¤È¤¤¤¦¤³¤È¤Ë¤¢¤ë¡£¤³¤ÎÌäÂê¤Ï¡¢Ä̾ï¤Î¡Ö¥Æ¥¹¥È¡×Ì¿Îá¤È¡ÖÈæ³Ó¡×Ì¿Îá¤Ç¤Ïµ¯¤¤Ê¤¤¡£¤³¤ì¤é¤ÎÌ¿Îá¤Ë¤Ï½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤¬¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
ANSI C ¤Î¥×¥í¥°¥é¥à¤«¤é¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢asm ¤ÎÂå¤ï¤ê¤Ë __asm__ ¤È½ñ¤¯¤è¤¦¤Ë¤¹¤ë¡£See Alternate Keywords¡£
¥¹¥¿¥Ã¥¯¾õ¤Î¥ì¥¸¥¹¥¿¤ò asm ¤Î¥ª¥Ú¥é¥ó¥É¤Ç»È¤¦¤Ë¤Ï´ö¤Ä¤«µ¬Â§¤¬¤¢¤ë¡£¤³¤ì¤é¤Îµ¬Â§¤Ï¡¢¥¹¥¿¥Ã¥¯¾õ¥ì¥¸¥¹¥¿¤Ç¤¢¤ë¥ª¥Ú¥é¥ó¥É¤Ë¤Î¤ßŬÍѤµ¤ì¤ë¡£
asm_operands Ãæ¤Ç»à¤ÌÆþÎϥ쥸¥¹¥¿¤ÎÁȤ¬Í¿¤¨¤é¤ì¤¿¾ì¹ç¡¢¤É¤ì¤¬ asm ʸ¤Ë¤è¤ê°ÅÌۤ˥ݥåפµ¤ì¤Æ¡¢¤É¤ì¤¬ GCC ¤ÇÌÀ¼¨Åª¤Ë¥Ý¥Ã¥×¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤«¤òÃΤëɬÍפ¬¤¢¤ë¡£
asm ʸ¤Ë¤è¤ê°ÅÌۤ˥ݥåפµ¤ì¤ëÆþÎÏk¥ì¥¸¥¹¥¿¤Ï¡¢½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤Ë¥Þ¥Ã¥Á¤¹¤ë¤è¤¦¤ËÀ©Ì󤬲ݤµ¤ì¤Æ¤¤¤Ê¤¤¸Â¤ê¡¢ÌÀ¼¨Åª¤ËÇ˲õ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
°ÅÌۤ˥ݥåפµ¤ì¤ëÆþÎϥ쥸¥¹¥¿¤ÏÁ´¤Æ¡¢°ÅÌۤ˥ݥåפµ¤ì¤Ê¤¤¤É¤ÎÆþÎϥ쥸¥¹¥¿¤è¤ê¤â¥ì¥¸¥¹¥¿¥¹¥¿¥Ã¥¯¤ÎºÇ¾å¤Ë¶á¤¯¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ç¤¢¤ë¡£
¤¢¤ëÆþÎϤ¬ insn ¤ÎÃæ¤Ç»à¤Ì¤Î¤Ç¤¢¤ì¤Ð¡¢ºÆ¥í¡¼¥É¤Ç¤½¤ÎÆþÎϥ쥸¥¹¥¿¤ò½ÐÎÏºÆ¥í¡¼¥ÉÍѤ˻ȤäƤâÎɤ¤¡£¼¡¤ÎÎã¤ò¹Í¤¨¤Æ¤ß¤è¤¦¡£
asm ("foo" : "=t" (a) : "f" (b));
¤³¤Î asm ʸ¤Ï¡¢ÆþÎÏ B ¤¬ asm ¤Ë¤è¤ê¥Ý¥Ã¥×¤µ¤ì¤Ê¤¤¤³¤È¡¢asm ¤¬·ë²Ì¤ò¥ì¥¸¥¹¥¿¡¦¥¹¥¿¥Ã¥¯¤Ë¥×¥Ã¥·¥å¤¹¤ë¡¢¤¹¤Ê¤ï¤Á¡¢¥¹¥¿¥Ã¥¯¤¬Á°¤è¤ê°ìÃÊ¿¼¤¯¤Ê¤ë¤È¤¤¤¦¤³¤È¤ò¸À¤Ã¤Æ¤¤¤ë¡£¤·¤«¤·¡¢ÆþÎÏ B ¤¬¤³¤Î insn ¤Ç»à¤Ì¤Î¤Ç¤¢¤ì¤Ð¡¢ºÆ¥í¡¼¥É¤Ï¡¢ÆþÎϤȽÐÎÏ¤ËÆ±¤¸¥ì¥¸¥¹¥¿¤ò»È¤¦¤³¤È¤¬½ÐÍè¤ë¤È¹Í¤¨¤ë¤À¤í¤¦¡£
ÆþÎÏ¥ª¥Ú¥é¥ó¥É¤Î¤É¤ì¤«¤¬À©Ìó f ¤ò»È¤Ã¤Æ¤¤¤ì¤Ð¡¢Á´¤Æ¤Î½ÐÎϥ쥸¥¹¥¿¤ÎÀ©Ìó¤ÏÁá´üÇ˲õ & ¤ò»ÈÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¾å¤Î asm ¤Ï°Ê²¼¤Î¤è¤¦¤Ë½ñ¤±¤ë¡£
asm ("foo" : "=&t" (a) : "f" (b));
½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤Ï¡¢asm ¤Î¸å¤Ç½ÐÎϤ¬¤É¤Î¥ì¥¸¥¹¥¿¤Ë¸½¤ì¤ë¤«¤ò¤Ï¤Ã¤¤ê¤È»Ø¼¨¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£=f ¤Ïµö¤µ¤ì¤Ê¤¤¡£¤³¤Î¥ª¥Ú¥é¥ó¥ÉÀ©Ìó¤Ï°ì¸Ä¤Î¥ì¥¸¥¹¥¿¤«¤é¤Ê¤ë¥¯¥é¥¹¤òÁªÂò¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
asm_operands ¤ÎÁ°¤Ç»à¤ó¤Ç¤ª¤ê¡¢asm_operands ¤Ë¤è¤ê¥×¥Ã¥·¥å¤µ¤ì¤ë¡£¥ì¥¸¥¹¥¿¥¹¥¿¥Ã¥¯¤Î°ìÈÖ¾å°Ê³°¤Î¾ì½ê¤Ë¥×¥Ã¥·¥å¤¹¤ë¤Î¤Ï°ÕÌ£¤¬¤Ê¤¤¡£
½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤Ï¥ì¥¸¥¹¥¿¥¹¥¿¥Ã¥¯¤Î°ìÈ־夫¤é»Ï¤Þ¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£½ÐÎÏ¥ª¥Ú¥é¥ó¥É¤Ï¥ì¥¸¥¹¥¿¤ò¡Ö¥¹¥¥Ã¥×¡×¤·¤Æ¤Ï¤¤¤±¤Ê¤¤¡£
°Ê²¼¤Ë¡¢½ñ¤¯¤Î¤¬ÂÅÅö¤È»×¤ï¤ì¤ë asm ʸ¤ò2,3¼¨¤¹¡£¼¡¤Î asm ʸ¤ÏÆþÎϤò°ì¤Ä¼è¤ê¡¢¤³¤ÎÆþÎÏ¤ÏÆâÉôŪ¤Ë¥Ý¥Ã¥×¤µ¤ì¤ë¡£¤½¤·¤Æ¡¢½ÐÎϤòÆó¤ÄÀ¸À®¤¹¤ë¡£
asm ("fsincos" : "=t" (cos), "=u" (sin) : "0" (inp));
¼¡¤Î asm ʸ¤Ï¡¢Æó¤Ä¤ÎÆþÎϤò¼è¤ë¡£¤³¤ì¤é¤Ï¡¢¥ª¥Ú¥³¡¼¥É fyl2xp1 ¤Ë¤è¤ê¥Ý¥Ã¥×¤µ¤ì¡¢°ì¤Ä¤Î½ÐÎϤËÃÖ¤´¹¤¨¤é¤ì¤ë¡£¥æ¡¼¥¶¤Ï¡¢reg-stack.c ¤¬ fyl2xpl ¤¬Î¾Êý¤ÎÆþÎϤò¥Ý¥Ã¥×¤¹¤ë¤È¤¤¤¦¤³¤È¤¬È½¤ë¤è¤¦¤ËÇ˲õ»ØÄê st(1) ¤ò½ñ¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
asm ("fyl2xp1" : "=t" (result) : "0" (x), "u" (y) : "st(1)");
C ¤Î´Ø¿ô¤äÊÑ¿ô¤Î¡¢¥¢¥»¥ó¥Ö¥é¥³¡¼¥ÉÃæ¤Ç»È¤ï¤ì¤ë̾Á°¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤½¤ì¤Ë¤Ï¡¢¥¡¼¥ï¡¼¥É asm(¤Þ¤¿¤Ï__asm__)¤ò°Ê²¼¤Î¤è¤¦¤ËÀë¸À¤Î¸å¤Ë½ñ¤¯¡£
int foo asm ("myfoo") = 2;
¤³¤ì¤Ë¤è¤ê¡¢¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤ÎÃæ¤Ç¡¢ÊÑ¿ô foo ¤ËÂФ·¤Æ»È¤ï¤ì¤ë̾Á°¤Ï¡¢Ä̾ï¤Î _foo ¤Ç¤Ï¤Ê¤¯¡¢myfoo ¤È¤¹¤ë¤³¤È¤ò»ØÄꤹ¤ë¡£
C ¤Î´Ø¿ô¤äÊÑ¿ô¤Î̾Á°¤Ë¤ÏÄ̾異¥ó¥À¡¼¥¹¥³¥¢¤¬Æ¬¤Ë¤Ä¤¯¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¤³¤Îµ¡Ç½¤Ë¤è¤ê¡¢¥¢¥ó¥À¡¼¥¹¥³¥¢¤¬Æ¬¤Ë¤Ä¤«¤Ê¤¤¡¢¥ê¥ó¥«ÍѤÎ̾Á°¤òÄêµÁ¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ë¡£
´Ø¿ô¤ÎÄêµÁ¤Ç¤Ï¡¢asm ¤ò¾å¤Î¤è¤¦¤Ë»È¤¦¤³¤È¤Ï¤Ç¤¤Ê¤¤¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢´Ø¿ô¤ÎÀë¸À¤ò¤½¤ÎÄêµÁ¤ÎÁ°¤Ë½ñ¤¡¢Àë¸À¤Î¸å¤í¤Ë asm ¤ò½ñ¤¯¤³¤È¤ÇƱ¤¸¸ú²Ì¤¬ÆÀ¤é¤ì¤ë¡£
extern func () asm ("FUNC");
func (x, y)
int x, y;
...
»ØÄꤷ¤¿¥¢¥»¥ó¥Ö¥é¤Ç¤Î̾Á°¤¬¡¢²¿¤«Â¾¤Î¥¢¥»¥ó¥Ö¥é¥·¥ó¥Ü¥ë¤È¤Ö¤Ä¤«¤é¤Ê¤¤¤³¤È¤òÊݾڤ¹¤ë¤Î¤Ï¥æ¡¼¥¶¤ÎÀÕǤ¤Ç¤¢¤ë¡£¤Þ¤¿¡¢¥ì¥¸¥¹¥¿Ì¾¤ò»È¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤â¤·»È¤¦¤È¡¢Á´¤¯ÉÔÀµ¤Ê¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤¬À¸À®¤µ¤ì¤ë¡£GNU CC ¤Ë¤Ï¡¢ÀÅŪÊÑ¿ô¤ò¥ì¥¸¥¹¥¿¤Ë¥¹¥È¥¢¤¹¤ëǽÎϤϤʤ¤¡£¤ª¤½¤é¤¯¡¢¾Í褽¤Îµ¡Ç½¤¬Äɲ䵤ì¤ë¤À¤í¤¦¡£
GNU C ¤Ç¤Ï¡¢2,3 ¤Î¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤ò»ØÄꤷ¤¿¥Ï¡¼¥É¥¦¥§¥¢¥ì¥¸¥¹¥¿¤ËÃÖ¤¯¤³¤È¤¬¤Ç¤¤ë¡£¤Þ¤¿¡¢Ä̾ï¤Î¥ì¥¸¥¹¥¿ÊÑ¿ô¤¬³ä¤êÅö¤Æ¤é¤ì¤ë¤Ù¤¥ì¥¸¥¹¥¿¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤ë¡£
¤³¤ì¤é¤Î¥í¡¼¥«¥ëÊÑ¿ô¤Ï¡¢¥¢¥»¥ó¥Ö¥éÌ¿Îá¤Î°ì¸Ä¤Î½ÐÎϤòÆÃÄê¤Î¥ì¥¸¥¹¥¿¤ËľÀܽñ¤¹þ¤ß¤¿¤¤¤È¤¤Ï¡¢³ÈÄ¥ asm µ¡Ç½(see Extended Asm)¤È°ì½ï¤Ë»È¤¦¤ÈÊØÍø¤Ê¤³¤È¤¬Â¿¤¤¡£(»ØÄꤷ¤¿¥ì¥¸¥¹¥¿¤¬¡¢asm ¤Î¥ª¥Ú¥é¥ó¥É¤Ë»ØÄꤵ¤ì¤¿À©Ìó¤ËÅö¤Æ¤Ï¤Þ¤ë¤Ê¤é¡¢¤³¤Îµ¡Ç½¤Ïưºî¤¹¤ë¡£)
GNU C ¤Ç¤Ï¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
register int *foo asm ("a5");
¤³¤³¤Ç a5 ¤Ï¡¢»ÈÍѤ·¤¿¤¤¥ì¥¸¥¹¥¿Ì¾¤Ç¤¢¤ë¡£¥ì¥¸¥¹¥¿¤Ï¤½¤Îµ¡¼ï¤Ç´Ø¿ô¸Æ¤Ó½Ð¤·¤ÇÂàÈò¡¿Éüµ¢¤µ¤ì¤ë¤â¤Î¤òÁª¤Ö¤è¤¦¤Ë¤·¤Æ¤ª¤¯¤È¡¢¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤ÇÃͤ¬Ç˲õ¤µ¤ì¤ë¤³¤È¤¬¤Ê¤¤¡£
ÅöÁ³¥ì¥¸¥¹¥¿Ì¾¤Ï CPU ¤Ë°Í¸¤¹¤ë¤Î¤Ç¡¢CPU ¥¿¥¤¥×¤Ë±þ¤¸¤Æ¥×¥í¥°¥é¥à¤ò¾ò·ï¤Çʬ¤±¤ëɬÍפ¬¤¢¤ë¡£a5 ¤È¤¤¤¦¥ì¥¸¥¹¥¿¤Ï¡¢68000 ¤Î¾ì¹ç¤Ï¥Ý¥¤¥ó¥¿·¿¤ÎÊÑ¿ô¸þ¤±¤È¤·¤Æ¤Ï¡¢Îɤ¤ÁªÂò¤Ç¤¢¤ë¡£¥ì¥¸¥¹¥¿¥¦¥£¥ó¥É¥¦¤ò»ý¤Äµ¡¼ï¤Î¾ì¹ç¤Ï¡¢¡Ö¥°¥í¡¼¥Ð¥ë¡×¤Ê¥ì¥¸¥¹¥¿¤òÁª¤Ö¤è¤¦¤Ë¤·¡¢´Ø¿ô¸Æ¤Ó½Ð¤·µ¡¹½¤Ë¤è¤ê±Æ¶Á¤ò¼õ¤±¤Ê¤¤¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
¤µ¤é¤Ë¡¢Æ±¤¸ CPU ¥¿¥¤¥×¤Ç¤â¤½¤Î¾å¤Çưºî¤¹¤ë OS ¤Ë¤è¤Ã¤Æ¤Ï¡¢¥ì¥¸¥¹¥¿¤Î¸Æ¤ÓÊý¤¬°ã¤¦¾ì¹ç¤¬¤¢¤ë¡£¤½¤Î¾ì¹ç¤Ï¤µ¤é¤Ë¾ì¹ç¤ï¤±¤¬É¬Íפˤʤ롣Î㤨¤Ð¡¢68000 ¤Çưºî¤¹¤ë OS ¤ÎÃæ¤Ë¤Ï¾åµ¤ÎÎã¤Î¥ì¥¸¥¹¥¿¤ò%a5 ¤È¸Æ¤Ö¤â¤Î¤â¤¢¤ë¡£
¾ÍèŪ¤Ë¤Ï¥³¥ó¥Ñ¥¤¥é¤Ë¼«Æ°Åª¤Ë¥ì¥¸¥¹¥¿¤òÁª¤Ö¤è¤¦¤Ë»Ø¼¨¤¹¤ë¼êÃʤ¬¤¢¤Ã¤ÆÎɤ¤¤À¤í¤¦¤¬¡¢¤Þ¤º¡¢¤É¤Î¤è¤¦¤Ë¤·¤ÆÁªÂò¤¹¤Ù¤¤«¡¢¤½¤·¤Æ¤½¤ÎÁªÂò¤òÆÉ¼Ô¤¬ÃΤë¤Ë¤Ï¤É¤Î¤è¤¦¤Ë¤·¤¿¤éÎɤ¤¤«¤òÌÀ¤é¤«¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ÌÀ¤é¤«¤Ê²ò·è¼êÃʤϤʤ¤¤Î¤Ç¤¢¤ë¡£
¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò¤¢¤ë¥ì¥¸¥¹¥¿¤Ë³ä¤êÅö¤Æ¤ë¤È¡¢¾¯¤Ê¤¯¤È¤â¥³¥ó¥Ñ¥¤¥ëñ°ÌÆâ¤Ç¤Ï¡¢¤½¤Î¥ì¥¸¥¹¥¿¤Ï¤½¤ÎÌÜŪ¤Ë¤À¤±»È¤ï¤ì¤ë¡£¸½ºß¤Î¥³¥ó¥Ñ¥¤¥ëñ°ÌÆâ¤Î´Ø¿ô¤Ç¤Ï¡¢Â¾¤ÎÍÑÅӤˤ½¤Î¥ì¥¸¥¹¥¿¤¬³ä¤êÅö¤Æ¤é¤ì¤ë¤³¤È¤Ï¤Ê¤¤¡£¤Þ¤¿¡¢¤³¤Î¥³¥ó¥Ñ¥¤¥ëñ°ÌÆâ¤Î´Ø¿ô¤ÇÂàÈò¡¿Éüµ¢¤µ¤ì¤ë¤³¤È¤â¤Ê¤¤¡£¤³¤Î¥ì¥¸¥¹¥¿¤Ø¤Î³ÊǼ¤Ï¡¢»à¤ó¤Ç¤¤¤ë¤è¤¦¤Ë¸«¤¨¤Æ¤â·è¤·¤Æºï½ü¤µ¤ì¤Ê¤¤¤¬¡¢»²¾È¤Ïºï½ü¤µ¤ì¤¿¤ê¡¢°Üư¤µ¤ì¤¿¤ê¡¢´ÊÁDz½¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£
¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ä¡¢°ì¤Ä°Ê¾å¤ÎÀ©¸æ¥¹¥ì¥Ã¥É¤«¤é¥¢¥¯¥»¥¹¤¹¤ë¤Î¤Ï°ÂÁ´¤Ç¤Ï¤Ê¤¤¡£¤È¤¤¤¦¤Î¤Ï¡¢¥·¥¹¥Æ¥à¤Î¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤¬¤½¤Î¥ì¥¸¥¹¥¿¤òÊ̤ÎÌÜŪ¤Ç°ì»þŪ¤Ë»È¤¦²ÄǽÀ¤¬¤¢¤ë¤«¤é¤Ç¤¢¤ë¡£(¥·¥¹¥Æ¥à¤Î¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤ò¤½¤ÎÌÜŪ¤Î¤¿¤á¤ËÆÃÊ̤˥³¥ó¥Ñ¥¤¥ë¤·Ä¾¤»¤Ð¤½¤Î¸Â¤ê¤Ç¤Ï¤Ê¤¤¤¬¡£)
¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò»È¤Ã¤Æ¤¤¤ë´Ø¿ô¤¬¡¢Ê̤Τä¤Ï¤ê¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò»È¤Ã¤Æ¤¤¤ë´Ø¿ô foo ¤ò¡¢¤³¤ÎÊÑ¿ô¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó̵¤·¤Ë(Î㤨¤Ð¡¢¤³¤ÎÊÑ¿ô¤¬Àë¸À¤µ¤ì¤Æ¤¤¤Ê¤¤Ê̤Υ½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ë¤¢¤ëÅù)
¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿»°ÈÖÌܤδؿô lose ¤ò·Ðͳ¤·¤Æ¸Æ¤Ó½Ð¤¹¤Î¤Ï´í¸±¤Ç¤¢¤ë¡£¤³¤ì¤Ï¡¢lose ¤¬¤½¤Î¥ì¥¸¥¹¥¿¤ò¥»¡¼¥Ö¤·¤¿¾å¤Ç²¿¤«Â¾¤ÎÃͤòÃÖ¤¯²ÄǽÀ¤¬¤¢¤ë¤«¤é¤Ç¤¢¤ë¡£Î㤨¤Ð¡¢qsort ¤ËÅϤ¹Èæ³Ó´Ø¿ô¤ÎÃæ¤Ç¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò»È¤¨¤ë¤È»×¤Ã¤Æ¤Ï¤¤¤±¤Ê¤¤¡£qsort ¤¬¡¢²¿¤«Â¾¤Î¤â¤Î¤ò¤½¤Î¥ì¥¸¥¹¥¿¤ËÃÖ¤¯²ÄǽÀ¤¬¤¢¤ë¤«¤é¤Ç¤¢¤ë¡£(qsort ¤òƱ¤¸¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò»È¤¦¤è¤¦¤ËºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ì¤Ð¡¢¤³¤ÎÌäÂê¤Ï²ò¾Ã¤¹¤ë¡£)
qsort ¤ä¾¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ç¡¢¼ÂºÝ¤Ë¤Ï¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò»È¤Ã¤Æ¤¤¤Ê¤¤¤â¤Î¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¡¢¤½¤Î¥ì¥¸¥¹¥¿¤ò¾¤ÎÌÜŪ¤Ë¤Ï»È¤ï¤Ê¤¤¤è¤¦¤Ë¤·¤¿¤±¤ì¤Ð¡¢-ffixed-reg ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ì¤Ð½¼Ê¬¤Ç¤¢¤ë¡£¼ÂºÝ¤Ë¥½¡¼¥¹¥³¡¼¥É¤Ë¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿¤ÎÀë¸À¤òÄɲ乤ëɬÍפϤʤ¤¡£
¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ÎÃͤòÊѤ¨ÆÀ¤ë´Ø¿ô¤Ï¡¢¤³¤ÎÊÑ¿ô¤Ê¤·¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿´Ø¿ô¤«¤é¤Ï°ÂÁ´¤Ë¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤¤Ê¤¤¡£¸Æ½Ð¤·Â¦¤¬Ìá¤êÃͤò¸«¤Ä¤±¤ë¾ì½ê¤Ë¤¢¤ëÃͤò½ñ¤´¹¤¨¤ë²ÄǽÀ¤¬¤¢¤ë¤«¤é¤Ç¤¢¤ë¡£¤³¤Î¤¿¤á¡¢¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò»È¤Ã¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤ÎÅÓÃæ¤Ø¤ÎÆþ¤ê¸ýÅÀ¤È¤Ê¤ë´Ø¿ô¤Ï¡¢¸Æ½Ð¤·Â¦¤Ë½ê°¤¹¤ëÃͤòÌÀ¼¨Åª¤Ë¥»¡¼¥Ö¡¿¥ê¥¹¥È¥¢¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¤Û¤È¤ó¤É¤Îµ¡¼ï¤Ç¤Ï¡¢longjmp ¤Ï¡¢³Æ¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤Ë¡¢¤½¤ì¤é¤ÎÊÑ¿ô¤Î setjmp ¤Î»þÅÀ¤Ç¤ÎÃͤò¥ê¥¹¥È¥¢¤¹¤ë¡£¤·¤«¤·¡¢Ãæ¤Ë¤Ï longjmp ¤¬¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ÎÃͤòÊѤ¨¤Ê¤¤µ¡¼ï¤â¤¢¤ë¡£°Ü¿¢À¤òÎɤ¯¤¹¤ë¤¿¤á¤Ë¤Ï¡¢setjmp ¤ò¸Æ¤Ó½Ð¤¹´Ø¿ô¤Ï¡¢¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò¥»¡¼¥Ö¤·¡¢longjmp ¤ÎÃæ¤Ç¤½¤ì¤é¤ò¥ê¥¹¥È¥¢¤¹¤ë¤è¤¦¤ËÄ´À°¤ò¹Ô¤Ê¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤¦¤·¤Æ¤ª¤±¤Ð¡¢longjmp ¤¬²¿¤ò¤¹¤ë¤«¤Ë´Ø¤ï¤é¤ºÆ±¤¸Æ°ºî¤¬´üÂԤǤ¤ë¡£
Á´¤Æ¤Î¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ÎÀë¸À¤Ï¡¢Á´¤Æ¤Î´Ø¿ôÄêµÁ¤ÎÁ°¤Ë¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤â¤·¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤ÎÀë¸À¤¬´Ø¿ôÄêµÁ¤Î¸å¤Ë¸½¤ì¤Æ¤â¡¢¤½¤ÎÀë¸À¤Ç¤ÏÀè¹Ô¤¹¤ë´Ø¿ô¤Ç¤½¤Î¥ì¥¸¥¹¥¿¤¬Ê̤ÎÌÜŪ¤Ç»È¤ï¤ì¤ë¤Î¤òËɤ°¤³¤È¤¬¤Ç¤¤Ê¤¤¡£
¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤Ï½é´üÃͤò»ý¤Ä¤³¤È¤¬¤Ç¤¤Ê¤¤¡£¼Â¹Ô·Á¼°¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¥ì¥¸¥¹¥¿¤Î½é´üÆâÍÆ¤òÄ󶡤¹¤ëÊýË¡¤¬¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
SPARC ¤Ç¤Ï¡¢g3 ¡Á g7 ¤¬¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿¤ËŬ¤·¤Æ¤¤¤ë¤È¤ÎÊó¹ð¤¬¤¢¤ë¡£¤¿¤À¤·¡¢´ö¤Ä¤«¤Î¥é¥¤¥Ö¥é¥ê´Ø¿ô¡¢Î㤨¤Ð¡¢getwd ¤ä¡¢½ü»»¤È¾ê;»»¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï g3 ¤È g4 ¤ò½¤Àµ¤¹¤ë¡£g1 ¤È g2 ¤Ï¥í¡¼¥«¥ë¤Î°ì»þ¥ì¥¸¥¹¥¿¤Ç¤¢¤ë¡£
68000 ¤Ç¤Ï¡¢a2 ¡Á a5 ¤È d2 ¡Á d7 ¤¬Å¬¤·¤Æ¤¤¤ë¡£ÅöÁ³¤Ê¤¬¤é¡¢¤³¤ì¤é¤Î¤¦¤Á¤Î 2,3¸Ä¤Ç¤Ï¤Ê¤¯¡¢¤â¤Ã¤È¤¿¤¯¤µ¤ó»È¤¦¤Î¤ÏŬ¤·¤Æ¤¤¤Ê¤¤¡£
¥í¡¼¥«¥ë¤Î¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò¡¢°Ê²¼¤Î¤è¤¦¤Ë¥ì¥¸¥¹¥¿¤ò»ØÄꤷ¤ÆÄêµÁ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
register int *foo asm ("a5");
¤³¤³¤Ç a5 ¤Ï»È¤ï¤ì¤ë¤Ù¤¥ì¥¸¥¹¥¿Ì¾¤Ç¤¢¤ë¡£¤³¤Î½ñ¤Êý¤Ï¡¢¥°¥í¡¼¥Ð¥ë¥ì¥¸¥¹¥¿ÊÑ¿ô¤òÄêµÁ¤¹¤ë¾ì¹ç¤ÈƱ¤¸¤À¤¬¡¢¥í¡¼¥«¥ëÊÑ¿ô¤Î¾ì¹ç¤Ï´Ø¿ôÆâ¤Ë¸½¤ì¤ë¤³¤È¤ËÃí°Õ¡£
ÉáÄÌ¡¢¥ì¥¸¥¹¥¿Ì¾¤Ï CPU ¤Ë°Í¸¤¹¤ë¤¬¡¢¤³¤ì¤ÏÌäÂê¤Ç¤Ï¤Ê¤¤¡£ÆÃÄê¤Î¥ì¥¸¥¹¥¿¤ÏÌÀ¼¨Åª¤Ê¥¢¥»¥ó¥Ö¥éÌ¿Îá¤ÇÌò¤ËΩ¤Ä¤³¤È¤¬Â¿¤¤¤«¤é¤Ç¤¢¤ë(see Extended Asm)¡£¤³¤ì¤é¤Î¤É¤Á¤é¤â°ìÈÌ¤Ë CPU ·¿¤Ë±þ¤¸¤Æ¥×¥í¥°¥é¥à¤ò¾ò·ïÀá¤Ç¾ì¹çʬ¤±¤¹¤ëɬÍפ¬¤¢¤ë¡£
¤µ¤é¤Ë¡¢°ì¤Ä¤Î CPU ¥¿¥¤¥×¤Çưºî¤¹¤ë¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤¬Ê£¿ô¤¢¤ë¾ì¹ç¤Ï¡¢¥ì¥¸¥¹¥¿¤Î»ØÄêË¡¤¬°ã¤¦²ÄǽÀ¤¬¤¢¤ë¡£Î㤨¤Ð¡¢´ö¤Ä¤«¤Î 68000 ¾å¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¾åµ¤Î¥ì¥¸¥¹¥¿¤ò %a5 ¤ÈÆÉ¤ó¤Ç¤¤¤ë¡£
¥ì¥¸¥¹¥¿ÊÑ¿ô¤ò¤³¤Î¤è¤¦¤ËÄêµÁ¤·¤Æ¤â¡¢»ØÄꤵ¤ì¤¿¥ì¥¸¥¹¥¿¤òͽÌ󤹤뤳¤È¤Ï¤Ê¤¤¡£¥Õ¥í¡¼À©¸æ¤Ë¤è¤ê¤³¤Î¥ì¥¸¥¹¥¿ÊÑ¿ô¤ÎÃͤ¬À¸¤¤Æ¤¤¤Ê¤¤¤Èʬ¤«¤Ã¤¿¾ì½ê¤Ç¡¢Â¾¤ÎÌÜŪ¤Ë»È¤¦¤³¤È¤Ï°ÍÁ³¤È¤·¤Æ²Äǽ¤Ç¤¢¤ë¡£¤À¤¬¡¢¤³¤ì¤é¤Î¥ì¥¸¥¹¥¿¤Ï¥ê¥í¡¼¥É¥Ñ¥¹¤ÇÍøÍѤǤ¤Ê¤¯¤Ê¤ë¡£¤³¤Îµ¡Ç½¤ò»È¤¤²á¤®¤ë¤È¡¢¥³¥ó¥Ñ¥¤¥é¤¬´Ø¿ô¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤Ë»È¤¨¤ë¥ì¥¸¥¹¥¿¤¬Â¤ê¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¤³¤Î¥ì¥¸¥¹¥¿ÊÑ¿ô¤¬¡¢¥æ¡¼¥¶¤¬»ØÄꤷ¤¿¥ì¥¸¥¹¥¿¤Ë¤¤¤Ä¤Ç¤âÆþ¤ë¤è¤¦¤Ê¥³¡¼¥É¤ò GNU CC ¤¬À¸À®¤¹¤ë¤³¤È¤òÊݾڤ¹¤ë¤â¤Î¤Ç¤Ï¤Ê¤¤¡£asm ʸ¤Ç¤³¤Î¥ì¥¸¥¹¥¿¤òÌÀ¼¨Åª¤Ë»²¾È¤¹¤ë¥³¡¼¥É¤ò½ñ¤¤¤Æ¡¢¤½¤ì¤¬¾ï¤Ë¤³¤ÎÊÑ¿ô¤ò»Ø¤¹¤È²¾Äꤷ¤Æ¤Ï¤¤¤±¤Ê¤¤¡£
¶É½ê¥ì¥¸¥¹¥¿ÊÑ¿ô¤Ø¤Î³ÊǼ¤Ï¡¢¥Ç¡¼¥¿Î®²òÀϤ˽¾¤¦¤È»à¤ó¤Ç¤¤¤ë¤è¤¦¤Ç¤¢¤ì¤Ð¡¢ºï½ü¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£¶É½ê¥ì¥¸¥¹¥¿ÊÑ¿ô¤Ø¤Î»²¾È¤Ï¡¢ºï½ü¤µ¤ì¤¿¤ê¡¢°Üư¤µ¤ì¤¿¤ê¡¢Ã±½ã²½¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¡£
-traditional ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ÆÃÄê¤Î¥¡¼¥ï¡¼¥É¤ò¤¤¤¯¤Ä¤«Ìµ¸ú¤Ë¤¹¤ë¡£-ansi ¤ò»ØÄꤹ¤ë¤È¡¢¤½¤Î¾¤Î¥¡¼¥ï¡¼¥É¤ò¤¤¤¯¤Ä¤«Ìµ¸ú¤Ë¤¹¤ë¡£¤³¤ì¤Ï¡¢GNU C ¤Î³ÈÄ¥¤ä ANSI C ¤Îµ¡Ç½¤ò¡¢ANSI C ¤Î¥×¥í¥°¥é¥à¤ÈµìÍè¤Î C ¤Î¥×¥í¥°¥é¥à¤ò´Þ¤àÁ´¤Æ¤Î¥×¥í¥°¥é¥à¤Ç»È¤¨¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡¢ÈÆÍѤΥإåÀ¥Õ¥¡¥¤¥ë¤Ç»È¤¤¤¿¤¤¾ì¹ç¤ËÌäÂê¤Ë¤Ê¤ë¡£¤½¤Î¾ì¹ç¡¢¥¡¼¥ï¡¼¥Éasm¡¢typeof¡¢inline ¤Ï -ansi ¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥×¥í¥°¥é¥à¤Ç¤Ïưºî¤·¤Ê¤¤¤Î¤Ç»È¤¨¤Ê¤¤¡£°ìÊý¡¢¥¡¼¥ï¡¼¥É const¡¢volatile¡¢signed¡¢typeof¡¢inline ¤Ï¡¢-traditional ¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥×¥í¥°¥é¥à¤Çưºî¤·¤Ê¤¤¡£
¤³¤ÎÌäÂê¤ò²ò·è¤¹¤ë¤Ë¤Ï¡¢ÌäÂê¤È¤Ê¤ë³Æ¥¡¼¥ï¡¼¥É¤ÎƬ¤Ë __ ¤òÉÕ¤±¤ì¤ÐÎɤ¤¡£Î㤨¤Ð¡¢asm ¤ÎÂå¤ï¤ê¤Ë __asm__ ¤ò¡¢const ¤ÎÂå¤ï¤ê¤Ë __const__ ¤ò¡¢inline ¤ÎÂå¤ï¤ê¤Ë __inline__ ¤ò»È¤¦¡£
¾¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ï¤³¤ì¤é¤ÎÂåÂØ¥¡¼¥ï¡¼¥É¤ò¼õ¤±ÉÕ¤±¤Ê¤¤¤Î¤Ç¡¢Ê̤Υ³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¾ì¹ç¤Ë¤Ï¡¢ÂåÂØ¥¡¼¥ï¡¼¥É¤ò¥Þ¥¯¥í¤È¤·¤ÆÄêµÁ¤·¡¢Ä̾ï¤Î¥¡¼¥ï¡¼¥É¤ËÃÖ¤Âå¤ï¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤½¤ì¤Ë¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ë¡£
#ifndef __GNUC__ #define __asm__ asm #endif
-pedantic ¤Ï¡¢GNU C ¤Î³ÈÄ¥¤Î¿¤¯¤Ë·Ù¹ð¤ò½Ð¤¹¡£¤½¤¦¤¤¤¦·Ù¹ð¤Î¤¦¤Á¡¢°ì¤Ä¤Î¼°¤ÎÃæ¤Ë¼ý¤Þ¤Ã¤Æ¤¤¤ë¤â¤Î¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤½¤Î¼°¤ÎÁ°¤Ë __extension__ ¤ò½ñ¤¯¤³¤È¤Ç¡¢½Ð¤µ¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£__extension__ ¤Ë¤Ï¡¢¤³¤ì°Ê³°¤Î¸ú²Ì¤Ï¤Ê¤¤¡£
enum ·¿enum ¤Î¥¿¥°¤ò¡¢²Äǽ¤ÊÃͤò»ØÄꤹ¤ë¤³¤È¤Ê¤·¤ËÄêµÁ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£¤³¤ì¤ÏÉÔ´°Á´·¿¤òÀ¸¤¸¤ë¤¬¡¢struct foo ¤òÍ×ÁǤòµ½Ò¤¹¤ë¤³¤È̵¤·¤Ë½ñ¤¤¤¿¾ì¹ç¤È¤Û¤È¤ó¤ÉƱ¤¸¤è¤¦¤Ê·ë²Ì¤Ë¤Ê¤ë¡£¸å¤ÎÀë¸À¤Ç¡¢²Äǽ¤ÊÃͤò»ØÄꤹ¤ì¤Ð´°Á´¤Ê·¿¤È¤Ê¤ë¡£
·¿¤¬ÉÔ´°Á´¤Ç¤¢¤ë´Ö¤Ï¡¢¤½¤Î·¿¤ò»È¤Ã¤ÆÊÑ¿ô¤äµ²±Îΰè¤ò³ä¤êÅö¤Æ¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£¤À¤¬¡¢¤½¤Î·¿¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò»È¤¦¤³¤È¤Ï²Äǽ¤Ç¤¢¤ë¡£
¤³¤Î³ÈÄ¥¤Ï¤½¤ì¤Û¤ÉÌò¤ËΩ¤Ä¤ï¤±¤Ç¤Ï¤Ê¤¤¤¬¡¢enum ¤Î¼è°·¤¤¤¬¡¢struct ¤ä union ¤Î¼è°·¤¤¤È¤è¤ê°ì´ÓÀ¤òÊݤƤë¤è¤¦¤Ë¤Ê¤ë¡£
¤³¤Î³ÈÄ¥¤Ï GNU C++ ¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Ê¤¤¡£
GNU CC ¤Ï¡¢¸½ºß¤Î´Ø¿ô̾¤òɽ¤¹Ê¸»úÎóÊÑ¿ô¤òÆó¤ÄÁ°¤â¤Ã¤ÆÄêµÁ¤·¤Æ¤¤¤ë¡£ÊÑ¿ô __FUNCTION__ ¤Ï¡¢¥½¡¼¥¹¥³¡¼¥É¤Ë¸½¤ì¤¿Ä̤ê¤Î´Ø¿ô̾¤òɽ¤¹¡£ÊÑ¿ô __PRETTY_FUNCTION__ ¤Ï¡¢¸À¸ì¤Ë¸ÇͤηÁ¼°¤ÇÀ°·Á¤·¤¿´Ø¿ô̾¤òɽ¤¹¡£
¤³¤ÎÆó¤Ä¤Ï¡¢C ¸À¸ì¤Î´Ø¿ô¤Ç¤Ï¤¤¤Ä¤Ç¤âƱ¤¸¤Ë¤Ê¤ë¤¬¡¢C++ ¤Î´Ø¿ô¤Ç¤Ï°ã¤Ã¤¿¤â¤Î¤Ë¤Ê¤ë²ÄǽÀ¤¬¤¢¤ë¡£Î㤨¤Ð¡¢
extern "C" {
extern int printf (char *, ...);
}
class a {
public:
sub (int i)
{
printf ("__FUNCTION__ = %s\n", __FUNCTION__);
printf ("__PRETTY_FUNCTION__ = %s\n", __PRETTY_FUNCTION__);
}
};
int
main (void)
{
a ax;
ax.sub (0);
return 0;
}
¤È¤¤¤¦¥×¥í¥°¥é¥à¤Î½ÐÎϤϰʲ¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
__FUNCTION__ = sub __PRETTY_FUNCTION__ = int a::sub (int)
¤³¤ÎÆó¤Ä¤Î̾Á°¤Ï¥Þ¥¯¥í¤Ç¤Ï¤Ê¤¯¤Æ¡¢ÄêµÁºÑ¤Îʸ»úÎóÊÑ¿ô¤Ç¤¢¤ë¡£Î㤨¤Ð¡¢´Ø¿ô¤ÎÃæ¤Ç #ifdef __FUNCTION__ ¤È¤·¤Æ¤â²¿¤âÆÃÊ̤ʰÕÌ£¤Ï»ý¤¿¤Ê¤¤¡£¥×¥ê¥×¥í¥»¥Ã¥µ¤Ï __FUNCTION__ ¤È¤¤¤¦¼±Ê̻ҤˤĤ¤¤Æ²¿¤âÆÃÊ̤ʽèÍý¤ò¹Ô¤Ê¤ï¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
°Ê²¼¤Î´Ø¿ô¤ò»È¤Ã¤Æ¡¢´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¸µ¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òÆÀ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
__builtin_return_address (level)
0 ¤Ç¤¢¤ì¤Ð¡¢¸½ºß¤Î´Ø¿ô¤ÎÌá¤ê¥¢¥É¥ì¥¹¤òÊÖ¤¹¡£¤³¤ÎÃͤ¬ 1 ¤Ç¤¢¤ì¤Ð¡¢¸½ºß¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¸µ¤ÎÌá¤ê¤òÊÖ¤¹¡£°Ê²¼Æ±ÍÍ¡£
°ú¿ô level ¤ÏÀ°¿ôÄê¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
µ¡¼ï¤Ë¤è¤Ã¤Æ¤Ï¡¢¸½ºß¤Î´Ø¿ô°Ê³°¤Î´Ø¿ô¤ÎÌá¤ê¥¢¥É¥ì¥¹¤ò·èÄꤹ¤ë¤³¤È¤¬ÉÔ²Äǽ¤Ê¾ì¹ç¤¬¤¢¤ë¡£¤½¤¦¤¤¤¦¾ì¹ç¤ä¡¢¥¹¥¿¥Ã¥¯¤ÎĺÅÀ¤Ë㤷¤¿¤È¤¤Ï¡¢¤³¤Î´Ø¿ô¤Ï 0 ¤òÊÖ¤¹¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥¼¥í°Ê³°¤Î°ú¿ô¤ò¤Ä¤±¤Æ¥Ç¥Ð¥Ã¥°ÍѤˤΤ߻Ȥ¦¤Ù¤¤Ç¤¢¤ë¡£
__builtin_frame_address (level)
__builtin_return_address ¤Ë»÷¤Æ¤¤¤ë¤¬¡¢´Ø¿ô¤ÎÌá¤ê¥¢¥É¥ì¥¹¤Ç¤Ï¤Ê¤¯¡¢´Ø¿ô¥Õ¥ì¡¼¥à¤Î¥¢¥É¥ì¥¹¤òÊÖ¤¹¡£__builtin_frame_address ¤ò°ú¿ôÃͤò 0 ¤È¤·¤Æ¸Æ¤Ó½Ð¤¹¤È¡¢¸½ºß¤Î´Ø¿ô¤Î¥Õ¥ì¡¼¥à¥¢¥É¥ì¥¹¤òÊÖ¤¹¡£1 ¤ò°ú¿ôÃͤȤ¹¤ë¤È¡¢¸½ºß¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¸µ´Ø¿ô¤Î¥Õ¥ì¡¼¥à¥¢¥É¥ì¥¹¤òÊÖ¤¹¡£°Ê²¼Æ±ÍÍ¡£
¥Õ¥ì¡¼¥à¤Ï¡¢¥í¡¼¥«¥ëÊÑ¿ô¤ä¥»¡¼¥Ö¤µ¤ì¤¿¥ì¥¸¥¹¥¿¤òÊÝ»ý¤¹¤ë¥¹¥¿¥Ã¥¯¾å¤ÎÎΰè¤Ç¤¢¤ë¡£¥Õ¥ì¡¼¥à¥¢¥É¥ì¥¹¤Ï¡¢ÉáÄ̤ϡ¢¤½¤Î´Ø¿ô¤Ë¤è¤ê¥¹¥¿¥Ã¥¯¤Ë¥×¥Ã¥·¥å¤µ¤ì¤¿ÀèÆ¬¤Î¥ï¡¼¥É¤Î¥¢¥É¥ì¥¹¤Ë¤Ê¤ë¡£¤·¤«¤·¡¢¸·Ì©¤ÊÄêµÁ¤Ï¡¢¥×¥í¥»¥Ã¥µ¤È¸Æ¤Ó½Ð¤·µ¬Ìó¤Ë°Í¸¤¹¤ë¡£¥×¥í¥»¥Ã¥µ¤Ë¥Õ¥ì¡¼¥à¥Ý¥¤¥ó¥¿ÀìÍѥ쥸¥¹¥¿¤¬¤¢¤ì¤Ð¡¢´Ø¿ô¤Ï¥Õ¥ì¡¼¥à¤ò°ì¸Ä»ý¤Á¡¢__builtin_frame_address ¤Ï¡¢¤½¤Î¥Õ¥ì¡¼¥à¥Ý¥¤¥ó¥¿¥ì¥¸¥¹¥¿¤ÎÃͤòÊÖ¤¹¡£
__builtin_return_address ¤Ë¤Ä¤¤¤Æ¤ÎÃí°Õ¤¬¡¢¤³¤Î´Ø¿ô¤Ë¤Ä¤¤¤Æ¤âƱÍͤËÅö¤Æ¤Ï¤Þ¤ë¡£
GNU CC ¤Ï¤³¤ì¤Þ¤Ç¤Ë½Ò¤Ù¤¿°Ê³°¤Ë¤â¤¿¤¯¤µ¤ó¤ÎÁȤ߹þ¤ß´Ø¿ô¤òÄ󶡤·¤Æ¤¤¤ë¡£¤½¤ÎÃæ¤Î´ö¤Ä¤«¤ÏÆâÉô¤Ç»È¤¦ÌÜŪ¤Î¤â¤Î¤¬¤¢¤ê¡¢Îã³°¤ä²ÄÊÑŰú¿ô¥ê¥¹¥È¤Î½èÍý¤Ë»È¤ï¤ì¤ë¡£¤³¤ì¤é¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤³¤³¤Ç¤ÏÀâÌÀ¤·¤Ê¤¤¡£ÉÑÈˤËÊѹ¹¤¬¹Ô¤ï¤ì¤ë¤«¤é¤Ç¤¢¤ë¡£¤³¤ì¤é¤Î´Ø¿ô¤ò°ìÈÌŪ¤ÊÌÜŪ¤Ç»ÈÍѤ¹¤ë¤Î¤Ï¤ª´«¤á¤·¤Ê¤¤¡£
¤½¤Î¾¤Î´Ø¿ô¤Ï¡¢ºÇŬ²½ÌÜŪ¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë¡£
GNU CC ¤Ë¤Ï¡¢É¸½à C ¥é¥¤¥Ö¥é¥ê¤Ë¤¢¤ë¿¤¯¤Î´Ø¿ô¤ÎÁȤ߹þ¤ßÈǤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£¤³¤ì¤é¤Ï¾ï¤Ë¡¢Î㤨 -fno-builtin ¥ª¥×¥·¥ç¥ó(see C Dialect Options)¤ò»ØÄꤷ¤¿¾ì¹ç¤Ç¤â¡¢C ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤ÈƱ¤¸°ÕÌ£¤ò»ý¤Ä¤â¤Î¤È¤·¤Æ¼è¤ê°·¤ï¤ì¤ë¡£¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢C ¥é¥¤¥Ö¥é¥ê´Ø¿ô¤Î alloca¡¢ffs¡¢abs¡¢fabsf¡¢fabs¡¢fabsl¡¢labs¡¢memcpy¡¢memcmp¡¢strcmp¡¢strcpy¡¢strlen¡¢sqrtf¡¢sqrt¡¢sqrtl¡¢sinf¡¢sin¡¢sinl¡¢cosf¡¢cos¡¢cosl ¤ËÂбþ¤¹¤ë¡£
ÁȤ߹þ¤ß´Ø¿ô __builtin_constant_p ¤ò»È¤¦¤È¡¢¤¢¤ëÃͤ¬¥³¥ó¥Ñ¥¤¥ë»þ¤ËÄê¿ô¤Ç¤¢¤Ã¤¿¤«¤É¤¦¤«¤òÃΤ뤳¤È¤¬¤Ç¤¡¢¤½¤Î¤¿¤á¡¢GNU CC ¤¬¤½¤ÎÃͤò´Þ¤à¼°¤Ë¤Ä¤¤¤ÆÄê¿ô¾ö¤ß¹þ¤ß¤¬¼Â¹Ô¤Ç¤¤ë¤«¤òÃΤ뤳¤È¤¬¤Ç¤¤ë¡£¤³¤Î´Ø¿ô¤Î°ú¿ô¤¬¥Æ¥¹¥È¤¹¤Ù¤Ãͤˤʤ롣¤³¤Î´Ø¿ô¤Ï¡¢°ú¿ô¤¬¥³¥ó¥Ñ¥¤¥ë»þÄê¿ô¤Ç¤¢¤ë¤³¤È¤¬¤ï¤«¤Ã¤Æ¤¤¤¿¾ì¹ç¤Ë¤ÏÀ°¿ô 1 ¤òÊÖ¤·¡¢¥³¥ó¥Ñ¥¤¥ë»þÄê¿ô¤Ç¤¢¤Ã¤¿¤³¤È¤¬¤ï¤«¤é¤Ê¤¤¾ì¹ç¤Ë¤ÏÀ°¿ô 0 ¤òÊÖ¤¹¡£0 ¤¬Ê֤äƤ¤Æ¤â¡¢¤½¤ÎÃͤ¬Äê¿ô¤Ç¤Ê¤«¤Ã¤¿¤È¤¤¤¦¤³¤È¤ò°ÕÌ£¤¹¤ë¤â¤Î¤Ç¤Ï¤Ê¤¤¡£Ã±¤Ë GNU CC ¤¬¡¢-O ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤¿ÃͤǤϡ¢Äê¿ô¤Ç¤¢¤ë¤³¤È¤¬¾ÚÌÀ¤Ç¤¤Ê¤«¤Ã¤¿¤À¤±¤Ç¤¢¤ë¡£
¤³¤Î´Ø¿ô¤¬»È¤ï¤ì¤ëÂåɽŪ¤Ê¾ì¹ç¤Ï¡¢¥á¥â¥ê¤¬½ÅÍפʥ꥽¡¼¥¹¤Ë¤Ê¤ëÁȤ߹þ¤ß¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤¢¤í¤¦¡£²¿¤«Ê£»¨¤Ê·Á»»¼°¤¬¤¢¤Ã¤Æ¡¢¤½¤ì¤¬Äê¿ô¤ò´Þ¤ó¤Ç¤¤¤ì¤ÐÄê¿ô¾ö¤ß¹þ¤ß¤ò¹Ô¤Ã¤ÆÍߤ·¤¤¤À¤í¤¦¤¬¡¢Äê¿ô¤ò´Þ¤Þ¤Ê¤¤¾ì¹ç¤Ï´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹É¬Íפ¬¤¢¤ë¡£Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ê¾ì¹ç¤Ç¤¢¤ë¡£
#define Scale_Value(X) \ (__builtin_constant_p (X) ? ((X) * SCALE + OFFSET) : Scale (X))
¤³¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ï¡¢¥Þ¥¯¥í¤ä¥¤¥ó¥é¥¤¥óŸ³«´Ø¿ô¤Ç»È¤Ã¤Æ¤âÎɤ¤¡£¤¿¤À¤·¡¢¥¤¥ó¥é¥¤¥óŸ³«´Ø¿ô¤ÎÃæ¤Ç»È¤Ã¤Æ¡¢¤½¤Î´Ø¿ô¤ËÂФ¹¤ë°ú¿ô¤òÁȤ߹þ¤ß´Ø¿ô¤Ø¤Î°ú¿ô¤È¤·¤ÆÅϤ·¤¿¾ì¹ç¡¢¤½¤Î¥¤¥ó¥é¥¤¥ó´Ø¿ô¤Î°ú¿ô¤Ëʸ»úÎóÄê¿ô¤ä¥³¥ó¥¹¥È¥é¥¯¥¿¼°(see Constructors)¤ò»ØÄꤷ¤Æ¸Æ¤Ó½Ð¤·¤¿¾ì¹ç¤Ï·è¤·¤Æ 1 ¤òÊÖ¤µ¤Ê¤¤¡£¤Þ¤¿¡¢-O ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¸Â¤ê¡¢¥¤¥ó¥é¥¤¥ó´Ø¿ô¤Ë¿ôÃÍÄê¿ô¤òÅϤ·¤¿¤È¤¤Ï 1 ¤òÊÖ¤µ¤Ê¤¤¡£
²áµî¤Ë¤ª¤¤¤Æ¡¢GNU C++ ¥³¥ó¥Ñ¥¤¥é¤Ï¿·¤·¤¤µ¡Ç½¤ò¼Â¸³¤¹¤ë¤¿¤á¤Ë³ÈÄ¥¤¬¤Ê¤µ¤ì¤¿¡£Åö»þ¤Ï C++ ¸À¸ì¤¬¿Ê²½ÅÓ¾å¤À¤Ã¤¿¤Î¤Ç¤¢¤ë¡£¸½ºß¤Ç¤Ï¡¢C++ µ¬³Ê¤¬´°À®¤·¤¿¤Î¤Ç¡¢¤³¤ì¤é¤Î´ö¤Ä¤«¤Îµ¡Ç½¤Ï°Í¤êÎɤ¤Ê̤ε¡Ç½¤ÇÃÖ¤´¹¤¨¤é¤ì¤Æ¤¤¤ë¡£¸Å¤¤µ¡Ç½¤ò»È¤¦¤È¡¢¤½¤Îµ¡Ç½¤¬¾Íèºï½ü¤µ¤ì¤ë¤¤¤¯¤Ä¤«¤Î¾ì¹ç¤Ë·Ù¹ð¤¬È¯¤»¤é¤ì¤ë¡£¤½¤Î¾¤Î¾ì¹ç¤Ë¤Ï¡¢µ¡Ç½¤Ï´û¤Ëºï½ü¤µ¤ì¤Æ¤¤¤ë¡£
°Ê²¼¤Î¥ê¥¹¥È¤ÏÁ´¤Æ¤òÌÖÍ夷¤Æ¤¤¤Ê¤¤¤¬¡¢¸½ºß¤Ç¤ÏÇÑ»ßÍ׵᤬½Ð¤Æ¤¤¤ë´ö¤Ä¤«¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë¡£
-fthis-is-variable
operator new)¤¬¡¢Æ±¤¸¸ú²Ì¤òÆÀ¤ë¤¿¤á¤Îµ¬³Ê¤ËŬ¤Ã¤¿ÊýË¡¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
-fexternal-templates
-falt-external-templates