Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ๊ณต๊ธ์์์ ์คํํ ์ ์๋ aarch64-linux-gnu-g++-4.8 ๋ช ๋ น์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
gcc - GNU ํ๋ก์ ํธ C ๋ฐ C++ ์ปดํ์ผ๋ฌ
๊ฐ์
gcc [-c|-S|-E] [-ํ์ค=ํ์ง ]
[-g] [-ํ์ด์ง] [-O์ํ]
[-W๊ฒฝ๊ณ ...] [-Wpedantic]
[-IDIR...] [-LDIR...]
[-D๋งคํฌ๋ก[=๋ฐํ]...] [-U๋งคํฌ๋ก]
[-foption...] [-m๊ธฐ๊ณ ์ต์ ...]
[-o ์์ํ์ผ] [@ํ์ผ] ์ธํ์ผ...
๊ฐ์ฅ ์ ์ฉํ ์ต์ ๋ง ์ฌ๊ธฐ์ ๋์ด๋ฉ๋๋ค. ๋๋จธ์ง๋ ์๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค. g ++ ๋ฐ์ ๋ค์ธ๋ค
๋๋ถ๋ถ ๋์ผํ ์ต์ GCC.
๊ธฐ์
GCC๋ฅผ ํธ์ถํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ ์ฒ๋ฆฌ, ์ปดํ์ผ, ์ด์ ๋ธ๋ฆฌ ๋ฐ ์ฐ๊ฒฐ์ ์ํํฉ๋๋ค.
"์ ์ฒด ์ต์ "์ ์ฌ์ฉํ๋ฉด ์ค๊ฐ ๋จ๊ณ์์ ์ด ํ๋ก์ธ์ค๋ฅผ ์ค์งํ ์ ์์ต๋๋ค. ์์ํ
์๋ฅผ ๋ค์ด -c ์ต์ ์ ๋ง์ปค๋ฅผ ์คํํ์ง ๋ง๋ผ๊ณ ๋งํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ถ๋ ฅ์ ๊ฐ์ฒด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์ด์ ๋ธ๋ฌ๊ฐ ์ถ๋ ฅํ๋ ํ์ผ.
๋ค๋ฅธ ์ต์ ์ ์ฒ๋ฆฌ์ ํ ๋จ๊ณ๋ก ์ ๋ฌ๋ฉ๋๋ค. ์ผ๋ถ ์ต์ ์ ์ด
์ ์ฒ๋ฆฌ๊ธฐ ๋ฐ ๊ธฐํ ์ปดํ์ผ๋ฌ ์์ฒด. ๋ ๋ค๋ฅธ ์ต์ ์ ์ด์ ๋ธ๋ฌ๋ฅผ ์ ์ดํ๊ณ
๋ง์ปค; ์ด๋ค ์ค ๋๋ถ๋ถ์ ์ฌ์ฉํ ํ์๊ฐ ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ๋ฌธ์ํ๋์ด ์์ง ์์ต๋๋ค.
GCC์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ๋๋ถ๋ถ์ ๋ช ๋ น์ค ์ต์ ์ C ํ๋ก๊ทธ๋จ์ ์ ์ฉํฉ๋๋ค. ์ธ์
์ต์ ์ ๋ค๋ฅธ ์ธ์ด(๋ณดํต C++)์์๋ง ์ ์ฉํฉ๋๋ค. ์ค๋ช ์ ๋ฐ๋ฅด๋ฉด
๋ช ์์ ์ผ๋ก. ํน์ ์ต์ ์ ๋ํ ์ค๋ช ์ ์ถ์ฒ๊ฐ ์ธ๊ธ๋์ง ์์ ๊ฒฝ์ฐ
์ธ์ด์ ๊ฒฝ์ฐ ์ง์๋๋ ๋ชจ๋ ์ธ์ด์์ ํด๋น ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ GCC ํ๋ก๊ทธ๋จ์ ์ต์ ๊ณผ ํ์ผ ์ด๋ฆ์ ํผ์ฐ์ฐ์๋ก ๋ฐ์๋ค์ ๋๋ค. ๋ง์ ์ต์ ์๋ ๋ค์ค
๋ฌธ์ ์ด๋ฆ; ๋ฐ๋ผ์ ์ฌ๋ฌ ๋จ์ผ ๋ฌธ์ ์ต์ ์ ์ง์ ๊ทธ๋ฃนํ: -dv ์ด ๋งค์ฐ
๋ค๋ฅธ -d -v.
์ต์ ๊ณผ ๊ธฐํ ์ธ์๋ฅผ ํผํฉํ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ์์๋
๋ฌธ์ . ๊ฐ์ ์ข ๋ฅ์ ์ฌ๋ฌ ์ต์ ์ ์ฌ์ฉํ ๋๋ ์์๊ฐ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด
๋น์ ์ด ์ง์ -L ๋ ๋ฒ ์ด์ ๋๋ ํ ๋ฆฌ๋ ์ง์ ๋ ์์๋๋ก ๊ฒ์๋ฉ๋๋ค. ๋ํ,
์ ๋ฐฐ์น -l ์ต์ ์ด ์ค์ํฉ๋๋ค.
๋ง์ ์ต์ ์๋ ๋ค์์ผ๋ก ์์ํ๋ ๊ธด ์ด๋ฆ์ด ์์ต๋๋ค. -f ๋๋ -W---์๋ฅผ ๋ค์ด,
-fmove-loop-๋ถ๋ณ, -Wํฌ๋งท ๋ฑ๋ฑ. ์ด๋ค ๋๋ถ๋ถ์ ๊ธ์ ์ ์ธ ๊ฒ๊ณผ ๋ถ์ ์ ์ธ
์์; ์ ๋ถ์ ์ ์ธ ํํ - ํธํธ is -fno-foo. ์ด ์ค๋ช ์๋ ๋ค์ ์ค ํ๋๋ง ๋ฌธ์ํํฉ๋๋ค.
๋ ๊ฐ์ง ํ์ ์ค ํ๋๊ฐ ๊ธฐ๋ณธ๊ฐ์ด ์๋ ํ์์ ๋๋ค.
์ต์
์ ํ๊ถ ์์ฝ
๋ค์์ ์ ํ๋ณ๋ก ๊ทธ๋ฃนํ๋ ๋ชจ๋ ์ต์ ์ ์์ฝ์ ๋๋ค. ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
์ฌ๋ฌด์ฉ ๊ฒ์ท ์ต์
-c -S -E -o ํ์ผ -ํ์ค ์ ๋์ฌ ์์ -ํ์ดํ -ํต๊ณผ ์ข ๋ฃ ์ฝ๋ -x ์ธ์ด -v
-### --๋์[=์์ [, ...]] -ํ๊ฒ ํํ --๋ฒ์ญ -์ธ๊ฐ @ํ์ผ -fํ๋ฌ๊ทธ์ธ=ํ์ผ
-fplugin-์ธ์-name=์๋ฅดํจํฐ๋ -fdump-ada-spec[-๋ ์ฌํ] -fada-์ฌ์-๋ถ๋ชจ=๋จ์
-fdump-go-spec=ํ์ผ
C ์ง์ํ๋ ์ธ์ด ์ต์
-์์ -ํ์ค=ํ์ง -fgnu89-์ธ๋ผ์ธ -๋ณด์กฐ ์ ๋ณด ํ์ผ ์ด๋ฆ
- ํด๊ฒฝ ๋งค๊ฐ๋ณ์ ์๋ ๊ฐ๋ณ ํจ์ -fno-asm -fno ๋ด์ฅ -fno-๋ด์ฅ-๊ธฐ๋ฅ
-ํธ์คํธ -ํ๋ฆฌ์คํ ๋ฉ -fopenmp -fms-ํ์ฅ -fplan9-ํ์ฅ -์ผ๊ฐํ
-์ ํต์ ์ธ -์ ํต์ ์ธ cpp - ํด๊ฒฝ๋จ์ ๋ฐ๋ -fcond-๋ถ์ผ์น
-์๋ง ๋ฒกํฐ ๋ณํ -fsigned ๋นํธ ํ๋ -fsigned-char - funsigned ๋นํธ ํ๋
-funsigned-char
C + + ์ง์ํ๋ ์ธ์ด ์ต์
-fabi ๋ฒ์ =n -fno-์ก์ธ์ค ์ ์ด -fcheck-์ ๊ท -fconstexpr-๊น์ด=n
-ffriend ์ฃผ์ -fno-elide-์์ฑ์ -fno-enforce-eh-specs -ffor ๋ฒ์
-๋ฒ์์ ๋ํ fno -fno-gnu-ํค์๋ -fno-์์์ ํ ํ๋ฆฟ
-fno-implicit-inline-ํ ํ๋ฆฟ -fno-๊ตฌํ-์ธ๋ผ์ธ -fms-ํ์ฅ
-fno-nonansi-๋ด์ฅ -fnothrow-opt -fno ์ฐ์ฐ์ ์ด๋ฆ -fno-์ ํ ์ฌํญ-diags
-ํ์ฉ -fno-pretty-ํ ํ๋ฆฟ -ํ๋ ํฌ -fno-rtti -fstats
-ftemplate-์ญ์ถ์ ์ ํ=n -fํ ํ๋ฆฟ-๊น์ด=n -fno-threadsafe-์ ์
-ํจ์ฆ -cxa-atexit -fno-์ฝํ -nostdinc++ -fno-๊ธฐ๋ณธ-์ธ๋ผ์ธ
-fvisibility-inlines-hidden -fvisibility-ms-compat -fext-์ซ์-๋ฆฌํฐ๋ด -์๋น
-wconversion-null. -Wctor-dtor-ํ๋ผ์ด๋ฒ์ -Wdelete-non-virtual-dtor -๋ฌธ์ ์ ๋ฏธ์ฌ
- ์ถ์ -์๋์ -W๋น ๊ฐ์ dtor - Wreorder -์จํ์จ++ -Wstrict-null-์ผํฐ๋ฌ
- ํ ํ๋ฆฟ์ด ์๋ ์น๊ตฌ -Wold ์คํ์ผ ์บ์คํธ -์ค๋ฒ๋ก๋ฉ๋ ๊ฐ์ -Wno-pmf-๋ณํ
-Wsign-ํ๋ก๋ชจ์
์ค๋ธ์ ํฐ๋ธ-C and ๋ชฉํ-C++ ์ง์ํ๋ ์ธ์ด ์ต์
-f์์-๋ฌธ์์ด-ํด๋์ค=ํด๋์ค ์ด๋ฆ -fgnu-๋ฐํ์ -fnext-๋ฐํ์ -fno-nil-์์ ๊ธฐ
-fobjc-abi-๋ฒ์ =n -fobjc-call-cxx-cdtors -fobjc-์ง์ ๋ฐ์ก -fobjc-์์ธ
-fobjc-gc -fobjc-nilcheck -fobjc-std = OBJC1. -freplace-objc-ํด๋์ค -fzero-๋งํฌ
-gen-decls -Wassign-์ธํฐ์ ํธ -Wno ํ๋กํ ์ฝ -W์ ํ์ -Wstrict ์ ํ์ ์ผ์น
-Wunddeclared-์ ํ์
์ง์ํ๋ ์ธ์ด ๋ ๋ฆฝ ์ต์
-f๋ฉ์์ง ๊ธธ์ด=n -fdiagnostics-ํ์-์์น=[์ผ๋จ|๋ชจ๋ ๋ผ์ธ]
-fno-์ง๋จ-์ผ-์ต์ -fno-diagnostics-show-caret
๊ฒฝ๊ณ ์ต์
-fsyntax ์ ์ฉ -fmax-์ค๋ฅ=n -Wpedantic - ํํ์ ์ค๋ฅ -w -์ฉ์คํธ๋ผ -๋ฒฝ
-์๋๋ ์ค -Waggregate-๋ฆฌํด -์๊ณก ๋ฃจํ ์ต์ ํ -์๋ ์ด ๊ฒฝ๊ณ
-Wno-์์ฑ -Wno ๋ด์ฅ ๋งคํฌ๋ก ์ฌ์ ์ -Wc++-ํธํ -Wc++11-ํธํ -Wcast ์ ๋ ฌ
-Wcast๊ธ -Wchar-์ฒจ์ -ํด๋ก๋ฒ๋ -๋๊ธ -W๋ณํ -Wcoverage-๋ถ์ผ์น
-Wno-cpp - ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ -Wno-deprecated-์ ์ธ -Wdisabled-์ต์ ํ
-Wno-div-by-XNUMX -W๋๋ธ ํ๋ก๋ชจ์ - ๋ฉํ ๋ชธ -Wenum-๋น๊ต -Wno-endif-๋ ์ด๋ธ
-์๋ฌ -์ค๋ฅ=* -Wfatal-์ค๋ฅ -Wfloat-๊ฐ์ -Wํฌ๋งท -Wํ์=2
-Wno-ํฌ๋งท-ํฌํจ-nul -Wno-format-extra-args -Wformat-๋น๋ฆฌํฐ๋ด -Wformat ๋ณด์
-Wformat-y2k -Wframe-๋ณด๋ค ํผ=๋ -Wno-free-nonheap-๊ฐ์ฒด -Wjump-๋ฏธ์ค-์ด๊ธฐํ
-๋ฌด์ ์์ - ์๋ฌต์ -์์์ ํจ์ ์ ์ธ - ์๋ฌต์ ์ ์
-์ํธ์ ํ -์๋ผ์ธ -W์๋ง๋ ์ด๊ธฐํ๋์ง ์์ - ํฌ์ธํฐ ํฌ ํฌ์ธํฐ ์บ์คํธ ์์
-Wno-invalid-offsetof -Winvalid-pch -๋ณด๋ค ํผ=๋ -Wunsafe ๋ฃจํ ์ต์ ํ
-W๋ ผ๋ฆฌ์ ์ฐ์ฐ -๋กฑ๋กฑ -W๋ฉ์ธ -W์๋ง๋ ์ด๊ธฐํ๋์ง ์์ -Wmissing-์ค๊ดํธ
-Wmissing-field-initializers - ํฌํจ ๋๋ ํ ๋ฆฌ ๋๋ฝ -Wno-๋จธ๋ํ๋ฉ -Wno-๋ค์ค ๋ฌธ์
-Wnonnull -Wno ์ค๋ฒํ๋ก -Woverlength-๋ฌธ์์ด -Wํฌ์ฅ -Wpacked-bitfield-compat
-Wํจ๋ฉ -๊ดํธ -Wpedantic-ms-ํ์ -Wno-pedantic-ms-ํ์ -Wpointer-arith
- Wno-pointer-to-int-cast - Wredundant-decls -Wno-return-local-addr -Wreturnํ
-W์ํ์ค ํฌ์ธํธ -W์๋์ฐ -Wsign-๋น๊ต -Wsign ๋ณํ
-Wsizeof-pointer-memaccess -Wstack ๋ณดํธ๊ธฐ -Wstack ์ฌ์ฉ=๋ -Wstrict-์จ๋ฆฌ์ด์ฑ
-Wstrict-์จ๋ฆฌ์ด์ฑ=n -Wstrict ์ค๋ฒํ๋ก -Wstrict-์ค๋ฒํ๋ก=n
-Wsuggest-์์ฑ=[์์ํ|const๋ฅผ|๋ ธ๋ฆฌํด|์ฒด์ฌ] -Wmissing ํ์ ์์ฑ -W์ค์์น
-Wswitch-๊ธฐ๋ณธ๊ฐ -Wswitch ์ด๊ฑฐ ํ -Wsync-๋ธ๋ -Wsystem ํค๋ - ํธ๋จํด๋ฆฐ
-์ ์ -W ์ ํ ์ ํ -๋ถ๋ฐํ -์ด๊ธฐํ๋์ง ์์ -Wunknown-pragma -Wno-pragma
-Wunsuffixed ๋ถ๋ ์์์ ์์ - ์ฌ์ฉํ์ง ์์ - ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ฅ -์ฌ์ฉํ์ง ์์ ๋ผ๋ฒจ
-Wunused-local-typedefs -Wunused-๋งค๊ฐ๋ณ์ - ์ฌ์ฉํ์ง ์์ ๊ฒฐ๊ณผ ์์ - ๋ฏธ์ฌ์ฉ ๊ฐ์น
- ์ฌ์ฉํ์ง ์์ ๋ณ์ -์ฌ์ฉํ์ง ์์์ง๋ง ์ค์ ๋งค๊ฐ๋ณ์ -์ฌ์ฉํ์ง ์์์ง๋ง ์ค์ ๋ณ์ -์ธ๋ฐ์๋ ์บ์คํ
-Wvariadic ๋งคํฌ๋ก -W๋ฒกํฐ ์์ ์ฑ๋ฅ - ๋ธ๋ผ -Wํ๋ฐ์ฑ ๋ ์ง์คํฐ ๋ณ์
-๋ฌธ์์ด ์ฐ๊ธฐ -Wzero-as-null-ํฌ์ธํฐ ์์
C and Objective-C ์ ์ฉ ๊ฒฝ๊ณ ์ต์
-Wbad ํจ์ ์บ์คํธ -Wmissing-์ ์ธ -Wmissing-๋งค๊ฐ๋ณ์ ์ ํ
-Wmissing-ํ๋กํ ํ์ -Wnested-externs -Wold ์คํ์ผ ์ ์ธ -Wold ์คํ์ผ ์ ์
-Wstrict ํ๋กํ ํ์ -์ ํต์ ์ธ -์ ํต ๋ณํ
-W์ ์ธ ํ ์ ์ธ -Wpointer ๊ธฐํธ
๋๋ฒ๊น ์ต์
-dํธ์ง -๋คํ ์ฌ์ - ๋คํ ๋จธ์ -๋คํ ๋ฒ์ -f์์์ฒ๋ฆฌ=์คํ์ผ -fdbg-cnt-๋ชฉ๋ก
-fdbg-cnt=๋ฐ๋ ๊ฐ์น ๋ชฉ๋ก -fdisable-ipa-ํจ์ค ์ด๋ฆ -fdisable-rtl-ํจ์ค ์ด๋ฆ
-fdisable-rtl-๋น๋ฐ๋ฒํธ=๋ฒ์ ๋ชฉ๋ก -fdisable-ํธ๋ฆฌ-ํจ์ค ์ด๋ฆ -fdisable-ํธ๋ฆฌ-ํต๊ณผํ๋ค-
name=๋ฒ์ ๋ชฉ๋ก -fdump-noaddr -fdump-๋ฒํธ ์์ -fdump-unnumbered-๋งํฌ
-fdump-๋ฒ์ญ-๋จ์[-n] -fdump-ํด๋์ค-๊ณ์ธต ๊ตฌ์กฐ[-n] -fdump-ipa-๋ชจ๋
-fdump-ipa-cgraph -fdump-ipa-์ธ๋ผ์ธ -fdump-pass -fdump-ํต๊ณ -fdump-ํธ๋ฆฌ-๋ชจ๋
-fdump-ํธ๋ฆฌ-์๋ณธ[-n] -fdump-tree ์ต์ ํ[-n] -fdump-ํธ๋ฆฌ-cfg -fdump-ํธ๋ฆฌ ๋ณ์นญ
-fdump-ํธ๋ฆฌ-ch -fdump-ํธ๋ฆฌ-ssa[-n] -fdump-ํธ๋ฆฌ-pre[-n] -fdump-ํธ๋ฆฌ-ccp[-n]
-fdump-ํธ๋ฆฌ-dce[-n] -fdump-tree-gimple[-๋ ธ๊ณจ์ ์ธ] -fdump-ํธ๋ฆฌ-๋จธ๋ ํ๋ฉ[-n]
-fdump-ํธ๋ฆฌ๋[-n] -fdump-ํธ๋ฆฌ-dse[-n] -fdump-ํธ๋ฆฌ-phiprop[-n] -fdump-ํธ๋ฆฌ-phiopt[-n]
-fdump-ํธ๋ฆฌ-forwprop[-n] -fdump-tree-copy์ด๋ฆ ๋ฐ๊พธ๊ธฐ[-n] -fdump-ํธ๋ฆฌ-nrv -fdump-ํธ๋ฆฌ-๋ฒกํฐ
-fdump-ํธ๋ฆฌ ์ฑํฌ -fdump-ํธ๋ฆฌ-sra[-n] -fdump-ํธ๋ฆฌ-forwprop[-n] -fdump-tree-fre[-n]
-fdump-ํธ๋ฆฌ-vrp[-n] -ftree-๋ฒกํฐํ๊ธฐ-์์ธ=n -fdump-ํธ๋ฆฌ-storeccp[-n]
-fdump-์ต์ข -insns=ํ์ผ -fcompare-๋๋ฒ๊ทธ[=์ ํํ์ง ์๋] -f๋น๊ต-๋๋ฒ๊ทธ-์ด
-felimate-dwarf2-dups -fno-์ ๊ฑฐ-unused-debug-types
-feliminate-unused-debug-๊ธฐํธ -femit-class-debug-ํญ์ -ํฉ๋ฆฌ์ ์ธ-์ข ๋ฅ-ํจ์ค
-ํฉ๋ฆฌ์ ์ธ-์ข ๋ฅ-ํจ์ค=๋ฒ์ ๋ชฉ๋ก -fdebug-types-์น์ -fmem-๋ณด๊ณ ์-wpa -fmem ๋ณด๊ณ ์
-fpre-ipa-mem-๋ณด๊ณ ์ -fpost-ipa-mem-๋ณด๊ณ ์ -fprofile-ํธ -fopt-์ ๋ณด
-fopt-์ ๋ณด-์ต์ [=ํ์ผ] -์์์ ์๋=ํ -fsched-์์ธ=n -fsel-sched-verbose
-fsel-sched-dump-cfg -fsel-sched-ํ์ดํ๋ผ์ธ-์์ธ -fstack-์ฌ์ฉ -์ตํ ๋ฒ์
-ftime-๋ณด๊ณ -fvar ์ถ์ -fvar-์ถ์ ํ ๋น
-fvar-์ถ์ -ํ ๋น-์ ํ -g -g์ํ -gttoggle -gcoff -๊ทธ๋์ํ-๋ฒ์ -ggdb
-grecord-gcc-์ค์์น -gno-record-gcc-์ค์์น -gstabs -gstabs + -gstrict-dwarf
-gno-strict-dwarf -gvms -gxcoff -gxcoff+ -fno-๋ณํฉ-๋๋ฒ๊ทธ-๋ฌธ์์ด
-fno-dwarf2-cfi-asm -fdebug-์ ๋์ฌ-๋งต=๋ก์= -femit-struct-debug-baseonly
-femit-struct-debug-reduced -femit-struct-debug-detailed[=์ฌ์ ๋ชฉ๋ก] -p -ํ์ด์ง
-์ธ์ ํ์ผ ์ด๋ฆ=๋์๊ด -print-libgcc-ํ์ผ ์ด๋ฆ - ์ธ์ ๋ค์ค ๋๋ ํ ๋ฆฌ
-print-multi-lib -print-multi-os-๋๋ ํ ๋ฆฌ -์ธ์ ํ๋ก๊ทธ๋จ ์ด๋ฆ=ํ๋ก๊ทธ๋จ
-์ธ์-๊ฒ์-๋๋ ํ ๋ฆฌ -Q -์ธ์-sysroot -์ธ์-sysroot-ํค๋-์ ๋ฏธ์ฌ - ์์ ์ ์ฅ
- ์์ ์ ์ฅ = cwd - ์์ ์ ์ฅ = obj -์๊ฐ[=ํ์ผ]
์ต์ ํ ์ต์
- faggressive-loop-optimizations -falign-ํจ์[=n] -falign-์ ํ[=n]
-falign-๋ ์ด๋ธ[=n] -์ ๋ ฌ ๋ฃจํ[=n] -์ฐ๊ด ์ํ -fauto-inc-dec
-f๋ถ๊ธฐ ํ๋ฅ -fbranch-๋์-๋ก๋-์ต์ ํ -fbranch-๋์-๋ก๋-์ต์ ํ2
-fbtr-bb-๋ ์ -fcaller ์ ์ฅ -fcheck-๋ฐ์ดํฐ-deps -fcombin-stack-adjustments
-fconserve-์คํ -f๋น๊ต-์ ๊ฑฐ -fcprop ๋ ์ง์คํฐ -ํฌ๋ก์ค์ ํ -fcse-์ถ์ข -์ ํ
-fcse-skip-blocks. -fcx-fortran-๊ท์น -fcx ์ ํ ๋ฒ์ -fdata ์น์ -fdce
-fdelayed-๋ถ๊ธฐ -fdelete-null-ํฌ์ธํฐ ๊ฒ์ฌ -f๋น๊ฐ์ํ -fdse -๋๋ ค์ด ์ธ๋ผ์ธ
-ํผํ-์ค๋ผ -๋น์ผ ์ต์ ํ -ffat-lto-๊ฐ์ฒด -๋น ๋ฅธ ์ํ - ์ ํ ์ํ ์ ์ฉ
-fffloat-store -fexcess-์ ๋ฐ๋=์คํ์ผ -์์ผ๋ก ์ ํ -ffp-๊ณ์ฝ=์คํ์ผ
-ffunction-์น์ -fgcse -fgcse-์ฌ๋ก๋ ํ -fgcse-las -fgcse-lm
-fgraphite-์ ์ฒด์ฑ -fgcse-sm -fhoist-์ธ์ ํ์ค -fif ๋ณํ -fi-๋ณํ2
-findirect ์ธ๋ผ์ธ -finline-ํจ์ -finline-functions-call-once -finline-ํ๊ณ=n
-finline-์์ ๊ธฐ๋ฅ -fipa-cp -fipa-cp-ํด๋ก -fipa-pta -fipa ํ๋กํ
-fipa-์์-const -fipa-์ฐธ์กฐ -ํผ๋ผ ์๊ณ ๋ฆฌ์ฆ=์ฐ์ฐ -ํผ๋ผ ์ง์ญ=์ง๋ฐฉ
-ํผ๋ผ-ํธ์ด์คํธ-์๋ ฅ -ํผ๋ผ ๋ฃจํ ์๋ ฅ -fno-ira-๊ณต์ -์ ์ฅ-์ฌ๋กฏ
-fno-ira-share-spill-slots -Fira-์ฅํฉํ=n -fivopts -fkeep ์ธ๋ผ์ธ ํจ์
-fkeep-static-const -floop-๋ธ๋ก - ๋ฃจํ ๊ตํ -floop-์คํธ๋ฆฝ-๊ด์ฐ
-floop-nest-์ต์ ํ -floop-๋ณ๋ ฌํ-๋ชจ๋ -flto -flto ์์ถ ์์ค
-flto-ํํฐ์ =ALG -flto-๋ณด๊ณ -fmerge-all-์์ -fmerge-์์
-fmodulo-sched -fmodulo-sched-allow-regmoves -fmove-loop-๋ถ๋ณ fmudflap
-fmudflapir -fmudflapth -fno-๋ธ๋์น-์นด์ดํธ-reg -fno-๊ธฐ๋ณธ-์ธ๋ผ์ธ -fno-์ง์ฐ-ํ
-fno-๊ธฐ๋ฅ-cse -fno-์ถ์ธก-๋ถ๊ธฐ-ํ๋ฅ -fno ์ธ๋ผ์ธ -fno-์ํ-errno
-fno ์ฟ๋ณด๊ธฐ -fno-๊ตฌ๋ฉ2 -fno-sched-์ธํฐ๋ธ๋ก -fno-sched-spec -fno ๋ถํธ ์๋ XNUMX
-fno-์ต์์-์ฌ์ฃผ๋ฌธ -fno ํธ๋ํ ์ํ -fno-zero-initialized-in-bss
-fomit ํ๋ ์ ํฌ์ธํฐ -f์ต์ ํ ๋ฑ๋ก ์ด๋ -foptimize-ํ์ ํธ์ถ
-f๋ถ๋ถ ์ธ๋ผ์ธ -ํ ๋ฃจํ -f์์ธก-๊ณตํต -fprefetch ๋ฃจํ ๋ฐฐ์ด
-fprofile-๋ณด๊ณ -fprofile-์์ -fํ๋กํ-๋๋ ํ ๋ฆฌ=ํต๋ก -fprofile ์์ฑ
-fprofile ์์ฑ=ํต๋ก -fprofile-์ฌ์ฉ -fํ๋กํ ์ฌ์ฉ=ํต๋ก -fprofile-๊ฐ
- ๋ถ์ ์ํ -๋น์ด ์๋ -fregmove -frename ๋ ์ง์คํฐ -freorder-๋ธ๋ก
-freeorder-blocks-and-partition -freorder-ํจ์ -frerun-cse-ํ-๋ฃจํ
-freschedule-modulo-scheduled-loops - ๋ฐ์ฌ๋ฆผ ์ํ -fsched2-use-์ํผ๋ธ๋ก
-fsched-์๋ ฅ -fsched-์ฌ์-๋ก๋ -fsched-spec-load-์ํํ
-fsched-stalled-insns-dep[=n] -fsched-stalled-insns[=n] -fsched-group-ํด๋ฆฌ์คํฑ
-fsched-critical-path-ํด๋ฆฌ์คํฑ -fsched-spec-insn-ํด๋ฆฌ์คํฑ -fsched-rank-ํด๋ฆฌ์คํฑ
-fsched-last-insn-ํด๋ฆฌ์คํฑ -fsched-dep-count-ํด๋ฆฌ์คํฑ -fschedule-insns
-fschedule-insns2 -f์น์ ์ต์ปค -f์ ํ์ ์ค์ผ์ค๋ง -f์ ํ์ -์ค์ผ์ค๋ง2
-fsel-sched-ํ์ดํ๋ผ์ด๋ -fsel-sched-ํ์ดํ๋ผ์ธ-์ธ๋ถ ๋ฃจํ -fshrink-wrap
-fsignaling-nans -fsingle-precision-์์ -fsplit-ivs-in-unroller
-fsplit-์์ด๋ ์ ํ -fstack ๋ณดํธ๊ธฐ -fstack-ํ๋กํ ํฐ-all -fstrict-์จ๋ฆฌ์ด์ฑ
-fstrict-์ค๋ฒํ๋ก -fthread ์ ํ -์ถ์ ์ -ftree-bit-ccp -ftree-๋ด์ฅ ํธ์ถ-dce
-fttree-ccp -fttree-ch -ftree-coalesce-inline-vars -ftree-coalesce-vars -ftree ๋ณต์ฌ ์ํ
-ftree-copy์ด๋ฆ ๋ฐ๊พธ๊ธฐ -fttree-dce -ftree-์ง๋ฐฐ์-opts -fttree-dse -fttree-forwprop
-fttree-fre -ftree-loop-if-๋ณํ -ftree-loop-if-convert-stores -ftree-๋ฃจํ-im
-fttree-phiprop -ftree-loop-๋ถํฌ -ftree-๋ฃจํ-๋ฐฐํฌ-ํจํด
-ftree-๋ฃจํ-ivcanon -ftree ๋ฃจํ ์ ํ -ftree ๋ฃจํ ์ต์ ํ -ftree ๋ณ๋ ฌํ ๋ฃจํ=n
-fttree-pre -ftree-๋ถ๋ถ ์ฌ์ -fttree-pta -fttree-์ฌ์ฐ๊ฒฐ -ftree-์ฑํฌ๋ -fttree-slsr
-fttree-sra -ftree ์ค์์น ๋ณํ -fttree-tail-merge -fttree-ter -ftree ๋ฒกํฐํ
-fttree-vrp -ํ ๋ฒ์ ๋จ์ -Funroll-All-๋ฃจํ -ํ๋กค ๋ฃจํ
-ํ์ธ์ดํ ๋ฃจํ ์ต์ ํ -์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ -ํ์ค์์น ๋ฃจํ
-f๋ณ์ ํ์ฅ-์ธ๋กค๋ฌ -fvect-๋น์ฉ ๋ชจ๋ธ -fvpt -fweb -์ ์ฒด ํ๋ก๊ทธ๋จ -fwpa
-ํจ์ฆ-ld=๋งํฌ -ํจ์ฆ-๋ง์ปค-ํ๋ฌ๊ทธ์ธ --๋งค๊ฐ๋ณ์ name=๊ฐ์น -O -O0 -O1 -O2 -O3 - ์ค์ค
-์คํ์คํธ -์ค๊ทธ
์ ์ฒ๋ฆฌ๊ธฐ ์ต์
-A๋ฌธ์ =๋ต๋ณ -์์ด-๋ฌธ์ [=๋ต๋ณ] -C -dD -๋ -dM -NS -D๋งคํฌ๋ก[=๋ฐํ] -E -H
-idirafter DIR -ํฌํจ ํ์ผ -๋งคํฌ๋ก ํ์ผ -ipprefix ํ์ผ -iwith ์ ๋์ฌ DIR
-์์ ์ ๋์ฌ๊ฐ ์๋ ๊ฒฝ์ฐ DIR -์์ด์์คํ DIR -imultilib DIR -isysroot DIR -M -MM -MF -mg
- MP -MQ -์ฐ -Nostdinc -P -fdebug-cpp -ftrack ๋งคํฌ๋ก ํ์ฅ -fworking-๋๋ ํ ๋ฆฌ
-๋ค์ ๋งคํ -์ผ๊ฐํ -์ธ๋ฐํ -U๋งคํฌ๋ก -์,option -์์คํ๋ฆฌํ๋ก์ธ์ option -ํตํฉ๋์ง ์์-cpp
์ด์ ๋ธ๋ฌ ์ ํ๊ถ
-์,option -X์ด์ ๋ธ๋ฌ option
๋งํฌ ์ต์
๊ฐ์ฒด ํ์ผ ์ด๋ฆ -l๋์๊ด -nostartํ์ผ -nodefaultlibs -nostdlib -ํ์ด -์ญ๋์ -s
-๊ณต์ -์ ์ -libgcc -์ ์ -libstdc++ -์ ์ -๋ฆฌ๋ฐ์ฐ -์ ์ -libtsan -๊ณต์
-๊ณต์ -libgcc - ์์ง์ -T ์คํฌ๋ฆฝํธ -NS,option -X๋ง์ปค option -u ์์ง
๋ช ๋ถ ๋ด๋น ์ต์
-B์ ๋์ฌ -IDIR -iplugindir=DIR - ์ธ์ฉDIR -LDIR -์ฌ์=ํ์ผ -๋๋- --sysroot=DIR
--no-sysroot-์ ๋ฏธ์ฌ
๋จธ์ ๋งค๋ฌ๋ฆฐ ์ต์
AAArch64 ์ต์ -mbig-์๋์ -๋ฏธ๋ฆฌํ ์๋์ -mgeneral-regs-only. -mcmodel=์์
-mcmodel=์์ -mcmodel=๋ํ -mstrict-์ ๋ ฌ -momit-๋ฆฌํ ํ๋ ์ ํฌ์ธํฐ
-mno-์๋ต-๋ฆฌํ-ํ๋ ์-ํฌ์ธํฐ -mtls-dialect=desc -mtls-dialect=์ ํต
-mfix-cortex-a53-835769 -mno-fix-cortex-a53-835769 -ํ์ง=name -mcpu =name
-mtune=name
์๋ตํ ๋ฐ ์ถํ ์ต์ -mhalf-reg-ํ์ผ -mprefer-์งง์-insn-regs -mbranch ๋น์ฉ=NUM
-mcmmove -mnops=NUM -msoft-cmpsf -msplit-lohi -mpost-inc -mpost ์์
-mstack ์คํ์ =NUM -mround-๊ฐ์ฅ ๊ฐ๊น์ด -mlong-ํตํ -m์งง์ ํตํ -msmall16 -mfp ๋ชจ๋=๋ชจ๋
-mvect-๋๋ธ -์ต๋ ๋ฒกํฐ ์ ๋ ฌ=NUM -msplit-vecmove-early -m1reg-๋ฑ๋ก ๋ฒํธ
ARM ์ต์ -mapcs-ํ๋ ์ -mno-apcs-ํ๋ ์ -๋ง๋น=name -mapcs-์คํ-์ฒดํฌ
-mno-apcs-์คํ-์ฒดํฌ -mapcs-ํ๋กํธ -mno-apcs-ํ๋กํธ -mapcs-์ฌ์ง์
-mno-apcs-์ฌ์ง์ -msched-ํ๋กค๋ก๊ทธ -mno-sched-ํ๋กค๋ก๊ทธ -๋ฏธ๋ฆฌํ ์๋์ -mbig-์๋์
-mwords-๋ฆฌํ์๋์ -mfloat-abi=name -mfp16 ํ์=name -mthumb-์ฐ๋
-mno-thumb-์ฐ๋ -mcpu =name -ํ์ง=name -mfpu=name -m๊ตฌ์กฐ-ํฌ๊ธฐ-๊ฒฝ๊ณ=n
- mabort-on-noreturn -mlong-ํตํ -mno-long-ํตํ -msingle-pic-base
-mno-๋จ์ผ-์ฌ์ง-๋ฒ ์ด์ค -mpic-๋ ์ง์คํฐ=๋ฑ๋ก ๋ฒํธ -mnop-์ฌ๋ฏธ-dllimport -mpoke ํจ์ ์ด๋ฆ
-์์ง์๊ฐ๋ฝ -๋ง๋ฆ -mtpcs-ํ๋ ์ -mtpcs-๋ฆฌํ ํ๋ ์ -mcaller-์ํผ ์ธํฐ์ํน
-mcallee-์ํผ ์ธํฐ์ํน -mtp=name -mtls-๋ฐฉ์ธ=๋ฐฉ์ธ -mword-์ฌ๋ฐฐ์น
-mfix-cortex-m3-ldrd -munaligned ์ก์ธ์ค -64๋นํธ์ฉ mneon -mrestrict-it
AVR ์ต์ -mmcu=MCU -maccumulate-args -mbranch ๋น์ฉ=๋น์ฉ -mcall-ํ๋กค๋ก๊ทธ -๋ฏผํธ8
-mno ์ธํฐ๋ฝํธ -mrelax -mstrict-X -mtiny ์คํ -Waddr ๊ณต๊ฐ ๋ณํ
๋ธ๋ ํ ์ต์ -mcpu =CPU[-ํ๊ฒฌ] -msim -momit-๋ฆฌํ ํ๋ ์ ํฌ์ธํฐ
-mno-์๋ต-๋ฆฌํ-ํ๋ ์-ํฌ์ธํฐ -mspecld-์ด์ -mno-specld-์ด์ -mcsync-์ด์
-mno-csync-์ด์ -mlow-64k -mno-low64k -mstack-check-l1 -์ค๊ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
-mno-id-๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ -mshared-๋ผ์ด๋ธ๋ฌ๋ฆฌ-id=n -mleaf-id-๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
-mno-leaf-id-๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ -msep-๋ฐ์ดํฐ -mno-XNUMX์-๋ฐ์ดํฐ -mlong-ํตํ -mno-long-ํตํ
-mfast-fp -minline-plt -m๋ฉํฐ์ฝ์ด -์ ์ฝ๋ฆฌ์ -mcoreb -msdram -micplb
C6X ์ต์ -mbig-์๋์ -๋ฏธ๋ฆฌํ ์๋์ -ํ์ง=CPU -msim -ms๋ฐ์ดํฐ=๋ฐ์ดํฐ ์ ํ
CRIS ์ต์ -mcpu =CPU -ํ์ง=CPU -mtune=CPU -mmax-์คํ ํ๋ ์=n
-melinux-์คํํฌ๊ธฐ=n -๋ฉํธ๋ ์ค4 -๋ฉํธ๋ ์ค100 -mp๋๋ฒ๊ทธ -mcc-์ด๊ธฐํ -mno ๋ถ์์ฉ
-mstack ์ ๋ ฌ -mdata ์ ๋ ฌ -mconst-์ ๋ ฌ -m32๋นํธ -m16๋นํธ -m8๋นํธ
-mno-ํ๋กค๋ก๊ทธ-์ํ๋ก๊ทธ -mno-gotplt -๋ฉํ -๋ง์ฐํธ -๋ฏธ๋ฆฌ๋ ์ค -mlinux -์ฌ -sim2
-mmul-bug-ํด๊ฒฐ ๋ฐฉ๋ฒ -mno-mul-bug-ํด๊ฒฐ ๋ฐฉ๋ฒ
CR16 ์ต์ -mmac -mcr16cplus -mcr16c -msim -๋ฏผํธ32 -mbit-ops -mdata-๋ชจ๋ธ=๋ชจ๋ธ
๋ค์ ์ต์ -all_load -allowable_client -์์น -arch_errors_fatal -arch_only
-bind_at_load -๋ฌถ์ -bundle_loader -๊ณ ๊ฐ ์ด๋ฆ -ํธํ์ฑ_๋ฒ์
-ํ์ฌ_๋ฒ์ -dead_strip -์ข ์์ฑ ํ์ผ -dylib_file -dylinker_install_name
-๋์ -๋ค์ด๋ด๋ฏน ๋ผ์ด๋ธ๋ฌ๋ฆฌ -๋ด๋ณด๋ธ_๊ธฐํธ_๋ชฉ๋ก -ํ์ผ ๋ชฉ๋ก -ํ๋ซ_๋ค์์คํ์ด์ค
-force_cpusubtype_ALL -force_plat_namespace -headerpad_max_install_names -iframework
-์ด๋ฏธ์ง_๋ฒ ์ด์ค -์ด๊ธฐํ -์ค์น ์ด๋ฆ -keep_private_externs -๋ค์ค ๋ชจ๋
-๊ณฑํ๊ธฐ_์ ์ -multiply_defined_unused -noall_load
-no_dead_strip_inits_and_terms -nofix ์ฌ์ ๋ฐ์ธ๋ฉ -nomultidefs -๋ ธํ๋ฆฌ๋ฐ์ธ๋
-noseglinkit -pagezero_size -์ฌ์ ๋ฐ์ธ๋ฉ -prebind_all_twolevel_modules -private_bundle
-read_only_relocs -๋ถํ ์ ๋ ฌ -์นํธ๊ฐ์ฒด ๊ธฐํธ -์ ๋ก๋ -์ธ๊ทธ1์ฃผ์ -์น์ ์์ฑ
-์นํธ๊ฐ์ฒด ๊ธฐํธ - ๋ถ๋ฌธ๋ณ -segaddr -segs_read_only_addr -segs_read_write_addr
-์ธ๊ทธ_์ฃผ์_ํ ์ด๋ธ -seg_addr_table_filename -์ธ๊ทธ๋งํฌ๋์ -์ธ๊ทธํ๋กํธ -segs_read_only_addr
-segs_read_write_addr -๋จ์ผ_๋ชจ๋ -๊ณต์ -ํ์_๋ผ์ด๋ธ๋ฌ๋ฆฌ -sub_umbrella
-twolevel_namespace -์ฐ์ฐ -์ฐพ์ผ์๋ ์ฃผ์๊ฐ ์์ต๋๋ค -๋ด๋ณด๋ด์ง ์์_๊ธฐํธ_๋ชฉ๋ก
-weak_reference_mismatches -๋ฌด์์ ๋ก๋ -F -๊ฑฐ์ค -gfull -mmacosx-๋ฒ์ -์ต์=๋ฒ์
-mkernel -mon-byte-bool
12์ ์ํ ์ต์ -mno-fp-regs -msoft-float -์ด๋ฐ - ๋ถ์ ํํ
-mieee-์ค์ -mfp-ํธ๋ฉ ๋ชจ๋=๋ชจ๋ -mfp-๋ฐ์ฌ๋ฆผ ๋ชจ๋=๋ชจ๋ -mtrap-์ ๋ฐ๋=๋ชจ๋
-mbuild-์์ -mcpu =CPU ์ ํ -mtune=CPU ์ ํ -mbwx -mmax -mfix -mcix
-mfloat-vax -mfloat-ieee -mexplicit-relocs -msmall-๋ฐ์ดํฐ -mlarge-๋ฐ์ดํฐ -m์์ ํ ์คํธ
-mlarge-ํ ์คํธ -๋ฉ๋ชจ๋ฆฌ ๋๊ธฐ ์๊ฐ=์๊ฐ
FR30 ์ต์ -m์์ ๋ชจ๋ธ -mno-lsim
FRV ์ต์ -mgpr-32 -mgpr-64 -mfpr-32 -mfpr-64 -mhard-float -msoft-float
-malloc-cc -mfixed-cc -mdword -mno-dword -m๋๋ธ -mno-๋๋ธ -๋ฏธ๋์ด -mno-๋ฏธ๋์ด
-mmuladd -mno-๋ฌผ๋ผ๋ -mfdpic -minline-plt -mgprel-๋ก -multilib-๋ผ์ด๋ธ๋ฌ๋ฆฌ-pic
-Mlinked-FP -mlong-ํตํ -์ ์ฑ ๋ ์ด๋ธ - ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ง -๋งฅ-4 -๋งฅ-8 -mpack
-mno-ํฉ -mno ํ๋๊ทธ -mcond-์ด๋ -mno-cond-์ด๋ -moptimize-๋ฉค๋ฐ
-mno-optimize-๋ฉค๋ฐ -mscc -mno-scc -mcond-exec -mno-์กฐ๊ฑด-exec -mvliw-๋ถ๊ธฐ
-mno-vliw-๋ถ๊ธฐ -m๋ค์ค ์กฐ๊ฑด ์คํ -mno-๋ค์ค ์กฐ๊ฑด-exec -mnested-cond-exec
-mno-์ค์ฒฉ-์กฐ๊ฑด-exec -mtomcat-ํต๊ณ -mTLS -mtls -mcpu =CPU
GNU / ๋ฆฌ๋ ์ค ์ต์ -mglibc -๋ฎคํด๋ฆฝ -์ ๋น์ค๋ -๋งจ๋๋ก์ด๋ -tno-์๋๋ก์ด๋-cc -tno-์๋๋ก์ด๋-ld
H8 / 300 ์ต์ -mrelax -mh -ms -mn -๋ฉ์ค -mno-exr -๋ฏผํธ32 -์ ์ฑ-300
HPPA ์ต์ -ํ์ง=๊ฑด์ถํ -mbig ์ค์์น -mdisable-fpregs
-mdisable-์ธ๋ฑ์ฑ -mfast-๊ฐ์ ํธ์ถ - ๊ฐ์ค -mgnu-ld -mhp-ld
-m๊ณ ์ ๋ฒ์=๋ ์ง์คํฐ ๋ฒ์ -m์ ํ-์ธ-์ง์ฐ -mlinker-opt -mlong-ํตํ
-mlong-๋ก๋-์คํ ์ด -mno-ํฐ ์ค์์น -mno-disable-fpregs -mno-disable-์ธ๋ฑ์ฑ
-mno-๋น ๋ฅธ ๊ฐ์ ํธ์ถ -mno-๊ฐ์ค -mno-์ ํ-์ธ-์ง์ฐ -mno-long-load-store
-mno-ํด๋์ฉ-๋ฐํ์ -mno-์ํํธ-ํ๋กํธ -mno-๊ณต๊ฐ-regs -msoft-float -mpa-risc-1-0
-mpa-risc-1-1 -mpa-risc-2-0 -๊ฐ๋ ๊ฐ๋ฅํ ๋ฐํ์ -ms์ค์ผ์ค=CPU ์ ํ -mspace-regs
-msio -mwsio -๋ฎค๋์ค=์ ๋์ค ํ์ค -nolibdld -๊ณต์ - ์ค๋ ๋
i386 and x86-64 ์ต์ -mtune=CPU ์ ํ -ํ์ง=CPU ์ ํ -mfpmath=๋จ์ -๋งค์ฆ=๋ฐฉ์ธ
-mno-ํฌ์-์ํ-387 -mno-fp-ret-in-387 -msoft-float -mno-์์ด๋-๊ณฑํ๊ธฐ -mrtd
-์ ์ฑ-๋๋ธ -mpreferred-์คํ-๊ฒฝ๊ณ=NUM -์ต์ํ ์คํ ๊ฒฝ๊ณ=NUM -mcld
-mcx16 -msahf -mmovbe -mcrc32 -mrecip -mrecip=๊ณ ๋ฅด๋ค -mvzeroupper -mprefer-avx128 -mmmx.
-msse -msse2. -msse3. -mssse3 -msse4.1. -msse4.2. -msse4. -mavx -mavx2 -๋ฉ์ค -mpclmul
-mfsgsbase -mrdrnd -mf16c. -mfma -msse4a -m3dnow -mpopcnt -๋ง๋ง -mbmi -mtbm -mfma4
-mxop -mlzcnt -mbmi2 -mrtm -mlwp -m์ค๋ ๋ -mno-align-stringops
-minline-all-stringops -minline-stringops-๋์ ์ผ๋ก -mstringop-์ ๋ต=ALG
-mpush-์ธ์ -maccumulate-outgoing-args -m128bit-๋กฑ-๋๋ธ -m96bit-๋กฑ-๋๋ธ
-mlong-๋๋ธ-64 -mlong-๋๋ธ-80 -mregparm=NUM -msseregparm -mveclibabi=์ ํ
-mvect8-ret-in-mem -mpc32 -mpc64 -mpc80 -mstack์ฌ์ ๋ ฌ -momit-๋ฆฌํ ํ๋ ์ ํฌ์ธํฐ
-mno-๋ ๋-์กด -mno-tls-direct-seg-refs -mc๋ชจ๋ธ=์ฝ๋ ๋ชจ๋ธ -๋ง๋น=name
-maddress ๋ชจ๋=๋ชจ๋ -m32 -m64 -mx32 -mlarge-๋ฐ์ดํฐ-์๊ณ๊ฐ=NUM -msse2avx -์ ํํธ๋ฆฌ
-m8bit-idiv -mavx256-๋ถํ -์ ๋ ฌ๋์ง ์์-๋ก๋ -mavx256-๋ถํ -์ ๋ ฌ๋์ง ์์-์ ์ฅ
i386 and x86-64 Windows ์ต์ -mconsole -mcygwin -mno-cygwin -mdll
-mnop-์ฌ๋ฏธ-dllimport --mthread. -๋ฎค๋์ฝ๋ -mwin32 -mwindows -fno-set-stack-์คํ ๊ฐ๋ฅ
IA-64 ์ต์ -mbig-์๋์ -๋ฏธ๋ฆฌํ ์๋์ -mgnu-as -mgnu-ld -mno-๊ทธ๋ฆผ
-mvolatile-asm-์ค์ง -m ๋ ์ง์คํฐ ์ด๋ฆ -msdata -mno-sdata -m์์-gp -์๋ ์ฌ์ง
-๋จธํจ์ฆ๋-๋งค๋ -minline-float-divide-min-latency -minline-float-divide-max-์ฒ๋ฆฌ๋
-mno-inline-float-divide -minline-int-divide-min-latency
-minline-int-divide-max-์ฒ๋ฆฌ๋ -mno-์ธ๋ผ์ธ-int-๋๋๊ธฐ -minline-sqrt-์ต์ ๋๊ธฐ ์๊ฐ
-minline-sqrt-max-์ฒ๋ฆฌ๋ -mno-์ธ๋ผ์ธ-sqrt -mdwarf2-asm -๊ฑฐ์ ์คํฑ ๋นํธ
-m๊ณ ์ ๋ฒ์=๋ ์ง์คํฐ ๋ฒ์ -mtls-ํฌ๊ธฐ=tls ํฌ๊ธฐ -mtune=CPU ์ ํ -milp32. -mlp64
-msched-br-๋ฐ์ดํฐ-์ฌ์ -msched-ar-๋ฐ์ดํฐ-์ฌ์ -msched-์ ์ด-์ฌ์ -msched-br-in-data-spec
-msched-ar-in-data-spec -msched-in-control-spec -msched-spec-ldc
-msched-spec-control-ldc -msched-prefer-๋น-๋ฐ์ดํฐ-์ฌ์-insns
-msched-prefer-non-control-spec-insns -๋งค ์ฃผ๊ธฐ ํ msched-stop-bits
-msched-count-spec-in-์ค์-๊ฒฝ๋ก -msel-sched-dont-check-control-spec
-msched-fp-mem-deps-์ ๋ก ๋น์ฉ -msched-์ต๋-๋ฉ๋ชจ๋ฆฌ-insns-ํ๋ ์ ํ
-msched-์ต๋-๋ฉ๋ชจ๋ฆฌ-insns=์ต๋-์ธ์ค
LM32 ์ต์ -mbarrel-shift ์ฌ์ฉ ๊ฐ๋ฅ -mdivide ์ฌ์ฉ -m๊ณฑํ๊ธฐ ๊ฐ๋ฅ
-msign ํ์ฅ ๊ฐ๋ฅ -muser ์ฌ์ฉ ๊ฐ๋ฅ
M32R/D ์ต์ -m32r2 -m32rx -m32r -m๋๋ฒ๊ทธ -์ ์ฑ ๋ฃจํ -mno-align ๋ฃจํ
-์ค๋ฅ์จ=๋ฒํธ -mbranch ๋น์ฉ=๋ฒํธ -๋ชจ๋ธ=์ฝ๋ ํฌ๊ธฐ ๋ชจ๋ธ ์ ํ -ms๋ฐ์ดํฐ=์ฌ๋ค
์ ํ -mno-ํ๋ฌ์-ํํฌ -mflush-func=name -mno-ํ๋ฌ์-ํธ๋ฉ -mflush-ํธ๋ฉ=๋ฒํธ -G NUM
M32C ์ต์ -mcpu =CPU -msim -memregs=๋ฒํธ
M680x0 ์ต์ -ํ์ง=์์น -mcpu =CPU -mtune=๊ณก์กฐ -m68000 -m68020 -m68020-40
-m68020-60 -m68030 -m68040 -m68060 -mcpu32 -m5200 -m5206e -m528x -m5307 -m5407
-mcfv4e -mbitํ๋ -mno ๋นํธ ํ๋ -mc68000 -mc68020 -mnobitํ๋ -mrtd -mno-rtd
-mdiv -mno-div -m์งง์ -mno-์งง์ -mhard-float -m68881 -msoft-float -mprel
-์ ์ฑ-int -mstrict-์ ๋ ฌ -msep-๋ฐ์ดํฐ -mno-XNUMX์-๋ฐ์ดํฐ -mshared-library-id=n
-์ค๊ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ -mno-id-๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ -mxgot -mno-xgot
์ ์ฝ์ด ์ต์ -mhardlit -mno-hardlit -mdiv -mno-div -mrelax-์ฆ์
-mno-relax-immediate -mwide-๋นํธ ํ๋ -mno ์์ด๋ ๋นํธ ํ๋ -m4byte-ํจ์
-mno-4byte-ํจ์ -mcallgraph-๋ฐ์ดํฐ -mno-callgraph-๋ฐ์ดํฐ -mslow-๋ฐ์ดํธ
-mno-๋๋ฆฐ ๋ฐ์ดํธ -mno-lsim -๋ฏธ๋ฆฌํ ์๋์ -mbig-์๋์ -m210 -m340
-mstack ์ฆ๊ฐ
MeP ์ต์ -๋ง์ค๋ํ -๋ชฐ ์ต์ -ํ๊ท -m ๊ธฐ๋ฐ=n -์ ๋นํ์ค -MC=n -mclip
-mconfig=name -์ ์บ -mcop32 -mcop64 -mivc2 -MDC -mdiv -๋ฉ๋ธ -๋ฉ -mio-ํ๋ฐ์ฑ -ml
-mleadz -mm -mminmax -๋ฉํฐ -mno ์ต์ -mrepeat -ms -msatur -msdram -msim -msimnovec
-MTF -์ต์ =n
๋ง์ดํฌ๋ก๋ธ๋ ์ด์ฆ ์ต์ -msoft-float -mhard-float -m์์ ๋๋๊ธฐ -mcpu =CPU -mmemcpy
-mxl-์ํํธ-๋ฎฌ -mxl-์ํํธ-div -mxl-๋ฐฐ๋ด ์ํํธ -mxl-ํจํด-๋น๊ต -mxl-์คํ ๊ฒ์ฌ
-mxl-gp-opt -mno-clearbss -mxl-๊ณฑํ๊ธฐ-๋์ -mxl-ํ๋กํธ ๋ณํ -mxl-ํ๋กํธ-sqrt
-mbig-์๋์ -๋ฏธ๋ฆฌํ ์๋์ -mxl-์ฌ์ฃผ๋ฌธ -mxl-๋ชจ๋-์ฑ ๋ชจ๋ธ
MIPS ์ต์ -์์ -EB -ํ์ง=์์น -mtune=์์น -๋ฐ์ค1 -๋ฐ์ค2 -๋ฐ์ค3 -๋ฐ์ค4
-๋ฐ์ค32 -mips32r2 -๋ฐ์ค64 -mips64r2 -๋ฐ์ค16 -mno-mips16 -mflip-mips16
-minterlink-mips16 -mno-interlink-mips16 -๋ง๋น=ABI -๋ง๋น์ฝ -mno-abicals
-m๊ณต์ -mno ๊ณต์ -MPLT -mno-plt -mxgot -mno-xgot -mgp32 -mgp64 -mfp32
-mfp64 -mhard-float -msoft-float -mno-float -msingle-float -m๋๋ธ ํ๋กํธ -mdsp
-mno-dsp -MDSPR2 -mno-dspr2 -mmcu -mmno-mcu -mfpu=fpu ์ ํ -msmartmips
-mno-smartmips -mpaired-๋จ์ผ -mno ์ ๋จ์ผ -mdmx -mno-mdmx -mips3d
-mno-mips3d -mmt -mno-mt -mllsc -mno-llsc -mlong64 -mlong32 -msym32 -mno-sym32
-GNUM -mlocal-sdata -mno-๋ก์ปฌ-sdata -mextern-sdata -mno-์ธ๋ถ-sdata -mgpopt
-mno-gopt -ํฌํจ๋ ๋ฐ์ดํฐ -mno-embedded-๋ฐ์ดํฐ -muninit-const-in-rodata
-mno-unit-const-in-rodata -mcode ํ๋ ๊ฐ๋ฅ=์ค์ -msplit ์ฃผ์
-mno-๋ถํ ์ฃผ์ -mexplicit-relocs -mno-๋ช ์์ -relocs -mcheck-XNUMX ๋๋์
-mno-check-zero-division -mdivide-ํธ๋ฉ -mdivide-break -mmemcpy -mno-memcpy
-mlong-ํตํ -mno-long-ํตํ -mmad -mno-mad -๋จธํจ์ฆ๋-๋งค๋ -mno-์ตํฉ-๋งค๋ -nocpp
-mfix-24k -mno-fix-24k -mfix-r4000 -mno-fix-r4000 -mfix-r4400 -mno-fix-r4400
-mfix-r10000 -mno-fix-r10000 -mfix-vr4120 -mno-fix-vr4120 -mfix-vr4130
-mno-fix-vr4130 -mfix-sb1 -mno-fix-sb1 -mflush-func=ํํฌ -mno-ํ๋ฌ์-ํํฌ
-mbranch ๋น์ฉ=NUM -mbranch ๊ฐ๋ฅ์ฑ์ด ์๋ -mno-branch-like -mfp-์์ธ
-mno-fp-์์ธ -mvr4130-์ ๋ ฌ -mno-vr4130-์ ๋ ฌ -msynci -mno-synci
-mrelax-ํฝ-์ฝ -mno-relax-pic-calls -mmcount-ra-์ฃผ์
์ ๋ฏน์ค ์ต์ -mlibfuncs -mno-libfuncs -๋ฉค์ค๋ก -mno-์ก์ค๋ก -๋ง๋น=๋
-๋ง๋น=mmixware -mzero ํ์ฅ -mknuthdiv -mtoplevel-์ฌ๋ณผ -๋ฉํ -mbranch ์์ธก
-mno-๋ถ๊ธฐ-์์ธก -mbase ์ฃผ์ -mno-base-์ฃผ์ -ms๋จ์ผ ์ข ๋ฃ
-mno-๋จ์ผ ์ข ๋ฃ
MN10300 ์ต์ - ๋ณตํฉ ๋ฒ๊ทธ -mno-multi-bug -mno-am33 -mam33 -mam33-2 -mam34 -mtune=CPU-
์ ํ -mreturn-ํฌ์ธํฐ-on-d0 -mno-crt0 -mrelax -๋ฐ๋ฆฌ -msetlb
์ฉ๊ฐ ์ต์ -๋ฉ๋ธ -๋ฉ -mno-crt0
PDP-11 ์ต์ -mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10 -mbcopy
-mbcopy ๋ด์ฅ -๋ฏผํธ32 -mno-int16 -๋ฏผํธ16 -mno-int32 -mfloat32 -mno-float64
-mfloat64 -mno-float32 -๋ง์ -mno-abshi -mbranch-๋น์ผ -mbranch-์ ๋ ดํ
-munix-asm -mdec-asm
ํผ์ฝ์นฉ ์ต์ -๋งค=ae_type -mvliw-์์ธก=N -msymbol-์ฃผ์
-mno-inefficiency-warnings
PowerPC ์ต์ RS/6000 ๋ฐ PowerPC ์ต์ ์ ์ฐธ์กฐํ์ญ์์ค.
RL78 ์ต์ -msim -mmul=์์ -mmul=g13 -mmul=rl78
RS/6000 and PowerPC ์ต์ -mcpu =CPU ์ ํ -mtune=CPU ์ ํ -mc๋ชจ๋ธ=์ฝ๋ ๋ชจ๋ธ
-mpowerpc64 -๋งํฐ๋ฒก -mno-altivec -mpowerpc-gpopt -mno-powerpc-gpopt
-mpowerpc-gfxopt -mno-powerpc-gfxopt -mmfcrf -mno-mfcrf -mpopcntb -mno-popcntb
-mpopcntd -mno-popcntd -mfprnd -mno-fprnd -mcmpb -mno-cmpb -mmfpgpr -mno-mfpgpr
-mhard-dfp -mno-ํ๋-dfp -mfull-toc -์ต์-toc -mno-fp-in-toc -mno-ํฉ๊ณ-๋ชฉ์ฐจ
-m64 -m32 -mxl-ํธํ -mno-xl-์ปดํจํธ -mp -์ ์๋ ฅ -์ ์ฑ - ์์ฐ
-msoft-float -mhard-float -m๋ค์ค -mno-๋ค์ค -msingle-float -m๋๋ธ ํ๋กํธ
-ms๋จ์-fpu -mstring -mno-๋ฌธ์์ด -์ ๋ฐ์ดํธ -mno-์ ๋ฐ์ดํธ -mavoid-์์ธ ์ฃผ์
-mno-avoid-์์ธ ์ฃผ์ -๋จธํจ์ฆ๋-๋งค๋ -mno-์ตํฉ-๋งค๋ -mbit ์ ๋ ฌ
-mno ๋นํธ ์ ๋ ฌ -mstrict-์ ๋ ฌ -mno-์๊ฒฉํ ์ ๋ ฌ -m ์ฌ๋ฐฐ์น ๊ฐ๋ฅ -mno ์ฌ๋ฐฐ์น ๊ฐ๋ฅ
-mrelocateable-lib -mno-relocateable-lib -mtoc -mno-toc -์กฐ๊ธ -๋ฏธ๋ฆฌํ ์๋์
-mbig -mbig-์๋์ -mdynamic-no-pic -๋งํฐ๋ฒก -mswdiv -msingle-pic-base
- ์ฐ์ ์์ ์ ํ - inns =์ฐ์ -msched-๋น์ฉ์ด ๋ง์ด ๋๋-dep=์์กด ์ ํ
-minsert-sched-nops=๊ณํ -mcall-sysv -mcall-netbsd -maix-๊ตฌ์กฐ์ฒด-๋ฐํ
-msvr4-๊ตฌ์กฐ์ฒด ๋ฐํ -๋ง๋น=์๋นํ -msecure-plt -mbss-plt
-mblock-์ด๋-์ธ๋ผ์ธ-์ ํ=NUM -๋ฏธ์ ค -mno-isel -misel=์ -misel=์๋์ -mspe -mno-sp
-mspe=์ -mspe=์๋์ -์ง์ด ๋ -mgen-cell-๋ง์ดํฌ๋ก์ฝ๋ -mwarn-cell-๋ง์ดํฌ๋ก์ฝ๋ -mvrsave
-mno-vrsave -mmulhw -mno-๋ฌผํ -mdlmzb -mno-dlmzb -mfloat-gprs=์ -mfloat-gprs=์๋์
-mfloat-gprs=๋จ์ผ -mfloat-gprs=๋๋ธ -mํ๋กํ ํ์ -mno ํ๋กํ ํ์ -msim -mmvme
- ๋ฏธ์น -๊ณจ์์นผ -๋ฉค๋ฒ -msdata -ms๋ฐ์ดํฐ=๊ณ ๋ฅด๋ค -mvxworks -G NUM -pthread -mrecip
-mrecip=๊ณ ๋ฅด๋ค -mno-recipe -mrecip-์ ๋ฐ๋ -mno-precision. -mveclibabi=์ ํ -mfriz
-mno-friz -์ค์ฒฉ ํจ์์ ๋ํ mpointers -์ค์ฒฉ ํจ์์ ๋ํ mno ํฌ์ธํฐ
-msave-toc-๊ฐ์ -mno-save-toc-๊ฐ์ -mpower8-ํจ์ -mno-mpower8-ํจ์
-mpower8-๋ฒกํฐ -mno-power8-๋ฒกํฐ -mcrypto -mno-์ํธํ -mdirect-์ด๋ -mno-์ง์ ์ด๋
-mquad-๋ฉ๋ชจ๋ฆฌ -mno ์ฟผ๋ ๋ฉ๋ชจ๋ฆฌ -mquad-๋ฉ๋ชจ๋ฆฌ-์์ -mno-์ฟผ๋-๋ฉ๋ชจ๋ฆฌ-์์
-mcompat-์ ๋ ฌ-parm -mno-compat-align-parm
RX ์ต์ -m64bit-๋๋ธ -m32bit-๋๋ธ -fpu -๋ ธํธ -mcpu = -mbig-endian-๋ฐ์ดํฐ
-mlittle-endian-๋ฐ์ดํฐ -msmall-๋ฐ์ดํฐ -msim -mno-sim -mas100-๊ตฌ๋ฌธ -mno-as100-๊ตฌ๋ฌธ
-mrelax -mmax-์ผ์ ํฌ๊ธฐ= -๋ฏผํธ ๋ ์ง์คํฐ= -mpid -mno-warn-๋ค์ค ๊ณ ์-์ธํฐ๋ฝํธ
-msave-ACC -์ - ์ธํฐ๋ฝํธ
S / 390 and z ์๋ฆฌ์ฆ ์ต์ -mtune=CPU ์ ํ -ํ์ง=CPU ์ ํ -mhard-float -msoft-float
-mhard-dfp -mno-ํ๋-dfp -mlong-๋๋ธ-64 -mlong-๋๋ธ-128 -mbackchain
-mno-๋ฐฑ์ฒด์ธ -mpacked-์คํ -mno-packed-์คํ -msmall-exec -mno-์ํ-exec
-mmvcle -mno-mvcle -m64 -m31 -m๋๋ฒ๊ทธ -mno ๋๋ฒ๊ทธ -๋ฉ์ฌ -mzarch -mtpf ์ถ์
-mno-tpf-์ถ์ -๋จธํจ์ฆ๋-๋งค๋ -mno-์ตํฉ-๋งค๋ -mwarn-ํ๋ ์ ํฌ๊ธฐ -mwarn-๋์ ์คํ
-mstack ํฌ๊ธฐ -mstack-๊ฐ๋ -mhotpatch=ํํ์๋,ํํ์๋
์ ์ ์ต์ -๋ฉ๋ธ -๋ฉ -mnhwloop -๋ฌผ -mmac -mscore5 -mscore5u -mscore7 -mscore7d
SH ์ต์ -m1 -m2 -m2e -m2a-๋ ธํธ -m2a-๋จ์ผ ์ ์ฉ -m2a-๋จ์ผ -m2a -m3 -m3e
-m4-๋ ธํธ -m4-๋จ์ผ ์ ์ฉ -m4-๋จ์ผ -m4 -m4a-๋ ธํธ -m4a-๋จ์ผ ์ ์ฉ -m4a-๋จ์ผ
-m4a -m4al -m5-64๋ฏธ๋์ด -m5-64๋ฏธ๋์ด-๋ ธํธ -m5-32๋ฏธ๋์ด -m5-32๋ฏธ๋์ด-๋ ธํธ -m5-์ปดํฉํธ
-m5-์ปดํฉํธ-nofpu -mb -ml -mdalign -mrelax -mbigtable -mfmovd -๋ฏธํ์น -๋ฏ๋ ๋ค์ฌ์ค
-mno-๋ฅด๋ค์ฌ์ค -mnomac์ ์ฅ -์ด๋ฐ -mno-ieee -์ ๋นํ์ค -์ฌ์ด์ฆ๋ฅผ ์๋ชป ๋ง์ถ๋ค -minline-ic_invalidate
-mpadstruct -mspace -mpfergot -muser ๋ชจ๋ -๋ค์ค ๋น์ฉ=๋ฒํธ -mdiv=์ ๋ต
-mdivsi3_libfunc=name -m๊ณ ์ ๋ฒ์=๋ ์ง์คํฐ ๋ฒ์ -mindexed ์ฃผ์ ์ง์
-mgettr๋น์ฉ=๋ฒํธ -mpt ๊ณ ์ -maccumulate-outgoing-args -์ต์ ์ ํจ ๊ธฐํธ
-์์ ๋ชจ๋ธ=์์ ๋ชจ๋ธ -mbranch ๋น์ฉ=NUM -mzdc๋ถ๊ธฐ -mno-zdc๋ธ๋์น -mcbranchdi
-mcmpeqdi -๋จธํจ์ฆ๋-๋งค๋ -mno-์ตํฉ-๋งค๋ -mfsca -mno-fsca -mfsrra -mno-fsrra
-์ฒ-cmove -mtas
์๋ผ๋ฆฌ์ค 2 ์ต์ -๋ถ์ํ ํ ์คํธ -mno-์์ ํ ์คํธ -pthread -pthread
SPARC ์ต์ -mcpu =CPU ์ ํ -mtune=CPU ์ ํ -mc๋ชจ๋ธ=์ฝ๋ ๋ชจ๋ธ -๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ=๋ฉ๋ชจ๋ฆฌ
๋ชจ๋ธ -m32 -m64 -map-regs -mno-app-regs -mfaster-๊ตฌ์กฐ์ฒด -mno-๋น ๋ฅธ ๊ตฌ์กฐ
-mํ๋ซ -mno-ํ๋ซ -mfpu -mno-fpu -mhard-float -msoft-float -mhard-quad-float
-msoft-์ฟผ๋-ํ๋กํธ -mstack ๋ฐ์ด์ด์ค -mno-์คํ-๋ฐ์ด์ด์ค -munaligned-๋๋ธ
-mno-unaligned-double -muser ๋ชจ๋ -mno-์ฌ์ฉ์ ๋ชจ๋ -mv8plus -mno-v8plus -mvis
-mno-vis -mvis2 -mno-vis2 -mvis3 -mno-vis3 -mcbcond -mno-cbcond -mfmaf -mno-fmaf
-mpoc -mno-popc -mfix-at697f -mfix-ut699
SPU ์ต์ -Mwarn-Reloc -mererror-reloc -msafe-dma -munsafe-dma -mbranch ํํธ
-msmall-mem -mlarge-mem -mstdmain -m๊ณ ์ ๋ฒ์=๋ ์ง์คํฐ ๋ฒ์ -mea32 -mea64
-maddress ๊ณต๊ฐ ๋ณํ -mno ์ฃผ์ ๊ณต๊ฐ ๋ณํ -mcache ํฌ๊ธฐ=์บ์ ํฌ๊ธฐ
-๋งํ ๋ฏน ์ ๋ฐ์ดํธ -mno-์์ ์ ๋ฐ์ดํธ
V ์ต์ -Qy -Qn - ์,๊ฒฝ๋ก -์,DIR
ํ์ผ-Gx ์ต์ -mcpu =CPU -m32 -m64 -mc๋ชจ๋ธ=์ฝ๋ ๋ชจ๋ธ
ํ์ผํ๋ก ์ต์ -mcpu =CPU -m32
V850 ์ต์ -mlong-ํตํ -mno-long-ํตํ -mep -mno-ep -mprolog-ํจ์
-mno-prolog-ํจ์ -mspace -mtda =n -msda=n -mzda=n -map-regs -mno-app-regs
-mdisable-callt -mno-๋นํ์ฑํ-์ฝํธ -mv850e2v3 -mv850e2 -mv850e1 -mv850es -mv850e
-mv850 -mv850e3v5 -mloop -mrelax -mlong-์ ํ -msoft-float -mhard-float -mgcc-์๋น
-mrh850-์๋น -mbig ์ค์์น
๋ฐฑ์ค ์ต์ -mg -mgnu -๋ฎค๋์ค
VMS ์ต์ -mvms-๋ฐํ ์ฝ๋ -mdebug-๋ฉ์ธ=์ ๋์ฌ -mmalloc64 -mpointer-ํฌ๊ธฐ=ํฌ๊ธฐ
VxWorks ์ต์ -mrtp -๋น์ ์ -๋น์ ์ -๋น๋ค์ด๋๋ฏน -Xbind-๊ฒ์ผ๋ฅธ -X๋ฐ์ธ๋-์ง๊ธ
x86-64 ์ต์ i386 ๋ฐ x86-64 ์ต์ ์ ์ฐธ์กฐํ์ญ์์ค.
Xstormy16 ์ต์ -msim
์์คํ ์ฌ ์ต์ -mconst16 -mno-const16 -๋จธํจ์ฆ๋-๋งค๋ -mno-์ตํฉ-๋งค๋ -mforce-no-pic
- ์ง๋ ฌํ - ํ๋ฐ์ฑ -mno ์ง๋ ฌํ ํ๋ฐ์ฑ -mtext-์น์ -๋ฆฌํฐ๋ด
-mno-ํ ์คํธ-์น์ -๋ฆฌํฐ๋ด -mtarget-์ ๋ ฌ -mno-ํ๊ฒ-์ ๋ ฌ -๊ธด ํตํ
-mno-longcalls
z ์๋ฆฌ์ฆ ์ต์ S/390 ๋ฐ zSeries ์ต์ ์ ์ฐธ์กฐํ์ญ์์ค.
์ํธ ์ธ๋ ์ต์
-fcall ์ ์ฅ-๋ฑ๋ก ๋ฒํธ -fcall ์ฌ์ฉ-๋ฑ๋ก ๋ฒํธ -๊ณ ์ -๋ฑ๋ก ๋ฒํธ -์์ธ -fnon-call-exception
-fdelete-dead-์์ธ -ํ์๋ ํ ์ด๋ธ -fasynchronous-unwind-tables -fno-gnu-๊ณ ์
-finhibit-size-์ง์์ด - ๊ธฐ๊ตฌ ๊ธฐ๋ฅ
-finstrument-๊ธฐ๋ฅ-์ ์ธ-๊ธฐ๋ฅ-๋ชฉ๋ก=SYM,SYM, ...
-finstrument-๊ธฐ๋ฅ-์ ์ธ-ํ์ผ-๋ชฉ๋ก=ํ์ผ,ํ์ผ, ... -fno-๊ณตํต -fno-ident
-fpcc-๊ตฌ์กฐ์ฒด-๋ฐํ -fpic -fPIC -ํ์ด -fPIE -fno-์ ํ ํ ์ด๋ธ -frecord-gcc-์ค์์น
-freg-๊ตฌ์กฐ์ฒด-๋ฐํ -fshort ์ด๊ฑฐํ -fshort-๋๋ธ -fshort-wchar -fverbose-asm
-fpack-๊ตฌ์กฐ์ฒด[=n] -fstack-์ฒดํฌ -fstack ์ ํ ๋ ์ง์คํฐ=๋ฑ๋ก ๋ฒํธ -fstack-์ ํ-์ฌ๋ณผ=SYM
-fno-์คํ ์ ํ -fsplit ์คํ - ๋ฐ์ค์ ๊ธ๋ค -ftls-๋ชจ๋ธ=๋ชจ๋ธ
-fstack-์ฌ์ฌ์ฉ=์ฌ์ฌ์ฉ ์์ค -ftrapv. -fwrapv -fbounds-์ฒดํฌ -๊ฐ์์ฑ
-fstrict-ํ๋ฐ์ฑ ๋นํธ ํ๋ -fsync-libcalls
์ต์ ์ ์ด ์ ์, ์ข ๋ฅ of ์ฐ์ถ
์ปดํ์ผ์๋ ์ฌ์ ์ฒ๋ฆฌ, ์ ์ ํ ์ปดํ์ผ, ์ด์ ๋ธ๋ฆฌ ๋ฐ
ํญ์ ๊ทธ ์์๋๋ก ์ฐ๊ฒฐํฉ๋๋ค. GCC๋ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ์ฌ์ ์ฒ๋ฆฌํ๊ณ ์ปดํ์ผํ ์ ์์ต๋๋ค.
์ฌ๋ฌ ์ด์ ๋ธ๋ฌ ์ ๋ ฅ ํ์ผ ๋๋ ํ๋์ ์ด์ ๋ธ๋ฌ ์ ๋ ฅ ํ์ผ๋ก ํ์ผ; ๊ทธ ๋ค์์
๊ฐ ์ด์ ๋ธ๋ฌ ์ ๋ ฅ ํ์ผ์ ๊ฐ์ฒด ํ์ผ์ ์์ฑํ๊ณ ๋งํฌ๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๊ฒฐํฉํฉ๋๋ค.
ํ์ผ(์๋ก ์ปดํ์ผ๋ ํ์ผ ๋ฐ ์ ๋ ฅ์ผ๋ก ์ง์ ๋ ํ์ผ)์ ์คํ ํ์ผ๋ก ๋ณํํฉ๋๋ค.
์ฃผ์ด์ง ์ ๋ ฅ ํ์ผ์ ๋ํด ํ์ผ ์ด๋ฆ ์ ๋ฏธ์ฌ๋ ์ปดํ์ผ์ ์ข ๋ฅ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
๋๋:
ํ์ผ.c
์ ์ฒ๋ฆฌํด์ผ ํ๋ C ์์ค ์ฝ๋.
ํ์ผ.i
์ ์ฒ๋ฆฌํ๋ฉด ์๋๋ C ์์ค ์ฝ๋.
ํ์ผ.ii
์ ์ฒ๋ฆฌํ๋ฉด ์๋๋ C++ ์์ค ์ฝ๋.
ํ์ผ.m
์ค๋ธ์ ํฐ๋ธ-C ์์ค ์ฝ๋. ์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. libobjc ๋ง๋๋ ๋์๊ด
์ค๋ธ์ ํฐ๋ธ-C ํ๋ก๊ทธ๋จ ์์ .
ํ์ผ.๋ฏธ
์ ์ฒ๋ฆฌํด์๋ ์๋๋ Objective-C ์์ค ์ฝ๋.
ํ์ผ.mm
ํ์ผ.M
Objective-C++ ์์ค ์ฝ๋. ์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. libobjc ๋ง๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Objective-C++ ํ๋ก๊ทธ๋จ์ด ์๋ํฉ๋๋ค. ์ฐธ๊ณ .M ๋ฌธ์ ๊ทธ๋๋ก ๋๋ฌธ์ M์ ๋ํ๋ ๋๋ค.
ํ์ผ.mii
์ ์ฒ๋ฆฌํด์๋ ์๋๋ Objective-C++ ์์ค ์ฝ๋.
ํ์ผ.h
C, C++, Objective-C ๋๋ Objective-C++ ํค๋ ํ์ผ์ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํ์ผ๋ก ๋ณํ
ํค๋(๊ธฐ๋ณธ๊ฐ) ๋๋ C, C++ ํค๋ ํ์ผ์ Ada ์ฌ์์ผ๋ก ๋ณํํฉ๋๋ค(
-fdump-ada-spec ์ค์์น).
ํ์ผ.CC
ํ์ผ.cp
ํ์ผ.cxx
ํ์ผ.cpp
ํ์ผ.CPP
ํ์ผ.C++
ํ์ผ.C
์ ์ฒ๋ฆฌํด์ผ ํ๋ C++ ์์ค ์ฝ๋. ์ฐธ๊ณ ๋ก .cxx, ๋ง์ง๋ง ๋ ๊ธ์
๋ ๋ค ๋ง ๊ทธ๋๋ก x. ๋ง์ฐฌ๊ฐ์ง๋ก, .C ๋ฌธ์ ๊ทธ๋๋ก ๋๋ฌธ์ C๋ฅผ ๋ํ๋ ๋๋ค.
ํ์ผ.mm
ํ์ผ.M
์ ์ฒ๋ฆฌํด์ผ ํ๋ Objective-C++ ์์ค ์ฝ๋์ ๋๋ค.
ํ์ผ.mii
์ ์ฒ๋ฆฌํด์๋ ์๋๋ Objective-C++ ์์ค ์ฝ๋.
ํ์ผ.hh
ํ์ผ.H
ํ์ผ.hp
ํ์ผ.hxx
ํ์ผ.hpp
ํ์ผ.HPP
ํ์ผ.h++
ํ์ผ.tcc
C++ ํค๋ ํ์ผ์ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋ ๋๋ Ada ์ฌ์์ผ๋ก ๋ณํํฉ๋๋ค.
ํ์ผ.f
ํ์ผ.์์ํ
ํ์ผ.ftn
์ฌ์ ์ฒ๋ฆฌ๋์ง ์์์ผ ํ๋ ๊ณ ์ ๋ ํ์์ Fortran ์์ค ์ฝ๋์ ๋๋ค.
ํ์ผ.F
ํ์ผ.์์ํ
ํ์ผ.fpp
ํ์ผ.FPP
ํ์ผ.FTN
์ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ณ ์ ํ์ Fortran ์์ค ์ฝ๋(๊ธฐ์กด
์ ์ฒ๋ฆฌ๊ธฐ).
ํ์ผ.f90
ํ์ผ.f95
ํ์ผ.f03
ํ์ผ.f08
์ฌ์ ์ฒ๋ฆฌ๋์ง ์์์ผ ํ๋ ์์ ํ์ Fortran ์์ค ์ฝ๋์ ๋๋ค.
ํ์ผ.F90
ํ์ผ.F95
ํ์ผ.F03
ํ์ผ.F08
์ฌ์ ์ฒ๋ฆฌํด์ผ ํ๋ ์์ ํ์ Fortran ์์ค ์ฝ๋(๊ธฐ์กด
์ ์ฒ๋ฆฌ๊ธฐ).
ํ์ผ.๊ฐ๋ค
์์ค ์ฝ๋๋ก ์ด๋ํฉ๋๋ค.
ํ์ผ.ads
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋จ์ ์ ์ธ(a์ ์ ์ธ)์ ํฌํจํ๋ Ada ์์ค ์ฝ๋ ํ์ผ
ํจํค์ง, ํ์ ํ๋ก๊ทธ๋จ ๋๋ ์ผ๋ฐ ๋๋ ์ผ๋ฐ ์ธ์คํด์คํ) ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋จ์
์ด๋ฆ ๋ฐ๊พธ๊ธฐ ์ ์ธ(ํจํค์ง, ์ผ๋ฐ ๋๋ ํ์ ํ๋ก๊ทธ๋จ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ ์ ์ธ). ๊ทธ๋ฐ
ํ์ผ์ด๋ผ๊ณ ๋ ํจ ๋ช ์ธ์.
ํ์ผ.adb
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋จ์ ๋ณธ๋ฌธ(์๋ธ ํ๋ก๊ทธ๋จ ๋๋ ํจํค์ง ๋ณธ๋ฌธ)์ ํฌํจํ๋ Ada ์์ค ์ฝ๋ ํ์ผ.
์ด๋ฌํ ํ์ผ์ ๊ธฐ๊ด.
ํ์ผ.d
D ์์ค ์ฝ๋ ํ์ผ.
ํ์ผ.๋
D ์ธํฐํ์ด์ค ์ฝ๋ ํ์ผ.
ํ์ผ.dd
D ๋ฌธ์ ์ฝ๋ ํ์ผ.
ํ์ผ.s
์ด์ ๋ธ๋ฌ ์ฝ๋.
ํ์ผ.S
ํ์ผ.sx
์ ์ฒ๋ฆฌํด์ผ ํ๋ ์ด์ ๋ธ๋ฌ ์ฝ๋์ ๋๋ค.
other
๋งํฌ์ ์ง์ ๊ณต๊ธํ ๊ฐ์ฒด ํ์ผ์ ๋๋ค. ์ธ์๋์ง ์๋ ๋ชจ๋ ํ์ผ ์ด๋ฆ
์ ๋ฏธ์ฌ๋ ์ด๋ฐ ์์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
๋ค์์ ์ฌ์ฉํ์ฌ ์ ๋ ฅ ์ธ์ด๋ฅผ ๋ช ์์ ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค. -x ์ต์ :
-x ์ธ์ด
๋ช ์์ ์ผ๋ก ์ง์ ์ธ์ด ๋ค์ ์ ๋ ฅ ํ์ผ์ ๋ํด (๋์
์ปดํ์ผ๋ฌ๋ ํ์ผ ์ด๋ฆ ์ ๋ฏธ์ฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ ์ ํํฉ๋๋ค. ์ด ์ต์ ์ ๋ชจ๋
๋ค์ ์ ๋ ฅ ํ์ผ๊น์ง -x ์ต์ . ๊ฐ๋ฅํ ๊ฐ ์ธ์ด ์์น :
c c-ํค๋ cpp-์ถ๋ ฅ
C++ C++-ํค๋ C++-cpp-์ถ๋ ฅ
๋ชฉ์ -c ๋ชฉ์ -c-ํค๋ ๋ชฉ์ -c-cpp-์ถ๋ ฅ
๋ชฉ์ -c++ ๋ชฉ์ -c++-ํค๋ ๋ชฉ์ -c++-cpp-์ถ๋ ฅ
์ด์ ๋ธ๋ฌ ์ด์ ๋ธ๋ฌ-with-cpp
ADA
d
f77 f77-cpp-์ ๋ ฅ f95 f95-cpp-์ ๋ ฅ
go
์๋ฐ
-x ์์
ํ์ ํ์ผ์ด ์ฒ๋ฆฌ๋๋๋ก ์ธ์ด์ ๋ชจ๋ ์ฌ์์ ๋๋๋ค.
ํ์ผ ์ด๋ฆ ์ ๋ฏธ์ฌ์ ๋ฐ๋ผ -x ์ ํ ์ฌ์ฉ๋์ง ์์์ต๋๋ค).
-ํต๊ณผ ์ข ๋ฃ ์ฝ๋
์ผ๋ฐ์ ์ผ๋ก GCC ์ปดํ์ผ๋ฌ์ ๋จ๊ณ๊ฐ ๋ฐํ๋๋ฉด ํ๋ก๊ทธ๋จ์ด 1์ ์ฝ๋๋ก ์ข ๋ฃ๋ฉ๋๋ค.
์ฑ๊ณตํ์ง ๋ชปํ ๋ฐํ ์ฝ๋. ์ง์ ํ๋ ๊ฒฝ์ฐ -ํต๊ณผ ์ข ๋ฃ ์ฝ๋Walk Through California ํ๋ก๊ทธ๋จ, GCC ๋์ ํ๋ก๊ทธ๋จ
์ค๋ฅ๋ฅผ ๋ฐํํ๋ ๋จ๊ณ์์ ์์ฑ๋ ์์น์ ๊ฐ์ฅ ๋์ ์ค๋ฅ๋ก ๋ฐํ
ํ์. ๋ด๋ถ ์ปดํ์ผ๋ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด C, C++ ๋ฐ Fortran ํ๋ฐํธ ์๋์์ 4๋ฅผ ๋ฐํํฉ๋๋ค.
๋ง๋๋ค.
์ปดํ์ผ ๋จ๊ณ ์ค ์ผ๋ถ๋ง ์ํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. -x (๋๋ ํ์ผ ์ด๋ฆ ์ ๋ฏธ์ฌ)
๋งํ๋ค GCC ์์ ์์น ๋ฐ ์ต์ ์ค ํ๋ -c, -S๋ฐ -E ์ด๋๋ฅผ ๋งํ๋ค GCC ํ๋ ๊ฒ์ ๋๋ค
๋ฉ์ถ๋ค. ์ผ๋ถ ์กฐํฉ(์: -x cpp ์ถ๋ ฅ -E) ์ง์ํ๋ค GCC ํ
์ ํ.
-c ์์ค ํ์ผ์ ์ปดํ์ผํ๊ฑฐ๋ ์ด์ ๋ธํ๋ ๋งํฌํ์ง ๋ง์ญ์์ค. ์ฐ๊ฒฐ ๋จ๊ณ๋ ๋จ์ํ
์๋ฃ๋์ง ์์์ต๋๋ค. ์ต์ข ์ถ๋ ฅ์ ๊ฐ ์์ค ํ์ผ์ ๋ํ ๋ชฉ์ ํ์ผ ํ์์ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์์ค ํ์ผ์ ๊ฐ์ฒด ํ์ผ ์ด๋ฆ์ ์ ๋ฏธ์ฌ๋ฅผ ๋์ฒดํ์ฌ ๋ง๋ค์ด์ง๋๋ค. .c,
.i, .s, ๋ฑ .o.
์ปดํ์ผ์ด๋ ์ด์ ๋ธ๋ฆฌ๊ฐ ํ์ํ์ง ์์ ์ธ์๋์ง ์๋ ์ ๋ ฅ ํ์ผ์ ๋ฌด์๋ฉ๋๋ค.
-S ์ ์ ํ ์ปดํ์ผ ๋จ๊ณ ํ์ ์ค์งํ์ญ์์ค. ์กฐ๋ฆฝํ์ง ๋ง์ญ์์ค. ์ถ๋ ฅ์
์ง์ ๋ ๊ฐ ๋น ์ด์ ๋ธ๋ฌ ์ ๋ ฅ ํ์ผ์ ๋ํ ์ด์ ๋ธ๋ฌ ์ฝ๋ ํ์ผ ํ์์ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์์ค ํ์ผ์ ์ด์ ๋ธ๋ฌ ํ์ผ ์ด๋ฆ์ ์ ๋ฏธ์ฌ๋ฅผ ๋์ฒดํ์ฌ ๋ง๋ค์ด์ง๋๋ค.
.c, .i, ๋ฑ .s.
์ปดํ์ผ์ด ํ์ํ์ง ์์ ์ ๋ ฅ ํ์ผ์ ๋ฌด์๋ฉ๋๋ค.
-E ์ ์ฒ๋ฆฌ ๋จ๊ณ ํ์ ์ค์งํ์ญ์์ค. ์ปดํ์ผ๋ฌ๋ฅผ ์ ์ ํ๊ฒ ์คํํ์ง ๋ง์ญ์์ค. ์ถ๋ ฅ์
ํ์ค ์ถ๋ ฅ์ผ๋ก ์ ์ก๋๋ ์ฌ์ ์ฒ๋ฆฌ๋ ์์ค ์ฝ๋์ ํ์์ ๋๋ค.
์ ์ฒ๋ฆฌ๊ฐ ํ์ํ์ง ์์ ์ ๋ ฅ ํ์ผ์ ๋ฌด์๋ฉ๋๋ค.
-o ํ์ผ
ํ์ผ์ ์ถ๋ ฅ ๋ฐฐ์น ํ์ผ. ์ด๊ฒ์ ์ด๋ค ์ข ๋ฅ์ ์ถ๋ ฅ์ด ์์ฑ๋๋ ์ ์ฉ๋ฉ๋๋ค.
์คํ ํ์ผ, ๊ฐ์ฒด ํ์ผ, ์ด์ ๋ธ๋ฌ ํ์ผ ๋๋ ์ ์ฒ๋ฆฌ๋ C
์ํธ.
If -o ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ์คํ ํ์ผ์ ์ ์ฅํ๋ ๊ฒ์ ๋๋ค. ์์, ๊ทธ ๋ฌผ์ฒด
~์์ํ ํ์ผ ์์ค.์ ๋ฏธ์ฌ in ์์ค.์ค, ํด๋น ์ด์ ๋ธ๋ฌ ํ์ผ ์์ค, ๋ฏธ๋ฆฌ ์ปดํ์ผ๋
ํค๋ ํ์ผ ์์ค.์ ๋ฏธ์ฌ.gch, ๊ทธ๋ฆฌ๊ณ ํ์ค ์ถ๋ ฅ์ ๋ชจ๋ ์ ์ฒ๋ฆฌ๋ C ์์ค.
-v ๋ค์ ๋จ๊ณ๋ฅผ ์คํํ๊ธฐ ์ํด ์คํ๋ ๋ช ๋ น์ ์ธ์ํฉ๋๋ค(ํ์ค ์ค๋ฅ ์ถ๋ ฅ์์).
ํธ์ง. ๋ํ ์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ ํ๋ก๊ทธ๋จ์ ๋ฒ์ ๋ฒํธ์
์ ์ฒ๋ฆฌ๊ธฐ์ ์ปดํ์ผ๋ฌ๊ฐ ์ ์ ํฉ๋๋ค.
-###
์ฒ๋ผ -v ๋ช ๋ น์ด ์คํ๋์ง ์๊ณ ์ธ์๊ฐ ์ธ์ฉ๋์ง ์๋ ํ
์์ซ์ ๋๋ "./-_"๋ง ํฌํจํฉ๋๋ค. ์ด๊ฒ์ ์ ์คํฌ๋ฆฝํธ๊ฐ ๋ค์์ ์ํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
๋๋ผ์ด๋ฒ ์์ฑ ๋ช ๋ น์ค์ ์บก์ฒํฉ๋๋ค.
-ํ์ดํ
๋ค์ํ ๋จ๊ณ์ ํต์ ์ ์ํด ์์ ํ์ผ ๋์ ํ์ดํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํธ์ง. ์ด๊ฒ์ ์ด์ ๋ธ๋ฌ๊ฐ ์ฝ์ ์ ์๋ ์ผ๋ถ ์์คํ ์์ ์๋ํ์ง ์์ต๋๋ค.
ํ์ดํ์์; ๊ทธ๋ฌ๋ GNU ์ด์ ๋ธ๋ฌ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
--๋์
๋ค์์์ ์ดํดํ๋ ๋ช ๋ น์ค ์ต์ ์ ๋ํ ์ค๋ช ์ ํ์ค ์ถ๋ ฅ์ ์ธ์ํฉ๋๋ค.
GCC. ๊ฒฝ์ฐ -v ์ต์ ๋ ์ง์ ๋ฉ๋๋ค. --๋์ ๋ํ ๋ค์ํ ์ฌ๋๋ค์๊ฒ ์ ๋ฌ๋ฉ๋๋ค.
์ ์ํด ํธ์ถ๋ ํ๋ก์ธ์ค GCC, ๋ช ๋ น์ค ์ต์ ์ ํ์ํ ์ ์๋๋ก
๋์ํ๊ธฐ. ๋ง์ฝ -์ฉ์คํธ๋ผ ์ต์ ๋ ์ง์ ๋์์ต๋๋ค(์ด์ ์ --๋์ ์ต์ ),
๊ด๋ จ ๋ฌธ์๊ฐ ์๋ ๋ช ๋ น์ค ์ต์ ๋
ํ์๋ฉ๋๋ค.
-ํ๊ฒ ํํ
๋์๋ณ ๋ช ๋ น์ค ์ต์ ์ ๋ํ ์ค๋ช ์ธ์(ํ์ค ์ถ๋ ฅ์์)
๊ฐ ๋๊ตฌ์ ๋ํด. ์ผ๋ถ ๋์์ ๊ฒฝ์ฐ ์ถ๊ฐ ๋์๋ณ ์ ๋ณด๋ ์์ ์ ์์ต๋๋ค.
์ธ์.
--๋์={์์ |[^]์๊ฒฉ}[, ...]
๋ค์์์ ์ดํดํ๋ ๋ช ๋ น์ค ์ต์ ์ ๋ํ ์ค๋ช ์ ํ์ค ์ถ๋ ฅ์ ์ธ์ํฉ๋๋ค.
์ง์ ๋ ๋ชจ๋ ํด๋์ค ๋ฐ ํ์ ์์ ๋ง๋ ์ปดํ์ผ๋ฌ. ์ด๋ค์
์ง์๋๋ ํด๋์ค:
์ตํฐ ๋ง์ด์
์ปดํ์ผ๋ฌ์์ ์ง์ํ๋ ๋ชจ๋ ์ต์ ํ ์ต์ ์ ํ์ํฉ๋๋ค.
๊ฒฝ๊ณ
์ปดํ์ผ๋ฌ์์ ์์ฑํ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ ์ดํ๋ โโ๋ชจ๋ ์ต์ ์ ํ์ํฉ๋๋ค.
๋ชฉํ
๋์๋ณ ์ต์ ์ ํ์ํฉ๋๋ค. ๋ฌ๋ฆฌ -ํ๊ฒ ํํ ๊ทธ๋ฌ๋ ์ต์ , ๋์-
๋ง์ปค ๋ฐ ์ด์ ๋ธ๋ฌ์ ํน์ ์ต์ ์ ํ์๋์ง ์์ต๋๋ค. ์ด ๋๋ฌธ์ ๋๋ค
ํด๋น ๋๊ตฌ๋ ํ์ฌ ํ์ฅ๋ --๋์๋ง= ํต์ฌ๋ก .
๋งค๊ฐ ๋ณ์
์์ ์ธ์ํ ๊ฐ์ ํ์ํฉ๋๋ค. --๋งค๊ฐ๋ณ์ ์ต์ ์ ์ ํํฉ๋๋ค.
์ธ์ด
์ง์๋๋ ์ต์ ํ์ ์ธ์ด์ด๋๋ก ์ธ์ด ์ค ํ๋์ ์ด๋ฆ์ ๋๋ค
์ด ๋ฒ์ ์ GCC์์ ์ง์๋๋ ์ธ์ด.
๊ณตํต์
๋ชจ๋ ์ธ์ด์ ๊ณตํต์ ์ธ ์ต์ ์ ํ์ํฉ๋๋ค.
์ง์๋๋ ํ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๋ฅ ๋ฏธ๋น ์
๋ฌธ์ํ๋์ง ์์ ์ต์ ๋ง ํ์ํฉ๋๋ค.
ํฉ๋ฅ ํ
๋์ผํ ๊ธฐํธ ๋ค์ ๋ํ๋๋ ์ธ์๋ฅผ ์ฌ์ฉํ๋ ํ์ ์ต์
๋ค์๊ณผ ๊ฐ์ ์ฐ์์ ์ธ ํ ์คํธ ์กฐ๊ฐ: --help=๋์.
๋ณ๋์
๋ค์ ์ค๋ ๋ณ๋์ ๋จ์ด๋ก ๋ํ๋๋ ์ธ์๋ฅผ ์ทจํ๋ ํ์ ์ต์
๋ค์๊ณผ ๊ฐ์ ์๋ ์ต์ : -o ๊ฒฐ๊ณผ๋ฌผ ํ์ผ.
๋ฐ๋ผ์ ์๋ฅผ ๋ค์ด ์์ ์ง์ํ๋ ๋ฌธ์ํ๋์ง ์์ ๋ชจ๋ ๋์๋ณ ์ค์์น๋ฅผ ํ์ํ๋ ค๋ฉด
์ปดํ์ผ๋ฌ๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
--help=๋์, ๋ฌธ์ํ๋์ง ์์
ํ์ ์์ ์๋ฏธ๋ ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ ๋ ์ ์์ต๋๋ค. ^ ์บ๋ฆญํฐ, ๊ทธ๋์
๋ชจ๋ ์ด์ง ๊ฒฝ๊ณ ์ต์ ์ ํ์ํ๋ ์(์ฆ, ์ผ์ ธ ์๊ฑฐ๋ ๊บผ์ ธ ์๋ ์ต์
๊ทธ๋ฆฌ๊ณ ์ธ์๋ฅผ ์ทจํ์ง ์์) ์ค๋ช ์ด ์๋ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
--help=๊ฒฝ๊ณ ,^๊ฐ์ ๋จ,^๋ฌธ์ํ๋์ง ์์
์ธ์ --๋์๋ง= ์ญ ํ์ ์๋ก๋ง ๊ตฌ์ฑ๋์ด์๋ ์ ๋ฉ๋๋ค.
์ฌ๋ฌ ํด๋์ค๋ฅผ ๊ฒฐํฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง๋ง ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ถ๋ ฅ์ ์ ํํ๋ฏ๋ก
ํ์ํ ๊ฒ์ด ์์ ์ ๋๋ก. ๊ทธ๋ฌ๋ ์๋ํ๋ ํ ๊ฐ์ง ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ ์ค ํ๋๋ ๋ชฉํ. ์๋ฅผ ๋ค์ด ๋ชจ๋ ๋์๋ณ
์ต์ ํ ์ต์ , ์ฌ์ฉ:
--help=ํ๊ฒ, ์ตํฐ๋ง์ด์
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ --๋์๋ง= ์ต์ ์ ๋ช ๋ น์ค์์ ๋ฐ๋ณต๋ ์ ์์ต๋๋ค. ๊ฐ ์ฐ์ ์ฌ์ฉ ํ์
์ด๋ฏธ ํ์๋ ์ต์ ์ ๊ฑด๋๋ฐ๊ณ ์์ฒญ๋ ์ต์ ํด๋์ค์ ๋๋ค.
๊ฒฝ์ฐ -Q ์ต์ ์ด ๋ช ๋ น์ค์ ํ์๋๊ธฐ ์ ์ --๋์๋ง= ์ต์ ์ ์ ํํ ๋ค์
์ ์ํด ํ์๋๋ ์ค๋ช ํ ์คํธ --๋์๋ง= ๋ณ๊ฒฝ๋ฉ๋๋ค. ํ์๋ ๊ฒ์ ์ค๋ช ํ๋ ๋์
์ต์ , ์ต์ ํ์ฑํ, ๋นํ์ฑํ ๋๋ ์ค์ ์ฌ๋ถ์ ๋ํ ํ์๊ฐ ์ ๊ณต๋ฉ๋๋ค.
ํน์ ๊ฐ์ผ๋ก (์ปดํ์ผ๋ฌ๊ฐ ์ด๊ฒ์ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด
--๋์๋ง= ์ต์ ์ด ์ฌ์ฉ๋จ).
๋ค์์ ARM ํฌํธ์ ์๋ฆฐ ์์ ๋๋ค. GCC:
% gcc -Q -mabi=2 --help=๋์ -c
๋ค์ ์ต์ ์ ๋์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
-๋ง๋น= 2
-mabort-on-noreturn [๋นํ์ฑํ๋จ]
-mapcs [๋นํ์ฑํ๋จ]
์ถ๋ ฅ์ ์ด์ ๋ช ๋ น์ค ์ต์ ์ ์ํฅ์ ๋ฏผ๊ฐํ๋ฏ๋ก
์๋ฅผ ๋ค์ด ์ด๋ค ์ต์ ํ๊ฐ ํ์ฑํ๋์ด ์๋์ง ํ์ธํ ์ ์์ต๋๋ค. -O2 ์ฌ์ฉํ์ฌ:
-Q -O2 --help=์ต์ ํ๊ธฐ
๋๋ ๋ค์์ ํตํด ํ์ฑํ๋ ๋ฐ์ด๋๋ฆฌ ์ต์ ํ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. -O3 ์ฌ์ฉํ์ฌ:
gcc -c -Q -O3 --help=์ต์ ํ๊ธฐ > /tmp/O3-opts
gcc -c -Q -O2 --help=์ต์ ํ๊ธฐ > /tmp/O2-opts
diff /tmp/O2-opts /tmp/O3-opts | ๊ทธ๋ ํ์ฑํ
-ํ์ค ์ ๋์ฌ ์์
์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ํ์ฅํ์ง ๋ง์ญ์์ค. ์ฐธ์กฐ๋ฅผ ํด๊ฒฐํ์ญ์์ค. /../ or //./, ๋๋ ๊ฒฝ๋ก๋ฅผ ๋ง๋์ญ์์ค
์๋ ์ ๋์ฌ๋ฅผ ์์ฑํ ๋ ์ ๋.
--๋ฒ์ญ
ํธ์ถ๋ GCC์ ๋ฒ์ ๋ฒํธ์ ์ ์๊ถ์ ํ์ํฉ๋๋ค.
-์ธ๊ฐ
๋ํผ ํ๋ก๊ทธ๋จ์์ ๋ชจ๋ ํ์ ๋ช ๋ น์ ํธ์ถํฉ๋๋ค. ๋ํผ ํ๋ก๊ทธ๋จ์ ์ด๋ฆ๊ณผ
๋งค๊ฐ๋ณ์๋ ์ผํ๋ก ๊ตฌ๋ถ๋ ๋ชฉ๋ก์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
gcc -c tc -wrapper gdb,--args
์ด๊ฒ์ ๋ชจ๋ ํ์ ํ๋ก๊ทธ๋จ์ ํธ์ถํฉ๋๋ค. GCC ์๋์ gdb --์ธ์, ๋ฐ๋ผ์ ํธ์ถ cc1 is
gdb --์ธ์ cc1 ....
-fํ๋ฌ๊ทธ์ธ=name.๊ทธ๋์
ํ์ผ์ ํ๋ฌ๊ทธ์ธ ์ฝ๋ ๋ก๋ name.so, dlopen'dํ ๊ณต์ ๊ฐ์ฒด๋ก ๊ฐ์
์ปดํ์ผ๋ฌ. ๊ณต์ ๊ฐ์ฒด ํ์ผ์ ๊ธฐ๋ณธ ์ด๋ฆ์ ํ๋ฌ๊ทธ์ธ์ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ธ์ ๊ตฌ๋ฌธ ๋ถ์์ ์ํด(์ฐธ์กฐ -fplugin-์ธ์-name-ํค=๊ฐ์น ์๋์). ๊ฐ
ํ๋ฌ๊ทธ์ธ์ ํ๋ฌ๊ทธ์ธ API์ ์ง์ ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
-fplugin-์ธ์-name-ํค=๊ฐ์น
๋ผ๋ ์ธ์๋ฅผ ์ ์ํฉ๋๋ค. ํค ๊ฐ์น๊ฐ์๋ ๊ฐ์น ๋ผ๋ ํ๋ฌ๊ทธ์ธ์ ๊ฒฝ์ฐ name.
-fdump-ada-spec[-๋ ์ฌํ]
C ๋ฐ C++ ์์ค ๋ฐ ํฌํจ ํ์ผ์ ๊ฒฝ์ฐ ํด๋น Ada ์ฌ์์ ์์ฑํฉ๋๋ค.
-fada-์ฌ์-๋ถ๋ชจ=๋จ์
ํจ๊ป -fdump-ada-spec[-๋ ์ฌํ] ์์ Ada ์ฌ์์ ํ์ ๋จ์๋ก ์์ฑํฉ๋๋ค.
๋ถ๋ชจ์ ๋จ์.
-fdump-go-spec=ํ์ผ
๋ชจ๋ ์ธ์ด์ ์ ๋ ฅ ํ์ผ์ ๋ํด ํด๋น Go ์ ์ธ์ ๋ค์์์ ์์ฑํฉ๋๋ค. ํ์ผ. ์ด
์ ์ฉํ ๋ฐฉ๋ฒ์ผ ์ ์๋ Go "const", "type", "var" ๋ฐ "func" ์ ์ธ์ ์์ฑํฉ๋๋ค.
๋ค๋ฅธ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋์ Go ์ธํฐํ์ด์ค๋ฅผ ์์ฑํ๊ธฐ ์์ํฉ๋๋ค.
@ํ์ผ
๋ค์์์ ๋ช ๋ น์ค ์ต์ ์ฝ๊ธฐ ํ์ผ. ์ฝ์ ์ต์ ์ ๋ค์ ์์น์ ์ฝ์ ๋ฉ๋๋ค.
์๋์ @ํ์ผ ์ต์ . ๋ง์ฝ์ ํ์ผ ์กด์ฌํ์ง ์๊ฑฐ๋ ์ฝ์ ์ ์๋ ๊ฒฝ์ฐ ์ต์
๋ฌธ์ ๊ทธ๋๋ก ์ฒ๋ฆฌ๋๋ฉฐ ์ ๊ฑฐ๋์ง ์์ต๋๋ค.
์ต์ ํ์ผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ๊ณต๋ฐฑ ๋ฌธ์๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
์ต์ ์์ ์ ์ฒด ์ต์ ์ ์์๋ฐ์ดํ๋ ํฐ๋ฐ์ดํ๋ก ๋ฌถ์ต๋๋ค. ์ด๋
๋ฌธ์(๋ฐฑ์ฌ๋์ ํฌํจ)๋
๋ฐฑ์ฌ๋์์ ํจ๊ป ํฌํจ๋ฉ๋๋ค. NS ํ์ผ ์์ฒด์ ์ถ๊ฐ @๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.ํ์ผ ์ต์ ; ์ด๋
์ด๋ฌํ ์ต์ ์ ์ฌ๊ท์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ปดํ์ผ C + + ํ๋ก๊ทธ๋จ
C++ ์์ค ํ์ผ์ ์ผ๋ฐ์ ์ผ๋ก ์ ๋ฏธ์ฌ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. .C, .CC, .cpp, .CPP, .C++, .cp๋ฐ
.cxx; C++ ํค๋ ํ์ผ์ ์์ฃผ ์ฌ์ฉํฉ๋๋ค. .hh, .hpp, .H, ๋๋ (๊ณต์ ํ ํ๋ฆฟ ์ฝ๋์ ๊ฒฝ์ฐ) .tcc๋ฐ
์ ์ฒ๋ฆฌ๋ C++ ํ์ผ์ ์ ๋ฏธ์ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. .ii. GCC๋ ์ด๋ฌํ ์ด๋ฆ์ ๊ฐ์ง ํ์ผ์ ์ธ์ํ๊ณ
์ปดํ์ผํ ๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ํธ์ถํ๋๋ผ๋ C++ ํ๋ก๊ทธ๋จ์ผ๋ก ์ปดํ์ผํฉ๋๋ค.
C ํ๋ก๊ทธ๋จ(๋ณดํต ์ด๋ฆ GCC).
๊ทธ๋ฌ๋ ์ฌ์ฉ GCC C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ์ง ์์ต๋๋ค. g ++ GCC๋ฅผ ํธ์ถํ๋ ํ๋ก๊ทธ๋จ์ด๋ฉฐ
C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋งํฌ๋ฅผ ์๋์ผ๋ก ์ง์ ํฉ๋๋ค. ๊ทธ๊ฒ์ ์ทจ๊ธ .c, .h and .i ํ์ผ
C ์์ค ํ์ผ ๋์ C++ ์์ค ํ์ผ -x ์ฌ์ฉ. ์ด ํ๋ก๊ทธ๋จ๋ ์ ์ฉํฉ๋๋ค
C ํค๋ ํ์ผ์ ๋ฏธ๋ฆฌ ์ปดํ์ผํ ๋ .h C++ ์ปดํ์ผ์ ์ฌ์ฉํ๊ธฐ ์ํ ํ์ฅ์ ๋๋ค. ์
๋ง์ ์์คํ , g ++ ์ด๋ฆ๊ณผ ํจ๊ป ์ค์น๋ฉ๋๋ค. C ++.
C++ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ ๋ ๋์ผํ ๋ช ๋ น์ค ์ต์ ์ ์ฌ๋ฌ ๊ฐ ์ง์ ํ ์ ์์ต๋๋ค.
๋ชจ๋ ์ธ์ด๋ก ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค. ๋๋ C์ ์๋ฏธ ์๋ ๋ช ๋ น์ค ์ต์
๋ฐ ๊ด๋ จ ์ธ์ด; ๋๋ C++ ํ๋ก๊ทธ๋จ์๋ง ์๋ฏธ๊ฐ ์๋ ์ต์ .
์ต์ ์ ์ด C ๋ฐฉ์ธ
๋ค์ ์ต์ ์ C์ ๋ฐฉ์ธ(๋๋ C++๊ณผ ๊ฐ์ C์์ ํ์๋ ์ธ์ด,
์ปดํ์ผ๋ฌ๊ฐ ํ์ฉํ๋ Objective-C ๋ฐ Objective-C++):
-์์
C ๋ชจ๋์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -ํ์ค=c90. C++ ๋ชจ๋์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-std = c ++ 98.
์ด๊ฒ์ ISO C90๊ณผ ํธํ๋์ง ์๋ GCC์ ํน์ ๊ธฐ๋ฅ์ ๋๋๋ค.
C ์ฝ๋ ์ปดํ์ผ) ๋๋ "asm" ๋ฐ ๊ฐ์ ํ์ค C++(C++ ์ฝ๋๋ฅผ ์ปดํ์ผํ ๋)
"typeof" ํค์๋ ๋ฐ "unix" ๋ฐ "vax"์ ๊ฐ์ ๋ฏธ๋ฆฌ ์ ์๋ ๋งคํฌ๋ก
์ฌ์ฉ ์ค์ธ ์์คํ ์ ํ. ๋ํ ๋ฐ๋์งํ์ง ์๊ณ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋ ISO๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์ผ๊ตญ์ง ๊ธฐ๋ฅ. C ์ปดํ์ผ๋ฌ์ ๊ฒฝ์ฐ C++ ์คํ์ผ ์ธ์์ ๋นํ์ฑํํฉ๋๋ค. //
์ฃผ์ ๋ฐ "์ธ๋ผ์ธ" ํค์๋.
๋์ฒด ํค์๋ "__asm__", "__extension__", "__inline__" ๋ฐ "__typeof__"
์๋ ๋ถ๊ตฌํ๊ณ ๊ณ์ ์ผํ๋ค -์์. ISO C ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๊ณ ์ถ์ง ์์ต๋๋ค.
๋ฌผ๋ก ํฌํจํ ์ ์๋ ํค๋ ํ์ผ์ ๋ฃ๋ ๊ฒ์ด ์ ์ฉํฉ๋๋ค.
์ปดํ์ผ ์๋ฃ -์์. "__unix__"์ ๊ฐ์ ์ฌ์ ์ ์๋ ๋์ฒด ๋งคํฌ๋ก ๋ฐ
"__vax__"๋ ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. -์์.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -์์ ์ต์ ์ผ๋ก ์ธํด ๋น ISO ํ๋ก๊ทธ๋จ์ด ๋ฌด๋ฃ๋ก ๊ฑฐ๋ถ๋์ง ์์ต๋๋ค. ์์ํ
์ฆ, -Wpedantic ์ ์ถ๊ฐ๋ก ํ์ํฉ๋๋ค -์์.
๋งคํฌ๋ก "__STRICT_ANSI__"๋ -์์ ์ต์ ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ผ๋ถ ํค๋
ํ์ผ์ ์ด ๋งคํฌ๋ก๋ฅผ ์ธ์งํ๊ณ ํน์ ๊ธฐ๋ฅ์ ์ ์ธํ๊ฑฐ๋ ์ ์ํ์ง ์์ ์ ์์ต๋๋ค.
ISO ํ์ค์ด ์๊ตฌํ์ง ์๋ ํน์ ๋งคํฌ๋ก; ์ด๊ฒ์ ๋ฐฉํด๋ฅผ ํผํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค
๋ค๋ฅธ ์ฉ๋๋ก ์ด๋ฌํ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ์์.
์ผ๋ฐ์ ์ผ๋ก ๋ด์ฅ๋์ด ์์ง๋ง ISO C์์ ์ ์ํ ์๋ฏธ ์ฒด๊ณ๊ฐ ์๋ ๊ธฐ๋ฅ(์:
"alloca" ๋ฐ "ffs")๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ด์ฅ ํจ์๊ฐ ์๋๋๋ค. -์์ ์ฌ์ฉ.
-ํ์ค=
์ธ์ด ํ์ค์ ๊ฒฐ์ ํฉ๋๋ค. ์ด ์ต์ ์ ํ์ฌ ๋ค์ ๊ฒฝ์ฐ์๋ง ์ง์๋ฉ๋๋ค.
C ๋๋ C++ ์ปดํ์ผ.
์ปดํ์ผ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ ํ์ค์ ์์ฉํ ์ ์์ต๋๋ค. c90 or C ++ 98, GNU ๋ฐฉ์ธ
๋ค์๊ณผ ๊ฐ์ ํ์ค์ gnu90 or ๋++98. ๊ธฐ๋ณธ ํ์ค์ด ์ง์ ๋๋ฉด
์ปดํ์ผ๋ฌ๋ ํด๋น ํ์ค์ ๋ฐ๋ฅด๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ๊ณผ GNU ํ์ฅ์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ํ์ฉํฉ๋๋ค.
๋ชจ์๋์ง ์๋ ๊ฒ. ์๋ฅผ ๋ค์ด, -ํ์ค=c90 GCC์ ํน์ ๊ธฐ๋ฅ์ ๋๋๋ค.
"asm" ๋ฐ "typeof" ํค์๋์ ๊ฐ์ด ISO C90๊ณผ ํธํ๋์ง ์์ง๋ง
์๋ต๊ณผ ๊ฐ์ด ISO C90์์ ์๋ฏธ๊ฐ ์๋ ๊ธฐํ GNU ํ์ฅ
"?:" ํํ์์ ์ค๊ฐ ์ฉ์ด. ๋ฐ๋ฉด์ ํ์ค์ GNU ๋ฐฉ์ธ์ด
๊ฐ ์ง์ ๋๋ฉด ์ปดํ์ผ๋ฌ์์ ์ง์ํ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด ํ์ฑํ๋ฉ๋๋ค.
๊ธฐ๋ฅ์ ๊ธฐ๋ณธ ํ์ค์ ์๋ฏธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ผ๋ถ ์๊ฒฉํ ์ค์
ํ๋ก๊ทธ๋จ์ด ๊ฑฐ๋ถ๋ ์ ์์ต๋๋ค. ํน์ ํ์ค์ ๋ค์์์ ์ฌ์ฉ๋ฉ๋๋ค. -Wpedantic ํ์ธํ๊ธฐ
์ด๋ค ๊ธฐ๋ฅ์ด ํด๋น ํ์ค ๋ฒ์ ์์ GNU ํ์ฅ์ธ์ง ํ์ธํฉ๋๋ค. ์๋ฅผ ๋ค์ด
-std=gnu90 -Wpedantic C++ ์คํ์ผ์ ๋ํ ๊ฒฝ๊ณ // ๋๊ธ, ๋์ -std=gnu99 -Wpedantic
ํ์ง ์์ต๋๋ค.
์ด ์ต์ ์ ๋ํ ๊ฐ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๊ฐ๋ฅํ ๊ฐ์
c90
c89
ISO9899:1990
๋ชจ๋ ISO C90 ํ๋ก๊ทธ๋จ ์ง์(ISO C90๊ณผ ์ถฉ๋ํ๋ ํน์ GNU ํ์ฅ
๋นํ์ฑํ๋จ). ์ ๋์ผ -์์ C ์ฝ๋์ ๊ฒฝ์ฐ.
ISO9899:199409
๊ฐ์ 90์์ ์์ ๋ ISO C1.
c99
์ C9x
ISO9899:1999
ISO9899:199x
ISO C99. ์ด ํ์ค์ ์์ง ์์ ํ ์ง์๋์ง ์์ต๋๋ค. ๋ณด๋ค
<http://gcc.gnu.org/c99status.html> ์์ธํ ๋ด์ฉ์. ์ด๋ฆ ์ C9x and
ISO9899:199x ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
c11
์ C1x
ISO9899:2011
ISO C11์ ISO C ํ์ค์ 2011๋ ๊ฐ์ ํ์ ๋๋ค. ์ง์์ด ๋ถ์์ ํ๊ณ
์คํ์ . ์ด๋ฆ ์ C1x ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
gnu90
gnu89
ISO C90์ GNU ๋ฐฉ์ธ(์ผ๋ถ C99 ๊ธฐ๋ฅ ํฌํจ). ์ด๊ฒ์ C์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
์ํธ.
gnu99
gnu9x
ISO C99์ GNU ๋ฐฉ์ธ. ISO C99๊ฐ GCC์์ ์์ ํ ๊ตฌํ๋๋ฉด ์ด๋
๊ธฐ๋ณธ๊ฐ์ด ๋ฉ๋๋ค. ์ด๋ฆ gnu9x ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
gnu11
gnu1x
ISO C11์ GNU ๋ฐฉ์ธ. ์ง์์ด ๋ถ์์ ํ๊ณ ์คํ์ ์ ๋๋ค. ์ด๋ฆ gnu1x
๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
C ++ 98
C ++ 03
1998๋ ISO C++ ํ์ค๊ณผ 2003๋ ๊ธฐ์ ์ ์คํ ๋ฐ ์ผ๋ถ ์ถ๊ฐ
๊ฒฐํจ ๋ณด๊ณ ์. ์ ๋์ผ -์์ C++ ์ฝ๋์ฉ.
๋++98
๋++03
GNU ๋ฐฉ์ธ -std = c ++ 98. ์ด๊ฒ์ C++ ์ฝ๋์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
C ++ 11
C++0x
2011 ISO C++ ํ์ค ๋ฐ ์์ ์ฌํญ. C++11์ ๋ํ ์ง์์ ์ฌ์ ํ
์คํ์ ์ด๋ฉฐ ํฅํ ๋ฆด๋ฆฌ์ค์์ ํธํ๋์ง ์๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ด๋ฆ
C++0x ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
๋++11
gnu++0x
GNU ๋ฐฉ์ธ -std = c ++ 11. C++11์ ๋ํ ์ง์์ ์์ง ์คํ์ ์ด๋ฉฐ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
ํฅํ ๋ฆด๋ฆฌ์ค์์ ํธํ๋์ง ์๋ ๋ฐฉ์์ผ๋ก. ์ด๋ฆ gnu++0x ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
C++1y
2017๋ ์ ์ ์ ์ ์ผ๋ก ๊ณํ๋ ISO C++ ํ์ค์ ๋ค์ ๊ฐ์ ํ. ์ง์
๋งค์ฐ ์คํ์ ์ด๋ฉฐ ๊ฑฐ์ ํ์คํ๊ฒ ํธํ๋์ง ์๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ ๋๋ค.
ํฅํ ๋ฆด๋ฆฌ์ค.
gnu++1๋
GNU ๋ฐฉ์ธ -std=c++1y. ์ง์์ ๋งค์ฐ ์คํ์ ์ด๋ฉฐ ๊ฑฐ์
ํฅํ ๋ฆด๋ฆฌ์ค์์๋ ํ์คํ ํธํ๋์ง ์๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
-fgnu89-์ธ๋ผ์ธ
์ต์ -fgnu89-์ธ๋ผ์ธ GCC์ "์ธ๋ผ์ธ"์ ๋ํด ์ ํต์ ์ธ GNU ์๋ฏธ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ๋๋ก ์ง์ํฉ๋๋ค.
C99 ๋ชจ๋์์ ์๋ํฉ๋๋ค.
์ด ์ต์ ์ GCC ๋ฒ์ 4.1.3 ์ดํ์์ ํ์ฉ๋๊ณ ๋ฌด์๋ฉ๋๋ค.
4.3. GCC ๋ฒ์ 4.3 ์ด์์์๋ C99 ๋ชจ๋์์ GCC์ ๋์์ ๋ณ๊ฒฝํฉ๋๋ค. ์ฌ์ฉ
์ด ์ต์ ์ "gnu_inline" ํจ์ ์์ฑ์ ๋ชจ๋
์ธ๋ผ์ธ ํจ์.
์ต์ -fno-gnu89-์ธ๋ผ์ธ ๋ช ์์ ์ผ๋ก GCC์ C99 ์๋ฏธ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ๋๋ก ์ง์ํฉ๋๋ค.
C99 ๋๋ gnu99 ๋ชจ๋์ ์์ ๋ "์ธ๋ผ์ธ"์ ๋๋ค(์ฆ, ๊ธฐ๋ณธ ๋์์ ์ง์ ํจ). ์ด๊ฒ
์ต์ ์ GCC 4.3์์ ์ฒ์ ์ง์๋์์ต๋๋ค. ์ด ์ต์ ์ ๋ค์์์ ์ง์๋์ง ์์ต๋๋ค. -ํ์ค=c90 or
-std=gnu90 ๋ฐฉ๋ฒ.
์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก "__GNUC_GNU_INLINE__" ๋ฐ "__GNUC_STDC_INLINE__"์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
"์ธ๋ผ์ธ" ๊ธฐ๋ฅ์ ๋ํด ์ด๋ค ์๋ฏธ ์ฒด๊ณ๊ฐ ์ ์ฉ๋๋์ง ํ์ธํฉ๋๋ค.
-๋ณด์กฐ ์ ๋ณด ํ์ผ ์ด๋ฆ
์ ์ธ๋ ๋ชจ๋ ํจ์์ ๋ํด ์ฃผ์ด์ง ํ์ผ ์ด๋ฆ ํ๋กํ ํ์ ์ ์ธ์ผ๋ก ์ถ๋ ฅ ๋ฐ/๋๋
ํค๋ ํ์ผ์ ํฌํจํ์ฌ ๋ฒ์ญ ๋จ์์ ์ ์๋ฉ๋๋ค. ์ด ์ต์ ์
C ์ด์ธ์ ์ธ์ด์์๋ ์กฐ์ฉํ ๋ฌด์๋ฉ๋๋ค.
์ ์ธ ์ธ์๋ ํ์ผ์ ์ฃผ์์์ ๊ฐ ์ ์ธ์ ์ถ์ฒ๋ฅผ ๋ํ๋ ๋๋ค.
(์์ค ํ์ผ ๋ฐ ๋ผ์ธ), ์ ์ธ์ด ์์์ , ํ๋กํ ํ์ ๋๋
ํ๋กํ ํ์ ๋์ง ์์(I, N ์๋ก์ด ๋๋ O old์ ๊ฒฝ์ฐ ๊ฐ๊ฐ ๋ค์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์์
ํ ๋ฒํธ ๋ฐ ์ฝ๋ก ), ์ ์ธ ๋๋ ์ ์์์ ์๋์ง ์ฌ๋ถ
(C or F, ๊ฐ๊ฐ ๋ค์ ๋ฌธ์). ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ
์ ์์์ ์ ์ธ์ด ๋ค๋ฐ๋ฅด๋ K&R ์คํ์ผ์ ์ธ์ ๋ชฉ๋ก๋
์ ์ธ ํ ์ฃผ์ ๋ด๋ถ์ ์ ๊ณต๋ฉ๋๋ค.
- ํด๊ฒฝ ๋งค๊ฐ๋ณ์ ์๋ ๊ฐ๋ณ ํจ์
๋ช ๋ช ๋ ๋งค๊ฐ๋ณ์ ์์ด ๊ฐ๋ณ ํจ์๋ฅผ ํ์ฉํฉ๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ ์ ์ํ๋ ๊ฒ์ ๊ฐ๋ฅํ์ง๋ง, ์ด๊ฒ์ ๋งค์ฐ ์ ์ฉํ์ง ์์ต๋๋ค.
์ธ์๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ์ด ๊ตฌ์ฑ์ C์ ๋ํด์๋ง ์ง์๋ฉ๋๋ค.
C++์์ ํ์ฉํฉ๋๋ค.
-fno-asm
์ฝ๋์์ ์ฌ์ฉํ ์ ์๋๋ก "asm", "inline" ๋๋ "typeof"๋ฅผ ํค์๋๋ก ์ธ์ํ์ง ๋ง์ญ์์ค.
๋จ์ด๋ฅผ ์๋ณ์๋ก ์ฌ์ฉํฉ๋๋ค. "__asm__", "__inline__" ๋ฐ
๋์ "__typeof__". -์์ ์๋ฏธํ๋ค -fno-asm.
C++์์ ์ด ์ค์์น๋ "typeof" ํค์๋์๋ง ์ํฅ์ ์ค๋๋ค. "asm"๊ณผ "inline"์
ํ์ค ํค์๋. ๋ค์์ ์ฌ์ฉํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค. -fno-gnu-ํค์๋ ๋์ ํ๋๊ทธ๊ฐ ์์ต๋๋ค.
๊ฐ์ ํจ๊ณผ. C99 ๋ชจ๋์์(-ํ์ค=c99 or -std=gnu99), ์ด ์ค์์น๋
"inline"์ ISO C99์ ํ์ค ํค์๋์ด๊ธฐ ๋๋ฌธ์ "asm" ๋ฐ "typeof" ํค์๋์ ๋๋ค.
-fno ๋ด์ฅ
-fno-๋ด์ฅ-๊ธฐ๋ฅ
๋ก ์์ํ์ง ์๋ ๋ด์ฅ ํจ์๋ฅผ ์ธ์ํ์ง ๋ง์ญ์์ค. __๋ด์ฅ_ ์ ๋์ฌ๋ก.
GCC๋ ์ผ๋ฐ์ ์ผ๋ก ํน์ ๋ด์ฅ ๊ธฐ๋ฅ์ ๋ ๋ง์ด ์ฒ๋ฆฌํ๊ธฐ ์ํด ํน์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
ํจ์จ์ ์ผ๋ก; ์๋ฅผ ๋ค์ด, "alloca"์ ๋ํ ํธ์ถ์ ๋จ์ผ ๋ช ๋ น์ด ๋ ์ ์์ต๋๋ค.
์คํ์ ์ง์ ์กฐ์ ํ๊ณ "memcpy"์ ๋ํ ํธ์ถ์ด ์ธ๋ผ์ธ ๋ณต์ฌ ๋ฃจํ๊ฐ ๋ ์ ์์ต๋๋ค. NS
๊ฒฐ๊ณผ ์ฝ๋๋ ์ข ์ข ๋ ์๊ณ ๋น ๋ฅด์ง๋ง ํจ์๊ฐ no๋ฅผ ํธ์ถํ๊ธฐ ๋๋ฌธ์
๋ ์ด์ ํ์๋์ง ์์ผ๋ฉด ํด๋น ํธ์ถ์ ์ค๋จ์ ์ ์ค์ ํ ์ ์์ผ๋ฉฐ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค.
๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐํ์ฌ ํจ์์ ๋์. ๋ํ, ์ธ์
ํจ์๊ฐ ๋ด์ฅ ํจ์๋ก ์ธ์๋๋ฉด GCC๋ ์ด์ ๋ํ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํด๋น ํจ์์ ๋ํ ํธ์ถ ๋ฌธ์ ์ ๋ํด ๊ฒฝ๊ณ ํ๊ฑฐ๋ ๋ ๋ง์ ๊ฒ์ ์์ฑํ๋ ํจ์
๊ฒฐ๊ณผ ์ฝ๋์ ์ฌ์ ํ ํด๋น ํจ์์ ๋ํ ํธ์ถ์ด ํฌํจ๋์ด ์์ด๋ ํจ์จ์ ์ธ ์ฝ๋์ ๋๋ค. ์์ํ
์๋ฅผ ๋ค์ด ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. -Wํฌ๋งท "printf"๊ฐ "printf"์ผ ๋ "printf"์ ๋ํ ์๋ชป๋ ํธ์ถ์ ๊ฒฝ์ฐ
๋ด์ฅ๋์ด ์๊ณ "strlen"์ ์ ์ญ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ ํ์ง ์๋ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์์ต๋๋ค.
์ ๋๋ถ์ด -fno-๋ด์ฅ-๊ธฐ๋ฅ ์ต์ ๋ด์ฅ ๊ธฐ๋ฅ๋ง ๊ธฐ๋ฅ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ ๋ก ์์ํด์๋ ์ ๋ฉ๋๋ค. __๋ด์ฅ_. ๋ด์ฅ๋์ง ์์ ํจ์์ ์ด๋ฆ์ด ์ง์ ๋ ๊ฒฝ์ฐ
์ด ๋ฒ์ ์ GCC์์๋ ์ด ์ต์ ์ด ๋ฌด์๋ฉ๋๋ค. ํด๋นํ๋ ๋ด์ฉ์ด ์์ต๋๋ค
-f๋ด์ฅ-๊ธฐ๋ฅ ์ต์ ; ๋ด์ฅ ๊ธฐ๋ฅ์ ์ ํ์ ์ผ๋ก ํ์ฑํํ๋ ค๋ฉด
์ฌ์ฉ -fno ๋ด์ฅ or -ํ๋ฆฌ์คํ ๋ฉ, ๋ค์๊ณผ ๊ฐ์ ๋งคํฌ๋ก๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
#define abs(n) __builtin_abs((n))
#define strcpy(d, s) __builtin_strcpy ((d), (s))
-ํธ์คํธ
์ปดํ์ผ์ด ํธ์คํ ํ๊ฒฝ์ ๋์์ผ๋ก ํ๋ค๊ณ ์ฃผ์ฅํฉ๋๋ค. ์ด๊ฒ์ ์๋ฏธํฉ๋๋ค -f๋ด์ฅ. ์์ด
ํธ์คํ ๋ ํ๊ฒฝ์ ์ ์ฒด ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ์ ๋๋ค.
"main"์ ๋ฐํ ์ ํ์ "int"์ ๋๋ค. ์๋ ๋ค์์ ์ ์ธํ๊ณ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ๋๋ค.
ํต์ฌ. ์ด๊ฒ์ ๋๋ฑํ๋ค -fno ๋ ๋ฆฝํ.
-ํ๋ฆฌ์คํ ๋ฉ
์ปดํ์ผ์ด ๋ ๋ฆฝ ํ๊ฒฝ์ ๋์์ผ๋ก ํ๋ค๊ณ ์ฃผ์ฅํฉ๋๋ค. ์ด๊ฒ์ ์๋ฏธํฉ๋๋ค
-fno ๋ด์ฅ. ๋ ๋ฆฝ ํ๊ฒฝ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณตํ์ง ์์ ์ ์๋ ํ๊ฒฝ์ ๋๋ค.
์กด์ฌํ๋ฉฐ ํ๋ก๊ทธ๋จ ์์์ด ๋ฐ๋์ "main"์ ์์ง ์์ ์ ์์ต๋๋ค. ๊ฐ์ฅ ํ์คํ ์
OS ์ปค๋์ ๋๋ค. ์ด๊ฒ์ ๋๋ฑํ๋ค -fno ํธ์คํ .
-fopenmp
C/C++์์ OpenMP ์ง์๋ฌธ "#pragma omp" ๋ฐ Fortran์์ "!$omp" ์ฒ๋ฆฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -fopenmp ๊ฐ ์ง์ ๋๋ฉด ์ปดํ์ผ๋ฌ๋ ๋ค์์ ๋ฐ๋ผ ๋ณ๋ ฌ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
OpenMP ์์ฉ ํ๋ก๊ทธ๋จ ์ธํฐํ์ด์ค v3.0http://www.openmp.org/>. ์ด ์ต์
์๋ฏธํ๋ค -pthread, ๋ฐ๋ผ์ ๋ค์์ ์ง์ํ๋ ๋์์์๋ง ์ง์๋ฉ๋๋ค.
-pthread.
-fgnu-tm
์ต์ ์ด -fgnu-tm ๊ฐ ์ง์ ๋๋ฉด ์ปดํ์ผ๋ฌ๋ Linux์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ธํ ์ ํ์ฌ ํธ๋์ญ์ ๋ฉ๋ชจ๋ฆฌ ABI ์ฌ์ ๋ฌธ์์ ๋ณํ(๊ฐ์
1.1, 6๋ 2009์ XNUMX์ผ). ์ธํฐํ์ด์ค๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ ์คํ์ ์ธ ๊ธฐ๋ฅ์ ๋๋ค.
๊ณต์ ์ฌ์์ด ๋ณ๊ฒฝ๋จ์ ๋ฐ๋ผ GCC์ ํฅํ ๋ฒ์ . ์๋๋ ์ฐธ๊ณ ํ์ธ์
์ด ๊ธฐ๋ฅ์ ๋ํด ๋ชจ๋ ์ํคํ ์ฒ๊ฐ ์ง์๋ฉ๋๋ค.
GCC์ ํธ๋์ญ์ ๋ฉ๋ชจ๋ฆฌ ์ง์์ ๋ํ ์์ธํ ๋ด์ฉ์
๋นํธ์ถ ์์ธ์์๋ ํธ๋์ญ์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฅ์ด ์ง์๋์ง ์์ต๋๋ค.
(-fnon-call-exception).
-fms-ํ์ฅ
Microsoft ํค๋ ํ์ผ์ ์ฌ์ฉ๋๋ ์ผ๋ถ ๋นํ์ค ๊ตฌ์ฑ์ ํ์ฉํฉ๋๋ค.
C++ ์ฝ๋์์ ์ด๊ฒ์ ๊ตฌ์กฐ์ ๋ฉค๋ฒ ์ด๋ฆ์ด ์ด์ ์ ํ๊ณผ ์ ์ฌํ๋๋ก ํ์ฉํฉ๋๋ค.
์ ์ธ.
typedef ์ ์ UOW;
๊ตฌ์กฐ์ฒด ABC {
์ฐ์ฐ์ฐ์ฐ์ฐ์ฐ์ฐ;
};
๊ตฌ์กฐ์ฒด์ ๊ณต์ฉ์ฒด์์ ์ด๋ฆ์ด ์๋ ํ๋์ ์ผ๋ถ ๊ฒฝ์ฐ๋ ์ด ๊ฒฝ์ฐ์๋ง ํ์ฉ๋ฉ๋๋ค.
์ต์ ์ ์ ํํฉ๋๋ค.
-fplan9-ํ์ฅ
Plan 9 ์ฝ๋์ ์ฌ์ฉ๋ ์ผ๋ถ ๋นํ์ค ๊ตฌ์ฑ์ ์๋ฝํฉ๋๋ค.
์ด๋ฅผ ํตํด -fms-ํ์ฅ, ์ต๋ช ์ ๊ตฌ์กฐ์ฒด์ ๋ํ ํฌ์ธํฐ ์ ๋ฌ์ ํ์ฉํฉ๋๋ค.
ํ๋ ์ ํ์ ์์์ ๋ํ ํฌ์ธํฐ๋ฅผ ๊ธฐ๋ํ๋ ํจ์์ ๋ํ ํ๋, ๋ฐ
typedef๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธ๋ ์ต๋ช ํ๋ ์ฐธ์กฐ๋ฅผ ํ์ฉํฉ๋๋ค. ์ด๊ฒ์ ๋จ์ง
C++๊ฐ ์๋ C์์ ์ง์๋ฉ๋๋ค.
-์ผ๊ฐํ
ISO C trigraph๋ฅผ ์ง์ํฉ๋๋ค. NS -์์ ์ต์ (๋ฐ -ํ์ค ์๊ฒฉํ ISO C๋ฅผ ์ํ ์ต์
์ ํฉ์ฑ) ์๋ฏธ -์ผ๊ฐํ.
-์ ํต์ ์ธ
-์ ํต์ ์ธ cpp
์ด์ ์๋ ์ด๋ฌํ ์ต์ ์ผ๋ก ์ธํด GCC๊ฐ ์ฌ์ ํ์ค C ์ปดํ์ผ๋ฌ๋ฅผ ์๋ฎฌ๋ ์ดํธํ๋ ค๊ณ ํ์ต๋๋ค.
์ด์ ๋ง ์ง์๋ฉ๋๋ค. -E ์ค์์น. ์ ์ฒ๋ฆฌ๊ธฐ๋ ๊ณ์ ์ง์
์ฌ์ ํ์ค ๋ชจ๋. ์์ธํ ๋ด์ฉ์ GNU CPP ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
-fcond-๋ถ์ผ์น
๋ ๋ฒ์งธ ๋ฐ ์ธ ๋ฒ์งธ ์ธ์์์ ์ ํ์ด ์ผ์นํ์ง ์๋ ์กฐ๊ฑด์์ ํ์ฉํฉ๋๋ค.
๊ทธ๋ฌํ ํํ์์ ๊ฐ์ ๋ฌดํจ์ ๋๋ค. ์ด ์ต์ ์ C++์์ ์ง์๋์ง ์์ต๋๋ค.
-์๋ง ๋ฒกํฐ ๋ณํ
์์ ์๊ฐ ๋ค๋ฅธ ๋ฒกํฐ ๊ฐ์ ์์์ ๋ณํ ํ์ฉ ๋ฐ/๋๋
ํธํ๋์ง ์๋ ์์ ์ ํ ์ด ์ต์ ์ ์ ์ฝ๋์ ์ฌ์ฉํ๋ฉด ์ ๋ฉ๋๋ค.
-funsigned-char
"unsigned char"์ฒ๋ผ "char" ์ ํ์ unsigned๋ก ๋ก๋๋ค.
๊ฐ ์ข ๋ฅ์ ๊ธฐ๊ณ์๋ "char"๊ฐ ๋ฌด์์ธ์ง์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ด ์์ต๋๋ค. ๊ทธ๊ฒ์
๊ธฐ๋ณธ์ ์ผ๋ก "unsigned char" ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก "signed char"์ ๊ฐ์ต๋๋ค.
์ด์์ ์ผ๋ก ์ด์ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ ํญ์ "signed char" ๋๋ "unsigned char"๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๊ฐ์ฒด์ ๋ถํธ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋๋ก ์์ฑ๋์์ต๋๋ค.
์ผ๋ฐ "char"์ ๋ฐ๋ผ ์๋ช ๋๊ฑฐ๋ ์๋ช ๋์ง ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๊ทธ๋ค์ด ์ฐ์ฌ์ง ๊ธฐ๊ณ. ์ด ์ต์ ๊ณผ ๊ทธ ์ญ์ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ค ์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ์ ๋ฐ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์๋ํฉ๋๋ค.
"char" ์ ํ์ ํญ์ "signed char" ๋๋ "unsigned" ๊ฐ๊ฐ๊ณผ ๊ตฌ๋ณ๋๋ ์ ํ์ ๋๋ค.
char", ๊ทธ ๋์์ด ํญ์ ๊ทธ ๋ ์ค ํ๋์ ๊ฐ๋๋ผ๋.
-fsigned-char
"signed char"์ ๊ฐ์ด "char" ์ ํ์ ์๋ช ํ๋๋ก ํฉ๋๋ค.
์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -fno-unsigned-char, ์ ๋ถ์ ํ์ด๋ค.
-funsigned-char. ๋ง์ฐฌ๊ฐ์ง๋ก ์ต์ -fno-์๋ช -๋ฌธ์ ์ ํด๋นํ๋
-funsigned-char.
-fsigned ๋นํธ ํ๋
- funsigned ๋นํธ ํ๋
-fno-signed-bitfields
-fno-๋ถํธ ์๋ ๋นํธ ํ๋
์ด ์ต์ ์ ์ ์ธ ์ ๋นํธ ํ๋๊ฐ ์๋ช ๋์๋์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค.
"signed" ๋๋ "unsigned"๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฌํ ๋นํธ ํ๋๋ ์๋ช ๋์ด ์์ต๋๋ค.
์ผ๊ด์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. "int"์ ๊ฐ์ ๊ธฐ๋ณธ ์ ์ ์ ํ์ ๋ถํธ ์๋ ์ ํ์ ๋๋ค.
์ต์ ์ ์ด C + + ๋ฐฉ์ธ
์ด ์น์ ์์๋ C++ ํ๋ก๊ทธ๋จ์๋ง ์๋ฏธ๊ฐ ์๋ ๋ช ๋ น์ค ์ต์ ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
ํ๋ก๊ทธ๋จ ์ธ์ด์ ๊ด๊ณ์์ด ๋๋ถ๋ถ์ GNU ์ปดํ์ผ๋ฌ ์ต์ ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด "firstClass.C" ํ์ผ์ ์ปดํ์ผํ ์ ์์ต๋๋ค.
g++ -g -frepo -O -c firstClass.C
์ด ์์์๋ -ํ๋ ํฌ C++ ํ๋ก๊ทธ๋จ ์ ์ฉ ์ต์ ์ ๋๋ค. ๋น์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค
GCC์์ ์ง์ํ๋ ๋ชจ๋ ์ธ์ด์ ๊ธฐํ ์ต์ .
๋ค์์ ๋ค์๊ณผ ๊ฐ์ ์ต์ ๋ชฉ๋ก์ ๋๋ค. ๋ง C++ ํ๋ก๊ทธ๋จ ์ปดํ์ผ:
-fabi ๋ฒ์ =n
๋ฒ์ ์ฌ์ฉ n C++ ABI. ๊ธฐ๋ณธ๊ฐ์ ๋ฒ์ 2์ ๋๋ค.
๋ฒ์ 0์ C++ ABI ์ฌ์์ ๊ฐ์ฅ ๊ทผ์ ํ ๋ฒ์ ์ ๋ํ๋ ๋๋ค.
๋ฐ๋ผ์ ๋ฒ์ 0์ ์ฌ์ฉํ์ฌ ์ป์ ABI๋ ๋ค๋ฅธ ๋ฒ์ ์ G++์์ ๋ณ๊ฒฝ๋ฉ๋๋ค.
ABI ๋ฒ๊ทธ๊ฐ ์์ ๋์์ต๋๋ค.
๋ฒ์ 1์ G++ 3.2์ ์ฒ์ ๋ฑ์ฅํ C++ ABI์ ๋ฒ์ ์ ๋๋ค.
๋ฒ์ 2์ G++ 3.4์ ์ฒ์ ๋ฑ์ฅํ C++ ABI์ ๋ฒ์ ์ ๋๋ค.
๋ฒ์ 3์ ์์ ์ฃผ์๋ฅผ ํ ํ๋ฆฟ ์ธ์๋ก ๋งน๊ธ๋งํ๋ ์ค๋ฅ๋ฅผ ์์ ํฉ๋๋ค.
G++ 4์์ ์ฒ์ ๋ฑ์ฅํ ๋ฒ์ 4.5๋ ๋ฒกํฐ์ ๋ํ ํ์ค ๋งน๊ธ๋ง์ ๊ตฌํํฉ๋๋ค.
์ ํ.
G++ 5์์ ์ฒ์ ๋ฑ์ฅํ ๋ฒ์ 4.6๋ ์์ฑ์ ๋งน๊ธ๋ง์ ์์ ํฉ๋๋ค.
ํจ์ ํฌ์ธํฐ ์ ํ์ ๋ํ const/volatile, ์ผ๋ฐ decl์ decltype ๋ฐ ์ฌ์ฉ
๋ค๋ฅธ ๋งค๊ฐ๋ณ์์ ์ ์ธ์์ ํจ์ ๋งค๊ฐ๋ณ์.
G++ 6์ ์ฒ์ ๋ฑ์ฅํ ๋ฒ์ 4.7์ C++11์ ์น๊ฒฉ ๋์์ ์์ ํฉ๋๋ค.
๋ฒ์๊ฐ ์ง์ ๋ ์ด๊ฑฐํ ๋ฐ ํ ํ๋ฆฟ ์ธ์ ํฉ์ ๋งน๊ธ๋ง, const/static_cast, ์ ๋์ฌ ++
๋ฐ --, ํ ํ๋ฆฟ ์ธ์๋ก ์ฌ์ฉ๋๋ ํด๋์ค ๋ฒ์ ํจ์.
์ฐธ์กฐ -์๋น.
-fno-์ก์ธ์ค ์ ์ด
๋ชจ๋ ์ก์ธ์ค ํ์ธ์ ๋๋๋ค. ์ด ์ค์์น๋ ์ฃผ๋ก ๋ค์์ ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
์ก์ธ์ค ์ ์ด ์ฝ๋.
-fcheck-์ ๊ท
์๋ํ๊ธฐ ์ ์ "operator new"๊ฐ ๋ฐํํ ํฌ์ธํฐ๊ฐ null์ด ์๋์ง ํ์ธํ์ญ์์ค.
ํ ๋น๋ ์คํ ๋ฆฌ์ง๋ฅผ ์์ ํฉ๋๋ค. ์ด ๊ฒ์ฌ๋ ์ผ๋ฐ์ ์ผ๋ก C++
standard๋ "operator new"๊ฐ ์ ์ธ๋ ๊ฒฝ์ฐ์๋ง 0์ ๋ฐํํ๋๋ก ์ง์ ํฉ๋๋ค. ๋์ง๋ค()์
์ด ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๋ ์ด ์ต์ ์ด ์์ด๋ ํญ์ ๋ฐํ ๊ฐ์ ํ์ธํฉ๋๋ค. ์
๋ค๋ฅธ ๋ชจ๋ ๊ฒฝ์ฐ, "operator new"์ ๋น์ด ์์ง ์์ ์์ธ ์ฌ์์ด ์๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ
์์ง์ "std::bad_alloc"์ ๋์ ธ์ ์๋ฆฝ๋๋ค. ๋ํ๋ณด์ญ์์ค (์๋ฌด๋).
-fconstexpr-๊น์ด=n
C++11 constexpr ํจ์์ ๋ํ ์ต๋ ์ค์ฒฉ ํ๊ฐ ๊น์ด๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. n. ํ๋
์์ ํํ์ ํ๊ฐ ์ค์ ๋ฌดํ ์ฌ๊ท๋ฅผ ๊ฐ์งํ๋ ๋ฐ ํ์ํฉ๋๋ค. NS
ํ์ค์์ ์ง์ ํ ์ต์๊ฐ์ 512์ ๋๋ค.
-fdeduce-init-list
์ค๊ดํธ์์ "std::initializer_list"๋ก ํ ํ๋ฆฟ ์ ํ ๋งค๊ฐ๋ณ์ ์ถ๋ก ํ์ฑํ
๋๋ด๋ ์ด๊ธฐํ ๋ชฉ๋ก, ์ฆ
์ฃผํ ์๋ ์ ๋ฌ(T t) -> decltype(realfn(t))
{
๋ฐํ realfn (t);
}
๋ฌดํจ f()
{
์์ผ๋ก({1,2}); // ์ฝํฌ์๋ >
}
์ด ๊ณต์ ๋ ์๋ ์ ์๋ ๊ฒ์ ๊ฐ๋ฅํ ํ์ฅ์ผ๋ก ๊ตฌํ๋์์ต๋๋ค.
C++11 ํ์ค์ ๋ํ ์๋ฏธ ์ฒด๊ณ์ด์ง๋ง ์ต์ข ํ์ค์ ์ผ๋ถ๊ฐ ์๋๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค. ์ด ์ต์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ํฅํ ์ ๊ฑฐ๋ ์ ์์ต๋๋ค.
G++ ๋ฒ์ .
-ffriend ์ฃผ์
์น๊ตฌ ํจ์๋ฅผ ๋๋ฌ์ธ๋ ๋ค์์คํ์ด์ค์ ์ฃผ์ ํ์ฌ ์ธ๋ถ์์ ๋ณผ ์ ์๋๋ก ํฉ๋๋ค.
์ ์ธ๋ ํด๋์ค์ ๋ฒ์์ ๋๋ค. ์น๊ตฌ ๊ธฐ๋ฅ์ด ๋ฌธ์ํ๋์์ต๋๋ค.
์ด์ Annotated C++ Reference Manual ๋ฐ ์ด์ ๋ฒ์ ์ G++์์ ์ด ๋ฐฉ์์ผ๋ก ์๋ํ๋ ค๋ฉด
4.1์ ํญ์ ๊ทธ๋ฐ ์์ผ๋ก ์๋ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ISO C++์์๋ ๊ทธ๋ ์ง ์์ friend ํจ์
๋๋ฌ์ธ๋ ๋ฒ์์์ ์ ์ธ๋ ๊ฒ์ ์ธ์ ์ข ์ ์กฐํ๋ฅผ ํตํด์๋ง ์ฐพ์ ์ ์์ต๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ด์ ๋ฆด๋ฆฌ์ค์์์ ๊ฐ์ด ์น๊ตฌ๊ฐ ์ฃผ์ ๋ฉ๋๋ค.
์ด ์ต์ ์ ํธํ์ฑ์ ์ํ ๊ฒ์ผ๋ก ํฅํ G++ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ ์ ์์ต๋๋ค.
-fno-elide-์์ฑ์
C++ ํ์ค์ ๊ตฌํ์ด ์์ ์์ฑ์ ์๋ตํ๋๋ก ํ์ฉํฉ๋๋ค.
๊ฐ์ ์ ํ์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ์ต์ ์ ์ง์ ํ๋ฉด
์ต์ ํํ๊ณ ๋ชจ๋ ๊ฒฝ์ฐ์ G++์์ ๋ณต์ฌ ์์ฑ์๋ฅผ ํธ์ถํ๋๋ก ํฉ๋๋ค.
-fno-enforce-eh-specs
๋ฐํ์์ ์์ธ ์ฌ์ ์๋ฐ์ ํ์ธํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค.
์ด ์ต์ ์ C++ ํ์ค์ ์๋ฐํ์ง๋ง ์ฝ๋ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
์ ์์ ๋งค์ฐ ์ ์ฌํ ํ๋ก๋์ ๋น๋ ์๋ฐ๋ฒ๊ทธ. ์ด๊ฒ์ ์ฌ์ฉ์ ์ฝ๋์ ๊ถํ์ ๋ถ์ฌํ์ง ์์ต๋๋ค
์์ธ ์ฌ์์ ์๋ฐํ์ฌ ์์ธ๋ฅผ ๋์ง๊ธฐ ์ํด; ์ปดํ์ผ๋ฌ๋ ์ฌ์ ํ
์ฌ์์ ๊ธฐ๋ฐ์ผ๋ก ์ต์ ํํ๋ฏ๋ก ์๊ธฐ์น ์์ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด
๋ฐํ์์ ์ ์๋์ง ์์ ๋์.
-fextern-tls-์ด๊ธฐํ
-fno-์ธ๋ถ-tls-์ด๊ธฐํ
C++11 ๋ฐ OpenMP ํ์ค์ ์ค๋ ๋_๋ก์ปฌ and ์ค๋ ๋ ๊ฐ์ธ ๊ฐ์ง ๋ณ์
๋์ (๋ฐํ์) ์ด๊ธฐํ. ์ด๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ด๋ฌํ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด
ํ์ํ ์ด๊ธฐํ๋ฅผ ์ํํ๋ ๋ํผ ํจ์๋ฅผ โโํตํด ์ฌ์ฉํ ๋
๋ณ์์ ์ ์๊ฐ ๋์ผํ ๋ฒ์ญ ๋จ์์ ์๋ ๊ฒฝ์ฐ ์ด ์ค๋ฒํค๋๋
์ต์ ํ๋์ด ์์ง๋ง ๋ค๋ฅธ ๋ฒ์ญ ๋จ์์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๋ณ์์ ์ค์ ๋ก ๋์ ์ด ํ์ํ์ง ์๋๋ผ๋ ์๋นํ ์ค๋ฒํค๋
์ด๊ธฐํ. ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ๊ฒ์ ํ์ ํ ์ ์๋ค๋ฉด
TU๋ฅผ ์ ์ํ๋ ค๋ฉด ๋์ ์ด๊ธฐํ๋ฅผ ํธ๋ฆฌ๊ฑฐํด์ผ ํฉ๋๋ค(๋ณ์๊ฐ
์ ์ ์ผ๋ก ์ด๊ธฐํ๋๊ฑฐ๋ TU๋ฅผ ์ ์ํ๋ ๋ณ์์ ์ฌ์ฉ์ด ์คํ๋ฉ๋๋ค.
๋ค๋ฅธ TU์์ ์ฌ์ฉํ๊ธฐ ์ ์ ์ด๋ฌํ ์ค๋ฒํค๋๋ฅผ ํผํ ์ ์์ต๋๋ค.
-fno-์ธ๋ถ-tls-์ด๊ธฐํ ์ต์ ์ ์ ํํฉ๋๋ค.
๊ธฐํธ ๋ณ์นญ์ ์ง์ํ๋ ๋์์์ ๊ธฐ๋ณธ๊ฐ์ -fextern-tls-์ด๊ธฐํ. ๋ชฉํ์
๊ธฐํธ ๋ณ์นญ์ ์ง์ํ์ง ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ -fno-์ธ๋ถ-tls-์ด๊ธฐํ.
-ffor ๋ฒ์
-๋ฒ์์ ๋ํ fno
If -ffor ๋ฒ์ ๊ฐ ์ง์ ๋๋ฉด ์ ์ธ๋ ๋ณ์์ ๋ฒ์ for-init-๋ฌธ
์ ํ๋ฉ๋๋ค for C++ ํ์ค์์ ์ง์ ํ ๋๋ก ๋ฃจํ ์์ฒด. ๋ง์ฝ์
-๋ฒ์์ ๋ํ fno ๊ฐ ์ง์ ๋๋ฉด ์ ์ธ๋ ๋ณ์์ ๋ฒ์ for-init-๋ฌธ
์ด์ ๋ฒ์ ์ G++์์์ ๊ฐ์ด ๋๋ฌ์ธ๋ ๋ฒ์์ ๋๊น์ง ํ์ฅ๋๋ฉฐ,
C++์ ๋ค๋ฅธ (์ ํต์ ์ธ) ๊ตฌํ.
๋ ํ๋๊ทธ๊ฐ ๋ชจ๋ ์ ๊ณต๋์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ ํ์ค์ ๋ฐ๋ฅด์ง๋ง ํ์ฉํ๊ณ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ์ ํจํ์ง ์๊ฑฐ๋ ๋ค๋ฅธ ์ฝ๋๋ฅผ ๊ฐ์ง ์ ์๋ ๊ตฌ์ ์ฝ๋์ ๋ํ ๊ฒฝ๊ณ
ํ๋.
-fno-gnu-ํค์๋
์ฝ๋์์ ์ด ๋จ์ด๋ฅผ ํค์๋๋ก ์ฌ์ฉํ ์ ์๋๋ก "typeof"๋ฅผ ํค์๋๋ก ์ธ์ํ์ง ๋ง์ญ์์ค.
์๋ณ์. ๋์ "__typeof__" ํค์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. -์์ ์๋ฏธํ๋ค
-fno-gnu-ํค์๋.
-fno-์์์ ํ ํ๋ฆฟ
์์์ ์ผ๋ก(์ฆ,
์ฌ์ฉํ๋ค); ๋ช ์์ ์ธ์คํด์คํ์ ๋ํด์๋ง ์ฝ๋๋ฅผ ๋ด๋ณด๋ ๋๋ค.
-fno-implicit-inline-ํ ํ๋ฆฟ
์ธ๋ผ์ธ ํ ํ๋ฆฟ์ ์์์ ์ธ์คํด์คํ๋ฅผ ์ํ ์ฝ๋๋ ๋ด๋ณด๋ด์ง ๋ง์ญ์์ค. ๊ธฐ๋ณธ๊ฐ
์ต์ ํ๊ฐ ํ์ํ์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ปดํ์ผ๋๋๋ก ์ธ๋ผ์ธ์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค.
๋์ผํ ๋ช ์์ ์ธ์คํด์คํ ์ธํธ.
-fno-๊ตฌํ-์ธ๋ผ์ธ
๊ณต๊ฐ์ ์ ์ฝํ๋ ค๋ฉด ์ ์ํด ์ ์ด๋๋ ์ธ๋ผ์ธ ํจ์์ ์ธ๋ถ ๋ณต์ฌ๋ณธ์ ๋ด๋ณด๋ด์ง ๋ง์ญ์์ค.
#ํ๋ผ๊ทธ๋ง ์ดํ. ์ด๋ฌํ ํจ์๊ฐ ์ธ๋ผ์ธ๋์ง ์์ผ๋ฉด ๋ง์ปค ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ชจ๋ ๊ณณ์์ ๊ทธ๋ค์ ํธ์ถ๋ฉ๋๋ค.
-fms-ํ์ฅ
์์์ int์ ๊ฐ์ MFC์์ ์ฌ์ฉ๋๋ ๊ตฌ๋ฌธ์ ๋ํ Wpedantic ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
๋นํ์ค ๊ตฌ๋ฌธ์ ํตํด ๋ฉค๋ฒ ํจ์์ ๋ํ ํฌ์ธํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
-fno-nonansi-๋ด์ฅ
ANSI/ISO C์์ ์๊ตฌํ์ง ์๋ ๋ด์ฅ ํจ์ ์ ์ธ์ ๋นํ์ฑํํฉ๋๋ค.
"ffs", "alloca", "_exit", "index", "bzero", "conjf" ๋ฐ ๊ธฐํ ๊ด๋ จ ํญ๋ชฉ ํฌํจ
๊ธฐ๋ฅ.
-fnothrow-opt
"noexcept" ์ฌ์์ธ ๊ฒ์ฒ๋ผ "throw()" ์์ธ ์ฌ์์ ์ฒ๋ฆฌํฉ๋๋ค.
์์ธ ์์ด ํจ์์ ๋ํ ํ ์คํธ ํฌ๊ธฐ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ฑฐ๋ ์ ๊ฑฐ
์ฌ์. ํจ์์ ์ค์ํ์ง ์์ ์ ํ์ ์ง์ญ ๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ
์๋ฉธ์, ์์ธ ์ฌ์์ ์ค์ ๋ก ํจ์๋ฅผ ๋ ์๊ฒ ๋ง๋ญ๋๋ค.
์ด๋ฌํ ๋ณ์์ ๋ํ EH ์ ๋ฆฌ๋ฅผ ์ต์ ํํ ์ ์์ต๋๋ค. ์๋ฏธ๋ก ์ ํจ๊ณผ๋
๊ทธ๋ฌํ ์์ธ ์ฌ์์ด ์๋ ํจ์์์ ์์ธ๊ฐ ๋ฐ์ํ์์ ์๋ฏธํฉ๋๋ค.
"์๊ธฐ์น ์์" ๋์ "์ข ๋ฃ"์ ๋ํ ํธ์ถ์ด ๋ฐ์ํฉ๋๋ค.
-fno ์ฐ์ฐ์ ์ด๋ฆ
์ฐ์ฐ์ ์ด๋ฆ ํค์๋ "and", "bitand", "bitor", "compl", "not", "or"๋ฅผ ์ฒ๋ฆฌํ์ง ๋ง์ญ์์ค.
ํค์๋๋ก ๋์์ด๋ก "xor".
-fno-์ ํ ์ฌํญ-diags
ํ์ค์์ ์ปดํ์ผ๋ฌ๊ฐ ๋ฐํํ ํ์๊ฐ ์๋ ์ง๋จ์ ๋นํ์ฑํํฉ๋๋ค.
ํ์ฌ, G++์์ ๋ฐํํ ์ ์ผํ ์ง๋จ์ ๋ค์์ ๊ฐ์ง ์ด๋ฆ์ ๋ํ ์ง๋จ์ ๋๋ค.
ํด๋์ค ๋ด์ ์ฌ๋ฌ ์๋ฏธ.
-ํ์ฉ
๋น์ค์ ์ฝ๋์ ๋ํ ์ผ๋ถ ์ง๋จ์ ์ค๋ฅ์์ ๊ฒฝ๊ณ ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํฉ๋๋ค. ๋ฐ๋ผ์,
์ฌ์ฉ -ํ์ฉ ์ผ๋ถ ๋ถ์ ํฉ ์ฝ๋๋ฅผ ์ปดํ์ผํ ์ ์์ต๋๋ค.
-fno-pretty-ํ ํ๋ฆฟ
์ค๋ฅ ๋ฉ์์ง๊ฐ ํจ์ ํ ํ๋ฆฟ์ ํน์ํ๋ฅผ ์ฐธ์กฐํ ๋ ์ปดํ์ผ๋ฌ๋
์ผ๋ฐ์ ์ผ๋ก ํ ํ๋ฆฟ์ ์๋ช ๊ณผ ํ ํ๋ฆฟ ์ธ์๋ฅผ ์ธ์ํ๊ณ
์๋ช ์ ๋ชจ๋ typedef ๋๋ typenames(์: "void f(T) [with T = int]"
์ด๋ค ํ ํ๋ฆฟ์ด ๊ด๋ จ๋์ด ์๋์ง ๋ช ํํ๋๋ก "void f(int)")๋ณด๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋
๋ฉ์์ง๊ฐ ํด๋์ค ํ ํ๋ฆฟ์ ํน์ํ๋ฅผ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๋ ๋ค์์ ์๋ตํฉ๋๋ค.
ํด๋น ํ ํ๋ฆฟ์ ๊ธฐ๋ณธ ํ ํ๋ฆฟ ์ธ์์ ์ผ์นํ๋ ํ ํ๋ฆฟ ์ธ์. ๋ง์ฝ์
์ด๋ฌํ ๋์ ์ค ํ๋๋ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ดํดํ๋ ๊ฒ๋ณด๋ค ๋ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค.
๋ ์ฝ๊ฒ, ๋น์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค -fno-pretty-ํ ํ๋ฆฟ ๋นํ์ฑํํฉ๋๋ค.
-ํ๋ ํฌ
๋งํฌ ์๊ฐ์ ์๋ ํ ํ๋ฆฟ ์ธ์คํด์คํ๋ฅผ ํ์ฑํํฉ๋๋ค. ์ด ์ต์ ์ ๋ํ ๋ค์์ ์๋ฏธํฉ๋๋ค.
-fno-์์์ ํ ํ๋ฆฟ.
-fno-rtti
์์ ์ฌ์ฉํ ๊ฐ์ ๊ธฐ๋ฅ์ด ์๋ ๋ชจ๋ ํด๋์ค์ ๋ํ ์ ๋ณด ์์ฑ์ ๋นํ์ฑํํฉ๋๋ค.
C++ ๋ฐํ์ ์ ํ ์๋ณ ๊ธฐ๋ฅ(๋์ _์บ์คํธ and Typeid). ๋น์ ์ดํ์ง ์์ผ๋ฉด
์ธ์ด์ ํด๋น ๋ถ๋ถ์ ์ฌ์ฉํ๋ฉด ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค. ๋ฉ๋ชจ
์์ธ ์ฒ๋ฆฌ๋ ๋์ผํ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ง๋ง G++๋ ํ์์ ๋ฐ๋ผ ์ด๋ฅผ ์์ฑํฉ๋๋ค. NS
๋์ _์บ์คํธ ์ฐ์ฐ์๋ ๋ฐํ์ ์ ํ์ด ํ์ํ์ง ์์ ์บ์คํธ์ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ๋ณด, ์ฆ "void *" ๋๋ ๋ช ํํ ๊ธฐ๋ณธ ํด๋์ค๋ก ์บ์คํธํฉ๋๋ค.
-fstats
์ปดํ์ผ์ด ๋๋ ๋ ํ๋ฐํธ ์๋ ์ฒ๋ฆฌ์ ๋ํ ํต๊ณ๋ฅผ ๋ด๋ณด๋ ๋๋ค. ์ด๊ฒ
์ ๋ณด๋ ์ผ๋ฐ์ ์ผ๋ก G++ ๊ฐ๋ฐ ํ์๋ง ์ ์ฉํฉ๋๋ค.
-fstrict ์ด๊ฑฐํ
์ด๊ฑฐํ์ ๊ฐ์ ๊ฐ์ ํ์ฌ ์ปดํ์ผ๋ฌ๊ฐ ์ต์ ํํ ์ ์๋๋ก ํฉ๋๋ค.
์ด๊ฑฐํ ๊ฐ ์ค ํ๋์ผ ์ ์์ต๋๋ค(C++ ํ์ค์ ์ ์๋จ).
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํ ์ต์ ๋นํธ ์๋ก ํํํ ์ ์๋ ๊ฐ
๋ชจ๋ ์ด๊ฑฐ์๋ฅผ ๋ํ๋). ์ด ๊ฐ์ ์ ํ๋ก๊ทธ๋จ์ด ๋ค์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ํจํ์ง ์์ ์ ์์ต๋๋ค.
์์์ ์ ์ ๊ฐ์ ์ด๊ฑฐํ์ผ๋ก ๋ณํํ๋ ์บ์คํธ.
-ftemplate-์ญ์ถ์ ์ ํ=n
๋จ์ผ ๊ฒฝ๊ณ ๋๋ ์ค๋ฅ์ ๋ํ ์ต๋ ํ ํ๋ฆฟ ์ธ์คํด์คํ ๋ฉ๋ชจ ์ ์ค์
์ n. ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
-fํ ํ๋ฆฟ-๊น์ด=n
ํ ํ๋ฆฟ ํด๋์ค์ ์ต๋ ์ธ์คํด์คํ ๊น์ด๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. n. ํ๋
ํ ํ๋ฆฟ ์ค ๋ฌดํ ์ฌ๊ท๋ฅผ ๊ฐ์งํ๋ ค๋ฉด ํ ํ๋ฆฟ ์ธ์คํด์คํ ๊น์ด๊ฐ ํ์ํฉ๋๋ค.
ํด๋์ค ์ธ์คํด์คํ. ANSI/ISO C++ ์ค์ ํ๋ก๊ทธ๋จ์ ์ต๋๊ฐ์ ์์กดํด์๋ ์ ๋ฉ๋๋ค.
๊น์ด๊ฐ 17๋ณด๋ค ํฝ๋๋ค(C++1024์์ 11๋ก ๋ณ๊ฒฝ๋จ). ๊ธฐ๋ณธ๊ฐ์ 900์ ๋๋ค.
์ปดํ์ผ๋ฌ๋ ์ผ๋ถ ์ํฉ์์ 1024์ ๋๋ฌํ๊ธฐ ์ ์ ์คํ ๊ณต๊ฐ์ด ๋ถ์กฑํ ์ ์์ต๋๋ค.
-fno-threadsafe-์ ์
์ค๋ ๋์ฉ C++ ABI์ ์ง์ ๋ ๋ฃจํด์ ์ฌ์ฉํ๊ธฐ ์ํด ์ถ๊ฐ ์ฝ๋๋ฅผ ๋ด๋ณด๋ด์ง ๋ง์ญ์์ค.
๋ก์ปฌ ์ ์ ์ ์์ ํ ์ด๊ธฐํ. ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์ฝ๋ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
์ค๋ ๋๋ก๋ถํฐ ์์ ํ ํ์๊ฐ ์๋ ์ฝ๋์์ ์ฝ๊ฐ.
-ํจ์ฆ -cxa-atexit
"__cxa_atexit"๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ์ ์ฅ ๊ธฐ๊ฐ์ด ์๋ ๊ฐ์ฒด์ ์๋ฉธ์๋ฅผ ๋ฑ๋กํฉ๋๋ค.
"atexit" ๊ธฐ๋ฅ์ด ์๋ ๊ธฐ๋ฅ. ์ด ์ต์ ์ ์์ ํ
์ ์ ์๋ฉธ์์ ํ์ค ํธํ ์ฒ๋ฆฌ, ๊ทธ๋ฌ๋ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค.
"__cxa_atexit"๋ฅผ ์ง์ํฉ๋๋ค.
-fno-use-cxa-get-์์ธ-ptr
"__cxa_get_exception_ptr" ๋ฐํ์ ๋ฃจํด์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์ด๋ก ์ธํด
"std::uncaught_exception"์ ์ฌ๋ฐ๋ฅด์ง ์์ง๋ง ๋ฐํ์ ๋ฃจํด์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ํ์ํฉ๋๋ค.
์ฌ์ฉ ๋ถ๊ฐ.
-fvisibility-inlines-hidden
์ด ์ค์์น๋ ์ฌ์ฉ์๊ฐ ํฌ์ธํฐ๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ๋น๊ตํ๋ ค๊ณ ์๋ํ์ง ์์์ ์ ์ธํฉ๋๋ค.
๋ ํจ์์ ์ฃผ์๊ฐ ์๋ก ๋ค๋ฅธ ํจ์ ๋๋ ๋ฉ์๋
๊ณต์ ๊ฐ์ฒด.
์ด๊ฒ์ ํจ๊ณผ๋ GCC๊ฐ ์ธ๋ผ์ธ ๋ฉ์๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ํจ๊ณผ์ ์ผ๋ก ํ์ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ด๋ณด๋ด๊ธฐ์ ๋ํ๋์ง ์๋๋ก "__attribute__ ((๊ฐ์์ฑ("hidden")))"
DSO์ ํ ์ด๋ธ์ด๋ฉฐ DSO ๋ด์์ ์ฌ์ฉ๋ ๋ PLT ๊ฐ์ ์ฐธ์กฐ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
์ด ์ต์ ์ ํ์ฑํํ๋ฉด DSO์ ๋ก๋ ๋ฐ ๋งํฌ ์๊ฐ์ ๊ทน์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฌด๊ฑฐ์์ง๋ฉด ๋์ ๋ด๋ณด๋ด๊ธฐ ํ ์ด๋ธ์ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ ๋๋ค.
ํ ํ๋ฆฟ ์ฌ์ฉ.
์ด ์ค์์น์ ๋์์ ๋ฉ์๋๋ฅผ ์จ๊น์ผ๋ก ํ์ํ๋ ๊ฒ๊ณผ ์์ ํ ๋์ผํ์ง ์์ต๋๋ค.
ํจ์์ ๊ตญํ๋ ์ ์ ๋ณ์์ ์ํฅ์ ๋ฏธ์น์ง ์๊ฑฐ๋ ์์ธ
์ปดํ์ผ๋ฌ๋ ํจ์๊ฐ ํ๋์ ๊ณต์ ๊ฐ์ฒด์๋ง ์ ์๋์ด ์๋ค๊ณ ์ถ๋ก ํฉ๋๋ค.
๋ฉ์๋์ ํจ๊ณผ๋ฅผ ๋ฌดํจํํ๊ธฐ ์ํด ๋ช ์์ ์ผ๋ก ๊ฐ์์ฑ์ด ์๋ ๊ฒ์ผ๋ก ๋ฉ์๋๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
ํด๋น ๋ฐฉ๋ฒ์ผ๋ก ์ ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํฌ์ธํฐ๋ฅผ ๋น๊ตํ๋ ค๋ ๊ฒฝ์ฐ
ํน์ ์ธ๋ผ์ธ ๋ฉ์๋์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๊ฐ์์ฑ์ด ์๋ ๊ฒ์ผ๋ก ํ์ํ ์ ์์ต๋๋ค. ํ์
๋ช ์์ ๊ฐ์์ฑ์ผ๋ก ํด๋์ค๋ฅผ ๋๋ฌ์ธ๋ ๊ฒ์ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
๋ช ์์ ์ผ๋ก ์ธ์คํด์คํ๋ ์ธ๋ผ์ธ ๋ฉ์๋๋ ๋งํฌ๋ก ์ด ์ต์ ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๊ณ๋ฅผ ๋์ ์ ์์ต๋๋ค.
-fvisibility-ms-compat
์ด ํ๋๊ทธ๋ ๊ฐ์์ฑ ์ค์ ์ ์ฌ์ฉํ์ฌ GCC์ C++ ์ฐ๊ฒฐ ๋ชจ๋ธ์ ๋ง๋ค๋ ค๊ณ ์๋ํฉ๋๋ค.
Microsoft Visual Studio์ ํธํ๋ฉ๋๋ค.
ํ๋๊ทธ๋ GCC์ ์ฐ๊ฒฐ ๋ชจ๋ธ์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํฉ๋๋ค.
1. ๋ค์๊ณผ ๊ฐ์ด ๊ธฐ๋ณธ ๊ฐ์์ฑ์ "์จ๊น"์ผ๋ก ์ค์ ํฉ๋๋ค. -fvisibility=์จ๊น.
2. ๋ฉค๋ฒ๊ฐ ์๋ ์ ํ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์จ๊ฒจ์ ธ ์์ง ์์ต๋๋ค.
3. ๋ช ์์ ๊ฐ์์ฑ์ด ์๋ ์ ํ์ ๋ํด ๋จ์ผ ์ ์ ๊ท์น์ด ์ํ๋ฉ๋๋ค.
๋ ์ด์์ ๊ณต์ ๊ฐ์ฒด์ ์ ์๋ ์ฌ์: ํด๋น ์ ์ธ
์ด ์ต์ ์ด ์ฌ์ฉ๋์ง ์์ ๋ ํ์ฉ๋๋ ๊ฒฝ์ฐ ํ์ฉ๋ฉ๋๋ค.
์ ์ฝ๋์์๋ ๋ค์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. -fvisibility=์จ๊น ํด๋น ํด๋์ค๋ฅผ ๋ด๋ณด๋ ๋๋ค.
์ธ๋ถ์์ ๋ณผ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ถํํ๋ ์ฝ๋๊ฐ ์์กดํ๋ ๊ฒ์ ๊ฐ๋ฅํฉ๋๋ค.
์๋ง๋ ์ค์๋ก Visual Studio ๋์์์.
์ด๋ฌํ ๋ณ๊ฒฝ์ ๊ฒฐ๊ณผ ์ค์๋ ๋์ผํ ์ ํ์ ์ ์ ๋ฐ์ดํฐ ๋ฉค๋ฒ๊ฐ
์ด๋ฆ์ ๊ฐ์ง๋ง ๋ค๋ฅธ ๊ณต์ ๊ฐ์ฒด์ ์ ์๋์ด ์์ผ๋ฏ๋ก ๋ณ๊ฒฝ
ํ๋๋ ๋ค๋ฅธ ํ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค. ์ ์ ์๋ ํจ์ ๋ฉค๋ฒ์ ๋ํ ํฌ์ธํฐ
๋ค๋ฅธ ๊ณต์ ๊ฐ์ฒด๋ ๋์ผํ๊ฒ ๋น๊ตํ ์ ์์ต๋๋ค. ์ด ํ๋๊ทธ๊ฐ ์ฃผ์ด์ก์ ๋,
๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ์ ํ์ ๋ค๋ฅด๊ฒ ์ ์ํ๋ ODR ์๋ฐ.
-fno-์ฝํ
๋ง์ปค์์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ์๋ ์ฝํ ๊ธฐํธ ์ง์์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ๊ธฐ๋ณธ์ ์ผ๋ก G++
์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ฝํ ๊ธฐํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ์ต์ ์ ํ ์คํธ์ฉ์ผ๋ก๋ง ์กด์ฌํ๋ฉฐ,
์ต์ข ์ฌ์ฉ์๊ฐ ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด๋ฑํ ์ฝ๋๊ฐ ์์ฑ๋๊ณ ์ด์ ์ด ์์ต๋๋ค.
์ด ์ต์ ์ G++์ ํฅํ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ ์ ์์ต๋๋ค.
-nostdinc++
C++์ ํน์ ํ ํ์ค ๋๋ ํ ๋ฆฌ์์ ํค๋ ํ์ผ์ ๊ฒ์ํ์ง ๋ง์ญ์์ค.
์ฌ์ ํ ๋ค๋ฅธ ํ์ค ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฒ์ํฉ๋๋ค. (์ด ์ต์ ์ ๋น๋ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.)
๋ํ ์ด๋ฌํ ์ต์ ํ, ๊ฒฝ๊ณ ๋ฐ ์ฝ๋ ์์ฑ ์ต์ ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
C++ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ:
-fno-๊ธฐ๋ณธ-์ธ๋ผ์ธ
๊ฐ์ ํ์ง ๋ง์ญ์์ค ์ธ๋ผ์ธ ํด๋์ค ๋ฒ์ ๋ด์์ ์ ์๋ ํจ์์ ๊ฒฝ์ฐ.
์ด๋ฌํ ํจ์์๋ ์ธ๋ผ์ธ ํจ์์ ๊ฐ์ ์ฐ๊ฒฐ์ด ์์ต๋๋ค. ๊ทธ๋ค์ ๋จ์งํ์ง ์์ต๋๋ค
๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ผ์ธ๋ฉ๋๋ค.
-์๋น (C, Objective-C, C++ ๋ฐ Objective-C++๋ง ํด๋น)
G++์์ ๊ณต๊ธ์ ์ฒด ์ค๋ฆฝ์ ์ธ ์ฝ๋์ ํธํ๋์ง ์์ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๊ฒฝ๊ณ
C++ ABI. ์ด๋ฌํ ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ํด ๊ฒฝ๊ณ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ์ง๋ง,
G ++๊ฐ ์์ฑํ๋๋ผ๋ ๊ฒฝ๊ณ ํ์ง ์์ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
ํธํ๋์ง ์๋ ์ฝ๋์ ๋๋ค. ๊ฒฝ์ฐ์๋ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์์ฑ๋ ์ฝ๋๋ ํธํ๋ฉ๋๋ค.
๋ค์ ์ฌํญ์ด ์ผ๋ ค๋๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๊ฒฝ๊ณ ๋ฅผ ํผํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค.
G++๋ก ์์ฑ๋ ์ฝ๋๋ ๋ค์์ผ๋ก ์์ฑ๋ ์ฝ๋์ ๋ฐ์ด๋๋ฆฌ ํธํ๋์ง ์์ ์ ์๋ค๋ ์ฌ์ค
๋ค๋ฅธ ์ปดํ์ผ๋ฌ.
์๋ ค์ง ๋นํธํ์ฑ -fabi ๋ฒ์ =2 (๊ธฐ๋ณธ๊ฐ)์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
ยท ์ฐธ์กฐ ์ ํ์ ์ ํ์ด ์๋ ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ํ ํ๋ฆฟ์ด ๋งน๊ธ๋ง๋ฉ๋๋ค.
ํ๋ฆฌ๊ฒ:
์ธ๋ถ ์ ์ N;
์ฃผํ ๊ตฌ์กฐ์ฒด S {};
๊ณตํ n (S ) {2}
์ด๊ฒ์ ๋ค์์์ ์์ ๋ฉ๋๋ค. -fabi ๋ฒ์ =3.
ยท "__attribute((vector_size))"๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธ๋ SIMD ๋ฒกํฐ ์ ํ์
๋ฒกํฐ๋ฅผ ์ฌ์ฉํ๋ ํจ์์ ์ค๋ฒ๋ก๋๋ฅผ ํ์ฉํ์ง ์๋ ๋นํ์ค ๋ฐฉ์
๋ค๋ฅธ ํฌ๊ธฐ์.
๋งน๊ธ๋ง์ ๋ค์์์ ๋ณ๊ฒฝ๋ฉ๋๋ค. -fabi ๋ฒ์ =4.
์๋ ค์ง ๋นํธํ์ฑ -fabi ๋ฒ์ =1 ๊ณผ ๊ฐ์ต๋๋ค :
ยท ๋นํธ ํ๋์ ๋ํ ๊ผฌ๋ฆฌ ํจ๋ฉ์ ์๋ชป๋ ์ฒ๋ฆฌ. G++์์ ๋ฐ์ดํฐ ์์ถ์ ์๋ํ ์ ์์
๊ธฐ๋ณธ ํด๋์ค์ ๋์ผํ ๋ฐ์ดํธ๋ก ์๋ฅผ ๋ค์ด:
๊ตฌ์กฐ์ฒด A { ๊ฐ์ ๋ฌดํจ f(); ์ ์ f1 : 1; };
๊ตฌ์กฐ์ฒด B : ๊ณต๊ฐ A { int f2 : 1; };
์ด ๊ฒฝ์ฐ G++๋ "B::f2"๋ฅผ "A::f1"๊ณผ ๋์ผํ ๋ฐ์ดํธ์ ๋ฐฐ์นํฉ๋๋ค. ๋ค๋ฅธ ์ปดํ์ผ๋ฌ๋
์๋๋ค. "A"๋ฅผ ๋ช ์์ ์ผ๋ก ์ฑ์ ํฌ๊ธฐ๊ฐ
ํ๋ซํผ์ ๋ฐ์ดํธ ํฌ๊ธฐ์ ๋ฐฐ์ ์ด๋ G++ ๋ฐ ๊ธฐํ ์ปดํ์ผ๋ฌ๊ฐ
"B"๋ฅผ ๋์ผํ๊ฒ ๋ฐฐ์นํ์ญ์์ค.
ยท ๊ฐ์ ๊ธฐ์ง์ ๋ํ ๊ผฌ๋ฆฌ ํจ๋ฉ์ ์๋ชป๋ ์ฒ๋ฆฌ. G++๋ ๊ผฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค
๊ฐ์ ๋ฒ ์ด์ค๋ฅผ ๋ฐฐ์นํ ๋ ํจ๋ฉ. ์๋ฅผ ๋ค์ด:
๊ตฌ์กฐ์ฒด A { ๊ฐ์ ๋ฌดํจ f(); ๋ฌธ์ c1; };
๊ตฌ์กฐ์ฒด B { B(); ๋ฌธ์ c2; };
๊ตฌ์กฐ์ฒด C: ๊ณต๊ฐ A, ๊ณต๊ฐ ๊ฐ์ B {};
์ด ๊ฒฝ์ฐ G++๋ "A"์ ๊ผฌ๋ฆฌ ์ฌ๋ฐฑ์ "B"๋ฅผ ๋ฐฐ์นํ์ง ์์ต๋๋ค. ๋ค๋ฅธ
์ปดํ์ผ๋ฌ๊ฐ ํฉ๋๋ค. ๋ช ์์ ์ผ๋ก "A"๋ฅผ ์ฑ์์ ์ด ๋ฌธ์ ๋ฅผ ํผํ ์ ์์ต๋๋ค.
ํฌ๊ธฐ๋ ์ ๋ ฌ์ ๋ฐฐ์์ ๋๋ค(๊ฐ์ ๊ธฐ๋ณธ ํด๋์ค ๋ฌด์). ๊ทธ ์์ธ
G++ ๋ฐ ๊ธฐํ ์ปดํ์ผ๋ฌ๋ "C"๋ฅผ ๋์ผํ๊ฒ ๋ฐฐ์นํฉ๋๋ค.
ยท ์ ์ธ๋ ๋๋น๋ณด๋ค ํฐ ๋นํธ ํ๋์ ์๋ชป๋ ์ฒ๋ฆฌ
๋นํธ ํ๋๊ฐ ๊ณต์ฉ์ฒด์ ๋ํ๋ ๋ ๊ธฐ๋ณธ ์ ํ์ ๋๋ค. ์๋ฅผ ๋ค์ด:
์ ๋์จ U { int i : 4096; };
"int"์ 4096๋นํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด G++๋ ๋ค์๊ณผ ๊ฐ์ด ํฉ์งํฉ์ ๋๋ฌด ์๊ฒ ๋ง๋ญ๋๋ค.
"int"์ ๋นํธ ์.
ยท ๋น ํด๋์ค๋ ์๋ชป๋ ์คํ์ ์ ๋ฐฐ์น๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด:
๊ตฌ์กฐ์ฒด A {};
๊ตฌ์กฐ์ฒด B {
์์ด;
๊ฐ์ ๊ณต๋ฐฑ f();
};
๊ตฌ์กฐ์ฒด C: ๊ณต๊ฐ B, ๊ณต๊ฐ A {};
G++๋ "C"์ "A" ๊ธฐ๋ณธ ํด๋์ค๋ฅผ XNUMX์ด ์๋ ์คํ์ ์ ๋ฐฐ์นํฉ๋๋ค. ์ ๋ฐฐ์นํด์ผ ํฉ๋๋ค.
์คํ์ ์ ๋ก. G++๋ "B"์ "A" ๋ฐ์ดํฐ ๋ฉค๋ฒ๊ฐ ์ด๋ฏธ
์คํ์ ์ ๋ก์์.
ยท ์ ํ์ด "typename" ๋๋ ํ ํ๋ฆฟ ํ ํ๋ฆฟ์ ํฌํจํ๋ ํ ํ๋ฆฟ ํจ์์ ์ด๋ฆ
๋งค๊ฐ๋ณ์๊ฐ ์๋ชป ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
์ฃผํ
๋ฌดํจ f(์ ํ ์ด๋ฆ Q::X) {}
์ฃผํ ํด๋์ค Q>
๋ฌดํจ f(์ ํ๋ช Q ::NS) {}
์ด๋ฌํ ํ ํ๋ฆฟ์ ์ธ์คํด์คํ๋ ์๋ชป ์์ ๋ ์ ์์ต๋๋ค.
๋ํ psABI ๊ด๋ จ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด ์์ ์์ ์๋ ค์ง psABI ๋ณ๊ฒฝ
๊ณผ ๊ฐ์ต๋๋ค :
ยท SysV/x86-64์ ๊ฒฝ์ฐ "long double" ๋ฉค๋ฒ๊ฐ ์๋ ๊ณต์ฉ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ฌ๋ฉ๋๋ค.
psABI์ ๋ช ์๋์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด:
์ ๋์จ ์ {
๊ธด ์ด์ค LD;
int i;
};
"union U"๋ ํญ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ฌ๋ฉ๋๋ค.
-Wctor-dtor-ํ๋ผ์ด๋ฒ์ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
ํด๋์ค์ ๋ชจ๋ ์์ฑ์ ๋๋ ์๋ฉธ์๋ก ์ธํด ํด๋์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
ํด๋์ค๋ ๋น๊ณต๊ฐ์ด๋ฉฐ ์น๊ตฌ๋ ๊ณต๊ฐ ์ ์ ๋ฉค๋ฒ ํจ์๊ฐ ์์ต๋๋ค.
๋ํ ๋น๊ณต๊ฐ๊ฐ ์๋ ๋ฉ์๋๊ฐ ์๊ณ ๋น๊ณต๊ฐ ๋ฉค๋ฒ๊ฐ ํ๋ ์ด์ ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค.
์์ฑ์๋ ์๋ฉธ์๊ฐ ์๋ ํจ์.
-Wdelete-non-virtual-dtor (C++ ๋ฐ Objective-C++๋ง ํด๋น)
๊ฒฝ๊ณ ์๊ธฐ ์ญ์ ๊ฐ์ ํจ์๊ฐ ์๋ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ํ๊ดดํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋น๊ฐ์ ์๋ฉธ์. ํ์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ญ์ ํ๋ ๊ฒ์ ์์ ํ์ง ์์ต๋๋ค.
๊ธฐ๋ณธ ํด๋์ค์ ๊ฐ์์ด ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ํด๋์ค์ ๋ํ ํฌ์ธํฐ๋ฅผ ํตํด
ํ๋ฌผ ์๊ฐ๋ก. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
-๋ฌธ์ ์ ๋ฏธ์ฌ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
๋ฌธ์์ด์ด๋ ๋ฌธ์ ๋ฆฌํฐ๋ด ๋ค์ ud ์ ๋ฏธ์ฌ๊ฐ ์ฌ ๋ ๊ฒฝ๊ณ ํ์ง ์์ต๋๋ค.
๋ฐ์ค๋ก ์์ํฉ๋๋ค. ์ค์ ํ์ฅ์ผ๋ก์ GCC๋ ์ด๋ฌํ ์ ๋ฏธ์ฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ทจ๊ธํฉ๋๋ค.
์ฝ๋์์ ํ์ ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ๋ณ๋์ ์ ์ฒ๋ฆฌ ํ ํฐ
"์์ ์์ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ ". ์๋ฅผ ๋ค์ด:
#์ ์ __STDC_FORMAT_MACROS
#ํฌํจํ๋ค
#ํฌํจํ๋ค
int main () {
int64_t i64 = 123;
printf("๋ด int64: %"PRId64"\n", i64);
}
์ด ๊ฒฝ์ฐ "PRId64"๋ ๋ณ๋์ ์ ์ฒ๋ฆฌ ํ ํฐ์ผ๋ก ์ทจ๊ธ๋ฉ๋๋ค.
์ด ๊ฒฝ๊ณ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
- ์ถ์ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
C++11์์ ๊ธ์งํ๋ ์ถ์ ๋ณํ์ด ๋ค์ ๋ด์์ ๋ฐ์ํ๋ฉด ๊ฒฝ๊ณ { }, ์.
์ ์ i = { 2.2 }; // ์ค๋ฅ: double์์ int๋ก ์ถ์
์ด ํ๋๊ทธ๋ -๋ฒฝ and -Wc++11-ํธํ.
์ -std = c ++ 11, - ์ขํ์ง์ง ์๋ ํ์ค์์ ์๊ตฌํ๋ ์ง๋จ์ ์ต์ ํฉ๋๋ค.
์ด๊ฒ์ ์ ๊ตฌ์ฑ๋ ์ฝ๋์ ์๋ฏธ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ์ถ์ ์ ํ
SFINAE ์ปจํ ์คํธ์์ ์ฌ์ ํ ์๋ชป๋ ํ์์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
-์๋์ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
ํจ์ ํธ์ถ๋ก ์ธํด noexcept-expression์ด false๋ก ํ๊ฐ๋ ๋ ๊ฒฝ๊ณ
throw๋์ง ์๋ ์์ธ ์ฌ์(์: ๋์ง๋ค() or ์์ธ๋ ์๋ค)
๊ทธ๋ฌ๋ ์ปดํ์ผ๋ฌ๋ ์์ธ๋ฅผ throwํ์ง ์๋ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์์ต๋๋ค.
-W๋น ๊ฐ์ dtor (C++ ๋ฐ Objective-C++๋ง ํด๋น)
ํด๋์ค์ ๊ฐ์ ํจ์์ ์ก์ธ์ค ๊ฐ๋ฅํ ๋น๊ฐ์ ์๋ฉธ์๊ฐ ์์ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
์ด๋ค ๊ฒฝ์ฐ์ ํ์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ญ์ ํ๋ ๊ฒ์ ๊ฐ๋ฅํ์ง๋ง ์์ ํ์ง ์์ต๋๋ค.
๊ธฐ๋ณธ ํด๋์ค์ ๋ํ ํฌ์ธํฐ. ์ด ๊ฒฝ๊ณ ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ํ์ฑํ๋ฉ๋๋ค. -์จํ์จ++ ์ด ์ง์ ๋ฉ๋๋ค.
- Wreorder (C++ ๋ฐ Objective-C++๋ง ํด๋น)
์ฝ๋์ ์ง์ ๋ ๋ฉค๋ฒ ์ด๋์ ๋ผ์ด์ ์ ์์๊ฐ ์์์ ์ผ์นํ์ง ์์ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
๊ทธ๋ค์ด ์คํ๋์ด์ผํฉ๋๋ค. ์๋ฅผ ๋ค์ด:
๊ตฌ์กฐ์ฒด A {
int i;
์ ์ j;
A(): j(0), i(1) { }
};
์ปดํ์ผ๋ฌ๋ ๋ฉค๋ฒ ์ด๋์ ๋ผ์ด์ ๋ฅผ ์ฌ์ ๋ ฌํฉ๋๋ค. i and j ์ ์ธ๊ณผ ์ผ์น์ํค๊ธฐ ์ํด
ํ์์ ์ง์์ ๋ฐ๋ผ ๊ทธ ์ทจ์ง๋ฅผ ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค.
-๋ฒฝ.
-fext-์ซ์-๋ฆฌํฐ๋ด (C++ ๋ฐ Objective-C++๋ง ํด๋น)
ํ์, ๊ณ ์ ์์์ ๋๋ ๊ธฐ๊ณ ์ ์ ๋ฆฌํฐ๋ด ์ซ์ ์ ๋ฏธ์ฌ๋ฅผ GNU๋ก ํ์ฉ
ํ์ฅ. ์ด ์ต์ ์ ๋๋ฉด ์ด๋ฌํ ์ ๋ฏธ์ฌ๋ C++11 ์ฌ์ฉ์๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ ์๋ ๋ฆฌํฐ๋ด ์ซ์ ์ ๋ฏธ์ฌ. ๋ชจ๋ C++11 ์ด์ ๋ฐฉ์ธ์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค.
๋ชจ๋ GNU ๋ฐฉ์ธ: -std = c ++ 98, -std=gnu++98, -std=gnu++11, -std=gnu++1y. ์ด
์ต์ ์ ISO C++11 ์ดํ ๊ธฐ๋ณธ์ ์ผ๋ก ๊บผ์ ธ ์์ต๋๋ค(-std = c ++ 11, ...).
๋ค์ - ์... ์ต์ ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค -๋ฒฝ.
-์จํ์จ++ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
Scott Meyers์ ๋ค์ ์คํ์ผ ์ง์นจ ์๋ฐ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ ํจํ
C++, ์ด Edition ์ฑ :
ยท ํญ๋ชฉ 11: ๋ค์์ ์ฌ์ฉํ์ฌ ํด๋์ค์ ๋ํ ๋ณต์ฌ ์์ฑ์์ ํ ๋น ์ฐ์ฐ์๋ฅผ ์ ์ํ์ญ์์ค.
๋์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ
ยท ํญ๋ชฉ 12: ์์ฑ์ ํ ๋น๋ณด๋ค ์ด๊ธฐํ๋ฅผ ์ ํธํฉ๋๋ค.
ยท ํญ๋ชฉ 14: ๊ธฐ๋ณธ ํด๋์ค์์ ์๋ฉธ์๋ฅผ ๊ฐ์์ผ๋ก ๋ง๋์ญ์์ค.
ยท ํญ๋ชฉ 15: "operator="๊ฐ *this์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ฐํํ๋๋ก ํฉ๋๋ค.
ยท ํญ๋ชฉ 23: ๊ฐ์ฒด๋ฅผ ๋ฐํํด์ผ ํ ๋ ์ฐธ์กฐ๋ฅผ ๋ฐํํ๋ ค๊ณ ํ์ง ๋ง์ญ์์ค.
๋ํ Scott Meyers์ ๋ค์ ์คํ์ผ ์ง์นจ ์๋ฐ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ๋ ๋ณด๊ธฐ
์ ํจํ C + + ์ฑ :
ยท ํญ๋ชฉ 6: ์ฆ๊ฐ ๋ฐ ๊ฐ์์ ์ ๋์ฌ์ ํ์ ํ์์ ๊ตฌ๋ณํ์ญ์์ค.
์ฐ์ฐ์.
ยท ํญ๋ชฉ 7: "&&", "||" ๋๋ ","๋ฅผ ์ ๋ ์ค๋ฒ๋ก๋ํ์ง ๋ง์ญ์์ค.
์ด ์ต์ ์ ์ ํํ ๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํค๋๊ฐ ๋ชจ๋
์ด ์ง์นจ์; ์ฌ์ฉํ๋ค GREP -v ์ด๋ฌํ ๊ฒฝ๊ณ ๋ฅผ ํํฐ๋งํฉ๋๋ค.
-Wstrict-null-์ผํฐ๋ฌ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
์บ์คํธ๋์ง ์์ "NULL"์ ์ผํฐ๋ฌ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. GCC๋ก๋ง ์ปดํ์ผํ ๋
"NULL"์ด "__null"๋ก ์ ์๋์ด ์์ผ๋ฏ๋ก ์ด๊ฒ์ ์ ํจํ ์ผํฐ๋ฌ์ ๋๋ค. ๋น๋ก null์ด์ง๋ง
๋ ํฌ์ธํฐ๊ฐ ์๋ ํฌ์ธํฐ ์์, ๋์ผํ ํฌ๊ธฐ๊ฐ ๋ณด์ฅ๋จ
ํฌ์ธํฐ๋ก. ๊ทธ๋ฌ๋ ์ด ์ฌ์ฉ์ ๋ค๋ฅธ ์ปดํ์ผ๋ฌ ๊ฐ์ ์ด์ํ ์ ์์ต๋๋ค.
- ํ ํ๋ฆฟ์ด ์๋ ์น๊ตฌ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
ํ ํ๋ฆฟ ๋ด์์ ํ ํ๋ฆฟํ๋์ง ์์ ์น๊ตฌ ํจ์๊ฐ ์ ์ธ๋๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
G++์์ ๋ช ์์ ํ ํ๋ฆฟ ์ฌ์ ์ง์์ ์ถํ ์ดํ,
์น๊ตฌ๊ฐ ๋น์ ๊ท ID์ ๋๋ค(์ฆ, ์น๊ตฌ ํธ(์ ์)), C++ ์ธ์ด ์ฌ์
์น๊ตฌ๊ฐ ํ ํ๋ฆฟ์ด ์๋ ์ผ๋ฐ ํจ์๋ฅผ ์ ์ธํ๊ฑฐ๋ ์ ์ํ๋๋ก ์๊ตฌํฉ๋๋ค. (๋ถ๋ถ
14.5.3). G++๊ฐ ๋ช ์์ ์ฌ์์ ๊ตฌํํ๊ธฐ ์ ์, unqualified-ids๋
ํ ํ๋ฆฟํ๋ ๊ธฐ๋ฅ์ ํน์ ์ ๋ฌธํ๋ก ํด์๋ฉ๋๋ค. ์๋ํ๋ฉด ์ด๊ฑด
๋น์ค์ ๋์์ ๋ ์ด์ G++์ ๊ธฐ๋ณธ ๋์์ด ์๋๋๋ค.
- ํ ํ๋ฆฟ์ด ์๋ ์น๊ตฌ ์ปดํ์ผ๋ฌ๊ฐ ์ ์ฌ์ ์ธ ๋ฌธ์ ์ ๋ํด ๊ธฐ์กด ์ฝ๋๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋ฐ์ ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค. ์ด ์๋ก์ด ์ปดํ์ผ๋ฌ ๋์์ ๋ค์์ ์ฌ์ฉํ์ฌ ๋ ์ ์์ต๋๋ค.
- ํ ํ๋ฆฟ์ด ์๋ ์น๊ตฌ, ์ค์ ์ปดํ์ผ๋ฌ ์ฝ๋๋ฅผ ์ ์งํ์ง๋ง
์ ์ฉํ ๊ฒฝ๊ณ .
-Wold ์คํ์ผ ์บ์คํธ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
C++ ํ๋ก๊ทธ๋จ ๋ด์์ void๊ฐ ์๋ ์ ํ์ผ๋ก์ ์ด์ ์คํ์ผ(C ์คํ์ผ) ์บ์คํธ๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค.
์๋ก์ด ์คํ์ผ์ ์บ์คํธ(๋์ _์บ์คํธ, static_cast, ์ฌํด์_์บ์คํธ๋ฐ const_cast)
์๋ํ์ง ์์ ์ํฅ์ ๋ ์ทจ์ฝํ๊ณ ๊ฒ์ํ๊ธฐ๊ฐ ํจ์ฌ ์ฝ์ต๋๋ค.
-์ค๋ฒ๋ก๋ฉ๋ ๊ฐ์ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
ํจ์ ์ ์ธ์ด ๊ธฐ๋ณธ ํด๋์ค์์ ๊ฐ์ ํจ์๋ฅผ ์จ๊ธธ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค. ์์ํ
์:
๊ตฌ์กฐ์ฒด A {
๊ฐ์ ๋ฌดํจ f();
};
๊ตฌ์กฐ์ฒด B: ๊ณต๊ฐ A {
๋ฌดํจ f(int);
};
"f"์ "A" ํด๋์ค ๋ฒ์ ์ "B"์ ์จ๊ฒจ์ ธ ์๊ณ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์์ต๋๋ค.
ใด*ใด;
b->f();
์ปดํ์ผ์ ์คํจํฉ๋๋ค.
-Wno-pmf-๋ณํ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
๋ฉค๋ฒ ํจ์์ ๋ํ ๋ฐ์ธ๋ฉ๋ ํฌ์ธํฐ๋ฅผ ์ผ๋ฐ์ผ๋ก ๋ณํํ๊ธฐ ์ํ ์ง๋จ ๋นํ์ฑํ
๋ฐ๋.
-Wsign-ํ๋ก๋ชจ์ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
๊ณผ๋ถํ ํด๊ฒฐ์ด unsigned ๋๋ enumerated ์ ํ์์ ๋ค์์ผ๋ก ์น๊ฒฉ์ ์ ํํ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
์๋ช ๋ ์ ํ, ๋์ผํ ํฌ๊ธฐ์ ๋ถํธ ์๋ ์ ํ์ผ๋ก์ ๋ณํ. ์ด์ ์
G++ ๋ฒ์ ์ ์๋ช ๋์ง ์์ ์ํ๋ฅผ ์ ์งํ๋ ค๊ณ ์๋ํ์ง๋ง ํ์ค์ ํ์ฌ
ํ๋.
์ต์ ์ ์ด ์ค๋ธ์ ํฐ๋ธ-C and ๋ชฉํ-C++ ๋ฐฉ์ธ
(์ฐธ๊ณ : ์ด ๋งค๋ด์ผ์ Objective-C ๋ฐ Objective-C++ ์ธ์ด๋ฅผ ์ค๋ช ํ์ง ์์ต๋๋ค.
๊ทธ๋ค ์์ .
์ด ์น์ ์์๋ Objective-C์์๋ง ์๋ฏธ ์๋ ๋ช ๋ น์ค ์ต์ ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
๋ฐ Objective-C++ ํ๋ก๊ทธ๋จ. ๋ํ ๋๋ถ๋ถ์ ์ธ์ด ๋ ๋ฆฝ์ ์ธ GNU๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ปดํ์ผ๋ฌ ์ต์ . ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด "some_class.m" ํ์ผ์ ์ปดํ์ผํ ์ ์์ต๋๋ค.
gcc -g -fgnu-๋ฐํ์ -O -c some_class.m
์ด ์์์, -fgnu-๋ฐํ์ Objective-C ๋ฐ Objective-C++ ์ ์ฉ ์ต์ ์ ๋๋ค.
ํ๋ก๊ทธ๋จ๋ค; GCC์์ ์ง์ํ๋ ๋ชจ๋ ์ธ์ด๋ก ๋ค๋ฅธ ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Objective-C๋ C ์ธ์ด์ ํ์ฅ์ด๋ฏ๋ก Objective-C ์ปดํ์ผ์
C ํ๋ก ํธ์๋์ ํน์ ํ ์ต์ ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค(์: -์ ํต์ ์ธ). ๋ง์ฐฌ๊ฐ์ง๋ก,
Objective-C++ ์ปดํ์ผ์ C++ ํน์ ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค(์: -์๋น).
๋ค์์ ๋ค์๊ณผ ๊ฐ์ ์ต์ ๋ชฉ๋ก์ ๋๋ค. ๋ง Objective-C ๋ฐ Objective-C++ ์ปดํ์ผ์ฉ
ํ๋ก๊ทธ๋จ :
-f์์-๋ฌธ์์ด-ํด๋์ค=ํด๋์ค ์ด๋ฆ
ํด๋์ค ์ด๋ฆ ๊ฐ ๋ฆฌํฐ๋ด ๋ฌธ์์ด์ ๋ํด ์ธ์คํด์คํํ ํด๋์ค ์ด๋ฆ์ผ๋ก
"@"..."" ๊ตฌ๋ฌธ์ผ๋ก ์ง์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ ํด๋์ค ์ด๋ฆ์ "NXConstantString"์ ๋๋ค.
GNU ๋ฐํ์์ด ์ฌ์ฉ ์ค์ด๊ณ NeXT ๋ฐํ์์ด ์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ "NSConstantString"
์ฌ์ฉ(์๋ ์ฐธ์กฐ). NS -f์์-cfstrings ์ต์ ์ด ์๋ ๊ฒฝ์ฐ ์ต์ ์ ์ฌ์ ์ํฉ๋๋ค.
-f์์-๋ฌธ์์ด-ํด๋์ค ์ค์ ํ๊ณ "@"..."" ๋ฆฌํฐ๋ด์ด ์์๋ก ๋ฐฐ์น๋๋๋ก ํฉ๋๋ค.
CoreFoundation ๋ฌธ์์ด.
-fgnu-๋ฐํ์
ํ์ค GNU Objective-C ๋ฐํ์๊ณผ ํธํ๋๋ ๊ฐ์ฒด ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์
๋๋ถ๋ถ์ ์์คํ ์ ํ์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-fnext-๋ฐํ์
NeXT ๋ฐํ์๊ณผ ํธํ๋๋ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ NeXT ๊ธฐ๋ฐ์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
Darwin ๋ฐ Mac OS X๋ฅผ ํฌํจํ ์์คํ . ๋งคํฌ๋ก "__NEXT_RUNTIME__"์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ฏธ๋ฆฌ ์ ์๋ฉ๋๋ค.
(๊ทธ๋ฆฌ๊ณ ๊ฒฝ์ฐ์๋ง) ์ด ์ต์ ์ด ์ฌ์ฉ๋ฉ๋๋ค.
-fno-nil-์์ ๊ธฐ
์ฌ๊ธฐ์์ ๋ชจ๋ Objective-C ๋ฉ์์ง ๋์คํจ์น("[receiver message:arg]")๋ฅผ ๊ฐ์ ํฉ๋๋ค.
๋ฒ์ญ ๋จ์๋ ์์ ๊ธฐ๊ฐ "nil"์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ด๊ฒ์ ๋ ๋ง์ ๊ฒ์ ํ์ฉํฉ๋๋ค
์ฌ์ฉํ ๋ฐํ์์ ํจ์จ์ ์ธ ์ง์ ์ . ์ด ์ต์ ์ ๋ค์์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
NeXT ๋ฐํ์ ๋ฐ ABI ๋ฒ์ 0 ๋๋ 1๊ณผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
-fobjc-abi-๋ฒ์ =n
๋ฒ์ ์ฌ์ฉ n ์ ํํ ๋ฐํ์์ ๋ํ Objective-C ABI์ ์ด ์ต์ ์
ํ์ฌ NeXT ๋ฐํ์์ ๋ํด์๋ง ์ง์๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฒ์ 0์
์์ฑ ๋ฐ ๊ธฐํ Objective-C 32์ ์ง์ํ์ง ์๋ ๊ธฐ์กด(2.0๋นํธ) ABI
์ถ๊ฐ. ๋ฒ์ 1์ ์์ฑ ๋ฐ
๋ค๋ฅธ Objective-C 2.0 ์ถ๊ฐ ์ฌํญ. ๋ฒ์ 2๋ ์ต์ (64๋นํธ) ABI์ ๋๋ค. ์๋ฌด๊ฒ๋ ์๋ค๋ฉด
์ง์ ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ 0๋นํธ ๋์ ์์คํ ์ ๊ฒฝ์ฐ ๋ฒ์ 32์ด๊ณ 2๋นํธ์ ๊ฒฝ์ฐ ๋ฒ์ 64์ ๋๋ค.
๋์ ๊ธฐ๊ณ.
-fobjc-call-cxx-cdtors
๊ฐ Objective-C ํด๋์ค์ ๋ํด ์ธ์คํด์ค ๋ณ์๊ฐ C++ ๊ฐ์ฒด์ธ์ง ํ์ธํ์ญ์์ค.
์ค์ํ์ง ์์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ํน์ "-(id)
.cxx_construct" ์ธ์คํด์ค ๋ฉ์๋๋ ๋ชจ๋ ์์คํ ์์ ์ค์ํ์ง ์์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์คํํฉ๋๋ค.
์ด๋ฌํ ์ธ์คํด์ค ๋ณ์๋ฅผ ์์๋๋ก ๋์ดํ ๋ค์ "self"๋ฅผ ๋ฐํํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก
์ธ์คํด์ค ๋ณ์๋ ์ค์ํ์ง ์์ ์๋ฉธ์๊ฐ ์๋ C++ ๊ฐ์ฒด์ด๋ฉฐ, ๊ทธ๋ ๋ค๋ฉด
์ด๋ฌํ ๋ชจ๋ ๊ธฐ๋ณธ ์๋ฉธ์๋ฅผ ์คํํ๋ ํน๋ณํ "- (void) .cxx_destruct" ๋ฉ์๋
์ญ์์ผ๋ก.
๋ฐ๋ผ์ "-(id) .cxx_construct" ๋ฐ "-(void) .cxx_destruct" ๋ฉ์๋๋ง ์์ฑ๋ฉ๋๋ค.
ํ์ฌ Objective-C ํด๋์ค์ ์ ์ธ๋ ์ธ์คํด์ค ๋ณ์์ ๋ํด ์๋ํฉ๋๋ค.
์ํผํด๋์ค์์ ์์๋จ. Objective-C ๋ฐํ์์ ์ฑ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ์ฒด์ ์์ ๊ณ์ธต ๊ตฌ์กฐ์์ ์ด๋ฌํ ๋ชจ๋ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค. "-(์์ด๋)
.cxx_construct" ๋ฉ์๋๋ ์ ๊ฐ์ฒด ์งํ ๋ฐํ์์์ ํธ์ถ๋ฉ๋๋ค.
์ธ์คํด์ค๊ฐ ํ ๋น๋ฉ๋๋ค. "- (void) .cxx_destruct" ๋ฉ์๋๊ฐ ์ฆ์ ํธ์ถ๋ฉ๋๋ค.
๋ฐํ์์ด ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ํ ๋น ํด์ ํ๊ธฐ ์ ์.
์ด ๊ธ์ ์ฐ๋ ์์ ์์ Mac OS X 10.4 ์ด์์ NeXT ๋ฐํ์๋ง ๋ค์์ ์ง์ํฉ๋๋ค.
"-(id) .cxx_construct" ๋ฐ "-(void) .cxx_destruct" ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
-fobjc-์ง์ ๋ฐ์ก
๋ฉ์์ง ๋์คํจ์ฒ๋ก ๋น ๋ฅธ ์ ํ๋ฅผ ํ์ฉํฉ๋๋ค. ๋ค์์์ ์ด๊ฒ์ ๋ค์์ ํตํด ์ํ๋ฉ๋๋ค.
์ปค๋ฎค ํ์ด์ง.
-fobjc-์์ธ
Objective-C์์ ๊ตฌ์กฐ์ ์์ธ ์ฒ๋ฆฌ์ ๋ํ ๊ตฌ๋ฌธ ์ง์์ ํ์ฑํํฉ๋๋ค.
C++ ๋ฐ Java์์ ์ ๊ณตํ๋ ๊ฒ. ์ด ์ต์ ์ Objective-C๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ํ์ํฉ๋๋ค.
ํค์๋ @try, @throw, @catch, @finally ๋ฐ @synchronized. ์ด ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค
GNU ๋ฐํ์๊ณผ NeXT ๋ฐํ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ(๊ทธ๋ฌ๋
Mac OS X 10.2 ๋ฐ ์ด์ ๋ฒ์ ์ NeXT ๋ฐํ์).
-fobjc-gc
Objective-C ๋ฐ Objective-C++ ํ๋ก๊ทธ๋จ์์ ๊ฐ๋น์ง ์์ง(GC)์ ํ์ฑํํฉ๋๋ค. ์ด ์ต์
NeXT ๋ฐํ์์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. GNU ๋ฐํ์์ ๋ค๋ฅธ ์ฐ๋ ๊ธฐ๊ฐ ์์ต๋๋ค.
ํน๋ณํ ์ปดํ์ผ๋ฌ ํ๋๊ทธ๊ฐ ํ์ํ์ง ์์ ์ปฌ๋ ์ ๊ตฌํ.
-fobjc-nilcheck
ABI ๋ฒ์ 2๊ฐ ์๋ NeXT ๋ฐํ์์ ๊ฒฝ์ฐ ๋ฉ์๋์์ nil ์์ ๊ธฐ๋ฅผ ํ์ธํฉ๋๋ค.
์ค์ ๋ฉ์๋ ํธ์ถ์ ์ํํ๊ธฐ ์ ์ ํธ์ถํฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
์ฌ์ฉ ์ค์ง -fno-objc-nilcheck. ํด๋์ค ๋ฉ์๋ ๋ฐ ์ํผ ํธ์ถ์ ์ ๋ ํ์ธ๋์ง ์์ต๋๋ค.
์ด ํ๋๊ทธ๊ฐ ๋ฌด์์ผ๋ก ์ค์ ๋๋ ์ด๋ฐ ์์ผ๋ก nil์ ๋ํด. ํ์ฌ ์ด ํ๋๊ทธ๋
GNU ๋ฐํ์์ด๋ NeXT ๋ฐํ์ ABI์ ์ด์ ๋ฒ์ ์ ์ฌ์ฉํ ๋๋ ์๋ฌด ๊ฒ๋ ์์ต๋๋ค.
-fobjc-std = OBJC1.
GCC 1.0์์ ์ธ์ํ๋ ์ธ์ด์ธ Objective-C 4.0์ ์ธ์ด ๊ตฌ๋ฌธ์ ๋ฐ๋ฆ ๋๋ค.
์ด๊ฒ์ C/C++ ์ธ์ด์ ๋ํ Objective-C ์ถ๊ฐ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค
๋ณ๋์ C/C++ ๋ฐฉ์ธ์ผ๋ก ์ ์ด๋๋ C/C++ ํ์ค ์ค์
์ต์ ํ๋๊ทธ. ์ด ์ต์ ์ด Objective-C ๋๋ Objective-C++์ ํจ๊ป ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
์ปดํ์ผ๋ฌ์์ GCC 4.0์์ ์ธ์ํ์ง ๋ชปํ๋ ๋ชจ๋ Objective-C ๊ตฌ๋ฌธ์ ๊ฑฐ๋ถ๋ฉ๋๋ค. ์ด๊ฒ
Objective-C ์ฝ๋๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ปดํ์ผ๋ ์ ์๋์ง ํ์ธํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
์ด์ ๋ฒ์ ์ GCC.
-freplace-objc-ํด๋์ค
์ง์ํ๋ ํน์ ๋ง์ปค๋ฅผ ๋ฐฉ์ถํฉ๋๋ค. ld(1) ๊ฒฐ๊ณผ ๊ฐ์ฒด์์ ์ ์ ์ผ๋ก ๋งํฌํ์ง ์๋๋ก
ํ์ผ ๋ฐ ํ์ฉ ๋(1) ๋์ ๋ฐํ์์ ๋ก๋ํฉ๋๋ค. ์ด๊ฒ์์์ ์ฌ์ฉ๋ฉ๋๋ค
Fix-and-Continue ๋๋ฒ๊น ๋ชจ๋์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด ํ์ผ์ด
์ง๋ฌธ์ ํ๋ก๊ทธ๋จ ๊ณผ์ ์์ ๋ค์ ์ปดํ์ผ๋๊ณ ๋์ ์ผ๋ก ๋ค์ ๋ก๋๋ ์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ ์์ฒด๋ฅผ ๋ค์ ์์ํ ํ์ ์์ด ์คํ๋ฉ๋๋ค. ํ์ฌ, Fix-and-
๊ณ์ ๊ธฐ๋ฅ์ Mac์์ NeXT ๋ฐํ์๊ณผ ํจ๊ป ์ฌ์ฉํ ๋๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
OS X 10.3 ์ด์.
-fzero-๋งํฌ
NeXT ๋ฐํ์์ฉ์ผ๋ก ์ปดํ์ผํ ๋ ์ปดํ์ผ๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ํธ์ถ์ ๋์ฒดํฉ๋๋ค.
"objc_getClass("...")"(์ปดํ์ผ ์๊ฐ์ ํด๋์ค ์ด๋ฆ์ ์๊ณ ์๋ ๊ฒฝ์ฐ)
๋ฐํ์์ ๊ฐ์ ํ๋ ๋ก๋ ์๊ฐ์ ์ด๊ธฐํ๋๋ ์ ์ ํด๋์ค ์ฐธ์กฐ
์ฑ๋ฅ. ์ง์ -fzero-๋งํฌ ํ๋๊ทธ๋ ์ด ๋์์ ์ต์ ํ๊ณ
"objc_getClass("...")"์ ๋ํ ํธ์ถ์ด ์ ์ง๋ฉ๋๋ค. ์ด๊ฒ์ Zero-Link์์ ์ ์ฉํฉ๋๋ค.
๊ฐ๋ณ ํด๋์ค ๊ตฌํ์ ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ฒ๊น ๋ชจ๋
ํ๋ก๊ทธ๋จ ์คํ ์ค. GNU ๋ฐํ์์ ํ์ฌ ํญ์ ํธ์ถ์ ์ ์งํฉ๋๋ค.
"objc_get_class("...")" ๋ช ๋ น์ค ์ต์ ์ ๊ด๊ณ์์ด.
-gen-decls
์์ค ํ์ผ์ ์๋ ๋ชจ๋ ํด๋์ค์ ๋ํ ์ธํฐํ์ด์ค ์ ์ธ์ ๋ค์๊ณผ ๊ฐ์ ํ์ผ์ ๋คํํฉ๋๋ค.
์์ค ์ด๋ฆ.decl.
-Wassign-์ธํฐ์ ํธ (Objective-C ๋ฐ Objective-C++๋ง ํด๋น)
๊ฐ๋น์ง ์์ง๊ธฐ๊ฐ Objective-C ํ ๋น์ ๊ฐ๋ก์ฑ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
-Wno ํ๋กํ ์ฝ (Objective-C ๋ฐ Objective-C++๋ง ํด๋น)
ํด๋์ค๊ฐ ํ๋กํ ์ฝ์ ๊ตฌํํ๋๋ก ์ ์ธ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฉ์๋์ ๋ํด ๊ฒฝ๊ณ ๊ฐ ๋ฐํ๋ฉ๋๋ค.
ํด๋์ค์ ์ํด ๊ตฌํ๋์ง ์์ ํ๋กํ ์ฝ์์. ๊ธฐ๋ณธ ๋์์
ํด๋์ค์์ ๋ช ์์ ์ผ๋ก ๊ตฌํ๋์ง ์์ ๋ชจ๋ ๋ฉ์๋์ ๋ํด ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํฉ๋๋ค.
๋ฉ์๋ ๊ตฌํ์ ์ํผํด๋์ค์์ ์์๋ฉ๋๋ค. ์ฌ์ฉํ๋ ๊ฒฝ์ฐ -Wno ํ๋กํ ์ฝ
์ต์ ์ ์ ํํ๋ฉด ์ํผ ํด๋์ค์์ ์์๋ ๋ฉ์๋๊ฐ ๊ตฌํ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ๋ํ ๊ฒฝ๊ณ ๊ฐ ๋ฐํ๋์ง ์์ต๋๋ค.
-W์ ํ์ (Objective-C ๋ฐ Objective-C++๋ง ํด๋น)
๋์ผํ ์ ํ๊ธฐ์ ๋ํด ์ ํ์ด ๋ค๋ฅธ ์ฌ๋ฌ ๋ฉ์๋๊ฐ ๋ฐ๊ฒฌ๋๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ
ํธ์ง. ๊ฒ์ฌ๋ ์ต์ข ๋จ๊ณ์ ๋ฉ์๋ ๋ชฉ๋ก์์ ์ํ๋ฉ๋๋ค.
ํธ์ง. ๋ํ ์ ๋ํ๋๋ ๊ฐ ์ ํ๊ธฐ์ ๋ํด ๊ฒ์ฌ๊ฐ ์ํ๋ฉ๋๋ค.
"@selector(...)" ํํ์ ๋ฐ ํด๋น ์ ํ๊ธฐ์ ๋ํ ํด๋น ๋ฉ์๋๋
์ปดํ์ผ ์ค ๋ฐ๊ฒฌ. ์ด๋ฌํ ๊ฒ์ฌ๋ ๋ง์ง๋ง์๋ง ๋ฉ์๋ ํ ์ด๋ธ์ ์ค์บํ๊ธฐ ๋๋ฌธ์
์ปดํ์ผ์ ๋ง์ง๋ง ๋จ๊ณ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ด๋ฌํ ๊ฒฝ๊ณ ๊ฐ ์์ฑ๋์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ปดํ์ผ ์ค์ ์ค๋ฅ๊ฐ ๋ฐ๊ฒฌ๋์๊ฑฐ๋
-fsyntax ์ ์ฉ ์ต์ ์ ์ฌ์ฉ ์ค์ ๋๋ค.
-Wstrict ์ ํ์ ์ผ์น (Objective-C ๋ฐ Objective-C++๋ง ํด๋น)
์ธ์ ๋ฐ/๋๋ ๋ฐํ ์ ํ์ด ๋ค๋ฅธ ์ฌ๋ฌ ๋ฉ์๋๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ด ์ ํ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ค๊ณ ํ ๋ ์ฃผ์ด์ง ์ ํ๊ธฐ
"ID" ๋๋ "ํด๋์ค"๋ฅผ ์ ๋ ฅํฉ๋๋ค. ์ด ํ๋๊ทธ๊ฐ ๊บผ์ ธ ์์ผ๋ฉด(๊ธฐ๋ณธ ๋์),
๋ฐ๊ฒฌ๋ ์ฐจ์ด์ ์ด
๊ฐ์ ํฌ๊ธฐ์ ์ ๋ ฌ.
-Wunddeclared-์ ํ์ (Objective-C ๋ฐ Objective-C++๋ง ํด๋น)
์ ์ธ๋์ง ์์ ์ ํ๊ธฐ๋ฅผ ์ฐธ์กฐํ๋ "@selector(...)" ํํ์์ด ๋ฐ๊ฒฌ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. NS
ํด๋น ์ด๋ฆ์ ๊ฐ์ง ๋ฉ์๋๊ฐ ์ด์ ์ ์ ์ธ๋์ง ์์ ๊ฒฝ์ฐ ์ ํ์๋ ์ ์ธ๋์ง ์์ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
@interface ๋๋ @protocol์์ ๋ช ์์ ์ผ๋ก "@selector(...)" ํํ์
์ ์ธ ๋๋ ์์์ ์ผ๋ก @implementation ์น์ ์์. ์ด ์ต์ ์ ํญ์
"@selector(...)" ํํ์์ด ๋ฐ๊ฒฌ๋๋ ์ฆ์ ๊ฒ์ฌํ์ง๋ง, -W์ ํ์ ๋ง
์ปดํ์ผ์ ๋ง์ง๋ง ๋จ๊ณ์์ ๊ฒ์ฌ๋ฅผ ์ํํฉ๋๋ค. ์ด๊ฒ์ ๋ํ ์ฝ๋ฉ์ ์ํํฉ๋๋ค
๋ฉ์๋์ ์ ํ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ ์ธํด์ผ ํ๋ ์คํ์ผ ๊ท์น.
-print-objc-๋ฐํ์-์ ๋ณด
๊ฐ์ผ๋ก ์ ๋ฌ๋๋ ๊ฐ์ฅ ํฐ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๋ C ํค๋๋ฅผ ์์ฑํฉ๋๋ค(์๋ ๊ฒฝ์ฐ).
์ต์ ์ Control ์ง๋จ ๋ฉ์์ง ์์
์ ํต์ ์ผ๋ก ์ง๋จ ๋ฉ์์ง๋ ์ถ๋ ฅ ์ฅ์น์
์ธก๋ฉด(์: ๋๋น, ...). ์๋์ ์ค๋ช ๋ ์ต์ ์ ์ฌ์ฉํ์ฌ ์ ์ดํ ์ ์์ต๋๋ค.
์ง๋จ ๋ฉ์์ง์ ํ์ํ ์๊ณ ๋ฆฌ์ฆ(์: ์ค๋น ๋ฌธ์ ์, ๋น๋)
์์ค ์์น ์ ๋ณด๋ฅผ ๋ณด๊ณ ํด์ผ ํฉ๋๋ค. ์ผ๋ถ ์ธ์ด ํ๋ฐํธ ์๋๋
์ด๋ฌํ ์ต์ ์ ์กด์คํ์ง ๋ง์ญ์์ค.
-f๋ฉ์์ง ๊ธธ์ด=n
๋ค์ ์ค์ ๋ง๋๋ก ์ค๋ฅ ๋ฉ์์ง์ ํ์์ ์ง์ ํ์ญ์์ค. n ๋ฌธ์. ๊ทธ๋งํผ
๊ธฐ๋ณธ๊ฐ์ 72์์ ๋๋ค. g ++ ์ ์ํด ์ง์๋๋ ๋๋จธ์ง ํ๋ฐํธ ์๋์ ๋ํด 0
GCC. ๋ง์ฝ์ n XNUMX์ด๋ฉด ์ค ๋ฐ๊ฟ์ด ์ํ๋์ง ์์ต๋๋ค. ๊ฐ ์ค๋ฅ ๋ฉ์์ง๋
ํ๋์ ์ .
-fdiagnostics-show-location=ํ๋ฒ
์ค ๋ฐ๊ฟ ๋ชจ๋์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ง๋จ ๋ฉ์์ง ๋ณด๊ณ ์์๊ฒ ๋ค์์ ์ง์ํฉ๋๋ค.
์์ค ์์น ์ ๋ณด ๋ฐฉ์ถ ์ผ๋จ; ์ฆ, ๋ฉ์์ง๊ฐ ๋๋ฌด ๊ธธ์ด์ ๋ง์ง ์๋ ๊ฒฝ์ฐ
๋จ์ผ ๋ฌผ๋ฆฌ์ ๋ผ์ธ์ ์๊ณ ๋ํ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ ์์ค ์์น๊ฐ ๋ด๋ณด๋ด์ง์ง ์์ต๋๋ค.
(์ ๋์ฌ๋ก) ๋ค์, ๊ณ์ํด์, ์ด์ด์ง๋ ์ฐ์ ๋ผ์ธ์์. ์ด๊ฒ์ด
๊ธฐ๋ณธ ๋์.
-fdiagnostics-show-location=๋ชจ๋ ์ค
์ค ๋ฐ๊ฟ ๋ชจ๋์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ง๋จ ๋ฉ์์ง ๋ณด๊ณ ์์๊ฒ ๋ค์์ ์ง์ํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฌผ๋ฆฌ์ ๋ผ์ธ์ ๋ํด ๋์ผํ ์์ค ์์น ์ ๋ณด(์ ๋์ฌ๋ก)๋ฅผ ๋ด๋ณด๋ ๋๋ค.
ํ ์ค์ ๋ด๊ธฐ์๋ ๋๋ฌด ๊ธด ๋ฉ์์ง๋ฅผ ๊นจ๋ ๊ณผ์ ์์.
-fno-์ง๋จ-์ผ-์ต์
๊ธฐ๋ณธ์ ์ผ๋ก ๋ด๋ณด๋ธ ๊ฐ ์ง๋จ์๋ ๋ช ๋ น์ค ์ต์ ์ ๋ํ๋ด๋ ํ ์คํธ๊ฐ ํฌํจ๋ฉ๋๋ค.
์ง๋จ์ ์ง์ ์ ์ดํ๋ โโ(์ด๋ฌํ ์ต์ ์ด ์ง๋จ์ ์๋ ค์ง ๊ฒฝ์ฐ)
๊ธฐ๊ณ). ์ง์ -fno-์ง๋จ-์ผ-์ต์ ๊น๋ฐ์ ๊ทธ๊ฒ์ ์ต์ ํ๋ค
ํ๋.
-fno-diagnostics-show-caret
๊ธฐ๋ณธ์ ์ผ๋ก ๋ด๋ณด๋ธ ๊ฐ ์ง๋จ์๋ ์๋ณธ ์์ค ์ค๊ณผ ์บ๋ฟ '^'์ด ํฌํจ๋ฉ๋๋ค.
์ด์ ๋ํ๋ ๋๋ค. ์ด ์ต์ ์ ์ด ์ ๋ณด๋ฅผ ํ์ํ์ง ์์ต๋๋ค.
์ต์ ์ ์๋ขฐ or ์ต์ ํ๋ค ๊ฒฝ๊ณ
๊ฒฝ๊ณ ๋ ๋ณธ์ง์ ์ผ๋ก ๊ทธ๋ ์ง ์์ ๊ตฌ์ฑ์ ๋ณด๊ณ ํ๋ ์ง๋จ ๋ฉ์์ง์ ๋๋ค.
์ค๋ฅ๊ฐ ์์ง๋ง ์ํํ๊ฑฐ๋ ์ค๋ฅ๊ฐ ์์ ์ ์์์ ์์ํฉ๋๋ค.
๋ค์ ์ธ์ด ๋ ๋ฆฝ์ ์ต์ ์ ํน์ ๊ฒฝ๊ณ ๋ฅผ ํ์ฑํํ์ง ์๊ณ ์ ์ดํฉ๋๋ค.
GCC์์ ์์ฐํ๋ ์ง๋จ์ ์ข ๋ฅ.
-fsyntax ์ ์ฉ
์ฝ๋์์ ๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ํ์ธํ๋ ๊ทธ ์ด์์ ์ํํ์ง ๋ง์ญ์์ค.
-fmax-์ค๋ฅ=n
์ต๋ ์ค๋ฅ ๋ฉ์์ง ์๋ฅผ ๋ค์์ผ๋ก ์ ํํฉ๋๋ค. n, ๊ทธ ์์ ์์ GCC๋ ์คํ๋ ค ๊ตฌ์ ๊ธ์ต
์์ค ์ฝ๋๋ฅผ ๊ณ์ ์ฒ๋ฆฌํ๋ ค๊ณ ์๋ํ๋ ๊ฒ๋ณด๋ค ๋ง์ฝ์ n 0(๊ธฐ๋ณธ๊ฐ)์ ๋๋ค.
์์ฑ๋๋ ์ค๋ฅ ๋ฉ์์ง ์์๋ ์ ํ์ด ์์ต๋๋ค. ๋ง์ฝ์ -Wfatal-์ค๋ฅ ๋ํ
์ง์ ๋ ๋ค์ -Wfatal-์ค๋ฅ ์ด ์ต์ ๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
-w ๋ชจ๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๊ธ์งํฉ๋๋ค.
-์๋ฌ
๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ์ค๋ฅ๋ก ๋ง๋ญ๋๋ค.
-์ค๋ฅ=
์ง์ ๋ ๊ฒฝ๊ณ ๋ฅผ ์ค๋ฅ๋ก ๋ง๋ญ๋๋ค. ๊ฒฝ๊ณ ์ ๋ํ ์ง์ ์๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด -Werror=์ค์์น ์ ์ํด ์ ์ด๋๋ ๊ฒฝ๊ณ ๋ฅผ ์ผญ๋๋ค. -W์ค์์น ์ค๋ฅ๋ก.
์ด ์ค์์น๋ ๋ถ์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ถ์ ํํ๋ฅผ ์ทจํฉ๋๋ค. -์๋ฌ ํน์ ๊ฒฝ๊ณ ์ ๊ฒฝ์ฐ
์๋ฅผ ๋ค๋ฉด -Wno-์ค๋ฅ=์ค์์น ๋ธ๋๋ -W์ค์์น ๊ฒฝ๊ณ ๋ ์ค๋ฅ๊ฐ ์๋๋๋ค. -์๋ฌ
์ ํจํฉ๋๋ค.
์ ์ด ๊ฐ๋ฅํ ๊ฐ ๊ฒฝ๊ณ ์ ๋ํ ๊ฒฝ๊ณ ๋ฉ์์ง์๋ ๋ค์์ ์ ์ดํ๋ โโ์ต์ ์ด ํฌํจ๋ฉ๋๋ค.
๊ฒฝ๊ณ . ๊ทธ๋ฐ ๋ค์ ํด๋น ์ต์ ์ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. -์ค๋ฅ= and - ์ค๋ฅ ์์= ์ค๋ช ํ๋๋ก
์์. (๊ฒฝ๊ณ ๋ฉ์์ง์ ์ต์ ์ธ์๋ ๋ค์์ ์ฌ์ฉํ์ฌ ๋นํ์ฑํํ ์ ์์ต๋๋ค.
-fno-์ง๋จ-์ผ-์ต์ ๊น๋ฐ.)
์ง์ -์ค๋ฅ=ํธ ์๋์ผ๋ก ์์ -Wํธ. ๊ทธ๋ฌ๋, - ์ค๋ฅ ์์=ํธ
์๋ฌด๊ฒ๋ ์๋ฏธํ์ง ์์ต๋๋ค.
-Wfatal-์ค๋ฅ
์ด ์ต์ ์ ์ปดํ์ผ๋ฌ๊ฐ ์ฒซ ๋ฒ์งธ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ ์ปดํ์ผ์ ์ค๋จํ๋๋ก ํฉ๋๋ค.
๊ณ์ํด์ ์ถ๊ฐ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ธ์ํ๋ ๋์ .
๋ค์์ผ๋ก ์์ํ๋ ์ต์ ์ ์ฌ์ฉํ์ฌ ๋ง์ ํน์ ๊ฒฝ๊ณ ๋ฅผ ์์ฒญํ ์ ์์ต๋๋ค. -W์๋ฅผ ๋ค์ด,
- ์๋ฌต์ ์์์ ์ ์ธ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ์์ฒญํฉ๋๋ค. ์ด๋ฌํ ๊ฐ ๊ฒฝ๊ณ ๋
์ต์ ์ ๋ํ ์์ ํํ๋ก ์์ํฉ๋๋ค. -์๋- ๊ฒฝ๊ณ ๋ฅผ ๋๋ ค๋ฉด; ์๋ฅผ ๋ค์ด,
-Wno-์์์ . ์ด ๋งค๋ด์ผ์ ๋ ๊ฐ์ง ์์ ์ค ๊ธฐ๋ณธ๊ฐ์ด ์๋ ๊ฒ ์ค ํ๋๋ง ๋์ดํฉ๋๋ค.
์ถ๊ฐ ์ธ์ด๋ณ ์ต์ ์ ๋ค์์ ์ฐธ์กฐํ์ญ์์ค. C + + ๋ฐฉ์ธ ์ต์ and ์ค๋ธ์ ํฐ๋ธ-C
and ๋ชฉํ-C++ ๋ฐฉ์ธ ์ต์ .
์ธ์ํ ์ ์๋ ๊ฒฝ๊ณ ์ต์ ์ด ์์ฒญ๋๋ ๊ฒฝ์ฐ(์: -์ ์ ์๋ ๊ฒฝ๊ณ ), GCC๋
์ต์ ์ด ์ธ์๋์ง ์๋๋ค๋ ์ง๋จ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ฝ -์๋- ํํ๊ฐ ์ฌ์ฉ๋๋ฉฐ,
๋์์ด ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค. ์ ๋ํ ์ง๋จ์ด ์์ฑ๋์ง ์์ต๋๋ค. -์ ์ ์๋ ๊ฒฝ๊ณ
๋ค๋ฅธ ์ง๋จ์ด ์์ฑ๋์ง ์๋ ํ. ์ด๋ฅผ ํตํด ์๋ก์ด -์๋- ์ต์
์ค๋๋ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ง๋ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ปดํ์ผ๋ฌ์์ ์ธ์ํ ์ ์๋
์ต์ ์ด ์์ต๋๋ค.
-Wpedantic
-ํ๋จ ํฑ
์๊ฒฉํ ISO C ๋ฐ ISO C++์์ ์๊ตฌํ๋ ๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํฉ๋๋ค. ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ๊ฑฐ๋ถ
๊ธ์ง๋ ํ์ฅ ๋ฐ ISO C ๋ฐ ISO๋ฅผ ๋ฐ๋ฅด์ง ์๋ ๊ธฐํ ํ๋ก๊ทธ๋จ ์ฌ์ฉ
C++. ISO C์ ๊ฒฝ์ฐ, ๋ชจ๋ ๊ท์ ์์ ์ง์ ํ ISO C ํ์ค ๋ฒ์ ์ ๋ฐ๋ฆ ๋๋ค. -ํ์ค
์ฌ์ฉ๋ ์ต์ ์ ๋๋ค.
์ ํจํ ISO C ๋ฐ ISO C++ ํ๋ก๊ทธ๋จ์ ์ด ์ต์ ์ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ์ง ์๊ณ ์ ๋๋ก ์ปดํ์ผํด์ผ ํฉ๋๋ค.
(๋๋ฌผ๊ฒ ์๊ตฌ๋์ง๋ง -์์ ๋๋ -ํ์ค ํ์ํ ๋ฒ์ ์ ์ง์ ํ๋ ์ต์
ISO C). ๊ทธ๋ฌ๋ ์ด ์ต์ ์ด ์์ผ๋ฉด ํน์ GNU ํ์ฅ ๋ฐ ๊ธฐ์กด C ๋ฐ
C++ ๊ธฐ๋ฅ๋ ์ง์๋ฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๊ฑฐ๋ถ๋ฉ๋๋ค.
-Wpedantic ๋์ฒด ํค์๋ ์ฌ์ฉ์ ๋ํ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ํ์ํ์ง ์์ต๋๋ค.
๋ก ์์ํ๊ณ ๋๋๋ ์ด๋ฆ __. ์์์ Pedantic ๊ฒฝ๊ณ ๋ ๋นํ์ฑํ๋ฉ๋๋ค.
"__extension__" ๋ค์์ ๋์ต๋๋ค. ๊ทธ๋ฌ๋ ์์คํ ํค๋ ํ์ผ๋ง ์ด ํ์ผ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํ์ถ ๊ฒฝ๋ก; ์์ฉ ํ๋ก๊ทธ๋จ์ ์ด๋ฅผ ํผํด์ผ ํฉ๋๋ค.
์ผ๋ถ ์ฌ์ฉ์๋ ์ฌ์ฉํ๋ ค๊ณ -Wpedantic ์๊ฒฉํ ISO C ์ค์๋ฅผ ์ํด ํ๋ก๊ทธ๋จ์ ํ์ธํฉ๋๋ค. ๊ทธ๋ค
๊ณง ๊ทธ๋ค์ด ์ํ๋ ๋๋ก ํ์ง ์๋๋ค๋ ๊ฒ์ ์๊ฒ ๋ฉ๋๋ค. ์ผ๋ถ ๋น ISO ๊ดํ์ ์ฐพ์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ชจ๋๋ ์๋๋๋ค. ISO C ํ์ ์ง๋จ ๋ฐ ๊ธฐํ
์ด๋ค ์ง๋จ์ด ์ถ๊ฐ๋์์ต๋๋ค.
ISO C ์ค์ ์คํจ๋ฅผ ๋ณด๊ณ ํ๋ ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์๋นํ ์ถ๊ฐ ์์ ์ด ํ์ํ๋ฉฐ
-Wpedantic. ๊ฐ๊น์ด ์์ผ ๋ด์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ง์ํ ๊ณํ์ด ์์ต๋๋ค.
๋ก ์ง์ ๋ ํ์ค -ํ์ค ๋ค์๊ณผ ๊ฐ์ C์ GNU ํ์ฅ ๋ฐฉ์ธ์ ๋ํ๋ ๋๋ค.
gnu90 or gnu99, ํด๋นํ๋ ๊ธฐ์ง ํ์ง , ISO C ๋ฒ์
GNU ํ์ฅ ๋ฐฉ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๊ฒฝ๊ณ -Wpedantic ๊ทธ๋ค์ด ์๋ ๊ณณ์ ์ฃผ์ด์ง๋ค
๊ธฐ๋ณธ ํ์ค์ ์ํด ์๊ตฌ๋ฉ๋๋ค. (๊ทธ๋ฐ ๊ฒฝ๊ณ ๋ฅผ ํ๋ ๊ฒ์ ๋ง์ด ์ ๋๋ค.
์ ์์ ์ํด GNU์ด๊ธฐ ๋๋ฌธ์ ์ง์ ๋ GNU C ๋ฐฉ์ธ์ ์๋ ๊ธฐ๋ฅ์ ๋ํด์๋ง
C์ ๋ฐฉ์ธ์๋ ์ปดํ์ผ๋ฌ๊ฐ ์ฃผ์ด์ง ์ต์ ์ผ๋ก ์ง์ํ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด ํฌํจ๋ฉ๋๋ค.
๊ฒฝ๊ณ ํ ์ฌํญ์ด ์์ต๋๋ค.)
- ํํ์ ์ค๋ฅ
์ฒ๋ผ -Wpedantic, ๊ฒฝ๊ณ ๊ฐ ์๋ ์ค๋ฅ๊ฐ ์์ฑ๋๋ค๋ ์ ์ ์ ์ธํ๊ณ .
-๋ฒฝ
์ด๊ฒ์ ์ผ๋ถ ์ฌ์ฉ์๊ฐ ๊ณ ๋ คํ๋ ๊ตฌ์ฑ์ ๋ํ ๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ฑํํฉ๋๋ค.
์์ฌ์ค๋ฌ์ด ๊ฒฝ์ฐ์๋ ํผํ๊ธฐ(๋๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์์ )ํ๊ธฐ ์ฝ์ต๋๋ค.
๋งคํฌ๋ก์ ๊ฒฐํฉ. ์ด๊ฒ์ ๋ํ ์ค๋ช ๋ ์ผ๋ถ ์ธ์ด๋ณ ๊ฒฝ๊ณ ๋ฅผ ํ์ฑํํฉ๋๋ค.
in C + + ๋ฐฉ์ธ ์ต์ and ์ค๋ธ์ ํฐ๋ธ-C and ๋ชฉํ-C++ ๋ฐฉ์ธ ์ต์ .
-๋ฒฝ ๋ค์ ๊ฒฝ๊ณ ํ๋๊ทธ๋ฅผ ์ผญ๋๋ค.
-์๋๋ ์ค -์๋ ์ด ๊ฒฝ๊ณ (๋ง -O2) -Wc++11-ํธํ -Wchar-์ฒจ์
-Wenum-๋น๊ต (C/ObjC์์, C++์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์) - ์๋ฌต์ ์ ์ (C์
์ค๋ธ์ ํฐ๋ธ-C ์ ์ฉ) -์์์ ํจ์ ์ ์ธ (C ๋ฐ Objective-C๋ง ํด๋น) -๋๊ธ
-Wํฌ๋งท -W๋ฉ์ธ (C/ObjC์๋ง ํด๋นํ๋ฉฐ -ํ๋ฆฌ์คํ ๋ฉ) -W์๋ง๋ ์ด๊ธฐํ๋์ง ์์
-Wmissing-์ค๊ดํธ (C/ObjC๋ง ํด๋น) -Wnonnull -๊ดํธ -Wpointer ๊ธฐํธ - Wreorder
-Wreturnํ -W์ํ์ค ํฌ์ธํธ -Wsign-๋น๊ต (C++์์๋ง) -Wstrict-์จ๋ฆฌ์ด์ฑ
-Wstrict-overflow=1 -W์ค์์น -์ ์ -์ด๊ธฐํ๋์ง ์์ -Wunknown-pragma
- ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ฅ -์ฌ์ฉํ์ง ์์ ๋ผ๋ฒจ - ๋ฏธ์ฌ์ฉ ๊ฐ์น - ์ฌ์ฉํ์ง ์์ ๋ณ์
-Wํ๋ฐ์ฑ ๋ ์ง์คํฐ ๋ณ์
์ผ๋ถ ๊ฒฝ๊ณ ํ๋๊ทธ๋ -๋ฒฝ. ๊ทธ๋ค ์ค ์ผ๋ถ๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์์ฌ์ค๋ฝ๋ค๊ณ ์๊ฐํ์ง ์๋ ๊ตฌ์ฑ
๋๋๋ก ํ์ธํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ ๊ฑด์ค์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
๊ฒฝ์ฐ์ ๋ฐ๋ผ ํ์ํ๊ฑฐ๋ ํผํ๊ธฐ ์ด๋ ต๊ณ ์์ ํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์๋ ์ฝ๋์ ๋๋ค. ๊ทธ๋ค ์ค ์ผ๋ถ๋ -์ฉ์คํธ๋ผ ๊ทธ๋ฌ๋ ๊ทธ๋ค ์ค ๋ง์
๊ฐ๋ณ์ ์ผ๋ก ํ์ฑํํด์ผ ํฉ๋๋ค.
-์ฉ์คํธ๋ผ
์ด๋ ๊ฒ ํ๋ฉด ํ์ฑํ๋์ง ์์ ๋ช ๊ฐ์ง ์ถ๊ฐ ๊ฒฝ๊ณ ํ๋๊ทธ๊ฐ ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ. (์ด ์ต์ ์
๋ถ๋ฆ -W. ์ด์ ์ด๋ฆ์ ๊ณ์ ์ง์๋์ง๋ง ์ ์ด๋ฆ์ ๋ ๋ง์ต๋๋ค.
์ค๋ช ์ ์ธ.)
-ํด๋ก๋ฒ๋ - ๋ฉํ ๋ชธ -๋ฌด์ ์์ -Wmissing-field-initializers
-Wmissing-๋งค๊ฐ๋ณ์ ์ ํ (C๋ง) -Wold ์คํ์ผ ์ ์ธ (C๋ง) -Woverride ์ด๊ธฐํ
-Wsign-๋น๊ต -W ์ ํ ์ ํ -์ด๊ธฐํ๋์ง ์์ -Wunused-๋งค๊ฐ๋ณ์ (๋ง - ์ฌ์ฉํ์ง ์์ or
-๋ฒฝ) -์ฌ์ฉํ์ง ์์์ง๋ง ์ค์ ๋งค๊ฐ๋ณ์ (๋ง - ์ฌ์ฉํ์ง ์์ or -๋ฒฝ)
์ต์ -์ฉ์คํธ๋ผ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ธ์ํฉ๋๋ค.
ยท ํฌ์ธํฐ๋ ์ ์ XNUMX๊ณผ ๋น๊ต๋ฉ๋๋ค. <, <=, >๋ฐ >=.
ยท (C++๋ง ํด๋น) ์ด๊ฑฐ์์ ๋น ์ด๊ฑฐ์๋ ๋ชจ๋ ์กฐ๊ฑด๋ถ๋ก ๋ํ๋ฉ๋๋ค.
ํํ.
ยท (C++ ์ ์ฉ) ๋ชจํธํ ๊ฐ์ ๊ธฐ๋ฐ.
ยท (C++ ์ ์ฉ) ์ ์ธ๋ ๋ฐฐ์ด์ ์ฒจ์ํ ํ์๊ฐ์ .
ยท (C++๋ง ํด๋น) ์ ์ธ๋ ๋ณ์์ ์ฃผ์ ๊ฐ์ ธ์ค๊ธฐ ํ์๊ฐ์ .
ยท (C++๋ง ํด๋น) ๊ธฐ๋ณธ ํด๋์ค๋ ํ์ ํด๋์ค์ ๋ณต์ฌ ์์ฑ์์์ ์ด๊ธฐํ๋์ง ์์ต๋๋ค.
-Wchar-์ฒจ์
๋ฐฐ์ด ์ฒจ์๊ฐ "char" ์ ํ์ด๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด๊ฒ์ ์ค๋ฅ์ ์ผ๋ฐ์ ์ธ ์์ธ์ ๋๋ค.
ํ๋ก๊ทธ๋๋จธ๋ ์ข ์ข ์ด ์ ํ์ด ์ผ๋ถ ์์คํ ์์ ์๋ช ๋๋ค๋ ์ฌ์ค์ ์์ต๋๋ค. ์ด ๊ฒฝ๊ณ ๋
ํ์ฑํ ๋ -๋ฒฝ.
-๋๊ธ
์ฃผ์ ์์ ์ํ์ค ๋๋ง๋ค ๊ฒฝ๊ณ /* ์ ๋ํ๋ฉ๋๋ค /* ๋๊ธ ๋๋ ์ธ์ ๋ ์ง
๋ฐฑ์ฌ๋์-๊ฐํ ๋ฌธ์๊ฐ // ๋ ผํ. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
- Wno-coverage-mismatch
์ฌ์ฉ ์ ํผ๋๋ฐฑ ํ๋กํ์ด ์ผ์นํ์ง ์์ผ๋ฉด ๊ฒฝ๊ณ -fprofile-์ฌ์ฉ ์ต์ . ๋ง์ฝ
์์ค ํ์ผ์ ์ปดํ์ผ ์ฌ์ด์ ๋ณ๊ฒฝ๋ฉ๋๋ค. -fprofile-gen ์ ํจ๊ป -fprofile-์ฌ์ฉ,
ํ๋กํ ํผ๋๋ฐฑ์ด ์๋ ํ์ผ์ ์์ค ํ์ผ๊ณผ ์ผ์นํ์ง ์์ ์ ์์ผ๋ฉฐ GCC๋
ํ๋กํ ํผ๋๋ฐฑ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ญ์์ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๊ฒฝ๊ณ ๋ ํ์ฑํ๋์ด ์์ผ๋ฉฐ
์ค๋ฅ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. - Wno-coverage-mismatch ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํ๊ฑฐ๋
-Wno-error=๋ฒ์ ๋ถ์ผ์น ์ค๋ฅ๋ฅผ ๋นํ์ฑํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ค๋ฅ ๋นํ์ฑํ
์ด ๊ฒฝ๊ณ ์ ๊ฒฝ์ฐ ์ฝ๋๊ฐ ์ ๋๋ก ์ต์ ํ๋์ง ์์ ์ ์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ ์ฉํฉ๋๋ค.
๊ธฐ์กด ์ฝ๋ ๊ธฐ๋ฐ์ ๋ํ ๋ฒ๊ทธ ์์ ๊ณผ ๊ฐ์ ์์ฃผ ์ฌ์ํ ๋ณ๊ฒฝ. ์์ ํ ๋นํ์ฑํ
๊ฒฝ๊ณ ๋ ๊ถ์ฅ๋์ง ์์ต๋๋ค.
-Wno-cpp
(C, Objective-C, C++, Objective-C++ ๋ฐ Fortran๋ง ํด๋น)
"#warning" ์ง์๋ฌธ์์ ๋ฐ์ํ๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ต์ ํฉ๋๋ค.
-W๋๋ธ ํ๋ก๋ชจ์ (C, C++, Objective-C ๋ฐ Objective-C++๋ง ํด๋น)
"float" ์ ํ์ ๊ฐ์ด ์์์ ์ผ๋ก "double"๋ก ์น๊ฒฉ๋๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค. CPU
32๋นํธ "๋จ์ ๋ฐ๋" ๋ถ๋ ์์์ ๋จ์๋ก ํ๋์จ์ด์์ "๋ถ๋" ๊ตฌํ,
๊ทธ๋ฌ๋ ์ํํธ์จ์ด์์ "์ด์ค"์ ์๋ฎฌ๋ ์ดํธํ์ญ์์ค. ๊ทธ๋ฌํ ๊ธฐ๊ณ์์ ๋ค์์ ์ฌ์ฉํ์ฌ ๊ณ์ฐ์ ์ํํฉ๋๋ค.
"์ด์ค" ๊ฐ์ ์ํํธ์จ์ด์ ํ์ํ ์ค๋ฒํค๋ ๋๋ฌธ์ ํจ์ฌ ๋ ๋น์๋๋ค.
์๋ฎฌ๋ ์ด์ .
๋ถ๋ ์์์ ๋๋ฌธ์ ์ค์๋ก "double"์ ์ฌ์ฉํ์ฌ ๊ณ์ฐ์ ์ํํ๊ธฐ ์ฝ์ต๋๋ค.
๋ฆฌํฐ๋ด์ ์์์ ์ผ๋ก "double" ์ ํ์ ๋๋ค. ์๋ฅผ ๋ค์ด:
ํ๋กํธ ๋ฉด์ (ํ๋กํธ ๋ฐ๊ฒฝ)
{
๋ฐํ 3.14159 * ๋ฐ์ง๋ฆ * ๋ฐ์ง๋ฆ;
}
์ปดํ์ผ๋ฌ๋ ๋ถ๋ ์์์ ๋๋ฌธ์ "double"๋ก ์ ์ฒด ๊ณ์ฐ์ ์ํํฉ๋๋ค.
๋ฆฌํฐ๋ด์ "๋๋ธ"์ ๋๋ค.
-Wํฌ๋งท
-Wํ์=n
"printf" ๋ฐ "scanf" ๋ฑ์ ๋ํ ํธ์ถ์ ํ์ธํ์ฌ ์ ๊ณต๋ ์ธ์๊ฐ
์ง์ ๋ ํ์ ๋ฌธ์์ด์ ์ ํฉํ ์ ํ์ด ์๊ณ ๋ณํ์ด
ํ์ ๋ฌธ์์ด์ ์ง์ ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ํ์ค ๊ธฐ๋ฅ์ด ํฌํจ๋๋ฉฐ,
"printf", "scanf", "strftime" ๋ฐ
"strfmon"(C ํ์ค์ด ์๋ X/Open ํ์ฅ) ์ ํ๊ตฐ(๋๋ ๊ธฐํ ๋์-
ํน์ ๊ฐ์กฑ). ํ์ ์์ฑ ์์ด ๊ฒ์ฌ๋๋ ๊ธฐ๋ฅ
์ง์ ๋ ํ์ค ๋ฒ์ ๋ฐ ์ด๋ฌํ ๊ธฐ๋ฅ ๊ฒ์ฌ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์์ฑ์ ์ง์ ํ์ง ์์ผ๋ฉด ๋ค์์ผ๋ก ๋นํ์ฑํ๋ฉ๋๋ค. -ํ๋ฆฌ์คํ ๋ฉ or -fno ๋ด์ฅ.
ํ์์ GNU libc ๋ฒ์ 2.2์์ ์ง์ํ๋ ํ์ ๊ธฐ๋ฅ๊ณผ ๋น๊ตํ์ฌ ํ์ธ๋ฉ๋๋ค.
์ฌ๊ธฐ์๋ ๋ชจ๋ ISO C90 ๋ฐ C99 ๊ธฐ๋ฅ๊ณผ Single Unix์ ๊ธฐ๋ฅ์ด ํฌํจ๋ฉ๋๋ค.
์ฌ์ ๋ฐ ์ผ๋ถ BSD ๋ฐ GNU ํ์ฅ. ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌํ์
์ด ๋ชจ๋ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. GCC๋ ๊ทธ ์ด์์ ๊ธฐ๋ฅ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๊ณ. ๊ทธ๋ฌ๋ ๋ง์ฝ -Wpedantic ์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค -Wํฌ๋งท,
์ ํํ ํ์ค ๋ฒ์ ์ ์๋ ํ์ ๊ธฐ๋ฅ์ ๋ํ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค(๊ทธ๋ฌ๋
"strfmon" ํ์์ ๊ฒฝ์ฐ C ํ์ค์ ์ด๋ค ๋ฒ์ ์๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
-Wํ์=1
-Wํฌ๋งท
์ ํ๊ถ -Wํฌ๋งท ์ ํด๋นํ๋ -Wํ์=1๋ฐ -Wno ํ์ ์ ํด๋นํ๋
-Wํ์=0. ์ดํ -Wํฌ๋งท ๋ํ ์ฌ๋ฌ ํญ๋ชฉ์ ๋ํด null ํ์ ์ธ์๋ฅผ ํ์ธํฉ๋๋ค.
๊ธฐ๋ฅ, -Wํฌ๋งท ๋ํ ์๋ฏธ -Wnonnull. ์ด ์์ค์ ํ์์ ์ผ๋ถ ์ธก๋ฉด
๋ค์ ์ต์ ์ผ๋ก ๊ฒ์ฌ๋ฅผ ๋นํ์ฑํํ ์ ์์ต๋๋ค. -Wno-ํฌ๋งท-ํฌํจ-nul,
-Wno-format-extra-args๋ฐ -Wno ํ์ XNUMX ๊ธธ์ด. -Wํฌ๋งท ์ ์ํด ํ์ฑํ๋ฉ๋๋ค.
-๋ฒฝ.
-Wno-ํฌ๋งท-ํฌํจ-nul
If -Wํฌ๋งท ์ง์ ๋ ๊ฒฝ์ฐ NUL ๋ฐ์ดํธ๋ฅผ ํฌํจํ๋ ํ์ ๋ฌธ์์ด์ ๋ํด ๊ฒฝ๊ณ ํ์ง ๋ง์ญ์์ค.
-Wno-format-extra-args
If -Wํฌ๋งท "printf"์ ๋ํ ์ด๊ณผ ์ธ์์ ๋ํด ๊ฒฝ๊ณ ํ์ง ์๊ฑฐ๋
"scanf" ํ์ ๊ธฐ๋ฅ. C ํ์ค์ ๊ทธ๋ฌํ ์ธ์๊ฐ
๋ฌด์๋์์ต๋๋ค.
์ฌ์ฉ๋์ง ์์ ์ธ์๊ฐ ๋ค์์ผ๋ก ์ง์ ๋ ์ฌ์ฉ๋ ์ธ์ ์ฌ์ด์ ์๋ ๊ฒฝ์ฐ $
ํผ์ฐ์ฐ์ ๋ฒํธ ์ฌ์, ์ผ๋ฐ์ ์ผ๋ก ๊ฒฝ๊ณ ๋ ์ฌ์ ํ ์ ๊ณต๋ฉ๋๋ค.
๊ตฌํ์์ ์ฌ์ฉํ์ง ์๋ ํญ๋ชฉ์ ๊ฑด๋๋ฐ๊ธฐ ์ํด "va_arg"์ ์ ๋ฌํ ์ ํ์ ์ ์ ์์ต๋๋ค.
์ธ์. ๊ทธ๋ฌ๋ "scanf" ํ์์ ๊ฒฝ์ฐ ์ด ์ต์ ์
Single Unix ์ดํ๋ก ์ฌ์ฉํ์ง ์์ ์ธ์๊ฐ ๋ชจ๋ ํฌ์ธํฐ์ธ ๊ฒฝ์ฐ ๊ฒฝ๊ณ
์ฌ์์๋ ์ด๋ฌํ ์ฌ์ฉ๋์ง ์๋ ์ธ์๊ฐ ํ์ฉ๋๋ค๊ณ ๋์ ์์ต๋๋ค.
-Wno ํ์ XNUMX ๊ธธ์ด
If -Wํฌ๋งท ์ง์ ๋ ๊ฒฝ์ฐ ๊ธธ์ด๊ฐ XNUMX์ธ ํ์์ ๋ํด ๊ฒฝ๊ณ ํ์ง ์์ต๋๋ค. C ํ์ค
๊ธธ์ด๊ฐ XNUMX์ธ ํ์์ด ํ์ฉ๋๋๋ก ์ง์ ํฉ๋๋ค.
-Wํ์=2
์ฌ์ฉ -Wํฌ๋งท ์ถ๊ฐ ํ์ ๊ฒ์ฌ. ํ์ฌ ๋๋ฑ -Wํฌ๋งท
-Wformat-๋น๋ฆฌํฐ๋ด -Wformat ๋ณด์ -Wformat-y2k.
-Wformat-๋น๋ฆฌํฐ๋ด
If -Wํฌ๋งท ํ์ ๋ฌธ์์ด์ด ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ด ์๋ ๊ฒฝ์ฐ์๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
๋ฐ๋ผ์ ํ์ ํจ์๊ฐ ํ์ ์ธ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ทจํ์ง ์๋ ํ ํ์ธํ ์ ์์ต๋๋ค.
"va_list".
-Wformat ๋ณด์
If -Wํฌ๋งท ๊ฐ ์ง์ ๋๊ณ ๋ค์์ ๋ํ๋ด๋ ํ์ ํจ์์ ์ฌ์ฉ์ ๋ํด์๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
๊ฐ๋ฅํ ๋ณด์ ๋ฌธ์ . ํ์ฌ ์ด๊ฒ์ "printf" ํธ์ถ์ ๋ํด ๊ฒฝ๊ณ ํ๊ณ
ํ์ ๋ฌธ์์ด์ด ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ด ์๋๊ณ ํ์ ๋ฌธ์์ด์ด ์๋ "scanf" ํจ์
"printf (foo);"์์์ ๊ฐ์ด ํ์ ์ธ์. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ณด์ ๊ตฌ๋ฉ์ด ๋ ์ ์์ต๋๋ค.
ํ์ ๋ฌธ์์ด์ ์ ๋ขฐํ ์ ์๋ ์ ๋ ฅ์์ ์์ผ๋ฉฐ ๋ค์์ ํฌํจํฉ๋๋ค. %n. (์ด๊ฒ์ ํ์ฌ
๋ฌด์์ ํ์ ์งํฉ -Wformat-๋น๋ฆฌํฐ๋ด ์ ๋ํด ๊ฒฝ๊ณ ํ์ง๋ง ํฅํ ๊ฒฝ๊ณ ๋
์ถ๊ฐ -Wformat ๋ณด์ ์ ํฌํจ๋์ง ์์ -Wformat-๋น๋ฆฌํฐ๋ด.)
์ฐธ๊ณ : Ubuntu 8.10 ์ด์ ๋ฒ์ ์์๋ ์ด ์ต์ ์ด ๊ธฐ๋ณธ์ ์ผ๋ก C์ ๋ํด ํ์ฑํ๋์ด ์์ต๋๋ค.
C++, ObjC, ObjC++. ๋นํ์ฑํํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค. - Wno ํ์ ๋ณด์, ๋๋ ๋ชจ๋ ํ์ ๋นํ์ฑํ
๊ฒฝ๊ณ -Wํ์=0. ํ์ ๋ณด์ ๊ฒฝ๊ณ ๋ฅผ ์น๋ช ์ ์ผ๋ก ๋ง๋ค๋ ค๋ฉด ๋ค์์ ์ง์ ํ์ญ์์ค.
-Werror=ํ์ ๋ณด์.
-Wformat-y2k
If -Wํฌ๋งท ๊ฐ ์ง์ ๋๊ณ "strftime" ํ์์ ๋ํด์๋ง ๊ฒฝ๊ณ ํฉ๋๋ค.
๋ ์๋ฆฌ ์ฐ๋.
-Wnonnull
null์ด ์๋ ๊ฐ์ด ํ์ํ ๊ฒ์ผ๋ก ํ์๋ ์ธ์์ ๋ํด null ํฌ์ธํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
"nonnull" ํจ์ ์์ฑ์ ์ํด.
-Wnonnull ์ ํฌํจ -๋ฒฝ and -Wํฌ๋งท. ๋ก ๋นํ์ฑํํ ์ ์์ต๋๋ค. -Wno-null
์ต์ ์ ์ ํํฉ๋๋ค.
-์ํธ์ ํ (C, C++, Objective-C ๋ฐ Objective-C++๋ง ํด๋น)
์ค์ค๋ก ์ด๊ธฐํ๋๋ ์ด๊ธฐํ๋์ง ์์ ๋ณ์์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ฐธ๊ณ ํ์ธ์
์ต์ ์ ๋ค์๊ณผ ํจ๊ป๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. -์ด๊ธฐํ๋์ง ์์ ์ต์ ์ ์ ํํฉ๋๋ค.
์๋ฅผ ๋ค์ด GCC๋ ๋ค์ ์ค๋ํซ์์๋ง "i"๊ฐ ์ด๊ธฐํ๋์ง ์์ ๊ฒ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ธ์ -์ํธ์ ํ ์ง์ ๋์์ต๋๋ค:
์ ์ f()
{
์ ์ ๋๋ = ๋๋;
๋ฐํ i;
}
์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ C ++์์.
- ์๋ฌต์ ์ ์ (C ๋ฐ Objective-C๋ง ํด๋น)
์ ์ธ์์ ์ ํ์ ์ง์ ํ์ง ์์ผ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
-์์์ ํจ์ ์ ์ธ (C ๋ฐ Objective-C๋ง ํด๋น)
ํจ์๋ฅผ ์ ์ธํ๊ธฐ ์ ์ ์ฌ์ฉํ ๋๋ง๋ค ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํฉ๋๋ค. C99 ๋ชจ๋์์
(-ํ์ค=c99 or -std=gnu99), ์ด ๊ฒฝ๊ณ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ผ๋ฉฐ
์ค๋ฅ - ํํ์ ์ค๋ฅ. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด์๋ ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
- ์๋ฌต์ (C ๋ฐ Objective-C๋ง ํด๋น)
๊ณผ ๋์ผ - ์๋ฌต์ ์ ์ and -์์์ ํจ์ ์ ์ธ. ์ด ๊ฒฝ๊ณ ๊ฐ ํ์ฑํ๋์์ต๋๋ค.
by -๋ฒฝ.
-๋ฌด์ ์์ (C ๋ฐ C++๋ง ํด๋น)
ํจ์์ ๋ฐํ ์ ํ์ "const"์ ๊ฐ์ ์ ํ ํ์ ์๊ฐ ์์ผ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. ISO C์ ๊ฒฝ์ฐ
์ด๋ฌํ ์ ํ ํ์ ์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ํจ์์์ ๋ฐํ๋ ๊ฐ์ด
๊ฐ C++์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ ์ค์นผ๋ผ ์ ํ ๋๋ "void"์ ๋ํด์๋ง ๋ฐ์ํฉ๋๋ค. ISO C
ํจ์ ์ ์์์ ์ ๊ทํ๋ "void" ๋ฐํ ์ ํ์ ๊ธ์งํ๋ฏ๋ก ๊ทธ๋ฌํ ๋ฐํ ์ ํ
์ด ์ต์ ์ด ์์ด๋ ํญ์ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ต๋๋ค.
์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด์๋ ํ์ฑํ๋ฉ๋๋ค. -์ฉ์คํธ๋ผ.
-W๋ฉ์ธ
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ณธ๊ด ์์ฌ์ค๋ฝ๋ค. ๋ณธ๊ด ์ธ๋ถ ํจ์๊ฐ ์์ด์ผ ํฉ๋๋ค.
์ฐ๊ฒฐ, int ๋ฐํ, XNUMX๊ฐ์ ์ธ์, XNUMX๊ฐ ๋๋ XNUMX๊ฐ์ ์ธ์ ์ฌ์ฉ
์ ์ ํ ์ ํ. ์ด ๊ฒฝ๊ณ ๋ C++์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ผ๋ฉฐ ๋ค์ ์ค ํ๋์ ์ํด ํ์ฑํ๋ฉ๋๋ค.
-๋ฒฝ or -Wpedantic.
-Wmissing-์ค๊ดํธ
์ง๊ณ ๋๋ ๊ณต์ฉ์ฒด ์ด๋์ ๋ผ์ด์ ๊ฐ ์์ ํ ๋๊ดํธ๋ก ๋ฌถ์ด์ง ์์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค. ๋ค์์์
์๋ฅผ ๋ค์ด ์ด๋์ ๋ผ์ด์ ๋ a ์์ ํ ๋๊ดํธ๋ก ๋ฌถ์ด์ง ์์์ง๋ง b ์์ ํ
๊ดํธ๋ก ๋ฌถ์ธ ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ C.
์ ์ a[2][2] = { 0, 1, 2, 3 };
์ ์ b[2][2] = { { 0, 1 }, { 2, 3 } };
์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
- ํฌํจ ๋๋ ํ ๋ฆฌ ๋๋ฝ (C, C++, Objective-C ๋ฐ Objective-C++๋ง ํด๋น)
์ฌ์ฉ์ ์ ๊ณต ํฌํจ ๋๋ ํ ๋ฆฌ๊ฐ ์์ผ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
-๊ดํธ
๊ดํธ๊ฐ ์๋ ๊ฒฝ์ฐ์ ๊ฐ์ด ํน์ ์ปจํ ์คํธ์์ ๊ดํธ๊ฐ ์๋ต๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ง๋ฆฌ๊ฐ์ด ์์๋๋ ์ปจํ ์คํธ ๋๋ ์ฐ์ฐ์๊ฐ ์ค์ฒฉ๋ ๊ฒฝ์ฐ ํ ๋น
์ฌ๋๋ค์ด ์ข ์ข ํผ๋ํ๋ ์ฐ์ ์์.
๋ํ ๋ค์๊ณผ ๊ฐ์ ๋น๊ต๊ฐ ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค. x<=y<=z ๋ํ๋ฉ๋๋ค; ์ด๊ฒ์ ๋๋ฑํ๋ค (x<=y ? 1 : 0)
<= z, ์ด๋ ์ผ๋ฐ์ ์ธ ์ํ ํ๊ธฐ๋ฒ๊ณผ ๋ค๋ฅธ ํด์์ ๋๋ค.
๋ํ "if" ๋ฌธ๊ณผ ํผ๋๋ ์ ์๋ ๊ตฌ์ฑ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
"else" ๋ถ๊ธฐ๊ฐ ์ํฉ๋๋ค. ๋ค์์ ๊ทธ๋ฌํ ๊ฒฝ์ฐ์ ์์ ๋๋ค.
{
๋ง์ฝ)
๋ง์ฝ (ใด)
ํธ();
๊ทธ๋ ์ง ์์ผ๋ฉด
์ ์ง ();
}
C/C++์์ ๋ชจ๋ "else" ๋ถ๊ธฐ๋ ๊ฐ์ฅ ์์ชฝ์ ์๋ "if" ๋ฌธ์ ์ํฉ๋๋ค.
์ด ์์์๋ "if (b)"์ ๋๋ค. ์ด๊ฒ์ ์ข ์ข ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ธฐ๋ํ ๊ฒ์ด ์๋๋๋ค.
์์ ์์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ ํํ ๋ค์ฌ์ฐ๊ธฐ๋ก ์ค๋ช ํ์ต๋๋ค. ์์ ๋
์ด๋ฌํ ํผ๋์ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก GCC๋ ์ด ํ๋๊ทธ๊ฐ ์ง์ ๋ ๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํฉ๋๋ค.
๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด ๊ฐ์ฅ ์์ชฝ์ "if" ๋ฌธ ์ฃผ์์ ๋ช ์์ ์ค๊ดํธ๋ฅผ ์ถ๊ฐํ์ฌ
"else"๊ฐ ๋๋ฌ์ธ๋ "if"์ ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๋ ๊ฒ :
{
๋ง์ฝ)
{
๋ง์ฝ (ใด)
ํธ();
๊ทธ๋ ์ง ์์ผ๋ฉด
์ ์ง ();
}
}
์ค๊ฐ ํผ์ฐ์ฐ์๊ฐ ์๋ต๋ "?:"์ ๋ํ GNU ํ์ฅ์ ์ํํ ์ฌ์ฉ์ ๋ํด์๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
"?": ์ฐ์ฐ์์ ์กฐ๊ฑด์ด ๋ถ์ธ ํํ์์ธ ๊ฒฝ์ฐ ์๋ต๋ ๊ฐ์
ํญ์ 1. ์ข ์ข ํ๋ก๊ทธ๋๋จธ๋ ์กฐ๊ฑด๋ถ ๋ด๋ถ์์ ๊ณ์ฐ๋ ๊ฐ์ ๊ธฐ๋ํฉ๋๋ค.
๋์ ํํ.
์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
-W์ํ์ค ํฌ์ธํธ
์ํ์ค ์๋ฐ์ผ๋ก ์ธํด ์๋ฏธ๊ฐ ์ ์๋์ง ์์ ์ฝ๋์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
C ๋ฐ C++ ํ์ค์ ํฌ์ธํธ ๊ท์น.
C ๋ฐ C++ ํ์ค์ C/C++ ํ๋ก๊ทธ๋จ์์ ํํ์์ ์์๋ฅผ ์ ์ํฉ๋๋ค.
์ ๊ด์ ์์ ํ๊ฐ ์์ ์ ์ฒ ๊ธฐ, ์ฌ์ด์ ๋ถ๋ถ์ ์์๋ฅผ ๋ํ๋ ๋๋ค.
ํ๋ก๊ทธ๋จ ๋ถ๋ถ์ ์คํ: ์ํ์ค ํฌ์ธํธ ์ด์ ์ ์คํ๋ ๋ถ๋ถ,
์ดํ์ ์คํ๋จ. ์ด๊ฒ์ ์์ ํ ํํ์ ํ๊ฐ ํ์ ๋ฐ์ํฉ๋๋ค(ํ๋๋
๋ ํฐ ํํ์์ ์ผ๋ถ๊ฐ ์๋)์ ์ฒซ ๋ฒ์งธ ํผ์ฐ์ฐ์๋ฅผ ํ๊ฐํ ํ
"&&", "||", "? :" ๋๋ ","(์ผํ) ์ฐ์ฐ์, ํจ์๊ฐ ํธ์ถ๋๊ธฐ ์ (๊ทธ๋ฌ๋ ํ์
์ธ์์ ํ๊ฐ ๋ฐ ํธ์ถ๋ ํจ์๋ฅผ ๋ํ๋ด๋ ํํ์),
ํน์ ๋ค๋ฅธ ์ฅ์. ์ํ์ค ํฌ์ธํธ ๊ท์น์ผ๋ก ํํ๋ ๊ฒ ์ด์ธ์ ์์๋
ํํ์์ ํ์ ํํ์ ํ๊ฐ๊ฐ ์ง์ ๋์ง ์์์ต๋๋ค. ์ด ๋ชจ๋ ๊ท์น
์๋ฅผ ๋ค์ด,
ํจ์๋ ์ฌ์ด์ ์ํ์ค ํฌ์ธํธ ์์ด ํ๋์ ํํ์ ๋ด์์ ํธ์ถ๋ฉ๋๋ค.
ํจ์๊ฐ ํธ์ถ๋๋ ์์๋ ์ง์ ๋์ง ์์ต๋๋ค. ๋ค๋ง, ๊ธฐ์ค
์์ํ๋ ํจ์ ํธ์ถ์ด ๊ฒน์น์ง ์๋๋ค๊ณ ๊ฒฐ์ ํ์ต๋๋ค.
์ํ์ค ํฌ์ธํธ ์ฌ์ด์์ ๊ฐ์ด ์์ ๋ ๋ ์ง์ ๋์ง ์์ต๋๋ค.
๊ฐ์ฒด๊ฐ ์ ์ฉ๋ฉ๋๋ค. ์ด๊ฒ์ ์์กดํ๋ ๋์์ ๊ฐ๋ ํ๋ก๊ทธ๋จ์ ์ ์๋์ง ์์ ๋์์ ๊ฐ์ง๋๋ค.
C ๋ฐ C++ ํ์ค์ "์ด์ ์ํ์ค ํฌ์ธํธ์ ๋ค์ ์ํ์ค ํฌ์ธํธ ์ฌ์ด
๊ฐ์ฒด๋ ๋ค์ ํ๊ฐ์ ์ํด ์ต๋ ํ ๋ฒ ์์ ๋ ์ ์ฅ๋ ๊ฐ์ ๊ฐ์ต๋๋ค.
ํํ. ๋ํ ์ด์ ๊ฐ์ ๋ค์ ๊ฐ์ ๊ฒฐ์ ํ๊ธฐ ์ํด์๋ง ์ฝ์ด์ผ ํฉ๋๋ค.
์ ์ฅ๋ฉ๋๋ค." ํ๋ก๊ทธ๋จ์ด ์ด๋ฌํ ๊ท์น์ ์๋ฐํ๋ฉด ํน์
๊ตฌํ์ ์์ ํ ์์ธกํ ์ ์์ต๋๋ค.
์ ์๋์ง ์์ ๋์์ด ์๋ ์ฝ๋์ ์๋ "a = a++;", "a[n] = b[n++]" ๋ฐ "a[i++] =
i;". ์ข ๋ ๋ณต์กํ ๊ฒฝ์ฐ๋ ์ด ์ต์ ์ผ๋ก ์ง๋จ๋์ง ์์ผ๋ฉฐ ๋ค์์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๊ฐ๋ ์์์ฑ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์๋นํ ํจ๊ณผ์ ์ธ ๊ฒ์ผ๋ก ๋ฐํ์ก์ต๋๋ค.
ํ๋ก๊ทธ๋จ์์ ์ด๋ฌํ ์ข ๋ฅ์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํฉ๋๋ค.
์ด ํ์ค์ ํผ๋์ค๋ฝ๊ฒ ํํ๋์ด ์์ผ๋ฏ๋ก ์ ํํ
๋ฏธ๋ฌํ ๊ฒฝ์ฐ ์ํ์ค ํฌ์ธํธ ๊ท์น์ ์๋ฏธ. ํ ๋ก ์ ๋ํ ๋งํฌ
์ ์๋ ํ์์ ์ ์๋ฅผ ํฌํจํ ๋ฌธ์ ๋ GCC ์ฝ๊ธฐ ํ์ด์ง์์ ์ฐพ์ ์ ์์ต๋๋ค.
...์์http://gcc.gnu.org/readings.html>.
์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ C ๋ฐ C++์ฉ.
-Wno-return-local-addr
๋ค์์ผ๋ก ๊ฐ๋ ๋ณ์์ ๋ํ ํฌ์ธํฐ(๋๋ C++์์๋ ์ฐธ์กฐ)๋ฅผ ๋ฐํํ๋ ๊ฒ์ ๋ํด ๊ฒฝ๊ณ ํ์ง ๋ง์ญ์์ค.
ํจ์๊ฐ ๋ฐํ๋ ํ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ์ต๋๋ค.
-Wreturnํ
ํจ์๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก "int"์ธ ๋ฐํ ์ ํ์ผ๋ก ์ ์๋ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค. ๋ํ
๋ฐํ ์ ํ์ด ์๋ ํจ์์์ ๋ฐํ ๊ฐ์ด ์๋ "๋ฐํ" ๋ฌธ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
"๋ฌดํจ"๊ฐ ์๋๋๋ค(ํจ์ ๋ณธ๋ฌธ์ ๋์์ ๋จ์ด์ง๋ ๊ฒ์ ๋ฐํ๋๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
๊ฐ ์์) ๋ฐ ํจ์์ ํํ์์ด ์๋ "๋ฐํ" ๋ฌธ์ ๋ํด
๋ฐํ ์ ํ์ด "void"์ ๋๋ค.
C++์ ๊ฒฝ์ฐ ๋ฐํ ์ ํ์ด ์๋ ํจ์๋ ํญ์ ์ง๋จ ๋ฉ์์ง๋ฅผ ์์ฑํฉ๋๋ค.
์ธ์ - ๋ ธ๋ฆฌํดํ ์ง์ ๋ฉ๋๋ค. ์ ์ผํ ์์ธ๋ ๋ณธ๊ด ๋ฐ ๊ธฐ๋ฅ
์์คํ ํค๋์ ์ ์๋์ด ์์ต๋๋ค.
์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
-W์ค์์น
"switch" ๋ฌธ์ ์ด๊ฑฐํ ์ธ๋ฑ์ค๊ฐ ์๊ณ "case"๊ฐ ๋ถ์กฑํ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
ํด๋น ์ด๊ฑฐ์ ๋ช ๋ช ๋ ์ฝ๋ ์ค ํ๋ ์ด์์ ๋ํด ("๊ธฐ๋ณธ๊ฐ"์ ์กด์ฌ
๋ ์ด๋ธ์ ์ด ๊ฒฝ๊ณ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.) ์ด๊ฑฐํ ๋ฒ์๋ฅผ ๋ฒ์ด๋ "์ผ์ด์ค" ๋ ์ด๋ธ๋
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ์ ๋ฐํฉ๋๋ค("๊ธฐ๋ณธ" ๋ ์ด๋ธ์ด ์๋๋ผ๋). ์ด๊ฒ
๊ฒฝ๊ณ ๊ฐ ํ์ฑํ๋จ -๋ฒฝ.
-Wswitch-๊ธฐ๋ณธ๊ฐ
"switch" ๋ฌธ์ "default" ๋์๋ฌธ์๊ฐ ์์ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
-Wswitch ์ด๊ฑฐ ํ
"switch" ๋ฌธ์ ์ด๊ฑฐํ ์ธ๋ฑ์ค๊ฐ ์๊ณ "case"๊ฐ ๋ถ์กฑํ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
ํด๋น ์ด๊ฑฐ์ ๋ช ๋ช ๋ ์ฝ๋ ์ค ํ๋ ์ด์์ ๋ํด "์ผ์ด์ค" ๋ผ๋ฒจ ์ธ๋ถ
์ด๊ฑฐํ ๋ฒ์๋ ์ด ์ต์ ์ ์ฌ์ฉํ ๋๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค. ์ ์ผํ ์ฐจ์ด์
์ฌ์ด์ -W์ค์์น ์ด ์ต์ ์ ์ด ์ต์ ์ด ์๋ต๋ ๊ฒ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํ๋ค๋ ๊ฒ์ ๋๋ค.
"๊ธฐ๋ณธ" ๋ ์ด๋ธ์ด ์๋๋ผ๋ ์ด๊ฑฐ ์ฝ๋.
-Wsync-๋ธ๋ (C ๋ฐ C++๋ง ํด๋น)
"__sync_fetch_and_nand" ๋ฐ "__sync_nand_and_fetch" ๋ด์ฅ ํจ์๊ฐ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
์ฌ์ฉ ๋. ์ด๋ฌํ ํจ์๋ GCC 4.4์์ ์๋ฏธ ์ฒด๊ณ๋ฅผ ๋ณ๊ฒฝํ์ต๋๋ค.
-์ ์
ํ๋ก๊ทธ๋จ์ ์๋ฏธ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ trigraph๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
(์ฝ๋ฉํธ ๋ด์ trigraphs๋ ๊ฒฝ๊ณ ๋์ง ์์ต๋๋ค). ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
-์ฌ์ฉํ์ง ์์์ง๋ง ์ค์ ๋งค๊ฐ๋ณ์
ํจ์ ๋งค๊ฐ๋ณ์๊ฐ ํ ๋น๋์์ง๋ง ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ฉ๋์ง ์์ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
์ ์ธ).
์ด ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ผ๋ ค๋ฉด ๋ฏธ์ฌ์ฉ์ ์์ฑ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๋๋ค.
์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด์๋ ํ์ฑํ๋ฉ๋๋ค. - ์ฌ์ฉํ์ง ์์ ์ ํจ๊ป -์ฉ์คํธ๋ผ.
-์ฌ์ฉํ์ง ์์์ง๋ง ์ค์ ๋ณ์
์ง์ญ ๋ณ์๊ฐ ํ ๋น๋์์ง๋ง ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ฉ๋์ง ์์ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
์ ์ธ). ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
์ด ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ผ๋ ค๋ฉด ๋ฏธ์ฌ์ฉ์ ์์ฑ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๋๋ค.
์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด์๋ ํ์ฑํ๋ฉ๋๋ค. - ์ฌ์ฉํ์ง ์์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
- ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ฅ
์ ์ ํจ์๊ฐ ์ ์ธ๋์์ง๋ง ์ ์๋์ง ์์๊ฑฐ๋ ์ธ๋ผ์ธ์ด ์๋ ์ ์ ํจ์๊ฐ ์ ์ธ๋ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
-์ฌ์ฉํ์ง ์์ ๋ผ๋ฒจ
๋ ์ด๋ธ์ด ์ ์ธ๋์์ง๋ง ์ฌ์ฉ๋์ง ์์ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
์ด ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ผ๋ ค๋ฉด ๋ฏธ์ฌ์ฉ์ ์์ฑ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๋๋ค.
-Wunused-local-typedefs (C, Objective-C, C++ ๋ฐ Objective-C++๋ง ํด๋น)
ํจ์์ ๋ก์ปฌ๋ก ์ ์๋ typedef๊ฐ ์ฌ์ฉ๋์ง ์์ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด ๊ฒฝ๊ณ ๋
ํ์ฑํ ๋ -๋ฒฝ.
-Wunused-๋งค๊ฐ๋ณ์
ํจ์ ๋งค๊ฐ๋ณ์๊ฐ ์ ์ธ ์ธ์ ์ฌ์ฉ๋์ง ์์ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
์ด ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ผ๋ ค๋ฉด ๋ฏธ์ฌ์ฉ์ ์์ฑ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๋๋ค.
- ์ฌ์ฉํ์ง ์์ ๊ฒฐ๊ณผ ์์
"warn_unused_result" ์์ฑ์ผ๋ก ํ์๋ ํจ์์ ํธ์ถ์๊ฐ ๋ค์์ ์ํํ๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํ์ง ๋ง์ญ์์ค.
๋ฐํ ๊ฐ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ๊ธฐ๋ณธ๊ฐ์ -Wunused-๊ฒฐ๊ณผ.
- ์ฌ์ฉํ์ง ์์ ๋ณ์
์ง์ญ ๋ณ์ ๋๋ ์์๊ฐ ์๋ ์ ์ ๋ณ์๊ฐ ๋ค์์ ์ ์ธํ๊ณ ์ฌ์ฉ๋์ง ์์ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
๊ทธ ์ ์ธ. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
์ด ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ผ๋ ค๋ฉด ๋ฏธ์ฌ์ฉ์ ์์ฑ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๋๋ค.
- ๋ฏธ์ฌ์ฉ ๊ฐ์น
๋ฌธ์ด ๋ช ์์ ์ผ๋ก ์ฌ์ฉ๋์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค. ์ต์ ํ๋ค
์ด ๊ฒฝ๊ณ ๋ ์ฌ์ฉ๋์ง ์์ ํํ์์ ๋ฌดํจํ. ์ฌ๊ธฐ์๋ ํํ ๋ฌธ์ด ํฌํจ๋ฉ๋๋ค.
๋๋ ๋ถ์์ฉ์ด ์๋ ์ผํ ํํ์์ ์ผ์ชฝ. ์์ํ
์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ํํ x[i,j] ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์์ํค๋ ๋ฐ๋ฉด x[(๋ฌดํจ)i,j] ํ์ง ์์ต๋๋ค.
์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
- ์ฌ์ฉํ์ง ์์
๋ชจ๋ ๊ฒ ์์ - ์ฌ์ฉํ์ง ์์ ์ต์ ์ด ๊ฒฐํฉ๋์์ต๋๋ค.
์ฌ์ฉํ์ง ์๋ ํจ์ ๋งค๊ฐ๋ณ์์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ผ๋ ค๋ฉด ๋ค์ ์ค ํ๋๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
-์ฉ์คํธ๋ผ - ์ฌ์ฉํ์ง ์์ (์ฐธ๊ณ -๋ฒฝ ์๋ฏธํ๋ค - ์ฌ์ฉํ์ง ์์) ๋๋ ๋ณ๋๋ก ์ง์
-Wunused-๋งค๊ฐ๋ณ์.
-์ด๊ธฐํ๋์ง ์์
์๋ ๋ณ์๊ฐ ๋จผ์ ์ด๊ธฐํ๋์ง ์๊ณ ์ฌ์ฉ๋๊ฑฐ๋ ๋ณ์๊ฐ
"setjmp" ํธ์ถ์ ์ํด ๋ฐฉํด๋ ์ ์์ต๋๋ค. C++์์ ๋น์ ์ ์ฐธ์กฐ ๋๋ ๋น์ ์ ์ฐธ์กฐ์ธ ๊ฒฝ์ฐ ๊ฒฝ๊ณ
์ ์ ์ธ const๋ฅผ ๋ฉค๋ฒ๋ ์์ฑ์๊ฐ ์๋ ํด๋์ค์ ๋ํ๋ฉ๋๋ค.
์ด๊ธฐํ๋์ง ์์ ๋ณ์ ๊ฐ์ ์ฌ์ฉํ๋ ์ฝ๋์ ๋ํด ๊ฒฝ๊ณ ํ๋ ค๋ฉด
์์ฒด ์ด๋์ ๋ผ์ด์ ๋ฅผ ์ฌ์ฉํ์ฌ -์ํธ์ ํ ์ต์ ์ ์ ํํฉ๋๋ค.
์ด๋ฌํ ๊ฒฝ๊ณ ๋ ๊ตฌ์กฐ์ ์ด๊ธฐํ๋์ง ์์๊ฑฐ๋ ๋งํ ๊ฐ๋ณ ์์์ ๋ํด ๋ฐ์ํฉ๋๋ค.
์ด๊ธฐํ๋์ง ์์๊ฑฐ๋ ํด๋ก๋ฒ๋ ๋ณ์๋ฟ๋ง ์๋๋ผ ํตํฉ ๋๋ ๋ฐฐ์ด ๋ณ์
์ ์ฒด์ ์ผ๋ก. "ํ๋ฐ์ฑ"์ผ๋ก ์ ์ธ๋ ๋ณ์๋ ์์์๋ ๋ฐ์ํ์ง ์์ต๋๋ค. ๋๋ฌธ์
์ด๋ฌํ ๊ฒฝ๊ณ ๋ ์ต์ ํ, ์ ํํ ๋ณ์ ๋๋ ์์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๊ฒฝ๊ณ ๋ ์ ํํ ์ต์ ํ ์ต์ ๊ณผ ์ฌ์ฉ๋ GCC ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๊ณ์ฐ์๋ง ์ฌ์ฉ๋๋ ๋ณ์์ ๋ํ ๊ฒฝ๊ณ ๊ฐ ์์ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ํ๋ฆ์ ์ํด ์ด๋ฌํ ๊ณ์ฐ์ด ์ญ์ ๋ ์ ์์ผ๋ฏ๋ก ์์ฒด์ ์ผ๋ก ์ฌ์ฉ๋์ง ์๋ ๊ฐ
๊ฒฝ๊ณ ๊ฐ ์ธ์๋๊ธฐ ์ ์ ๋ถ์ํฉ๋๋ค.
-W์๋ง๋ ์ด๊ธฐํ๋์ง ์์
์๋ ๋ณ์์ ๊ฒฝ์ฐ ํจ์ ํญ๋ชฉ์์ ๋ค์์ ์ฌ์ฉํ๋ ๊ฒฝ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ
์ด๊ธฐํ๋ ๋ณ์์ด์ง๋ง ๋ค๋ฅธ ๊ฒฝ๋ก๊ฐ ์กด์ฌํฉ๋๋ค.
๋ณ์๊ฐ ์ด๊ธฐํ๋์ง ์์ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๋ ์ฆ๋ช ํ ์ ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ ๋๋ค.
์ด๊ธฐํ๋์ง ์์ ๊ฒฝ๋ก๋ ๋ฐํ์์ ์คํ๋์ง ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ๊ณ ๋ ์ ํ ์ฌํญ์ ๋๋ค.
GCC๋ ์ฝ๋๊ฐ ์ ํํ ์ ์๋ ๋ชจ๋ ์ด์ ๋ฅผ ๋ณผ ๋งํผ ์ถฉ๋ถํ ๋๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ค๋ฅ๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง. ์ด๊ฒ์ด ์ด๋ป๊ฒ ์ผ์ด๋ ์ ์๋์ง์ ๋ํ ํ ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{
int x;
์ค์์น(y)
{
๊ฒฝ์ฐ 1: x = 1;
ํ๋ค;
๊ฒฝ์ฐ 2: x = 4;
ํ๋ค;
๊ฒฝ์ฐ 3: x = 5;
}
ํธ(x);
}
"y"์ ๊ฐ์ด ํญ์ 1, 2 ๋๋ 3์ด๋ฉด "x"๋ ํญ์ ์ด๊ธฐํ๋์ง๋ง GCC๋
์ด๊ฒ์ ๋ชจ๋ฆ ๋๋ค. ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ผ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์ผ์ด์ค๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
๋จ์ธํ๋ค(0) ๋๋ ์ ์ฌํ ์ฝ๋.
์ด ์ต์ ์ ๋ํ ๋นํ๋ฐ์ฑ ์๋ ๋ณ์๊ฐ
"longjmp"๋ฅผ ํธ์ถํฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ๊ณ ๋ ์ต์ ํ์์๋ง ๊ฐ๋ฅํฉ๋๋ค.
ํธ์ง.
์ปดํ์ผ๋ฌ๋ "setjmp"์ ๋ํ ํธ์ถ๋ง ๋ด ๋๋ค. "longjmp"๊ฐ ์ด๋์ ์๋์ง ์ ์ ์์ต๋๋ค.
๋ผ๊ณ ๋ถ๋ฆฌ๋; ์ค์ ๋ก ์ ํธ ์ฒ๋ฆฌ๊ธฐ๋ ์ฝ๋์ ์ด๋ ์ง์ ์์๋ ํธ์ถํ ์ ์์ต๋๋ค. ๋ก
๊ฒฐ๊ณผ์ ์ผ๋ก "longjmp" ๋๋ฌธ์ ์ค์ ๋ก ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
์ค์ ๋ก ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ฅ์์์ ํธ์ถํ ์ ์์ต๋๋ค.
์ฌ์ฉํ๋ ๋ชจ๋ ํจ์๋ฅผ ์ ์ธํ๋ฉด ์ผ๋ถ ๊ฐ์ง ๊ฒฝ๊ณ ๋ฅผ ํผํ ์ ์์ต๋๋ค.
"noreturn"์ผ๋ก ๋ฐํํ์ง ๋ง์ญ์์ค.
์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ or -์ฉ์คํธ๋ผ.
-Wunknown-pragma
GCC์์ ์ดํดํ ์ ์๋ "#pragma" ์ง์๋ฌธ์ ๋ง๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ
๋ช ๋ น์ค ์ต์ ์ด ์ฌ์ฉ๋๋ฉด ์์คํ ์ ์ ์ ์๋ pragma์ ๋ํ ๊ฒฝ๊ณ ๋ ๋ฐํ๋ฉ๋๋ค.
ํค๋ ํ์ผ. ๊ฒฝ๊ณ ๊ฐ -๋ฒฝ
๋ช ๋ น์ค ์ต์ .
-Wno-pragma
์๋ชป๋ ๋งค๊ฐ๋ณ์, ์๋ชป๋ ๊ตฌ๋ฌธ ๋๋
ํ๋ผ๊ทธ๋ง ๊ฐ์ ์ถฉ๋. ๋ํ๋ณด์ญ์์ค -Wunknown-pragma.
-Wstrict-์จ๋ฆฌ์ด์ฑ
์ด ์ต์ ์ ๋ค์ ๊ฒฝ์ฐ์๋ง ํ์ฑํ๋ฉ๋๋ค. -fstrict-์จ๋ฆฌ์ด์ฑ ํ์ฑ. ์ฝ๋์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ปดํ์ผ๋ฌ๊ฐ ์ต์ ํ๋ฅผ ์ํด ์ฌ์ฉํ๋ ์๊ฒฉํ ์จ๋ฆฌ์ด์ฑ ๊ท์น์ ์๋ฐํ ์ ์์ต๋๋ค.
๊ฒฝ๊ณ ๊ฐ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํฌ์ฐฉํ์ง๋ ์์ง๋ง ๋ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ๋ฅผ ํฌ์ฐฉํ๋ ค๊ณ ์๋ํฉ๋๋ค.
ํจ์ . ์ ํฌํจ๋์ด ์์ต๋๋ค. -๋ฒฝ. ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -Wstrict-์จ๋ฆฌ์ด์ฑ=3
-Wstrict-์จ๋ฆฌ์ด์ฑ=n
์ด ์ต์ ์ ๋ค์ ๊ฒฝ์ฐ์๋ง ํ์ฑํ๋ฉ๋๋ค. -fstrict-์จ๋ฆฌ์ด์ฑ ํ์ฑ. ์ฝ๋์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ปดํ์ผ๋ฌ๊ฐ ์ต์ ํ๋ฅผ ์ํด ์ฌ์ฉํ๋ ์๊ฒฉํ ์จ๋ฆฌ์ด์ฑ ๊ท์น์ ์๋ฐํ ์ ์์ต๋๋ค.
์์ค์ด ๋์์๋ก ์ ํ๋๊ฐ ๋์์ง๋๋ค(์คํ์ด ์ ์). ๋ ๋์ ์์ค
๋ํ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌํ๊ฒ ๋ ๋ง์ ๋ ธ๋ ฅ์ ํด๋นํฉ๋๋ค. -O ์๋ํฉ๋๋ค. -Wstrict-์จ๋ฆฌ์ด์ฑ is
์ ํด๋น -Wstrict-์จ๋ฆฌ์ด์ฑ=3.
๋ ๋ฒจ 1: ๊ฐ์ฅ ๊ณต๊ฒฉ์ ์ด๊ณ ๋น ๋ฅด๋ฉฐ ๊ฐ์ฅ ์ ํํ์ง ์์ต๋๋ค. ๋ ๋ฒจ์ด ๋์ ๋ ์ ์ฉํ ์ ์์
๊ฒฝ๊ณ ํ์ง ์์ง๋ง -fstrict-์จ๋ฆฌ์ด์ฑ false๊ฐ ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ์ฝ๋๋ฅผ ์ค๋จํฉ๋๋ค.
๋ค๊ฑฐํฐ๋ธ. ๊ทธ๋ฌ๋ ๋ง์ ์คํ์ง๊ฐ ์์ต๋๋ค. ๋ชจ๋ ํฌ์ธํฐ ๋ณํ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ญ์ฐธ์กฐ๋์ง ์๋๋ผ๋ ํธํ๋์ง ์์ ์ ์๋ ์ ํ ๊ฐ์. ์์ ๋ฌ๋ฆฌ๋ค
๋๋ง.
๋ ๋ฒจ 2: ๊ณต๊ฒฉ์ ์ด๊ณ ๋น ๋ฅด๋ฉฐ ๋๋ฌด ์ ํํ์ง ์์ต๋๋ค. ์ฌ์ ํ ๋ง์ ๊ฐ์์ฑ์ด ์์ ์ ์์ต๋๋ค(์์ง
์์ค 1๋งํผ ๋ง์), ๊ฑฐ์ง ๋ถ์ ์ ๊ฑฐ์ ์์ต๋๋ค(ํ์ง๋ง ์์ค 1 ์ด์์ผ ์ ์์).
๋ ๋ฒจ 1๊ณผ ๋ฌ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ง ๊ฒฝ๊ณ ํฉ๋๋ค. ๋ถ์์ ํ ์ ํ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
ํ๋ฐํธ ์๋์์๋ง ์คํ๋ฉ๋๋ค.
๋ ๋ฒจ 3(๊ธฐ๋ณธ๊ฐ -Wstrict-์จ๋ฆฌ์ด์ฑ): ์คํ์ด ๊ฑฐ์ ์๊ณ
๊ฑฐ์ง ๋ถ์ . ์ต์ ํ๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ ๋ ๋ฒจ 1 ๋๋ 2๋ณด๋ค ์ฝ๊ฐ ๋๋ฆฝ๋๋ค.
ํ๋ฐํธ ์๋์์ ์ผ๋ฐ์ ์ธ ๋ง์ฅ๋+์ญ์ฐธ์กฐ ํจํด์ ์ฒ๋ฆฌํฉ๋๋ค.
"*(int*)&some_float". ์ต์ ํ๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ ๋ฐฑ์๋์์๋ ์คํ๋ฉ๋๋ค.
ํ๋ฆ์ ๋ฏผ๊ฐํ ์ง์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ช ๋ น๋ฌธ ์ฌ๋ก๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
๋ณํ๋ ํฌ์ธํฐ๊ฐ ์ญ์ฐธ์กฐ๋ ๋๋ง ๊ฒฝ๊ณ ํฉ๋๋ค. ๋ถ์์ ์ ๋ํด ๊ฒฝ๊ณ ํ์ง ์์
์ ํ.
-Wstrict ์ค๋ฒํ๋ก
-Wstrict-์ค๋ฒํ๋ก=n
์ด ์ต์ ์ ๋ค์ ๊ฒฝ์ฐ์๋ง ํ์ฑํ๋ฉ๋๋ค. -fstrict-์ค๋ฒํ๋ก ํ์ฑ. ๊ฒฝ์ฐ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ฌ๊ธฐ์ ์ปดํ์ผ๋ฌ๋ ๋ถํธ ์๋ ์ค๋ฒํ๋ก๊ฐ ์คํ๋์ง ์๋๋ค๋ ๊ฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์ต์ ํํฉ๋๋ค.
๋ฐ์ํ๋ค. ์ฝ๋๊ฐ ์ค๋ฒํ๋ก๋ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ํด ๊ฒฝ๊ณ ํ๋ ๊ฒ์ ์๋๋๋ค.
์ปดํ์ผ๋ฌ๊ฐ ์ผ๋ถ ์ต์ ํ๋ฅผ ๊ตฌํํ๋ ๊ฒฝ์ฐ์๋ง ๊ฒฝ๊ณ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด
๊ฒฝ๊ณ ๋ ์ต์ ํ ์์ค์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๋ถํธ ์๋ ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํ์ง ์๋๋ค๊ณ ๊ฐ์ ํ๋ ์ต์ ํ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์๋ฒฝํ๊ฒ ์์ ํฉ๋๋ค.
๊ด๋ จ๋ ๋ณ์์ ๊ฐ์ ์ค๋ฒํ๋ก๊ฐ ์ค์ ๋ก ๋ฐ์ํ์ง ์๋ ๊ฐ์ ๋๋ค.
๋ฐ์ํ๋ค. ๋ฐ๋ผ์ ์ด ๊ฒฝ๊ณ ๋ ์ฝ๊ฒ ๊ฐ์์ฑ์ ์ค ์ ์์ต๋๋ค. ์ฝ๋์ ๋ํ ๊ฒฝ๊ณ
๊ทธ๊ฒ์ ์ค์ ๋ก ๋ฌธ์ ๊ฐ ์๋๋๋ค. ์ค์ํ ๋ฌธ์ ์ ์ง์คํ ์ ์๋๋ก ๋ช ๊ฐ์ง ๊ฒฝ๊ณ
์์ค์ด ์ ์๋ฉ๋๋ค. ์ ์๋์ง ์์ ์๋ช ๋ ์ค๋ฒํ๋ก ์ฌ์ฉ์ ๋ํ ๊ฒฝ๊ณ ๊ฐ ๋ฐํ๋์ง ์์ต๋๋ค.
๋ฃจํ์ ํ์ํ ๋ฐ๋ณต ํ์๋ฅผ ์ถ์ ํ ๋, ํนํ ๊ฒฐ์ ํ ๋
๋ฃจํ๊ฐ ์ ํ ์คํ๋๋์ง ์ฌ๋ถ.
-Wstrict-overflow=1
์์ฌ์ค๋ฝ๊ณ ํผํ๊ธฐ ์ฌ์ด ์ฌ๋ก์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด,
-fstrict-์ค๋ฒํ๋ก, ์ปดํ์ผ๋ฌ๋ "x + 1 > x"๋ฅผ 1๋ก ๋จ์ํํฉ๋๋ค.
-Wstrict ์ค๋ฒํ๋ก ์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ; ๋ ๋์ ์์ค์ ๊ทธ๋ ์ง ์์ผ๋ฉฐ ๋ฐ๋์ ์์ด์ผ ํฉ๋๋ค.
๋ช ์์ ์ผ๋ก ์์ฒญํ์ต๋๋ค.
-Wstrict-overflow=2
๋ํ ๋น๊ต๊ฐ ์์๋ก ๋จ์ํ๋ ๋ค๋ฅธ ๊ฒฝ์ฐ์ ๋ํด์๋ ๊ฒฝ๊ณ ํฉ๋๋ค. ์์ํ
์: "abs(x) >= 0". ๋ค์ ๊ฒฝ์ฐ์๋ง ๋จ์ํํ ์ ์์ต๋๋ค. -fstrict-์ค๋ฒํ๋ก ์
"abs (INT_MIN)"๊ฐ XNUMX๋ณด๋ค ์์ "INT_MIN"์ผ๋ก ์ค๋ฒํ๋ก๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
-Wstrict ์ค๋ฒํ๋ก (๋ ๋ฒจ ์์)์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -Wstrict-overflow=2.
-Wstrict-overflow=3
๋ํ ๋น๊ต๊ฐ ๋จ์ํ๋ ๋ค๋ฅธ ๊ฒฝ์ฐ์ ๋ํด์๋ ๊ฒฝ๊ณ ํฉ๋๋ค. ์: "x + 1
> 1"์ "x > 0"์ผ๋ก ๋จ์ํ๋ฉ๋๋ค.
-Wstrict-overflow=4
๋ํ ์์ ๊ฒฝ์ฐ์ ํฌํจ๋์ง ์์ ๋ค๋ฅธ ๋จ์ํ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์์ํ
์: "(x * 10) / 5"๋ "x * 2"๋ก ๋จ์ํ๋ฉ๋๋ค.
-Wstrict-overflow=5
๋ํ ์ปดํ์ผ๋ฌ๊ฐ ์์์ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๊ฒฝ์ฐ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
๋น๊ต์ ์ฐธ์ฌํ์ต๋๋ค. ์: "x + 2 > y"๋ "x + 1 >= y"๋ก ๋จ์ํ๋ฉ๋๋ค.
์ด๊ฒ์ ๋จ์ํํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ๋์ ๊ฒฝ๊ณ ์์ค์์๋ง ๋ณด๊ณ ๋ฉ๋๋ค.
๋ง์ ๋น๊ต์ ์ ์ฉ๋๋ฏ๋ก ์ด ๊ฒฝ๊ณ ์์ค์
์ค ํ์ง.
-Wsuggest-์์ฑ=[์์ํ|const๋ฅผ|๋ ธ๋ฆฌํด|์ฒด์ฌ]
์์ฑ์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์๋ ๊ฒฝ์ฐ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ํ์ฌ ์์ฑ
์ง์๋๋ ๋ชฉ๋ก์ ์๋์ ๋์ ์์ต๋๋ค.
-Wsuggest-์์ฑ=์์
-Wsuggest-์์ฑ=const
-Wsuggest-์์ฑ=noreturn
"pure", "const" ๋๋ ์์ฑ์ ํ๋ณด๊ฐ ๋ ์ ์๋ ํจ์์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
"๋ ธํด". ์ปดํ์ผ๋ฌ๋ ๋ค๋ฅธ ์ปดํ์ผ์์ ๋ณผ ์ ์๋ ํจ์์ ๋ํด์๋ง ๊ฒฝ๊ณ ํฉ๋๋ค.
๋จ์ ๋๋ ("์์" ๋ฐ "์์"์ ๊ฒฝ์ฐ) ๊ธฐ๋ฅ์ด ๋ค์์ ์ฆ๋ช ํ ์ ์๋ ๊ฒฝ์ฐ
์ ์์ ์ผ๋ก ๋ฐํ๋ฉ๋๋ค. ํจ์๊ฐ ๋ฌดํ์ ํฌํจํ์ง ์์ผ๋ฉด ์ ์์ ์ผ๋ก ๋ฐํ๋ฉ๋๋ค.
๋์ง๊ฑฐ๋ "abort()"๋ฅผ ํธ์ถํ๊ฑฐ๋ ํธ๋ํํ์ฌ ๋ฃจํ๋ฅผ ๋น์ ์์ ์ผ๋ก ๋ฐํํ๊ฑฐ๋ ๋ฐํํฉ๋๋ค. ์ด๊ฒ
๋ถ์์๋ ์ต์ ์ด ํ์ํฉ๋๋ค -fipa-์์-const, ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O and
๋ ๋์. ์ต์ ํ ์์ค์ด ๋์์๋ก ๋ถ์ ์ ํ๋๊ฐ ํฅ์๋ฉ๋๋ค.
-Wsuggest-์์ฑ=ํ์
-Wmissing ํ์ ์์ฑ
"ํ์" ์์ฑ์ ํ๋ณด๊ฐ ๋ ์ ์๋ ํจ์ ํฌ์ธํฐ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ด๋ค์ ๊ฐ๋ฅํ ํ๋ณด์ผ ๋ฟ ์ ๋์ ์ธ ํ๋ณด๋ ์๋๋๋ค. GCC ์ถ์ธก
ํ ๋น์ ์ฌ์ฉ๋๋ "ํ์" ์์ฑ์ด ์๋ ํจ์ ํฌ์ธํฐ,
์ด๊ธฐํ, ๋งค๊ฐ๋ณ์ ์ ๋ฌ ๋๋ ๋ฐํ ๋ฌธ์๋ ํด๋น ํญ๋ชฉ์ด ์์ด์ผ ํฉ๋๋ค.
๊ฒฐ๊ณผ ์ ํ์ "ํ์" ์์ฑ. ์ฆ ์ผํธ์
ํ ๋น ๋๋ ์ด๊ธฐํ, ๋งค๊ฐ๋ณ์ ๋ณ์์ ์ ํ ๋๋ ๋ฐํ
ํฌํจํ๋ ํจ์์ ์ ํ์๋ ๊ฐ๊ฐ "ํ์" ์์ฑ๋ ์์ด์ผ ํฉ๋๋ค.
๊ฒฝ๊ณ ๋ฅผ ํผํ๊ธฐ ์ํด.
GCC๋ "ํ์"์ ํ๋ณด๊ฐ ๋ ์ ์๋ ํจ์ ์ ์์ ๋ํด์๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
์์ฑ. ๋ค์ ๋งํ์ง๋ง, ์ด๋ค์ ๊ฐ๋ฅํ ํ๋ณด์ผ ๋ฟ์ ๋๋ค. GCC๋ "ํ์"์ ์ถ์ธกํฉ๋๋ค.
์์ฑ์ ๋ค์๊ณผ ๊ฐ์ ํจ์๋ฅผ ํธ์ถํ๋ ๋ชจ๋ ํจ์์ ์ ํฉํ ์ ์์ต๋๋ค.
"vprintf" ๋๋ "vscanf"์ด์ง๋ง ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋ฉฐ ์ผ๋ถ ๊ธฐ๋ฅ์
"ํ์" ์์ฑ์ด ์ ์ ํ ๊ฒ์ ๊ฐ์ง๋์ง ์์ ์ ์์ต๋๋ค.
-์๋ ์ด ๊ฒฝ๊ณ
์ด ์ต์ ์ ๋ค์ ๊ฒฝ์ฐ์๋ง ํ์ฑํ๋ฉ๋๋ค. -fttree-vrp ํ์ฑ(๊ธฐ๋ณธ๊ฐ -O2 ์ด์). ๊ทธ๊ฒ
ํญ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๋ฐฐ์ด์ ์ฒจ์์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด ๊ฒฝ๊ณ ๋
ํ์ฑํ ๋ -๋ฒฝ.
-Wno-div-by-XNUMX
XNUMX์ผ๋ก ์ปดํ์ผ ํ์ ์ ์ ๋๋๊ธฐ์ ๋ํด ๊ฒฝ๊ณ ํ์ง ๋ง์ญ์์ค. ๋ถ๋ ์์์ ๋๋๊ธฐ
XNUMX์ ๋ฌดํ๋๋ฅผ ์ป๋ ํฉ๋ฒ์ ์ธ ๋ฐฉ๋ฒ์ด ๋ ์ ์์ผ๋ฏ๋ก ๊ฒฝ๊ณ ๋์ง ์์ต๋๋ค.
NaN.
-Wsystem ํค๋
์์คํ ํค๋ ํ์ผ์์ ๋ฐ๊ฒฌ๋ ๊ตฌ์ฑ์ ๋ํ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ธ์ํฉ๋๋ค. ๊ฒฝ๊ณ
์์คํ ํค๋๋ ์ผ๋ฐ์ ์ผ๋ก ํ์๋์ง ์๋๋ค๋ ๊ฐ์ ํ์ ํ์๋์ง ์์ต๋๋ค.
์ค์ ๋ฌธ์ ๋ฅผ ๋ํ๋ด๋ฉฐ ์ปดํ์ผ๋ฌ ์ถ๋ ฅ์ ์ฝ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค. ์ฌ์ฉ
์ด ๋ช ๋ น์ค ์ต์ ์ ์์คํ ํค๋์์ ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ด๋๋ก GCC์ ์ง์ํฉ๋๋ค.
์ฌ์ฉ์ ์ฝ๋์์ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ -๋ฒฝ ์ด ์ต์ ๊ณผ ํจ๊ป
ํ์ง ์ง์ ์์คํ ํค๋์ ์ ์ ์๋ pragma์ ๋ํด ๊ฒฝ๊ณ --- ์ด๋ฅผ ์ํด, -Wunknown-pragma
๋ํ ์ฌ์ฉํด์ผํฉ๋๋ค.
- ํธ๋จํด๋ฆฐ
์ค์ฒฉ ํจ์์ ๋ํ ํฌ์ธํฐ์ ๋ํด ์์ฑ๋ ํธ๋จํด๋ฆฐ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
ํธ๋จํ๋ฆฐ์ ์คํ ์ ์์ฑ๋๋ ์์ ๋ฐ์ดํฐ ๋๋ ์ฝ๋ ์กฐ๊ฐ์ ๋๋ค.
์ค์ฒฉ๋ ํจ์์ ์ฃผ์๊ฐ ์ทจํด์ง ๋ ์คํ์ ์๋ ์๊ฐ, ๊ทธ๋ฆฌ๊ณ
์ค์ฒฉ๋ ํจ์๋ฅผ ๊ฐ์ ์ ์ผ๋ก ํธ์ถํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ผ๋ถ ๋์์ ๊ฒฝ์ฐ
๋ฐ์ดํฐ๋ก๋ง ๊ตฌ์ฑ๋์ด ํน๋ณํ ์ฒ๋ฆฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ํ์ง๋ง,
๋๋ถ๋ถ์ ๋์์ ์ฝ๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฏ๋ก ์คํ์ด ํ์ํฉ๋๋ค.
ํ๋ก๊ทธ๋จ์ด ์ ๋๋ก ์๋ํ๋ ค๋ฉด ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
-Wfloat-๊ฐ์
๋ถ๋ ์์์ ๊ฐ์ด ๋๋ฑ ๋น๊ต์ ์ฌ์ฉ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ด ์ด๋ฉด์ ์์ด๋์ด๋ ๋๋๋ก (ํ๋ก๊ทธ๋๋จธ์๊ฒ) ๋ค์์ ์ํํ๋ ๊ฒ์ด ํธ๋ฆฌํ๋ค๋ ๊ฒ์ ๋๋ค.
๋ถ๋ ์์์ ๊ฐ์ ๋ฌดํํ ์ ํํ ์ค์์ ๋ํ ๊ทผ์ฌ์น๋ก ๊ฐ์ฃผํฉ๋๋ค.
์ด ์์ ์ ์ํํ๋ ๊ฒฝ์ฐ ๊ณ์ฐํด์ผ ํฉ๋๋ค(์ฝ๋๋ฅผ ๋ถ์ํ๊ฑฐ๋ ์ผ๋ถ
๋ค๋ฅธ ๋ฐฉ๋ฒ) ๊ณ์ฐ์ด ๋์ ํ๋ ์ต๋ ๋๋ ๊ฐ๋ฅํ ์ต๋ ์ค๋ฅ, ๋ฐ
๋น๊ต๋ฅผ ์ํํ ๋(๊ทธ๋ฆฌ๊ณ ์ถ๋ ฅ์ ์์ฑํ ๋ ํ์ฉํ์ง๋ง ์ด๋
๋ค๋ฅธ ๋ฌธ์ ). ํนํ ํ๋ฑ์ ํ ์คํธํ๋ ๋์ ๋ค์์ ํ์ธํด์ผ ํฉ๋๋ค.
๋ ๊ฐ์ ๊ฒน์น๋ ๋ฒ์๊ฐ ์๋์ง ํ์ธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์
๊ด๊ณ ์ฐ์ฐ์์ด๋ฏ๋ก ๊ฐ์ ๋น๊ต๊ฐ ์๋ชป๋ ์ ์์ต๋๋ค.
-์ ํต์ ์ธ (C ๋ฐ Objective-C๋ง ํด๋น)
๊ธฐ์กด ๋ฐ ISO C์์ ๋ค๋ฅด๊ฒ ๋์ํ๋ ํน์ ๊ตฌ์ฑ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ๋ํ
๊ธฐ์กด์ C์ ํด๋นํ๋ ํญ๋ชฉ์ด ์๊ฑฐ๋ ๋ฌธ์ ๊ฐ ์๋ ISO C ๊ตฌ์ฑ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
ํผํด์ผ ํ ๊ตฌ์กฐ.
ยท ๋งคํฌ๋ก ๋ณธ๋ฌธ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ด์ ๋ํ๋๋ ๋งคํฌ๋ก ๋งค๊ฐ๋ณ์. ์
์ ํต์ ์ธ C ๋งคํฌ๋ก ๊ต์ฒด๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ด์์ ๋ฐ์ํ์ง๋ง ISO C์์๋
๊ทธ๋ ์ง ์์ต๋๋ค.
ยท ์ ํต์ ์ธ C์์๋ ์ผ๋ถ ์ ์ฒ๋ฆฌ๊ธฐ ์ง์๋ฌธ์ด ์กด์ฌํ์ง ์์์ต๋๋ค. ์ ํต์ ์ธ
์ ์ฒ๋ฆฌ๊ธฐ๋ ๋ค์ ๊ฒฝ์ฐ์๋ง ๋ผ์ธ์ ์ง์๋ฌธ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค. # ์นผ๋ผ์ ๋ฑ์ฅ
1 ๋ผ์ธ์. ๊ทธ๋ฌ๋ฏ๋ก -์ ํต์ ์ธ ์ ํต์ ์ธ C
์ดํดํ์ง๋ง ๋ฌด์ํ๊ธฐ ๋๋ฌธ์ # ์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ก ๋ํ๋์ง ์์ต๋๋ค.
๋ผ์ธ. ๋ํ ๋ค์๊ณผ ๊ฐ์ ์ง์๋ฌธ์ ์จ๊ธธ ๊ฒ์ ์ ์ํฉ๋๋ค. #ํ๋ผ๊ทธ๋ง ์ ์ํด ์ดํด๋์ง ์๋
๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํตํด ์ ํต์ ์ธ C. ์ผ๋ถ ๊ธฐ์กด ๊ตฌํ์
์ธ์ #์๋ฆฌํ, ๋ฐ๋ผ์ ์ด ์ต์ ์ ์์ ํ ํผํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ยท ์ธ์ ์์ด ๋ํ๋๋ ํจ์์ ๊ฐ์ ๋งคํฌ๋ก.
ยท ๋จํญ ๋ํ๊ธฐ ์ฐ์ฐ์.
ยท U ์ ์ ์์ ์ ๋ฏธ์ฌ ๋๋ F or L ๋ถ๋ ์์์ ์์ ์ ๋ฏธ์ฌ.
(์ ํต์ ์ธ C๋ L ์ ์ ์์์ ์ ๋ฏธ์ฌ.)
์ ๋ฏธ์ฌ๋ ๋๋ถ๋ถ์ ์ต์ ์์คํ ์ ์์คํ ํค๋์ ์ ์๋ ๋งคํฌ๋ก์ ๋ํ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด _MIN/_MAX "์ ๋งคํฌ๋ก ". ์ฌ์ฉ์ ์ฝ๋์์ ์ด๋ฌํ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ฉด
์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ง ๊ฒฝ๊ณ ๋ก ์ด์ด์ง์ง๋ง GCC์ ํตํฉ ์ ์ฒ๋ฆฌ๊ธฐ๋
์ด๋ฌํ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฅผ ํผํ๊ธฐ์ ์ถฉ๋ถํ ์ปจํ ์คํธ์ ๋๋ค.
ยท ํ ๋ธ๋ก์์ ์ธ๋ถ๋ก ์ ์ธ๋ ํจ์๋ ์ข ๋ฃ ํ ์ฌ์ฉ
๋ธ๋ก.
ยท "switch" ๋ฌธ์๋ "long" ์ ํ์ ํผ์ฐ์ฐ์๊ฐ ์์ต๋๋ค.
ยท "์ ์ "์ด ์๋ ํจ์ ์ ์ธ์ "์ ์ " ์ ์ธ ๋ค์์ ์ต๋๋ค. ์ด ๊ตฌ์ฑ์
์ผ๋ถ ์ ํต์ ์ธ C ์ปดํ์ผ๋ฌ์์ ํ์ฉ๋ฉ๋๋ค.
ยท ์ ์ ์์์ ISO ์ ํ์ ๋๋น ๋๋ ๋ถํธ๊ฐ ๋ค๋ฆ ๋๋ค.
์ ํต์ ์ธ ์ ํ. ์ด ๊ฒฝ๊ณ ๋ ์์์ ๋ฐ์ด XNUMX์ธ ๊ฒฝ์ฐ์๋ง ๋ฐํ๋ฉ๋๋ค.
์ฆ, ์ผ๋ฐ์ ์ผ๋ก ๋นํธ ํจํด์ ๋ํ๋ด๋ XNUMX์ง์ ๋๋ XNUMX์ง์ ๊ฐ์
์ ๋ํด ๊ฒฝ๊ณ ํ์ต๋๋ค.
ยท ISO ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฌ์ฉ์ด ๊ฐ์ง๋์์ต๋๋ค.
ยท ์๋ ์ง๊ณ ์ด๊ธฐํ.
ยท ์๋ณ์๊ฐ ๋ ์ด๋ธ๊ณผ ์ถฉ๋ํฉ๋๋ค. ์ ํต์ ์ธ C์๋ ๋ณ๋์ ๋ค์์คํ์ด์ค๊ฐ ์์ต๋๋ค.
๋ผ๋ฒจ.
ยท ์ ๋์จ ์ด๊ธฐํ. ์ด๋์ ๋ผ์ด์ ๊ฐ XNUMX์ด๋ฉด ๊ฒฝ๊ณ ๊ฐ ์๋ต๋ฉ๋๋ค.
์ด๊ฒ์ ์ฌ์ฉ์ ์ฝ๋์ XNUMX ์ด๊ธฐํ๊ฐ ๋ํ๋๋ค๋ ๊ฐ์ ํ์ ์ํ๋ฉ๋๋ค.
์ด๊ธฐํ ๊ฒฝ๊ณ ๋๋ฝ์ ํผํ๊ธฐ ์ํด ์๋ฅผ ๋ค์ด "__STDC__"๋ฅผ ์กฐ๊ฑด์ผ๋ก ํ๊ณ
์ ํต์ ์ธ C์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ด๊ธฐํ๋ XNUMX์ ๋๋ค.
ยท ๊ณ ์ /๋ถ๋ ์์์ ๊ฐ๊ณผ ๊ทธ ๋ฐ๋๋ก ํ๋กํ ํ์ ์ ์ํ ๋ณํ. NS
์ ํต์ ์ธ C๋ก ์ปดํ์ผํ ๋ ์ด๋ฌํ ํ๋กํ ํ์ ์ด ์์ผ๋ฉด ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ฌธ์ . ์ด๊ฒ์ ๊ฐ๋ฅํ ์ ํ ๊ฒฝ๊ณ ์ ํ์ ์งํฉ์ ๋๋ค. ํ ์ธํธ๋ฅผ ์ํด
์ฌ์ฉ -์ ํต ๋ณํ.
ยท ISO C ์คํ์ผ ๊ธฐ๋ฅ ์ ์ ์ฌ์ฉ. ์ด ๊ฒฝ๊ณ ๋ ์๋์ ์ผ๋ก ์ง์ ๋ฐํ
์ด๋ฌํ ISO C ๊ธฐ๋ฅ ๋๋ฌธ์ ํ๋กํ ํ์ ์ ์ธ ๋๋ ๊ฐ๋ณ ํจ์์ ๋ํด
libiberty์ ์ ํต์ ์ธ C ํธํ์ฑ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ ๋ ์ฝ๋์ ๋ํ๋ฉ๋๋ค.
"PARAMS" ๋ฐ "VPARAMS". ์ด ๊ฒฝ๊ณ ๋ ์ค์ฒฉ๋ ํจ์์ ๋ํด์๋ ๋ฌด์๋ฉ๋๋ค.
ํด๋น ๊ธฐ๋ฅ์ ์ด๋ฏธ GCC ํ์ฅ์ด๋ฏ๋ก ๋ค์๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
์ ํต์ ์ธ C ํธํ์ฑ.
-์ ํต ๋ณํ (C ๋ฐ Objective-C๋ง ํด๋น)
ํ๋กํ ํ์ ์ด ๋ฐ์ํ๋ ๊ฒ๊ณผ ๋ค๋ฅธ ์ ํ ๋ณํ์ ์ผ์ผํค๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ
ํ๋กํ ํ์ ์ด ์๋ ๊ฒฝ์ฐ ๋์ผํ ์ธ์์ ๋ํด ์ค๋ช ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ ์ ํ์ด ํฌํจ๋ฉ๋๋ค.
๊ณ ์ ์์์ ์ ๋ถ๋ ์์์ ์ผ๋ก ๋๋ ๊ทธ ๋ฐ๋๋ก ๋ณํํ๊ณ ๋๋น๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋
๊ธฐ๋ณธ ์น๊ฒฉ๊ณผ ๋์ผํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๊ณ ์ ์์์ ์ธ์์ ๋ถํธ.
-W์ ์ธ ํ ์ ์ธ (C ๋ฐ Objective-C๋ง ํด๋น)
๋ธ๋ก์ ๋ช ๋ น๋ฌธ ๋ค์์ ์ ์ธ์ด ๋ฐ๊ฒฌ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. ์๋ ค์ง ์ด ๊ตฌ์ฑ์
C++์์ ISO C99์ ํจ๊ป ๋์ ๋์์ผ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก GCC์์ ํ์ฉ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค
ISO C90์์ ์ง์๋๋ฉฐ GCC 3.0 ์ด์ ์ GCC ๋ฒ์ ์์๋ ์ง์๋์ง ์์์ต๋๋ค.
-๋ถ๋ฐํ
์ ์๋์ง ์์ ์๋ณ์๊ฐ #๋ง์ฝ ์ง์นจ.
-Wno-endif-๋ ์ด๋ธ
๊ฒฝ๊ณ ํ์ง ์์ #๊ทธ๋ฐ์ ๋๋ #endif ํ ์คํธ๊ฐ ์ด์ด์ง๋๋ค.
-W์๋์ฐ
์ง์ญ ๋ณ์ ๋๋ ์ ํ ์ ์ธ์ด ๋ค๋ฅธ ๋ณ์์ ๊ทธ๋ฆผ์๋ฅผ ์ค ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
๋งค๊ฐ๋ณ์, ์ ํ ๋๋ ํด๋์ค ๋ฉค๋ฒ(C++์์) ๋๋ ๋ด์ฅ ํจ์๊ฐ
๊ทธ๋ฆผ์. C++์์ ์ปดํ์ผ๋ฌ๋ ์ง์ญ ๋ณ์๊ฐ ๋ช ์์
typedef์ด์ง๋ง ๊ตฌ์กฐ์ฒด/ํด๋์ค/์ด๊ฑฐํ์ ๊ฐ๋ฆฌ๋ ๊ฒฝ์ฐ์๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
-๋ณด๋ค ํผ=๋
๋ค์๋ณด๋ค ํฐ ๊ฐ์ฒด๊ฐ ์์ ๋๋ง๋ค ๊ฒฝ๊ณ ๋ ๋ฐ์ดํธ๊ฐ ์ ์๋ฉ๋๋ค.
-Wframe-๋ณด๋ค ํผ=๋
ํจ์ ํ๋ ์์ ํฌ๊ธฐ๊ฐ ๋ค์๋ณด๋ค ํฌ๋ฉด ๊ฒฝ๊ณ ๋ ๋ฐ์ดํธ. ๊ณ์ฐ ์๋ฃ
์คํ ํ๋ ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ๊ทผ์ฌ์น์ด๋ฉฐ ๋ณด์์ ์ด์ง ์์ต๋๋ค. ์ค์
์๊ตฌ ์ฌํญ์ ๋ค์๋ณด๋ค ๋ค์ ํด ์ ์์ต๋๋ค. ๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ง ๋ชปํ๋๋ผ๋. ์
๋ํ "alloca", ๊ฐ๋ณ ๊ธธ์ด ๋ฐฐ์ด ๋๋ ๊ด๋ จ์ ํตํด ํ ๋น๋ ๋ชจ๋ ๊ณต๊ฐ
์์ฑ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ๋ ์ปดํ์ผ๋ฌ์์ ๊ตฌ๋ฌธ์ ํฌํจํ์ง ์์ต๋๋ค.
๊ฒฝ๊ณ .
-Wno-free-nonheap-๊ฐ์ฒด
ํ์ ํ ๋น๋์ง ์์ ๊ฐ์ฒด๋ฅผ ํด์ ํ๋ ค๊ณ ํ ๋ ๊ฒฝ๊ณ ํ์ง ๋ง์ญ์์ค.
-Wstack ์ฌ์ฉ=๋
ํจ์์ ์คํ ์ฌ์ฉ๋์ด ๋ค์๋ณด๋ค ํด ์ ์์์ ๊ฒฝ๊ณ ํฉ๋๋ค. ๋ ๋ฐ์ดํธ. ๊ณ์ฐ
์คํ ์ฌ์ฉ๋์ด ๋ณด์์ ์ธ์ง ํ์ธํ๊ธฐ ์ํด ์ํ๋ฉ๋๋ค. "alloca"๋ฅผ ํตํด ํ ๋น๋ ๋ชจ๋ ๊ณต๊ฐ,
๊ฐ๋ณ ๊ธธ์ด ๋ฐฐ์ด ๋๋ ๊ด๋ จ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ์ ์ํด ํฌํจ๋ฉ๋๋ค.
๊ฒฝ๊ณ ๋ฅผ ๋ฐํํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
๋ฉ์์ง๋ ์ ์ถ๋ ฅ๊ณผ ์ผ์นํฉ๋๋ค. -fstack-์ฌ์ฉ.
ยท ์คํ ์ฌ์ฉ๋์ด ์์ ํ ์ ์ ์ด์ง๋ง ์ง์ ๋ ์์ ์ด๊ณผํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฒฝ๊ณ : ์คํ ์ฌ์ฉ๋์ 1120๋ฐ์ดํธ์ ๋๋ค.
ยท ์คํ ์ฌ์ฉ์ด (๋ถ๋ถ์ ์ผ๋ก) ๋์ ์ด์ง๋ง ์ ํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฒฝ๊ณ : ์คํ ์ฌ์ฉ๋์ 1648๋ฐ์ดํธ์ผ ์ ์์ต๋๋ค.
ยท ์คํ ์ฌ์ฉ์ด (๋ถ๋ถ์ ์ผ๋ก) ๋์ ์ด๊ณ ์ ํ๋์ง ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฒฝ๊ณ : ์คํ ์ฌ์ฉ๋์ด ์ ํ๋์ง ์์ ์ ์์ต๋๋ค.
-Wunsafe ๋ฃจํ ์ต์ ํ
์ปดํ์ผ๋ฌ๊ฐ ์๋ฌด ๊ฒ๋ ๊ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฃจํ๋ฅผ ์ต์ ํํ ์ ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค.
๋ฃจํ ์ธ๋ฑ์ค์ ๊ฒฝ๊ณ. ์ ํจ๊ป -ํ์ธ์ดํ ๋ฃจํ ์ต์ ํ ์ปดํ์ผ๋ฌ์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ
๊ทธ๋ฐ ๊ฐ์ ์ ํฉ๋๋ค.
-Wno-pedantic-ms-ํ์ (MinGW ๋์๋ง ํด๋น)
์ ํจ๊ป ์ฌ์ฉ์ -Wํฌ๋งท and -ํ๋จ ํฑ GNU ํ์ฅ ์์ด ์ด๊ฒ์
์ต์ ์ ๋น ISO "printf" / "scanf" ํ์ ๋๋น ์ง์ ์์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
"I32", "I64" ๋ฐ "I"๋ MS ๋ฐํ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ Windows ๋์์์ ์ฌ์ฉ๋ฉ๋๋ค.
-Wpointer-arith
ํจ์ ์ ํ ๋๋ "๋ฌดํจ"์ "ํฌ๊ธฐ"์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ๋ชจ๋ ๊ฒ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. GNU C
"void *"๋ฅผ ์ฌ์ฉํ ๊ณ์ฐ์ ํธ์๋ฅผ ์ํด ์ด๋ฌํ ์ ํ์ ํฌ๊ธฐ๋ฅผ 1๋ก ์ง์ ํฉ๋๋ค.
ํจ์์ ๋ํ ํฌ์ธํฐ์ ํฌ์ธํฐ. C++์์๋ ์ฐ์ ์ฐ์ฐ์ด ์ํ๋ ๋๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
"NULL"์ด ํฌํจ๋ฉ๋๋ค. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด์๋ ํ์ฑํ๋ฉ๋๋ค. -Wpedantic.
-W ์ ํ ์ ํ
์ ํ๋ ๋ฒ์๋ก ์ธํด ๋น๊ต๊ฐ ํญ์ ์ฐธ์ธ์ง ํญ์ ๊ฑฐ์ง์ธ์ง ๊ฒฝ๊ณ ํฉ๋๋ค.
๋ฐ์ดํฐ ์ ํ์ด์ง๋ง ์์ ํํ์์ ๋ํด์๋ ๊ฒฝ๊ณ ํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ช ๋์ง ์์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ
๋ณ์๋ XNUMX๊ณผ ๋น๊ต๋ฉ๋๋ค. < or >=. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด์๋ ํ์ฑํ๋ฉ๋๋ค.
-์ฉ์คํธ๋ผ.
-Wbad ํจ์ ์บ์คํธ (C ๋ฐ Objective-C๋ง ํด๋น)
ํจ์ ํธ์ถ์ด ์ผ์นํ์ง ์๋ ์ ํ์ผ๋ก ์บ์คํ ๋ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค.
"int malloc()"์ "anything *"์ผ๋ก ์บ์คํ ๋ฉ๋๋ค.
-Wc++-ํธํ (C ๋ฐ Objective-C๋ง ํด๋น)
ISO C ๋ฐ ISO์ ๊ณตํต ํ์ ์งํฉ ์ธ๋ถ์ ์๋ ISO C ๊ตฌ์ฑ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
C++, ์๋ฅผ ๋ค์ด "void *"์์ "void"๊ฐ ์๋ ํฌ์ธํฐ๋ก์ ์์์ ๋ณํ ์์ฒญ
์ ํ.
-Wc++11-ํธํ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
ISO C++ 1998๊ณผ ISO C++ 2011์์ ์๋ฏธ๊ฐ ๋ค๋ฅธ C++ ๊ตฌ๋ฌธ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
์: ISO C++ 1998์ ํค์๋์ธ ISO C++ 2011์ ์๋ณ์. ์ด ๊ฒฝ๊ณ
์ผ๋ค - ์ถ์ ์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
-Wcast๊ธ
๋์ ์ ํ์์ ์ ํ ํ์ ์๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ํฌ์ธํฐ๊ฐ ์บ์คํธ๋ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด "const char *"๊ฐ ์ผ๋ฐ "char *"๋ก ์บ์คํ ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
๋ํ ์์ ํ์ง ์์ ๋ฐฉ์์ผ๋ก ํ์ ํ์ ์๋ฅผ ๋์ ํ๋ ์บ์คํธ๋ฅผ ๋ง๋ค ๋ ๊ฒฝ๊ณ ํฉ๋๋ค. ์์ํ
์๋ฅผ ๋ค์ด "char **"๋ฅผ "const char **"๋ก ์บ์คํ ํ๋ ๊ฒ์ ๋ค์ ์์ ๊ฐ์ด ์์ ํ์ง ์์ต๋๋ค.
/* p๋ char ** ๊ฐ์ ๋๋ค. */
const char **q = (const char **) p;
/* ์ฝ๊ธฐ ์ ์ฉ ๋ฌธ์์ด์ const char *์ ํ ๋นํ๋ ๊ฒ์ OK์ ๋๋ค. */
*q = "๋ฌธ์์ด";
/* ์ด์ char** ํฌ์ธํฐ๊ฐ ์ฝ๊ธฐ ์ ์ฉ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. */
**p = 'b';
-Wcast ์ ๋ ฌ
๋์์ ํ์ํ ์ ๋ ฌ์ด ๋ค์๊ณผ ๊ฐ์ด ํฌ์ธํฐ๊ฐ ์บ์คํ ๋ ๋๋ง๋ค ๊ฒฝ๊ณ ํฉ๋๋ค.
์ฆ๊ฐํ๋ค. ์๋ฅผ ๋ค์ด "char *"๊ฐ ๋ค์๊ณผ ๊ฐ์ ์์คํ ์์ "int *"๋ก ์บ์คํ ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ ์๋ XNUMX๋ฐ์ดํธ ๋๋ XNUMX๋ฐ์ดํธ ๊ฒฝ๊ณ์์๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค.
-๋ฌธ์์ด ์ฐ๊ธฐ
C๋ฅผ ์ปดํ์ผํ ๋ ๋ฌธ์์ด ์์์ "const char[๊ธธ์ด]" ๊ทธ๋์ ๋ณต์ฌ
ํ๋์ ์ฃผ์๋ฅผ "const"๊ฐ ์๋ "char *" ํฌ์ธํฐ๋ก ์ง์ ํ๋ฉด ๊ฒฝ๊ณ ๊ฐ ์์ฑ๋ฉ๋๋ค. ์ด๊ฒ๋ค
๊ฒฝ๊ณ ๋ ์ปดํ์ผ ์๊ฐ์ ๋ฌธ์์ด์ ์ฐ๋ ค๊ณ ํ ์ ์๋ ์ฝ๋๋ฅผ ์ฐพ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์์์ด์ง๋ง ์ ์ธ์์ "const"๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๋งค์ฐ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ธ ๊ฒฝ์ฐ์๋ง
๊ทธ๋ฆฌ๊ณ ํ๋กํ ํ์ . ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ทธ๊ฒ์ ๋จ์ง ๊ท์ฐฎ์ ์ผ์ ๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ๋ง๋ค์ง ์์ ์ด์ ์ ๋๋ค -๋ฒฝ
์ด๋ฌํ ๊ฒฝ๊ณ ๋ฅผ ์์ฒญํ์ญ์์ค.
C++๋ฅผ ์ปดํ์ผํ ๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์์ "char
*". ์ด ๊ฒฝ๊ณ ๋ C++ ํ๋ก๊ทธ๋จ์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
-ํด๋ก๋ฒ๋
๋ค์์ ์ํด ๋ณ๊ฒฝ๋ ์ ์๋ ๋ณ์์ ๋ํด ๊ฒฝ๊ณ ๋กฑ์ ์ํ or vfork. ์ด ๊ฒฝ๊ณ ๋
ํ์ฑํ ๋ -์ฉ์คํธ๋ผ.
-W๋ณํ
๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ์์์ ๋ณํ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ ํ์ด ํฌํจ๋ฉ๋๋ค.
"x"๊ฐ "๋๋ธ"์ธ ๊ฒฝ์ฐ "abs (x)"์ ๊ฐ์ด ์ค์์ ์ ์ ์ฌ์ด; ์ฌ์ด์ ์ ํ
"unsigned ui = -1"๊ณผ ๊ฐ์ด ์๋ช ๋ ๊ฒ๊ณผ ์๋ช ๋์ง ์์ ๊ฒ; ๋ค์๊ณผ ๊ฐ์ ๋ ์์ ์ ํ์ผ๋ก์ ๋ณํ
"sqrtf(M_PI)". "abs ((int) x)" ๋ฐ "ui =
(unsigned) -1" ๋๋ "abs (2.0)"์ ๊ฐ์ด ๋ณํ์ ์ํด ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋ ๊ฒฝ์ฐ.
๋ถํธ ์๋ ์ ์์ ๋ถํธ ์๋ ์ ์ ๊ฐ์ ๋ณํ์ ๋ํ ๊ฒฝ๊ณ ๋ ๋ค์๊ณผ ๊ฐ์ด ๋นํ์ฑํํ ์ ์์ต๋๋ค.
์ฌ์ฉ -Wno-sign-๋ณํ.
C++์ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ ์ ๋ณํ์ ๋ํ ํผ๋์ค๋ฌ์ด ๊ณผ๋ถํ ํด๊ฒฐ์ ๋ํด์๋ ๊ฒฝ๊ณ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ
์ ํ ๋ณํ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ณํ: "void"๋ก์ ๋ณํ, ๋์ผ
์ ํ, ๊ธฐ๋ณธ ํด๋์ค ๋๋ ์ฐธ์กฐ. ์๋ช ๋ ์ฌ์ด์ ๋ณํ์ ๋ํ ๊ฒฝ๊ณ
๋ฐ ๋ถํธ ์๋ ์ ์๋ C++์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค. -Wsign ๋ณํ is
๋ช ์์ ์ผ๋ก ํ์ฑํ๋์์ต๋๋ค.
-Wno ๋ณํ null (C++ ๋ฐ Objective-C++๋ง ํด๋น)
"NULL"๊ณผ ํฌ์ธํฐ๊ฐ ์๋ ์ ํ ๊ฐ์ ๋ณํ์ ๋ํด ๊ฒฝ๊ณ ํ์ง ๋ง์ญ์์ค. -wconversion-null. is
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
-Wzero-as-null-ํฌ์ธํฐ ์์ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
๋ฆฌํฐ๋ด '0'์ด ๋ ํฌ์ธํฐ ์์๋ก ์ฌ์ฉ๋ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด๊ฒ์ ์ ์ฉํ ์ ์์ต๋๋ค
C++11์์ "nullptr"๋ก์ ๋ณํ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
-์ธ๋ฐ์๋ ์บ์คํ (C++ ๋ฐ Objective-C++๋ง ํด๋น)
ํํ์์ด ์์ฒด ์ ํ์ผ๋ก ์บ์คํธ๋ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
- ๋ฉํ ๋ชธ
๋น ๋ฐ๋๊ฐ ๋ฐ์ํ๋ฉด ๊ฒฝ๊ณ if, ๊ทธ๋ ์ง ์์ผ๋ฉด or do ๋์ ์ฑ๋ช . ์ด ๊ฒฝ๊ณ ๋
์ ์ํด ํ์ฑํ๋จ -์ฉ์คํธ๋ผ.
-Wenum-๋น๊ต
๋ค๋ฅธ ์ด๊ฑฐ ์ ํ์ ๊ฐ ๊ฐ์ ๋น๊ต์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. C++ ์ด๊ฑฐํ์์
์กฐ๊ฑด์์ ๋ถ์ผ์น๋ ์ง๋จ๋๊ณ ๊ฒฝ๊ณ ๊ฐ ํ์ฑํ๋ฉ๋๋ค.
๊ธฐ๋ณธ. C์์ ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
-Wjump-๋ฏธ์ค-์ด๊ธฐํ (C, Objective-C ์ ์ฉ)
"goto" ๋ฌธ ๋๋ "switch" ๋ฌธ์ด ๊ฐ๋ก์ง๋ฌ ์์ผ๋ก ์ ํํ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
๋ณ์ ์ด๊ธฐํ ๋๋ ๋ณ์๊ฐ ์๋ฃ๋ ํ ๋ ์ด๋ธ๋ก ๋ค๋ก ์ ํ
์ด๊ธฐํ. ์ด๊ฒ์ ์ด๊ธฐํ๋ ๋ ์ด๊ธฐํ๋๋ ๋ณ์์ ๋ํด์๋ง ๊ฒฝ๊ณ ํฉ๋๋ค.
์ ์ธํ๋ค. ์ด ๊ฒฝ๊ณ ๋ C ๋ฐ Objective-C์์๋ง ์ง์๋ฉ๋๋ค. C++์์ ์ด๋ฐ ์ข ๋ฅ์
๋ถ๊ธฐ๋ ์ด๋ค ๊ฒฝ์ฐ์๋ ์ค๋ฅ์ ๋๋ค.
-Wjump-๋ฏธ์ค-์ด๊ธฐํ ์ ํฌํจ -Wc++-ํธํ. ๋ก ๋นํ์ฑํํ ์ ์์ต๋๋ค.
-Wno-์ ํ ๋ฏธ์ค-์ด๊ธฐํ ์ต์ ์ ์ ํํฉ๋๋ค.
-Wsign-๋น๊ต
๋ถํธ ์๋ ๊ฐ๊ณผ ๋ถํธ ์๋ ๊ฐ์ ๋น๊ตํ๋ฉด ์๋ชป๋ ๊ฐ์ด ์์ฑ๋ ์ ์์์ ๊ฒฝ๊ณ ํฉ๋๋ค.
๋ถํธ ์๋ ๊ฐ์ด ๋ถํธ ์๋ ๊ฐ์ผ๋ก ๋ณํ๋ ๋์ ๊ฒฐ๊ณผ์ ๋๋ค. ์ด ๊ฒฝ๊ณ ๋ ํ์ฑํ๋์ด ์์ต๋๋ค.
by -์ฉ์คํธ๋ผ; ๋ค๋ฅธ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ๊ธฐ ์ํด -์ฉ์คํธ๋ผ ์ด ๊ฒฝ๊ณ ์์ด ์ฌ์ฉ -์ฉ์คํธ๋ผ
-Wno-sign-๋น๊ต.
-Wsign ๋ณํ
๋ค์๊ณผ ๊ฐ์ด ์ ์ ๊ฐ์ ๋ถํธ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ์์์ ๋ณํ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
๋ถํธ ์๋ ์ ์ ํํ์์ ๋ถํธ ์๋ ์ ์ ๋ณ์์ ํ ๋นํฉ๋๋ค. ๋ช ์์
์บ์คํธ๋ ๊ฒฝ๊ณ ๋ฅผ ์นจ๋ฌต์ํต๋๋ค. C์์ ์ด ์ต์ ์ ๋ค์์ ์ํด์๋ ํ์ฑํ๋ฉ๋๋ค. -W๋ณํ.
-Wsizeof-pointer-memaccess
ํน์ ๋ฌธ์์ด ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ด์ฅ ํจ์์ ๋ํ ์์ฌ์ค๋ฌ์ด ๊ธธ์ด ๋งค๊ฐ๋ณ์ ๊ฒฝ๊ณ
์ธ์๊ฐ "sizeof"๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ. ์ด ๊ฒฝ๊ณ ๋ "memset(ptr, 0, sizeof
(ptr));" "ptr"์ด ๋ฐฐ์ด์ด ์๋๋ผ ํฌ์ธํฐ์ด๊ณ ๊ฐ๋ฅํ ์์ ์ ์ ์ํ๋ ๊ฒฝ์ฐ ๋๋
"memcpy(&foo, ptr, sizeof(&foo))"์ ๋ํด. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
-์๋๋ ์ค
๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์์ฌ์ค๋ฌ์ด ์ฌ์ฉ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
"void func(void); if(func)"์ ๊ฐ์ ์กฐ๊ฑด์์ ํจ์ ๋ฐ
"if (x == "abc")"์ ๊ฐ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ํ ๋น๊ต.
์ด๋ฌํ ์ฌ์ฉ์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋๋จธ ์ค๋ฅ๋ฅผ ๋ํ๋ ๋๋ค. ํจ์์ ์ฃผ์๋ ํญ์
true๋ก ํ๊ฐ๋๋ฏ๋ก ์กฐ๊ฑด๋ถ์์ ์ฌ์ฉํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋๋จธ๊ฐ
ํจ์ ํธ์ถ์์ ๊ดํธ๋ฅผ ์์ด ๋ฒ๋ ธ์ต๋๋ค. ๋ฌธ์์ด ๋ฆฌํฐ๋ด๊ณผ์ ๋น๊ต
์ง์ ๋์ง ์์ ๋์์ด ๋ฐ์ํ๊ณ C์์ ์ด์ ๊ฐ๋ฅํ์ง ์์ผ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ๋ํ๋ ๋๋ค.
ํ๋ก๊ทธ๋๋จธ๊ฐ "strcmp"๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ ๊ฒ์ ๋๋ค. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
-W๋ ผ๋ฆฌ์ ์ฐ์ฐ
ํํ์์์ ์์ฌ์ค๋ฌ์ด ๋ ผ๋ฆฌ ์ฐ์ฐ์ ์ฌ์ฉ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ ์ฌ์ฉํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
๋นํธ ๋จ์ ์ฐ์ฐ์๊ฐ ์์๋๋ ์ปจํ ์คํธ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์.
-Waggregate-๋ฆฌํด
๊ตฌ์กฐ์ฒด ๋๋ ๊ณต์ฉ์ฒด๋ฅผ ๋ฐํํ๋ ํจ์๊ฐ ์ ์๋๊ฑฐ๋ ํธ์ถ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. (์
๋ฐฐ์ด์ ๋ฐํํ ์ ์๋ ์ธ์ด์ธ ๊ฒฝ์ฐ์๋ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค.)
- Wno-aggressive-loop ์ต์ ํ
๋ฐ๋ณต ํ์๊ฐ ์ผ์ ํ ๋ฃจํ์์ ์ปดํ์ผ๋ฌ๊ฐ ์ ์๋์ง ์์ ๊ฒ์ ๊ฐ์งํ๋ฉด ๊ฒฝ๊ณ
ํ๋ ์ด์์ ๋ฐ๋ณต ๋์ ์ผ๋ถ ๋ช ๋ น๋ฌธ์ ๋์.
-Wno-์์ฑ
์ธ์ํ ์ ์๋ ์์ฑ๊ณผ ๊ฐ์ด ์๊ธฐ์น ์์ "__attribute__"๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํ์ง ๋ง์ญ์์ค.
๋ณ์ ๋ฑ์ ์ ์ฉ๋ ํจ์ ์์ฑ
์ง์๋๋ ์์ฑ์ ์๋ชป๋ ์ฌ์ฉ.
-Wno ๋ด์ฅ ๋งคํฌ๋ก ์ฌ์ ์
ํน์ ๋ด์ฅ ๋งคํฌ๋ก๊ฐ ์ฌ์ ์๋๋ฉด ๊ฒฝ๊ณ ํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ ๋ค์์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ต๋๋ค.
"__TIMESTAMP__", "__TIME__", "__DATE__", "__FILE__"์ ์ฌ์ ์ ๋ฐ
"__BASE_FILE__".
-Wstrict ํ๋กํ ํ์ (C ๋ฐ Objective-C๋ง ํด๋น)
์ธ์ ์ ํ์ ์ง์ ํ์ง ์๊ณ ํจ์๊ฐ ์ ์ธ๋๊ฑฐ๋ ์ ์๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. (NS
์ด์ ์คํ์ผ์ ํจ์ ์ ์๊ฐ ์์ ์ค๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ์์ด ํ์ฉ๋ฉ๋๋ค.
์ธ์ ์ ํ์ ์ง์ ํ๋ ์ ์ธ).
-Wold ์คํ์ผ ์ ์ธ (C ๋ฐ Objective-C๋ง ํด๋น)
์ ์ธ์์ C ํ์ค์ ๋ฐ๋ผ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ์ฌ์ฉ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์์ํ
์๋ฅผ ๋ค์ด "์ ์ "๊ณผ ๊ฐ์ ์คํ ๋ฆฌ์ง ํด๋์ค ์ง์ ์๊ฐ
์ ์ธ. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด์๋ ํ์ฑํ๋ฉ๋๋ค. -์ฉ์คํธ๋ผ.
-Wold ์คํ์ผ ์ ์ (C ๋ฐ Objective-C๋ง ํด๋น)
๊ตฌ์ ํจ์ ์ ์๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค. ์๋ ๊ฒฝ์ฐ์๋ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค.
์ด์ ํ๋กํ ํ์ .
-Wmissing-๋งค๊ฐ๋ณ์ ์ ํ (C ๋ฐ Objective-C๋ง ํด๋น)
ํจ์ ๋งค๊ฐ๋ณ์๋ K&R ์คํ์ผ ํจ์์์ ์ ํ ์ง์ ์ ์์ด ์ ์ธ๋ฉ๋๋ค.
๋ฌดํจ foo(๋ง๋) { }
์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด์๋ ํ์ฑํ๋ฉ๋๋ค. -์ฉ์คํธ๋ผ.
-Wmissing-ํ๋กํ ํ์ (C ๋ฐ Objective-C๋ง ํด๋น)
์ด์ ํ๋กํ ํ์ ์ ์ธ ์์ด ์ ์ญ ํจ์๊ฐ ์ ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด๊ฒ
์ ์ ์์ฒด๊ฐ ํ๋กํ ํ์ ์ ์ ๊ณตํ๋๋ผ๋ ๊ฒฝ๊ณ ๊ฐ ๋ฐํ๋ฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉ
์ผ์นํ๋ ํ๋กํ ํ์ ์ ์ธ์ด ์๋ ์ ์ญ ํจ์๋ฅผ ๊ฐ์งํ๊ธฐ ์ํด
ํค๋ ํ์ผ. ๋ชจ๋ ํจ์ ์ ์ธ ๋๋ฌธ์ ์ด ์ต์ ์ C++์ ์ ํจํ์ง ์์ต๋๋ค.
ํ๋กํ ํ์ ์ ์ ๊ณตํ๊ณ ์ผ์นํ์ง ์๋ ์ ์ธ์
์ด์ ์ ์ธ๊ณผ ์ถฉ๋ํฉ๋๋ค. ์ฌ์ฉํ๋ค -Wmissing-์ ์ธ ๋๋ฝ์ ๊ฐ์งํ๊ธฐ ์ํด
C++์์ ์ ์ธ.
-Wmissing-์ ์ธ
์ ์ญ ํจ์๊ฐ ์ด์ ์ ์ธ ์์ด ์ ์๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. ๊ฒฝ์ฐ์๋ ๊ทธ๋ ๊ฒ ํ์ญ์์ค
์ ์ ์์ฒด๊ฐ ํ๋กํ ํ์ ์ ์ ๊ณตํฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์ ์ญ
ํค๋ ํ์ผ์ ์ ์ธ๋์ง ์์ ํจ์ C์์๋ ๊ฒฝ๊ณ ๊ฐ ๋ฐํ๋์ง ์์ต๋๋ค.
์ด์ ์ ๋น ํ๋กํ ํ์ ์ ์ธ์ด ์๋ ํจ์; ์ฌ์ฉํ๋ค -Wmissing-ํ๋กํ ํ์ ๊ฐ์ง
๋๋ฝ ๋ ํ๋กํ ํ์ . C++์์๋ ํจ์ ํ ํ๋ฆฟ์ ๋ํด ๊ฒฝ๊ณ ๊ฐ ๋ฐํ๋์ง ์์ต๋๋ค.
์ธ๋ผ์ธ ํจ์ ๋๋ ์ต๋ช ๋ค์์คํ์ด์ค์ ํจ์์ฉ.
-Wmissing-field-initializers
๊ตฌ์กฐ์ ์ด๋์ ๋ผ์ด์ ์ ์ผ๋ถ ํ๋๊ฐ ๋๋ฝ๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์
"xh"๊ฐ ์์์ ์ผ๋ก XNUMX์ด๊ธฐ ๋๋ฌธ์ ์ฝ๋์์ ์ด๋ฌํ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ตฌ์กฐ์ฒด s { int f, g, h; };
๊ตฌ์กฐ์ฒด sx = { 3, 4 };
์ด ์ต์ ์ ์ง์ ๋ ์ด๋์ ๋ผ์ด์ ์ ๋ํด ๊ฒฝ๊ณ ํ์ง ์์ผ๋ฏ๋ก ๋ค์ ์์
๊ฒฝ๊ณ ๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ง ์์ต๋๋ค:
๊ตฌ์กฐ์ฒด s { int f, g, h; };
๊ตฌ์กฐ์ฒด sx = { .f = 3, .g = 4 };
์ด ๊ฒฝ๊ณ ๋ -์ฉ์คํธ๋ผ. ๋ค๋ฅธ ๊ฒ์ ์ป์ผ๋ ค๋ฉด -์ฉ์คํธ๋ผ ์ด๊ฒ์ด ์์ผ๋ฉด ๊ฒฝ๊ณ ,
์ฌ์ฉ -์ฉ์คํธ๋ผ -Wno-missing-field-initializers.
-Wno-๋ค์ค ๋ฌธ์
๋ค์ค ๋ฌธ์ ์์('ํธํ') ์ฌ์ฉ. ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ค์ ๋ํ๋ ๋๋ค
์ฌ์ฉ์ ์ฝ๋์ ์คํ๋ ๊ตฌํ์ ์ ์๋ ๊ฐ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์
์ด์ ๊ฐ๋ฅํ ์ฝ๋์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ ๊ทํ =
ISO C ๋ฐ ISO C++์์ ๋ ์๋ณ์๋ ์๋ก ๋ค๋ฅธ ์ํ์ค์ธ ๊ฒฝ์ฐ ์๋ก ๋ค๋ฆ ๋๋ค.
๋ฌธ์. ๊ทธ๋ฌ๋ ๋๋๋ก ๊ธฐ๋ณธ ASCII ๋ฌธ์ ์งํฉ ์ด์ธ์ ๋ฌธ์๊ฐ
์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ๋์ผํ๊ฒ ๋ณด์ด๋ ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ๋ฌธ์ ์ํ์ค๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ํผํ๊ธฐ ์ํด
ํผ๋, ISO 10646 ํ์ค์ ๋ช ๊ฐ์ง ํ์คํ ๊ท์น ์ ์ฉํ ๋
๊ฐ์ ๋ณด์ด๋ ๋ ์ํ์ค๊ฐ โโ๋์ผํ ์ํ์ค๋ก ๋ฐ๋๋์ง ํ์ธํฉ๋๋ค. GCC
์ ๊ทํ๋์ง ์์ ์๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํ ์ ์์ต๋๋ค. ์ด ์ต์
ํด๋น ๊ฒฝ๊ณ ๋ฅผ ์ ์ดํฉ๋๋ค.
GCC์์ ์ง์ํ๋ ๊ฒฝ๊ณ ์๋ ๋ค ๊ฐ์ง ์์ค์ด ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -ํ์คํ=nfc,
ISO 10646 "C" ์ ๊ทํ ํ์์ด ์๋ ์๋ณ์์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
NFC. NFC๋ ๋๋ถ๋ถ์ ์ฉ๋์ ๊ถ์ฅ๋๋ ํ์์ ๋๋ค.
๋ถํํ๋ ISO C ๋ฐ ISO C++์์ ์๋ณ์์ ํ์ฉ๋๋ ์ผ๋ถ ๋ฌธ์๊ฐ ์์ต๋๋ค.
NFC๋ก ์ ํ๋๋ฉด ์๋ณ์์์ ํ์ฉ๋์ง ์์ต๋๋ค. ์ฆ ๋ฐฉ๋ฒ์ด ์๋ค.
ํด๋์ฉ ISO C ๋๋ C++์์ ์ด๋ฌํ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๊ณ NFC์ ๋ชจ๋ ์๋ณ์๋ฅผ ํฌํจํฉ๋๋ค.
-ํ์คํ=id ์ด ๋ฌธ์์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ต๋๋ค. ๋ฏธ๋๊ฐ ๊ธฐ๋๋๋ค
๊ด๋ จ๋ ํ์ค ๋ฒ์ ์ด ์ด๋ฅผ ์์ ํ๋ฏ๋ก ์ด ์ต์ ์ด
๊ธฐ๋ณธ๊ฐ.
๋ค์์ ์์ฑํ์ฌ ๋ชจ๋ ๋ฌธ์์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ๋ ์ ์์ต๋๋ค. -W์ ๊ทํ=์์. ๋น์
๋ค๋ฅธ ์ ๊ทํ ์ฒด๊ณ(์: "D")๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ์ด ์์ ์ ์ํํด์ผ ํฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฌธ์ ๊ทธ๋๋ก ๋ณผ ์ ์๋ ๋ฒ๊ทธ๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
ISO 10646์ ์ผ๋ถ ๋ฌธ์๋ ๊ณ ์ ํ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ง ์ผ๋ถ ๊ธ๊ผด์์๋ ๋์ผํ๊ฒ ๋ณด์ ๋๋ค.
ํนํ ํฌ๋งท์ด ์ ์ฉ๋ ํ์๋ ๋ฐฉ๋ฒ๋ก ์ ํ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด
"\u207F", "SUPERSCRIPT LATIN SMALL LETTER N"์ ์ผ๋ฐ "n"์ฒ๋ผ ํ์๋ฉ๋๋ค.
์ ์ฒจ์์ ๋ฐฐ์น๋์์ต๋๋ค. ISO 10646์ ๋ค์์ ์ ์ํฉ๋๋ค. NFKC ์ ๊ทํ ๊ณํ
์ด ๋ชจ๋ ๊ฒ์ ํ์ค ํ์์ผ๋ก๋ ๋ณํํ๋ฉด GCC์์ ์ฝ๋๊ฐ
NFKC๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ -ํ์คํ=nfkc. ์ด ๊ฒฝ๊ณ ๋ ๋ชจ๋
์ซ์ 0๊ณผ ํผ๋๋ ์ ์์ผ๋ฏ๋ก ๋ฌธ์ O๊ฐ ํฌํจ๋ ์๋ณ์,
๋ฐ๋ผ์ ๊ธฐ๋ณธ๊ฐ์ ์๋์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ก์ปฌ ์ฝ๋ฉ ๊ท์น์ผ๋ก ์ ์ฉํ ์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ ์ด๋ฌํ ๋ฌธ์๋ฅผ ๋๋ ทํ๊ฒ ํ์ํ๋๋ก ์์ ํ ์ ์์ต๋๋ค.
- ๋ ์ด์ ์ฌ์ฉ๋์ง ์์
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ์ ๋ํด ๊ฒฝ๊ณ ํ์ง ๋ง์ญ์์ค.
-Wno-deprecated-์ ์ธ
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ฒ์ผ๋ก ํ์๋ ํจ์, ๋ณ์ ๋ฐ ์ ํ์ ์ฌ์ฉ์ ๋ํด ๊ฒฝ๊ณ ํ์ง ๋ง์ญ์์ค.
"deprecated" ์์ฑ์ ์ฌ์ฉํฉ๋๋ค.
-Wno ์ค๋ฒํ๋ก
์์ ํํ์์์ ์ปดํ์ผ ํ์ ์ค๋ฒํ๋ก์ ๋ํด ๊ฒฝ๊ณ ํ์ง ๋ง์ญ์์ค.
-Woverride ์ด๊ธฐํ (C ๋ฐ Objective-C๋ง ํด๋น)
์ง์ ๋ ์ฌ์ฉ ์ ๋ถ์์ฉ์ด ์๋ ์ด๊ธฐํ๋ ํ๋๊ฐ ์ฌ์ ์๋๋ฉด ๊ฒฝ๊ณ
์ด๋์ ๋ผ์ด์ .
์ด ๊ฒฝ๊ณ ๋ -์ฉ์คํธ๋ผ. ๋ค๋ฅธ ๊ฒ์ ์ป์ผ๋ ค๋ฉด -์ฉ์คํธ๋ผ ์ด๊ฒ์ด ์์ผ๋ฉด ๊ฒฝ๊ณ ,
์ฌ์ฉ -์ฉ์คํธ๋ผ -Wno-์ฌ์ ์-์ด๊ธฐํ.
-Wํฌ์ฅ
๊ตฌ์กฐ์ ํจํน๋ ์์ฑ์ด ์ง์ ๋์ด ์์ง๋ง ํจํน๋ ์์ฑ์ ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค.
๊ตฌ์กฐ์ ๋ ์ด์์์ด๋ ํฌ๊ธฐ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ชป ์ ๋ ฌ๋ ์ ์์ต๋๋ค.
์์ ์ด์ต. ์๋ฅผ ๋ค์ด, ์ด ์ฝ๋์์ "struct bar"์ ๋ณ์ "fx"๋
"struct bar" ์์ฒด์ ํจํน๋ ์์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ ์๋ชป ์ ๋ ฌ๋จ:
๊ตฌ์กฐ์ฒด foo {
int x;
๋ฌธ์ a, b, c, d;
} __attribute __ ((packed));
๊ตฌ์กฐ์ฒด ๋ง๋ {
๋ฌธ์ Z;
๊ตฌ์กฐ์ฒด foo f;
};
-Wpacked-bitfield-compat
GCC์ 4.1, 4.2 ๋ฐ 4.3 ์๋ฆฌ์ฆ๋ ๋ค์ ์ ํ์ ๋นํธ ํ๋์์ "packed" ์์ฑ์ ๋ฌด์ํฉ๋๋ค.
"์ฏ". ์ด๊ฒ์ GCC 4.4์์ ์์ ๋์์ง๋ง ๋ณ๊ฒฝ์ผ๋ก ์ธํด
๊ตฌ์กฐ ๋ ์ด์์. GCC์์ ์ด๋ฌํ ํ๋์ ์คํ์ ์ด ๋ณ๊ฒฝ๋๋ฉด GCC์์ ์๋ ค์ค๋๋ค.
4.4. ์๋ฅผ ๋ค์ด "a" ํ๋์ "b" ํ๋ ์ฌ์ด์ ๋ ์ด์ 4๋นํธ ํจ๋ฉ์ด ์์ต๋๋ค.
๊ตฌ์กฐ:
๊ตฌ์กฐ foo
{
๋ฌธ์ a:4;
๋ฌธ์ b:8;
} __attribute__ ((ํฌ์ฅ));
์ด ๊ฒฝ๊ณ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. ์ฌ์ฉํ๋ค -Wno-packed-bitfield-compat ์ด๊ฒ์ ๋นํ์ฑํํ๋ ค๋ฉด
๊ฒฝ๊ณ .
-Wํจ๋ฉ
ํจ๋ฉ์ด ๊ตฌ์กฐ์ฒด์ ํฌํจ๋์ด ์์ผ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
๊ตฌ์กฐ ๋๋ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ์ ๋ ฌํฉ๋๋ค. ๊ฐ๋ ์ด๋ฐ ์ผ์ด ์์ ๋ ๊ฐ๋ฅํ๋ค
ํจ๋ฉ์ ์ค์ด๊ธฐ ์ํด ๊ตฌ์กฐ์ ํ๋๋ฅผ ์ฌ์ ๋ ฌํ๊ณ
๋ ์์ ๊ตฌ์กฐ.
- Wredundant-decls
๋์ผํ ๋ฒ์์์ ๋ ๋ฒ ์ด์ ์ ์ธ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
๋ค์ค ์ ์ธ์ ์ ํจํ๋ฉฐ ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค.
-Wnested-externs (C ๋ฐ Objective-C๋ง ํด๋น)
ํจ์ ๋ด์์ "extern" ์ ์ธ์ด ๋ฐ๊ฒฌ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
-Wno-์์๋-variadic-ctor
๊ธฐ๋ณธ ํด๋์ค์ธ ๊ฒฝ์ฐ C++11 ์์ ์์ฑ์ ์ฌ์ฉ์ ๋ํ ๊ฒฝ๊ณ ํ์ ์ ํจ
์์ ์์๋ C variadic ์์ฑ์๊ฐ ์์ต๋๋ค. ๊ฒฝ๊ณ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์๊ธฐ ๋๋ฌธ์
์ค์ํ๋ ์์๋์ง ์์ต๋๋ค.
-์๋ผ์ธ
์ธ๋ผ์ธ์ผ๋ก ์ ์ธ๋ ํจ์๋ฅผ ์ธ๋ผ์ธํ ์ ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด๊ฒ์ผ๋ก๋
์ต์ ์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ๋ ์ ์ ์ธ๋ ์ธ๋ผ์ธ ํจ์ ์คํจ์ ๋ํด ๊ฒฝ๊ณ ํ์ง ์์ต๋๋ค.
์์คํ ํค๋.
์ปดํ์ผ๋ฌ๋ ๋ค์ํ ๊ฒฝํ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ธ๋ผ์ธํ ๊ฒ์ธ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
๊ธฐ๋ฅ. ์๋ฅผ ๋ค์ด ์ปดํ์ผ๋ฌ๋ ํจ์์ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํฉ๋๋ค.
์ธ๋ผ์ธ ๋ฐ ํ์ฌ ํจ์์์ ์ด๋ฏธ ์ํ๋ ์ธ๋ผ์ธ ์์ ๋๋ค.
๋ฐ๋ผ์ ์์ค ํ๋ก๊ทธ๋จ์์ ๊ฒ๋ณด๊ธฐ์ ์ค์ํ์ง ์์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์ ์ํด ์์ฑ๋ ๊ฒฝ๊ณ -์๋ผ์ธ ๋ํ๋๊ฑฐ๋ ์ฌ๋ผ์ง๋ค.
-Wno-invalid-offsetof (C++ ๋ฐ Objective-C++๋ง ํด๋น)
์ ์ฉ ์ ๊ฒฝ๊ณ ํ์ ์ ํจ ์คํ์ ๋น POD ์ ํ์ ๋ํ ๋งคํฌ๋ก. ์ ๋ฐ๋ฅด๋ฉด
1998 ISO C++ ํ์ค, ์ ์ฉ ์คํ์ ๋น POD ์ ํ์ ์ ์๋์ง ์์ต๋๋ค. ์
๊ทธ๋ฌ๋ ๊ธฐ์กด C++ ๊ตฌํ์ ์คํ์ ์ผ๋ฐ์ ์ผ๋ก ์๋ฏธ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค
ํน์ ์ข ๋ฅ์ ๋น POD ์ ํ(์: ๋จ์ ๊ตฌ์กฐ์ฒด ๊ทธ
์์ฑ์๊ฐ ์๊ธฐ ๋๋ฌธ์ POD ์ ํ์ด ๋ ์ ์์). ์ด ํ๋๊ทธ๋
์ด์ ๋ถ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์์์ ์๊ณ ์๋์ ์ผ๋ก
๊ทธ๊ฒ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์ํ๊ธฐ๋ก ์ ํํ์ต๋๋ค.
์ ๋ํ ์ ํ ์ฌํญ ์คํ์ C++ ํ์ค์ ํฅํ ๋ฒ์ ์์๋ ์ํ๋ ์ ์์ต๋๋ค.
- ํฌ์ธํฐ ํฌ ํฌ์ธํฐ ์บ์คํธ ์์
ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ์ ์์ ํฌ์ธํฐ ์ ํ์ ๋ํ ์บ์คํธ์์ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ต๋๋ค. ์
C++์์ ๋ ์์ ํฌ๊ธฐ์ ํฌ์ธํฐ ์ ํ์ผ๋ก ์บ์คํ ํ๋ ๊ฒ์ ์ค๋ฅ์ ๋๋ค. Wint-to-pointer ์บ์คํธ is
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
- Wno-pointer-to-int-cast (C ๋ฐ Objective-C๋ง ํด๋น)
ํฌ์ธํฐ์์ ๋ค๋ฅธ ํฌ๊ธฐ์ ์ ์ ์ ํ์ผ๋ก์ ์บ์คํธ ๊ฒฝ๊ณ ๋ฅผ ์ต์ ํฉ๋๋ค.
-Winvalid-pch
๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋๊ฐ ๊ฒ์ ๊ฒฝ๋ก์ ์์ง๋ง ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค.
-๋กฑ๋กฑ
๋ค์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๊ธด ๊ธด ์ ํ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ด๊ฒ์ ๋ค์ ์ค ํ๋์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -Wpedantic or -์ ํต์ ์ธ
ISO C90 ๋ฐ C++98 ๋ชจ๋์์. ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๊ธ์งํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค. -์ค๋กฑ๋กฑ.
-Wvariadic ๋งคํฌ๋ก
๊ฐ๋ณ ๋งคํฌ๋ก๊ฐ ํํ์ ISO C90 ๋ชจ๋ ๋๋ GNU ๋์ฒด ๊ตฌ๋ฌธ์์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ
ํํ์ ISO C99 ๋ชจ๋์ ์์ ๋. ์ด๊ฒ์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๊ธ์งํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค.
-Wno-variadic-๋งคํฌ๋ก.
-Wvarargs
๋ค์๊ณผ ๊ฐ์ ๋ณ์ ์ธ์๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋งคํฌ๋ก์ ์์ฌ์ค๋ฌ์ด ์ฌ์ฉ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
va_start. ์ด๊ฒ์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๊ธ์งํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค. -Wno-๋ณ์.
-W๋ฒกํฐ ์์ ์ฑ๋ฅ
์ํคํ ์ฒ์ SIMD ๊ธฐ๋ฅ์ ํตํด ๋ฒกํฐ ์์ ์ด ๊ตฌํ๋์ง ์์ผ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ฃผ๋ก ์ฑ๋ฅ ์กฐ์ ์ ์ ์ฉํฉ๋๋ค. ๋ฒกํฐ ์ฐ์ฐ ๊ตฌํ ๊ฐ๋ฅ
"์กฐ๊ฐ๋ณ", ์ด๋ ์ค์นผ๋ผ ์ฐ์ฐ์ด ๋ชจ๋ ๋ฒกํฐ์ ๋ํด ์ํ๋จ์ ์๋ฏธํฉ๋๋ค.
์์; "๋ณ๋ ฌ๋ก", ์ด๋ ๋ฒกํฐ ์ฐ์ฐ์ด ๋ค์์ ์ฌ์ฉํ์ฌ ๊ตฌํ๋จ์ ์๋ฏธํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ ์ฑ๋ฅ ํจ์จ์ ์ธ ๋ ๋์ ์ ํ์ ์ค์นผ๋ผ; ๊ทธ๋ฆฌ๊ณ "์ฑ๊ธ๋ก
์ค์นผ๋ผ", ์ด๋ ๋ฒกํฐ๊ฐ ์ค์นผ๋ผ ์ ํ์ ๋ง๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
-Wno-๊ฐ์ ์ด๋ ํ ๋น
์ฌ์ํ C++11 ์ด๋์ผ๋ก ๊ฐ์ ๊ธฐ๋ฐ์์ ์์์ ๋ํ ๊ฒฝ๊ณ ํ์ ์ ํจ
ํ ๋น ์ฐ์ฐ์. ๊ฐ์ ๊ธฐ์ง๊ฐ
๊ฒฝ๋ก๊ฐ ๋ ๊ฐ ์ด์์ธ ๊ฒฝ์ฐ ์ฌ๋ฌ ๋ฒ ์ด๋ํ๋ฏ๋ก ๋ ๊ฐ์ฒด๊ฐ ๋ชจ๋ ์ข ๋ฃ๋ ์ ์์ต๋๋ค.
์ด๋ํ ์ํ์์ ์๋ก ์ฌ๋ผ๊ฐ๋๋ค. ์ด๋ ํ ๋น ์ฐ์ฐ์๋ฅผ ํผํ๊ธฐ ์ํด ์์ฑ๋ ๊ฒฝ์ฐ
์ด๋ํ ๊ฐ์ฒด์์ ์ด๋ํ๋ ๊ฒฝ์ฐ ์ด ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํ ์ ์์ต๋๋ค.
- ๋ธ๋ผ
์ฝ๋์ ๊ฐ๋ณ ๊ธธ์ด ๋ฐฐ์ด์ด ์ฌ์ฉ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. -์ฐ๋ ธ๋ธ๋ผ ๋ฐฉ์ง -Wpedantic
๊ฐ๋ณ ๊ธธ์ด ๋ฐฐ์ด์ ๊ฒฝ๊ณ .
-Wํ๋ฐ์ฑ ๋ ์ง์คํฐ ๋ณ์
๋ ์ง์คํฐ ๋ณ์๊ฐ ํ๋ฐ์ฑ์ผ๋ก ์ ์ธ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. ํ๋ฐ์ฑ ์์ ์๋
๋ ์ง์คํฐ์ ๋ํ ์ฝ๊ธฐ ๋ฐ/๋๋ ์ฐ๊ธฐ๋ฅผ ์ ๊ฑฐํ ์ ์๋ ๋ชจ๋ ์ต์ ํ ๊ธ์ง
๋ณ์. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -๋ฒฝ.
-Wdisabled-์ต์ ํ
์์ฒญํ ์ต์ ํ ๋จ๊ณ๊ฐ ๋นํ์ฑํ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด ๊ฒฝ๊ณ ๋ ์ผ๋ฐ์ ์ผ๋ก
์ฝ๋์ ๋ฌธ์ ๊ฐ ์์์ ๋ํ๋ ๋๋ค. ๊ทธ๊ฒ์ ๋จ์ง GCC์
์ต์ ํ ํ๋ก๊ทธ๋จ์ ์ฝ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ข ์ข ๋ฌธ์ ๋
์ฝ๋๊ฐ ๋๋ฌด ํฌ๊ฑฐ๋ ๋๋ฌด ๋ณต์กํฉ๋๋ค. GCC๋ ์ต์ ํํ ๋ ํ๋ก๊ทธ๋จ ์ต์ ํ๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค.
์์ฒด์ ์ผ๋ก ์๊ฐ์ด ๋๋ฌด ๋ง์ด ์์๋ ์ ์์ต๋๋ค.
-Wpointer ๊ธฐํธ (C ๋ฐ Objective-C๋ง ํด๋น)
ํฌ์ธํฐ ์ธ์ ์ ๋ฌ ๋๋ ๋ถํธ๊ฐ ๋ค๋ฅธ ํ ๋น์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด๊ฒ
์ต์ ์ C ๋ฐ Objective-C์์๋ง ์ง์๋ฉ๋๋ค. ์ ์ํด ์์๋๋ค -๋ฒฝ ๊ณผ ๋ณ
-Wpedantic๋ก ๋นํ์ฑํํ ์ ์์ต๋๋ค. -Wno ํฌ์ธํฐ ๊ธฐํธ.
-Wstack ๋ณดํธ๊ธฐ
์ด ์ต์ ์ ๋ค์ ๊ฒฝ์ฐ์๋ง ํ์ฑํ๋ฉ๋๋ค. -fstack ๋ณดํธ๊ธฐ ํ์ฑ. ๊ธฐ๋ฅ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
์คํ ์ค๋งค์ฑ์ผ๋ก๋ถํฐ ๋ณดํธ๋์ง ์์ต๋๋ค.
-Wno-๋จธ๋ํ๋ฉ
์์ ๊ณ์ธกํ ์ ์๋ ๊ตฌ์ฑ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ์ต์ ํฉ๋๋ค. -fmudflap.
-Woverlength-๋ฌธ์์ด
"์ต์ ์ต๋" ๊ธธ์ด๋ณด๋ค ๊ธด ๋ฌธ์์ด ์์์ ๋ํด ๊ฒฝ๊ณ
C ํ์ค์ ๋ช ์๋์ด ์์ต๋๋ค. ์ต์ ์ปดํ์ผ๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์์ด ์์๋ฅผ ํ์ฉํฉ๋๋ค.
ํ์ค์ ์ต์ ์ ํ๋ณด๋ค ํจ์ฌ ๊ธธ์ง๋ง ์ด์์ฑ์ด ๋ฐ์ด๋ ํ๋ก๊ทธ๋จ์
๋ ๊ธด ๋ฌธ์์ด์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
ํ๋ ์ ์ฉ ์๊ฐ ๋ด์ ๋ฌธ์์ด ์์ ์ฐ๊ฒฐ, ํํ์ ๊ณ์ฐํ์ง ์์
๋ฌดํจ. C90์์ ์ ํ์ 509์์์ต๋๋ค. C99์์๋ 4095๋ก ์ฌ๋ผ๊ฐ์ต๋๋ค. C++98์
ํ์ค ์ต์ ์ต๋๊ฐ์ ์ง์ ํ์ง ์์ผ๋ฏ๋ก ๊ธธ์ด๊ฐ ์ด๊ณผ๋ ๋ฌธ์์ด์ ์ง๋จํ์ง ์์ต๋๋ค.
C ++.
์ด ์ต์ ์ -Wpedantic๋ก ๋นํ์ฑํํ ์ ์์ต๋๋ค.
-Wno-overlength-๋ฌธ์์ด.
-Wunsuffixed ๋ถ๋ ์์์ ์์ (C ๋ฐ Objective-C๋ง ํด๋น)
์ ๋ฏธ์ฌ๊ฐ ์๋ ๋ถ๋ ์์์ ๋ํด ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํฉ๋๋ค. ์ฌ์ฉ์
์ ํจ๊ป -Wsystem ํค๋ ์์คํ ํค๋ ํ์ผ์์ ์ด๋ฌํ ์์์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ด๊ฒ์ "FLOAT_CONST_DECIMAL64" pragma์ ํจ๊ป ์ฌ์ฉํ ์ฝ๋๋ฅผ ์ค๋นํ ๋ ์ ์ฉํ ์ ์์ต๋๋ค.
99์ง ๋ถ๋ ์์์ ํ์ฅ์์ CXNUMX๋ก.
์ต์ for ๋๋ฒ๊น ๋์ ํ๋ก๊ทธ๋จ or GCC
GCC์๋ ํ๋ก๊ทธ๋จ์ด๋ GCC๋ฅผ ๋๋ฒ๊น ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ค์ํ ํน์ ์ต์ ์ด ์์ต๋๋ค.
-g ์ด์ ์ฒด์ ์ ๊ธฐ๋ณธ ํ์(stabs, COFF,
XCOFF ๋๋ DWARF 2). GDB๋ ์ด ๋๋ฒ๊น ์ ๋ณด๋ก ์์ ํ ์ ์์ต๋๋ค.
stabs ํ์์ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ์์คํ ์์ -g ์ถ๊ฐ ๋๋ฒ๊น ์ ๋ณด ์ฌ์ฉ ๊ฐ๋ฅ
GDB๋ง์ด ์ฌ์ฉํ ์ ์๋ ๊ฒ; ์ด ์ถ๊ฐ ์ ๋ณด๋ GDB์์ ๋๋ฒ๊น ์์ ์ ๋ ์ ์ํํ์ง๋ง
๋ค๋ฅธ ๋๋ฒ๊ฑฐ๊ฐ ์ถฉ๋์ ์ผ์ผํค๊ฑฐ๋ ํ๋ก๊ทธ๋จ ์ฝ๊ธฐ๋ฅผ ๊ฑฐ๋ถํ ์ ์์ต๋๋ค. ์ํ๋ ๊ฒฝ์ฐ
์ถ๊ฐ ์ ๋ณด๋ฅผ ์์ฑํ ์ง ์ฌ๋ถ์ ๋ํ ์ ์ด, ์ฌ์ฉ -gstabs +, -gstabs,
-gxcoff+, -gxcoff๋ฐ -gvms (์๋ ์ฐธ์กฐ).
GCC๋ฅผ ์ฌ์ฉํ๋ฉด -g ๊ณผ -O. ์ต์ ํ๋ ์ฝ๋์์ ์ฌ์ฉํ๋ ๋จ์ถํค๋
๋๋๋ก ๋๋ผ์ด ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ ์ธํ ์ผ๋ถ ๋ณ์๋ ์ ์กด์ฌํ์ง ์์ ์ ์์ต๋๋ค.
๋ชจ๋; ํต์ ์ ํ๋ฆ์ด ์์ํ์ง ๋ชปํ ๊ณณ์ผ๋ก ์ ์ ์ด๋ํ ์ ์์ต๋๋ค. ์ผ๋ถ ์ง์ ์
์์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๊ฑฐ๋ ํด๋น ๊ฐ์ด ์ด๋ฏธ ์ ์๊ธฐ ๋๋ฌธ์ ์คํ๋์ง ์์ต๋๋ค.
์; ์ผ๋ถ ๋ช ๋ น๋ฌธ์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ฎ๊ฒจ์ก๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์์น์์ ์คํ๋ ์ ์์ต๋๋ค.
๋ฃจํ์.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ต์ ํ๋ ์ถ๋ ฅ์ ๋๋ฒ๊ทธํ ์ ์์์ด ์ ์ฆ๋์์ต๋๋ค. ์ด๊ฒ์ ํฉ๋ฆฌ์ ์ผ๋ก ๋ง๋ ๋ค.
๋ฒ๊ทธ๊ฐ ์์ ์ ์๋ ํ๋ก๊ทธ๋จ์ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํฉ๋๋ค.
๋ค์ ์ต์ ์ ๋ ๋ง์ ๊ธฐ๋ฅ์ ๊ฐ์ง GCC๊ฐ ์์ฑ๋ ๋ ์ ์ฉํฉ๋๋ค.
ํ๋ ์ด์์ ๋๋ฒ๊น ํ์.
-gsplit-dwarf
๊ฐ๋ฅํ ํ ๋ง์ ๋์ํ ๋๋ฒ๊น ์ ๋ณด๋ฅผ ๋ณ๋์ ์ถ๋ ฅ ํ์ผ๋ก ๋ถ๋ฆฌํ์ญ์์ค.
ํ์ฅ์๊ฐ .dwo์ ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋น๋ ์์คํ ์์ ํ์ผ ์ฐ๊ฒฐ์ ํผํ ์ ์์ต๋๋ค.
๋๋ฒ๊ทธ ์ ๋ณด์ ํจ๊ป. ์ ์ฉํ๋ ค๋ฉด ์ด ์ต์ ์ ์ฌ์ฉํ ์ ์๋ ๋๋ฒ๊ฑฐ๊ฐ ํ์ํฉ๋๋ค.
.dwo ํ์ผ ์ฝ๊ธฐ.
-ggdb
GDB์์ ์ฌ์ฉํ ๋๋ฒ๊น ์ ๋ณด๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ๊ฐ์ฅ ํํ๋ ฅ์ด
์ฌ์ฉ ๊ฐ๋ฅํ ํ์(DWARF 2, ์ฐ๋ฅด๊ธฐ ๋๋ ๋ ๋ค ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ํ์
์ง์๋จ) ๊ฐ๋ฅํ๋ฉด GDB ํ์ฅ์ ํฌํจํฉ๋๋ค.
-gpub์ด๋ฆ
dwarf .debug_pubnames ๋ฐ .debug_pubtypes ์น์ ์ ์์ฑํฉ๋๋ค.
-gstabs
GDB ์์ด ๋๋ฒ๊น ์ ๋ณด๋ฅผ stabs ํ์(์ง์๋๋ ๊ฒฝ์ฐ)์ผ๋ก ์์ฑํฉ๋๋ค.
ํ์ฅ. ์ด๊ฒ์ ๋๋ถ๋ถ์ BSD ์์คํ ์์ DBX๊ฐ ์ฌ์ฉํ๋ ํ์์ ๋๋ค. MIPS, ์ํ ๋ฐ
System V ๋ฆด๋ฆฌ์ค 4 ์์คํ ์ด ์ต์ ์ stabs ๋๋ฒ๊น ์ถ๋ ฅ์ ์์ฑํ์ง ์์ต๋๋ค.
DBX ๋๋ SDB์์ ์ดํดํฉ๋๋ค. System V ๋ฆด๋ฆฌ์ค 4 ์์คํ ์์ ์ด ์ต์ ์ ์ฌ์ฉํ๋ ค๋ฉด GNU๊ฐ ํ์ํฉ๋๋ค.
์ด์ ๋ธ๋ฌ.
-feliminate-unused-debug-๊ธฐํธ
๊ธฐํธ์ ๋ํด์๋ง stabs ํ์(์ง์๋๋ ๊ฒฝ์ฐ)์ ๋๋ฒ๊น ์ ๋ณด ์์ฑ
์ค์ ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ ๋๋ค.
-femit-class-debug-ํญ์
ํ๋์ ๊ฐ์ฒด ํ์ผ์์๋ง C++ ํด๋์ค์ ๋ํ ๋๋ฒ๊น ์ ๋ณด๋ฅผ ๋ด๋ณด๋ด๋ ๋์ ,
ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๊ฐ์ฒด ํ์ผ์์ ๋ฐฉ์ถํฉ๋๋ค. ์ด ์ต์ ์ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
GCC๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋๋ฒ๊น ์ ๋ณด๋ฅผ ๋ด๋ณด๋ด๋ ๋ฐฉ์์ ์ฒ๋ฆฌํ ์ ์๋ ๋๋ฒ๊ฑฐ
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋๋ฒ๊น ์ ๋ณด์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์
XNUMX๋ฐฐ๋งํผ.
-fdebug-types-์น์
DWARF ๋ฒ์ 4 ์ด์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ํ DIE๋ฅผ ์์ฒด์ ์ผ๋ก ๋ฃ์ ์ ์์ต๋๋ค.
".debug_info" ์น์ ์ ์ผ๋ถ๋ก ๋ง๋๋ ๋์ ".debug_types" ์น์ . ๊ทธ๊ฒ
๋ง์ปค๊ฐ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ณ๋์ comdat ์น์ ์ ๋ฃ๋ ๊ฒ์ด ๋ ํจ์จ์
์ค๋ณต์ ์ ๊ฑฐํ์ญ์์ค. ๊ทธ๋ฌ๋ ๋ชจ๋ DWARF ์๋น์๊ฐ ์์ง ".debug_types" ์น์ ์ ์ง์ํ๋ ๊ฒ์ ์๋๋๋ค.
์ผ๋ถ ๊ฐ์ฒด์์ ".debug_types"๋ ๋ ์์ ๋๋ฒ๊น ๋์ ๋ ํฌ๊ฒ ์์ฑํฉ๋๋ค.
์ ๋ณด.
-gstabs +
GNU๋ฅผ ์ฌ์ฉํ์ฌ stabs ํ์(์ง์๋๋ ๊ฒฝ์ฐ)์ผ๋ก ๋๋ฒ๊น ์ ๋ณด ์์ฑ
GNU ๋๋ฒ๊ฑฐ(GDB)์์๋ง ์ดํดํ ์ ์๋ ํ์ฅ์ ๋๋ค. ์ด๋ฌํ ํ์ฅ์ ์ฌ์ฉ์
๋ค๋ฅธ ๋๋ฒ๊ฑฐ๊ฐ ์ถฉ๋์ ์ผ์ผํค๊ฑฐ๋ ํ๋ก๊ทธ๋จ ์ฝ๊ธฐ๋ฅผ ๊ฑฐ๋ถํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
-gcoff
COFF ํ์์ผ๋ก ๋๋ฒ๊น ์ ๋ณด๋ฅผ ์์ฑํฉ๋๋ค(์ง์๋๋ ๊ฒฝ์ฐ). ์ด๊ฒ์ด
System V ๋ฆด๋ฆฌ์ค 4 ์ด์ ์ ๋๋ถ๋ถ์ System V ์์คํ ์์ SDB๊ฐ ์ฌ์ฉํ๋ ํ์์ ๋๋ค.
-gxcoff
XCOFF ํ์์ผ๋ก ๋๋ฒ๊น ์ ๋ณด๋ฅผ ์์ฑํฉ๋๋ค(์ง์๋๋ ๊ฒฝ์ฐ). ์ด๊ฒ์ด
IBM RS/6000 ์์คํ ์ DBX ๋๋ฒ๊ฑฐ์์ ์ฌ์ฉํ๋ ํ์์ ๋๋ค.
-gxcoff+
GNU๋ฅผ ์ฌ์ฉํ์ฌ XCOFF ํ์(์ง์๋๋ ๊ฒฝ์ฐ)์ผ๋ก ๋๋ฒ๊น ์ ๋ณด ์์ฑ
GNU ๋๋ฒ๊ฑฐ(GDB)์์๋ง ์ดํดํ ์ ์๋ ํ์ฅ์ ๋๋ค. ์ด๋ฌํ ํ์ฅ์ ์ฌ์ฉ์
๋ค๋ฅธ ๋๋ฒ๊ฑฐ๊ฐ ์ถฉ๋์ ์ผ์ผํค๊ฑฐ๋ ํ๋ก๊ทธ๋จ ์ฝ๊ธฐ๋ฅผ ๊ฑฐ๋ถํ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฉฐ
GNU ์ด์ ๋ธ๋ฌ(GAS) ์ด์ธ์ ์ด์ ๋ธ๋ฌ๋ ์ค๋ฅ์ ํจ๊ป ์คํจํฉ๋๋ค.
-๊ทธ๋์ํ-๋ฒ์
DWARF ํ์์ผ๋ก ๋๋ฒ๊น ์ ๋ณด๋ฅผ ์์ฑํฉ๋๋ค(์ง์๋๋ ๊ฒฝ์ฐ). ์ ๊ฐ์น
๋ฒ์ 2, 3 ๋๋ 4์ผ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๋์์ ๋ํ ๊ธฐ๋ณธ ๋ฒ์ ์ 4์ ๋๋ค.
DWARF ๋ฒ์ 2์์๋ ์ผ๋ถ ํฌํธ๊ฐ ์ถฉ๋ํ์ง ์๋ ์ผ๋ถ ํฌํธ๋ฅผ ํ์๋ก ํ๊ณ ํญ์ ์ฌ์ฉํฉ๋๋ค.
ํด์ ํ ์ด๋ธ์ DWARF 3 ํ์ฅ.
๋ฒ์ 4์๋ GDB 7.0 ๋ฐ -fvar-์ถ์ ํ ๋น ์ต๋ ์ด์ต์ ์ํด.
-grecord-gcc-์ค์์น
์ด ์ค์์น๋ก ์ธํด ์ปดํ์ผ๋ฌ๋ฅผ ํธ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ช ๋ น์ค ์ต์ ์ด
DWARF์ DW_AT_producer ์์ฑ์ ์ถ๊ฐ๋ ์ฝ๋ ์์ฑ์ ์ํฅ์ ์ค๋๋ค.
๋๋ฒ๊น ์ ๋ณด. ์ต์ ์ ๋ค์๊ณผ ๊ตฌ๋ถ๋๋ ๊ณต๋ฐฑ์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
์๋ก ๊ทธ๋ฆฌ๊ณ ์ปดํ์ผ๋ฌ ๋ฒ์ ์์. ๋ํ๋ณด์ญ์์ค -frecord-gcc-์ค์์น ๋ค๋ฅธ์ด๋ฅผ ์ํด
์ปดํ์ผ๋ฌ ์ต์ ์ ๊ฐ์ฒด ํ์ผ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-gno-record-gcc-์ค์์น
DWARF์ DW_AT_producer ์์ฑ์ ๋ช ๋ น์ค ์ต์ ์ ์ถ๊ฐํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค.
๋๋ฒ๊น ์ ๋ณด.
-gstrict-dwarf
์์ ์ ํํ ๊ฒ๋ณด๋ค ์ต์ DWARF ํ์ค ๋ฒ์ ์ ํ์ฅ ์ฌ์ฉ์ ํ์ฉํ์ง ์์ต๋๋ค.
-๊ทธ๋์ํ-๋ฒ์ . ์ดํ์ ์ถฉ๋ํ์ง ์๋ DWARF ํ์ฅ์ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ๋์์์
ํ์ค ๋ฒ์ ์ด ํ์ฉ๋ฉ๋๋ค.
-gno-strict-dwarf
์ ํํ ๊ฒ๋ณด๋ค ์ต์ DWARF ํ์ค ๋ฒ์ ์ ํ์ฅ ์ฌ์ฉ ํ์ฉ
-๊ทธ๋์ํ-๋ฒ์ .
-gvms
Alpha/VMS ๋๋ฒ๊ทธ ํ์์ผ๋ก ๋๋ฒ๊น ์ ๋ณด๋ฅผ ์์ฑํฉ๋๋ค(์ง์๋๋ ๊ฒฝ์ฐ). ์ด๊ฒ
Alpha/VMS ์์คํ ์ DEBUG์์ ์ฌ์ฉํ๋ ํ์์ ๋๋ค.
-g์ํ
-ggdb์ํ
-gstabs์ํ
-gcoff์ํ
-gxcoff์ํ
-gvms์ํ
๋๋ฒ๊น ์ ๋ณด ์์ฒญ ๋ฐ ์ฌ์ฉ ์ํ ์ ๋ณด์ ์์ ์ง์ ํฉ๋๋ค. NS
๊ธฐ๋ณธ ๋ ๋ฒจ์ 2์ ๋๋ค.
๋ ๋ฒจ 0์ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์ ํ ์์ฑํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์, -g0 ๋ถ์ ํ๋ค -g.
๋ ๋ฒจ 1์ ์ต์ํ์ ์ ๋ณด๋ฅผ ์์ฑํ์ฌ ์ผ๋ถ๋ฅผ ์ญ์ถ์ ํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค.
๋๋ฒ๊ทธํ ๊ณํ์ด ์๋ ํ๋ก๊ทธ๋จ. ์ฌ๊ธฐ์๋ ๊ธฐ๋ฅ์ ๋ํ ์ค๋ช ๊ณผ
์ธ๋ถ ๋ณ์๋ ์์ง๋ง ์ง์ญ ๋ณ์์ ์ค ๋ฒํธ์ ๋ํ ์ ๋ณด๋ ์์ต๋๋ค.
๋ ๋ฒจ 3์๋ ํ์ผ์ ์๋ ๋ชจ๋ ๋งคํฌ๋ก ์ ์์ ๊ฐ์ ์ถ๊ฐ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
ํ๋ก๊ทธ๋จ. ์ผ๋ถ ๋๋ฒ๊ฑฐ๋ ๋ค์์ ์ฌ์ฉํ ๋ ๋งคํฌ๋ก ํ์ฅ์ ์ง์ํฉ๋๋ค. -g3.
-gdwarf-2 GCC๊ฐ ์ง์ํ๋ ๋ฐ ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ๋ ๋๋ฒ๊ทธ ์์ค์ ํ์ฉํ์ง ์์ต๋๋ค.
option -gdwarf ์ด๋ DWARF ๋ฒ์ 1์์ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์์ฑํ๋ค๋ ์๋ฏธ์ ๋๋ค.
ํ์(๋ฒ์ 2์ ๋งค์ฐ ๋ค๋ฆ)์ด๋ฉฐ ๋๋ฌด ํผ๋์ค๋ฌ์ ์ ๊ฒ์ ๋๋ค.
ํด๋น ๋๋ฒ๊ทธ ํ์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ง๋ง ์ง๊ธ์ ์ต์ ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋์ ์ฌ์ฉ
์ถ๊ฐ์ -g์ํ DWARF์ ๋๋ฒ๊ทธ ์์ค์ ๋ณ๊ฒฝํ๋ ์ต์ ์ ๋๋ค.
-gttoggle
์ด ์ต์ ์ ์๋ตํ๋ฉด ๋๋ฒ๊ทธ ์ ๋ณด ์์ฑ์ ๋๊ฑฐ๋ ๋์ญ์์ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๋ ๋ฒจ 2์์ ์ผ์ง๋๋ค. ๋ช ๋ น์ค์์ ์ด ์ธ์์ ์์น๋
๋ฌธ์ ; ๋ค๋ฅธ ๋ชจ๋ ์ต์ ์ด ์ฒ๋ฆฌ๋ ํ์ ์ ์ฉ๋๋ฉฐ,
๋ช ๋ฒ์ ์ฃผ์ด๋ ํ ๋ฒ. ์ด๊ฒ์ ์ฃผ๋ก ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
-fcompare-๋๋ฒ๊ทธ.
-fsanitize=์ฃผ์
๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ ๊ฐ์ง๊ธฐ์ธ AddressSanitizer๋ฅผ ํ์ฑํํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ์ง์นจ
๋ฒ์๋ฅผ ๋ฒ์ด๋ ๋ฒ๊ทธ ๋ฐ ๋ฌด๋ฃ ์ฌ์ฉ ํ ๋ฒ๊ทธ๋ฅผ ๊ฐ์งํ๋๋ก ๊ณ์ธก๋ฉ๋๋ค. ๋ณด๋ค
<http://code.google.com/p/address-sanitizer/> ์์ธํ ๋ด์ฉ์.
-fsanitize=์ฐ๋ ๋
๋น ๋ฅธ ๋ฐ์ดํฐ ๊ฒฝํฉ ๊ฐ์ง๊ธฐ์ธ ThreadSanitizer๋ฅผ ํ์ฑํํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฐ์ดํฐ ๊ฒฝ์ ๋ฒ๊ทธ๋ฅผ ๊ฐ์งํ๋๋ก ๊ตฌ์ฑ๋์์ต๋๋ค. ๋ณด๋ค
<http://code.google.com/p/data-race-test/wiki/ThreadSanitizer> ์์ธํ ๋ด์ฉ์.
-fdump-์ต์ข -insns[=ํ์ผ]
์ต์ข ๋ด๋ถ ํํ(RTL)์ ๋ค์์ผ๋ก ๋คํํฉ๋๋ค. ํ์ผ. ์ ํ์ ์ธ์์ธ ๊ฒฝ์ฐ
์๋ต๋ ๊ฒฝ์ฐ(๋๋ ํ์ผ "."), ๋คํ ํ์ผ์ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๊ฒฐ์ ๋ฉ๋๋ค.
".gkd"๋ฅผ ์ปดํ์ผ ์ถ๋ ฅ ํ์ผ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
-fcompare-๋๋ฒ๊ทธ[=์ ํํ์ง ์๋]
์ปดํ์ผํ๋ ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๋ฅผ ๋ ๋ฒ์งธ๋ก ์คํํ๊ณ ๋ค์์ ์ถ๊ฐํฉ๋๋ค. ์ ํํ์ง ์๋ and
-f๋น๊ต-๋๋ฒ๊ทธ-์ด ๋ ๋ฒ์งธ ์ปดํ์ผ์ ์ ๋ฌ๋ ์ธ์์ ๋คํ
๋ ์ปดํ์ผ ๋ชจ๋์์ ์ต์ข ๋ด๋ถ ํํ์ด๋ฉฐ, ๋ค๋ฅด๋ฉด ์ค๋ฅ๋ฅผ ์ธ์ํฉ๋๋ค.
๋ฑํธ๋ฅผ ์๋ตํ๋ฉด ๊ธฐ๋ณธ๊ฐ -gttoggle ์ฌ์ฉ.
ํ๊ฒฝ ๋ณ์ GCC_COMPARE_DEBUG, ์ ์๋ ๊ฒฝ์ฐ ๋น์ด ์์ง ์๊ณ XNUMX์ด ์๋๋๋ค.
์์์ ์ผ๋ก ํ์ฑํ -fcompare-๋๋ฒ๊ทธ. ๋ฉด GCC_COMPARE_DEBUG ๋ฌธ์์ด๋ก ์ ์
๋์๋ก ์์ํ์ฌ ๋ค์ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ ํํ์ง ์๋, ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ -gttoggle is
์ต์ํ.
-fcompare-๋๋ฒ๊ทธ=, ๋ฑํธ๋ ์์ง๋ง ์ ์ธ ์ ํํ์ง ์๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-fno-๋น๊ต-๋๋ฒ๊ทธ, ์ต์ข ํํ์ ๋คํ์ ๋นํ์ฑํํ๊ณ
๋ ๋ฒ์งธ ์ปดํ์ผ, ์ฌ์ง์ด ๋ฐฉ์ง GCC_COMPARE_DEBUG ๋ถํฐ.
๊ธฐ๊ฐ ๋์ ์ ์ฒด ์ ์ฉ ๋ฒ์๋ฅผ ํ์ธํ๋ ค๋ฉด -fcompare-๋๋ฒ๊ทธ ํ ์คํธ, ์ค์ GCC_COMPARE_DEBUG to say
-fcompare-debug-์ฌ์ ์๋์ง ์์, GCC๋ ์ค์
์ปดํ์ผ(์ ์ฒ๋ฆฌ, ์ด์ ๋ธ๋ฆฌ ๋๋ ์ฐ๊ฒฐ ๋์ ). ๊ฒฝ๊ณ ๋ง ๋ฐ์ผ๋ ค๋ฉด
์ค์ GCC_COMPARE_DEBUG ์ -w%n-f๋น๊ต ๋๋ฒ๊ทธ ์ง์ ์ฌ์ ์ ํ ๊ฒ์ด๋ค.
-f๋น๊ต-๋๋ฒ๊ทธ-์ด
์ด ์ต์ ์ ์์ฒญ๋ ๋ ๋ฒ์งธ ์ปดํ์ผ์ ๋ํด ์์์ ์ผ๋ก ์ปดํ์ผ๋ฌ์ ์ ๋ฌ๋ฉ๋๋ค.
by -fcompare-๋๋ฒ๊ทธ, ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์์ผ๋ก ์ค์ ํ๊ณ ๋ค๋ฅธ ์ต์ ์ ์๋ตํ๋ ์ต์ ๊ณผ ํจ๊ป
ํ์ผ ๋๋ ํ์ค ์ถ๋ ฅ์ ๋ํ ๋ถ์์ฉ ์ปดํ์ผ๋ฌ ์ถ๋ ฅ์ด ๋ฐ์ํฉ๋๋ค.
๋คํ ํ์ผ ๋ฐ ๋ณด์กด๋ ์์ ํ์ผ์ ".gk"๋ฅผ ํฌํจํ๋๋ก ์ด๋ฆ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋ฎ์ด์ฐ์ง ์๋๋ก ๋ ๋ฒ์งธ ์ปดํ์ผ ์ค ์ถ๊ฐ ํ์ฅ
์ฒซ ๋ฒ์งธ์ ์ํด ์์ฑ๋ฉ๋๋ค.
์ด ์ต์ ์ด ์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ์ ์ ๋ฌ๋๋ฉด ๋จผ์ ์ปดํ์ผ
์ปดํ์ผ๋ฌ๋ฅผ ์ ์ ํ๊ฒ ๋๋ฒ๊น ํ๋ ๊ฒ ์ธ์๋ ๊ฑฐ์ ์ ์ฉํ์ง ์์ต๋๋ค.
-felimate-dwarf2-dups
์ ๋ํ ์ค๋ณต ์ ๋ณด๋ฅผ ์ ๊ฑฐํ์ฌ DWARF 2 ๋๋ฒ๊น ์ ๋ณด๋ฅผ ์์ถํฉ๋๋ค.
๊ฐ ๊ธฐํธ. ์ด ์ต์ ์ DWARF 2 ๋๋ฒ๊น ์ ์์ฑํ ๋๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ ๋ณด -gdwarf-2.
-femit-struct-debug-baseonly
๊ธฐ๋ณธ ์ด๋ฆ์ด
์ปดํ์ผ ์์ค ํ์ผ์ ๊ตฌ์กฐ์ฒด๊ฐ ์ ์๋ ํ์ผ์ ๊ธฐ๋ณธ ์ด๋ฆ๊ณผ ์ผ์นํฉ๋๋ค.
์ด ์ต์ ์ ๋๋ฒ๊น ์ ๋ณด์ ํฌ๊ธฐ๋ฅผ ์๋นํ ์ค์ฌ์ฃผ์ง๋ง,
๋๋ฒ๊ฑฐ์ ๋ํ ์ ํ ์ ๋ณด์ ์๋นํ ์ ์ฌ์ ์์ค. ๋ณด๋ค
-femit-struct-debug-reduced ๋ ๊ณต๊ฒฉ์ ์ธ ์ต์ ์ ์ํด. ๋ณด๋ค
-femit-struct-debug-detailed ๋ ์์ธํ ์ ์ด๋ฅผ ์ํด.
์ด ์ต์ ์ DWARF 2์์๋ง ์๋ํฉ๋๋ค.
-femit-struct-debug-reduced
๊ธฐ๋ณธ ์ด๋ฆ์ด
์ปดํ์ผ ์์ค ํ์ผ์ ์ ํ์ด ์ ์๋ ํ์ผ์ ๊ธฐ๋ณธ ์ด๋ฆ๊ณผ ์ผ์นํฉ๋๋ค.
๊ตฌ์กฐ์ฒด๊ฐ ํ ํ๋ฆฟ์ด๊ฑฐ๋ ์์คํ ํค๋์ ์ ์๋์ด ์์ง ์๋ ํ.
์ด ์ต์ ์ ๋๋ฒ๊น ์ ๋ณด์ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ ๋๋ค.
๋๋ฒ๊ฑฐ์ ๋ํ ์ ํ ์ ๋ณด์ ์ ์ฌ์ ์์ค. ๋ณด๋ค -femit-struct-debug-baseonly
๋ ๊ณต๊ฒฉ์ ์ธ ์ต์ ์ ์ํด. ๋ณด๋ค -femit-struct-debug-detailed ๋ ์์ธํ
์ ์ด ํ ์ ์์ต๋๋ค.
์ด ์ต์ ์ DWARF 2์์๋ง ์๋ํฉ๋๋ค.
-femit-struct-debug-detailed[=์ฌ์ ๋ชฉ๋ก]
์ปดํ์ผ๋ฌ๊ฐ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์์ฑํ๋ ๊ตฌ์กฐ ์ ํ์ ์ง์ ํ์ญ์์ค. NS
๋ชฉ์ ์ ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด ํ์ผ ๊ฐ์ ์ค๋ณต ๊ตฌ์กฐ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์ค์ด๋ ๊ฒ์ ๋๋ค.
๊ฐ์ ํ๋ก๊ทธ๋จ ๋ด์์.
์ด ์ต์ ์ -femit-struct-debug-reduced and
-femit-struct-debug-baseonly, ๋๋ถ๋ถ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํฉ๋๋ค.
์ฌ์์๋ ๊ตฌ๋ฌธ์ด ์์ต๋๋ค[๊ตญ์ฅ :|์ธ:][์ฃผ๋ฌธ:|์ฅ๋ฅด :](์ด๋ค|sys|๊ธฐ์ง|์์)
์ ํ์ ์ธ ์ฒซ ๋ฒ์งธ ๋จ์ด๋ ์ง์ ์ฌ์ฉ๋๋ ๊ตฌ์กฐ์ฒด๋ก ์ฌ์์ ์ ํํฉ๋๋ค.
(๊ตญ์ฅ :) ๋๋ ๊ฐ์ ์ ์ผ๋ก ์ฌ์ฉ(์ธ:). ๊ตฌ์กฐ์ฒด ์ ํ์ ์ ํ์ผ ๋ ์ง์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ณ์, ๋ฉค๋ฒ. ๊ฐ์ ์ฌ์ฉ์ ๊ตฌ์กฐ์ฒด์ ๋ํ ํฌ์ธํฐ๋ฅผ ํตํด ๋ฐ์ํฉ๋๋ค. ๊ทธ๊ฑด,
๋ถ์์ ํ ๊ตฌ์กฐ์ฒด์ ์ฌ์ฉ์ด ์ ํจํ ๊ฒฝ์ฐ ์ฌ์ฉ์ ๊ฐ์ ์ ์ ๋๋ค. ์๋ ๊ตฌ์กฐ์ฒด
ํ ์ง์ ; ๊ตฌ์กฐ์ฒด ๋ * ๊ฐ์ ;.
์ ํ์ ๋ ๋ฒ์งธ ๋จ์ด๋ ์ฌ์์ ์ผ๋ฐ ๊ตฌ์กฐ์ฒด(์ฃผ๋ฌธ:) ๋๋
์ผ๋ฐ ๊ตฌ์กฐ์ฒด(์ฅ๋ฅด :). ์ผ๋ฐ ๊ตฌ์กฐ์ฒด๋ ์ค๋ช ํ๊ธฐ๊ฐ ์ฝ๊ฐ ๋ณต์กํฉ๋๋ค. C++์ ๊ฒฝ์ฐ,
์ด๋ค์ ํ ํ๋ฆฟ ํด๋์ค ๋๋ ํ ํ๋ฆฟ์ด ์๋ ํด๋์ค์ ๋น๋ช ์์ ์ ๋ฌธํ์ ๋๋ค.
์์ ๋ฒ์ ๋ด์์. ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์๋ ์ ๋ค๋ฆญ์ด ์์ง๋ง
-femit-struct-debug-detailed ์์ง ๊ตฌํํ์ง ์์์ต๋๋ค.
์ธ ๋ฒ์งธ ๋จ์ด๋ ์ปดํ์ผ๋ฌ๊ฐ ํด๋น ๊ตฌ์กฐ์ฒด์ ๋ํ ์์ค ํ์ผ์ ์ง์ ํฉ๋๋ค.
๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ๋ด๋ณด๋ด์ผ ํฉ๋๋ค. ๊ฐ์น ์์ and ์ด๋ค ์ ์์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. NS
๊ฐ์น ๊ธฐ์ง ํ์ ์ ์ธ์ด ์๋ ํ์ผ ์ด๋ฆ์ ๊ธฐ์ค์ ์๋ฏธํฉ๋๋ค.
ํ์๋ ๊ธฐ๋ณธ ์ปดํ์ผ ํ์ผ ์ด๋ฆ์ ๊ธฐ์ค๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค. ์ค์ ๋ก,
์ด๊ฒ์ ์ปดํ์ผ ํ ๋ foo.c, ์ ํ์ ๋ํ ๋๋ฒ๊ทธ ์ ๋ณด๊ฐ ์์ฑ๋ฉ๋๋ค.
ํด๋น ํ์ผ์์ ์ ์ธํ๊ณ ํธ.h, ๊ทธ๋ฌ๋ ๋ค๋ฅธ ํค๋ ํ์ผ์ ์๋๋๋ค. ๊ฐ์น sys ๋ฐฉ๋ฒ
๋ง์กฑ์ค๋ฌ์ด ์ ํ ๊ธฐ์ง ๋๋ ์์คํ ๋๋ ์ปดํ์ผ๋ฌ ํค๋์์ ์ ์ธ๋ฉ๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ์ฅ ์ ํฉํ ์ค์ ์ ๊ฒฐ์ ํ๊ธฐ ์ํด ์คํํด์ผ ํ ์๋ ์์ต๋๋ค.
๋ํดํธ๋ -femit-struct-debug-detailed=๋ชจ๋.
์ด ์ต์ ์ DWARF 2์์๋ง ์๋ํฉ๋๋ค.
-fno-๋ณํฉ-๋๋ฒ๊ทธ-๋ฌธ์์ด
๋๋ฒ๊น ์ ๋ณด์ ๋ฌธ์์ด์ ๋ณํฉํ์ง ์๋๋ก ๋ง์ปค์ ์ง์ํ์ญ์์ค.
๋ค๋ฅธ ๊ฐ์ฒด ํ์ผ์์ ๋์ผํฉ๋๋ค. ๋ณํฉ์ ๋ชจ๋ ์ด์ ๋ธ๋ฌ์์ ์ง์๋์ง ์๊ฑฐ๋
๋ง์ปค. ๋ณํฉํ๋ฉด ์ถ๋ ฅ ํ์ผ์ ๋๋ฒ๊ทธ ์ ๋ณด ํฌ๊ธฐ๊ฐ ์ค์ด๋ญ๋๋ค.
๋งํฌ ์ฒ๋ฆฌ ์๊ฐ ์ฆ๊ฐ ๋น์ฉ. ๋ณํฉ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
-fdebug-์ ๋์ฌ-๋งต=๋ก์=
๋๋ ํ ๋ฆฌ์์ ํ์ผ์ ์ปดํ์ผํ ๋ ๋ก์, ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ํ๋ ๋๋ฒ๊น ์ ๋ณด๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
in ๋์ .
-fno-dwarf2-cfi-asm
DWARF 2 ํด์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ ๋์ ์ปดํ์ผ๋ฌ์์ ์์ฑํ ".eh_frame" ์น์ ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.
GAS ".cfi_*" ์ง์๋ฌธ.
-p ๋ถ์ ํ๋ก๊ทธ๋จ์ ์ ํฉํ ํ๋กํ์ผ ์ ๋ณด๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ถ๊ฐ ์ฝ๋ ์์ฑ
๊ต์. ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ์์ค ํ์ผ์ ์ปดํ์ผํ ๋ ์ด ์ต์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋งํฌํ ๋๋ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
-ํ์ด์ง ๋ถ์ ํ๋ก๊ทธ๋จ์ ์ ํฉํ ํ๋กํ์ผ ์ ๋ณด๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ถ๊ฐ ์ฝ๋ ์์ฑ
gprof. ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ์์ค ํ์ผ์ ์ปดํ์ผํ ๋ ์ด ์ต์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋งํฌํ ๋๋ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
-Q ์ปดํ์ผ๋ฌ๊ฐ ์ปดํ์ผ๋ ๋ ๊ฐ ํจ์ ์ด๋ฆ์ ์ถ๋ ฅํ๊ณ ์ผ๋ถ๋ฅผ ์ถ๋ ฅํ๋๋ก ํฉ๋๋ค.
์๋ฃ ์ ๊ฐ ํจ์ค์ ๋ํ ํต๊ณ์ ๋๋ค.
-ftime-๋ณด๊ณ
์ปดํ์ผ๋ฌ๊ฐ ๊ฐ ํจ์ค์์ ์๋นํ ์๊ฐ์ ๋ํ ํต๊ณ๋ฅผ ์ธ์ํ๋๋ก ํฉ๋๋ค.
๋ง๋ฌด๋ฆฌํฉ๋๋ค.
-fmem ๋ณด๊ณ ์
์ปดํ์ผ๋ฌ๊ฐ ์๊ตฌ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ํ ์ผ๋ถ ํต๊ณ๋ฅผ ์ธ์ํ๋๋ก ํฉ๋๋ค.
๋ง๋ฌด๋ฆฌํฉ๋๋ค.
-fmem-๋ณด๊ณ ์-wpa
์ปดํ์ผ๋ฌ๊ฐ WPA์ ๋ํ ์๊ตฌ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ํ ์ผ๋ถ ํต๊ณ๋ฅผ ์ธ์ํ๋๋ก ํฉ๋๋ค.
๋จ๊ณ๋ง.
-fpre-ipa-mem-๋ณด๊ณ ์
-fpost-ipa-mem-๋ณด๊ณ ์
์ปดํ์ผ๋ฌ๊ฐ ์๊ตฌ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ํ ์ผ๋ถ ํต๊ณ๋ฅผ ์ธ์ํ๊ฑฐ๋
์ ์ฐจ ๊ฐ ์ต์ ํ ํ.
-fprofile-๋ณด๊ณ
์ปดํ์ผ๋ฌ๊ฐ (์ถ์ ๋) ํ๋กํ์ ์ผ๊ด์ฑ์ ๋ํ ์ผ๋ถ ํต๊ณ๋ฅผ ์ธ์ํ๋๋ก ํฉ๋๋ค.
๋ฐ ๊ฐ๋ณ ํจ์ค์ ํจ๊ณผ.
-fstack-์ฌ์ฉ
์ปดํ์ผ๋ฌ๊ฐ ํจ์๋ณ๋ก ํ๋ก๊ทธ๋จ์ ๋ํ ์คํ ์ฌ์ฉ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋๋ก ํฉ๋๋ค.
๊ธฐ์ด. ๋คํ์ ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ญ๋๋ค. .su ๋ถํฐ ๋ณด์กฐ ์ด๋ฆ. ๋ณด์กฐ ์ด๋ฆ is
๋ช ์์ ์ผ๋ก ์ง์ ๋๊ณ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ์ถ๋ ฅ ํ์ผ์ ์ด๋ฆ์์ ์์ฑ๋ฉ๋๋ค.
์คํ ๊ฐ๋ฅํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์์ค ํ์ผ์ ๊ธฐ๋ณธ ์ด๋ฆ์ ๋๋ค. ํญ๋ชฉ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์ธ ํ๋:
ยท ํจ์์ ์ด๋ฆ.
ยท ๋ฐ์ดํธ ์.
ยท ํ๋ ์ด์์ ํ์ ์: "์ ์ ", "๋์ ", "์ ํ์ ".
ํ์ ์ "์ ์ "์ ํจ์๊ฐ ์คํ์ ์ ์ ์ผ๋ก ์กฐ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๊ณ ์ ๋ ์์ ๋ฐ์ดํธ๊ฐ ํจ์ ์ง์ ์ ํ๋ ์์ ํ ๋น๋๊ณ ํด์ ๋ฉ๋๋ค.
๊ธฐ๋ฅ ์ข ๋ฃ; ๊ทธ๋ ์ง ์์ผ๋ฉด ํจ์์์ ์คํ ์กฐ์ ์ด ์ํ๋์ง ์์ต๋๋ค. ๋๋ฒ์งธ
ํ๋๋ ์ด ๊ณ ์ ๋ ๋ฐ์ดํธ ์์ ๋๋ค.
ํ์ ์ "๋์ "์ ํจ์๊ฐ ์คํ์ ๋์ ์ผ๋ก ์กฐ์ํจ์ ์๋ฏธํฉ๋๋ค.
์์์ ์ค๋ช ํ ์ ์ ํ ๋น ์ธ์๋ ์คํ ์กฐ์ ์
์๋ฅผ ๋ค์ด ํจ์ ํธ์ถ ์ฃผ์์ ์ธ์๋ฅผ ํธ์/ํํ๊ธฐ ์ํด ํจ์์ ๋ณธ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. ๋ง์ฝ
ํ์ ์ "bounded"๋ ์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์กฐ์ ์ ์์ ๋ค์์ผ๋ก ์ ํ๋ฉ๋๋ค.
์ปดํ์ผ ์๊ฐ์ด๊ณ ๋ ๋ฒ์งธ ํ๋๋ ์ฌ์ฉ๋ ์ด ์คํ ์์ ์ํ์ ๋๋ค.
๊ธฐ๋ฅ์ผ๋ก. ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์กฐ์ ์ ์์ ์ ํ๋์ง ์์ต๋๋ค.
์ปดํ์ผ ํ์์ ๋ ๋ฒ์งธ ํ๋๋ ์ ํ๋ ๋ถ๋ถ๋ง ๋ํ๋ ๋๋ค.
-fprofile-ํธ
ํ๋ก๊ทธ๋จ์ด ํ๋ฅผ ์ ์๋๋ก ์ฝ๋ ์ถ๊ฐ ํธ ๊ณ์ธก๋ฉ๋๋ค. ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋์
๊ฐ ๋ถ๊ธฐ ๋ฐ ํธ์ถ์ด ์คํ๋ ํ์์ ์ํ๋ ํ์๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
๋๋ ๋ฐํํฉ๋๋ค. ์ปดํ์ผ๋ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ์ด ๋ฐ์ดํฐ๋ฅผ ๋ผ๋ ํ์ผ์ ์ ์ฅํฉ๋๋ค.
auxname.gcda ๊ฐ ์์ค ํ์ผ์ ๋ํด ๋ฐ์ดํฐ๋ ํ๋กํ ์ง์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์ต์ ํ(-f๋ถ๊ธฐ ํ๋ฅ ) ๋๋ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ๋ถ์์ฉ
(-์ตํ ๋ฒ์). ๊ฐ ์ค๋ธ์ ํธ ํ์ผ์ ๋ณด์กฐ ์ด๋ฆ ์ ์ด๋ฆ์์ ์์ฑ๋ฉ๋๋ค.
๋ช ์์ ์ผ๋ก ์ง์ ๋๊ณ ์ต์ข ์คํ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ์ถ๋ ฅ ํ์ผ, ๊ทธ๋ ์ง ์์ผ๋ฉด
์์ค ํ์ผ์ ๊ธฐ๋ณธ ์ด๋ฆ์ ๋๋ค. ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ ๋ฏธ์ฌ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค(์:
foo.gcda ์ ๋ ฅ ํ์ผ์ฉ ๋๋ ํ ๋ฆฌ/foo.c๋ฐ ๋๋ ํ ๋ฆฌ/foo.gcda ๋ค์๊ณผ ๊ฐ์ด ์ง์ ๋ ์ถ๋ ฅ ํ์ผ์ ๊ฒฝ์ฐ -o
dir/foo.o).
--์ ์ฉ ๋ฒ์
์ด ์ต์ ์ ์ปค๋ฒ๋ฆฌ์ง ๋ถ์์ ์ํด ๊ณ์ธก๋ ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ณ ๋งํฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. NS
์ต์ ์ ๋์์ด์ ๋๋ค. -fprofile-ํธ -์ตํ ๋ฒ์ (์ปดํ์ผํ ๋) ๊ทธ๋ฆฌ๊ณ -lgcov
(๋งํฌํ ๋). ์์ธํ ๋ด์ฉ์ ํด๋น ์ต์ ์ ๋ํ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
ยท ์์ค ํ์ผ์ ๋ค์์ผ๋ก ์ปดํ์ผ -fprofile-ํธ ํ๋ฌ์ค ์ต์ ํ ๋ฐ ์ฝ๋ ์์ฑ
์ต์ . ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ๋ถ์์ ์ํด ์ถ๊ฐ์ ์ธ -์ตํ ๋ฒ์ ์ต์ ์ ์ ํํฉ๋๋ค.
ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ์์ค ํ์ผ์ ํ๋กํ์ผ๋งํ ํ์๋ ์์ต๋๋ค.
ยท ๊ฐ์ฒด ํ์ผ์ ๋ค์๊ณผ ์ฐ๊ฒฐํ์ญ์์ค. -lgcov or -fprofile-ํธ (ํ์๋ ์๋ฏธํ๋ค.
์ด์ ์).
ยท ๋ํ์ ์ธ ์ํฌ๋ก๋์์ ํ๋ก๊ทธ๋จ์ ์คํํ์ฌ ์ํฌ ํ๋กํ์ผ ์์ฑ
์ ๋ณด. ์ด๊ฒ์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต๋ ์ ์์ต๋๋ค. ๋์์ ์คํํ ์ ์์ต๋๋ค
ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค์ ํ์ผ ์์คํ ์ด ์ ๊ธ์ ์ง์ํ๋ ๊ฒฝ์ฐ
๋ฐ์ดํฐ ํ์ผ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ๋ํ "ํฌํฌ" ํธ์ถ์ด ๊ฐ์ง๋๊ณ
์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌ๋ฉ๋๋ค(์ด์ค ๊ณ์ฐ์ ๋ฐ์ํ์ง ์์).
ยท ํ๋กํ ์งํฅ ์ต์ ํ์ ๊ฒฝ์ฐ ๋์ผํ ํ์ผ๋ก ์์ค ํ์ผ์ ๋ค์ ์ปดํ์ผํฉ๋๋ค.
์ต์ ํ ๋ฐ ์ฝ๋ ์์ฑ ์ต์ ํ๋ฌ์ค -f๋ถ๊ธฐ ํ๋ฅ .
ยท ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ๋ถ์์ ์ํด ์ฌ์ฉ gcov ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ ๋ณด๋ฅผ ์์ฑํ๊ธฐ ์ํด
์ ์, .gcno and .gcda ํ์ผ. ์ฐธ์กฐ gcov ์ถ๊ฐ ๋ฌธ์
์ ๋ณด.
์ -fprofile-ํธ, ํ๋ก๊ทธ๋จ์ ๊ฐ ๊ธฐ๋ฅ์ ๋ํด GCC๋ ํ๋ก๊ทธ๋จ ํ๋ฆ์ ๋ง๋ญ๋๋ค.
๊ทธ๋ํ์ ๋ํ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ์ฐพ์ต๋๋ค. ์ ์๋ ํธ๋ง
์คํจ๋ ํธ๋ฆฌ๋ฅผ ๊ณ์ธกํด์ผ ํฉ๋๋ค. ์ปดํ์ผ๋ฌ๋
์ด ํธ๊ฐ ์คํ๋๋ ํ์์ ๋๋ค. ํธ๊ฐ ์ ์ผํ ์ถ๊ตฌ ๋๋ ์ ์ผํ ์ ๊ตฌ์ผ ๋
๋ธ๋ก, ๊ณ์ธก ์ฝ๋๋ฅผ ๋ธ๋ก์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ก์ด ๊ธฐ๋ณธ
๊ณ์ธก ์ฝ๋๋ฅผ ๋ณด๊ดํ๋ ค๋ฉด ๋ธ๋ก์ ์์ฑํด์ผ ํฉ๋๋ค.
-์ตํ ๋ฒ์
๋ฉ๋ชจ ํ์ผ์ ์์ฑํ์ญ์์ค. gcov ์ฝ๋ ์ ์ฉ ์ ํธ๋ฆฌํฐ๋ ํ๋ก๊ทธ๋จ์ ํ์ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ์ฉ ๋ฒ์. ๊ฐ ์์ค ํ์ผ์ ๋ฉ๋ชจ ํ์ผ์ auxname.gcno. ์์ธํ ๋ด์ฉ์
-fprofile-ํธ ์ ๋ํ ์ค๋ช ์ ์์ ์ต์ ๋ณด์กฐ ์ด๋ฆ ๋ฐ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ
ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ๋ฐ์ดํฐ๋ฅผ ์์ฑํฉ๋๋ค. ์ ์ฉ ๋ฒ์ ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์์ค ํ์ผ๊ณผ ๋ ๊ฐ๊น๊ฒ ์ผ์นํฉ๋๋ค.
๋น์ ์ ์ต์ ํํ์ง ์์ต๋๋ค.
-fdbg-cnt-๋ชฉ๋ก
๋ชจ๋ ๋๋ฒ๊ทธ ์นด์ดํฐ์ ์ด๋ฆ๊ณผ ์นด์ดํฐ ์ํ์ ์ธ์ํฉ๋๋ค.
-fdbg-cnt=๋ฐ๋ ๊ฐ์น ๋ชฉ๋ก
๋ด๋ถ ๋๋ฒ๊ทธ ์นด์ดํฐ ์ํ์ ์ค์ ํฉ๋๋ค. ๋ฐ๋ ๊ฐ์น ๋ชฉ๋ก ์ผํ๋ก ๊ตฌ๋ถ๋
๋ชฉ๋ก name:๊ฐ์น ๊ฐ ๋๋ฒ๊ทธ ์นด์ดํฐ์ ์ํ์ ์ค์ ํ๋ ์ name ์
๊ฐ์น. ๋ชจ๋ ๋๋ฒ๊ทธ ์นด์ดํฐ์ ์ด๊ธฐ ์ํ์ ์ "UINT_MAX"์ ๋๋ค. ์ด์ ๊ฐ์ด
"dbg_cnt()"๋ ์ด ์ต์ ์ผ๋ก ์ํ์ ์ค์ ํ์ง ์๋ ํ ํญ์ true๋ฅผ ๋ฐํํฉ๋๋ค. ์์ํ
์๋ฅผ ๋ค์ด -fdbg-cnt=dce:10,tail_call:0, "dbg_cnt(dce)"๋ ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ง true๋ฅผ ๋ฐํํฉ๋๋ค.
10 ํธ์ถ.
-ํฉ๋ฆฌ์ ์ธ-์ข ๋ฅ-ํจ์ค
-fdisable-์ข ๋ฅ-ํจ์ค=๋ฒ์ ๋ชฉ๋ก
์ด๊ฒ์ ์ต์ ํ๋ฅผ ๋ช ์์ ์ผ๋ก ๋นํ์ฑํ/ํ์ฑํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ต์ ์ธํธ์ ๋๋ค.
ํต๊ณผ. ์ด๋ฌํ ์ต์ ์ GCC ๋๋ฒ๊น ์ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ์ปดํ์ผ๋ฌ ์ฌ์ฉ์๋
๋์ ํจ์ค๋ฅผ ํ์ฑํ/๋นํ์ฑํํ๋ ์ผ๋ฐ ์ต์ ์ ์ฌ์ฉํ์ญ์์ค.
-fdisable-ipa-ํจ์ค
IPA ํจ์ค ๋นํ์ฑํ ํจ์ค. ํจ์ค ๋ ํจ์ค ์ด๋ฆ์ ๋๋ค. ๋์ผํ ํจ์ค๊ฐ ์ ์ ์ผ๋ก
์ปดํ์ผ๋ฌ์์ ์ฌ๋ฌ ๋ฒ ํธ์ถ๋๋ฉด ํจ์ค ์ด๋ฆ์
1๋ถํฐ ์์ํ๋ ์ผ๋ จ๋ฒํธ.
-fdisable-rtl-ํจ์ค
-fdisable-rtl-ํจ์ค=๋ฒ์ ๋ชฉ๋ก
RTL ํจ์ค ๋นํ์ฑํ ํจ์ค. ํจ์ค ๋ ํจ์ค ์ด๋ฆ์ ๋๋ค. ๋์ผํ ํจ์ค๊ฐ ์ ์ ์ผ๋ก
์ปดํ์ผ๋ฌ์์ ์ฌ๋ฌ ๋ฒ ํธ์ถ๋๋ฉด ํจ์ค ์ด๋ฆ์
1๋ถํฐ ์์ํ๋ ์ผ๋ จ๋ฒํธ. ๋ฒ์ ๋ชฉ๋ก ๋ ์ผํ๋ก ๊ตฌ๋ถ๋ ๋ชฉ๋ก์ ๋๋ค.
ํจ์ ๋ฒ์ ๋๋ ์ด์ ๋ธ๋ฌ ์ด๋ฆ. ๊ฐ ๋ฒ์๋ ๋ค์์ผ๋ก ๊ตฌ๋ถ๋ ์ซ์ ์์ ๋๋ค.
์ฝ๋ก . ๋ฒ์๋ ์์ชฝ ๋์ ๋ชจ๋ ํฌํจํฉ๋๋ค. ๋ฒ์๊ฐ ์ฌ์ํ ๊ฒฝ์ฐ ์ซ์
์์ ๋จ์ผ ์ซ์๋ก ๋จ์ํํ ์ ์์ต๋๋ค. ํจ์์ ํธ์ถ ๊ทธ๋ํ ๋ ธ๋๊ฐ
UID ์ง์ ๋ ๋ฒ์ ์ค ํ๋์ ํด๋นํ๋ ๊ฒฝ์ฐ ํจ์ค ๊ทธ๊ฒ์ ๋ํด ๋นํ์ฑํ๋์ด ์์ต๋๋ค
ํจ์. ๊ทธ๋งํผ UID ๋คํ ํ์ผ์ ํจ์ ํค๋์ ํ์๋๊ณ ํจ์ค
์ต์ ์ ์ฌ์ฉํ์ฌ ์ด๋ฆ์ ๋คํํ ์ ์์ต๋๋ค. -fdump-pass.
-fdisable-ํธ๋ฆฌ-ํจ์ค
-fdisable-ํธ๋ฆฌ-ํจ์ค=๋ฒ์ ๋ชฉ๋ก
ํธ๋ฆฌ ํจ์ค ๋นํ์ฑํ ํจ์ค. ์ฐธ์กฐ -fdisable-rtl ์ต์ ์ค๋ช ์ ์ํด
์ธ์.
-fenable-ipa-ํจ์ค
IPA ํจ์ค ์ฌ์ฉ ํจ์ค. ํจ์ค ๋ ํจ์ค ์ด๋ฆ์ ๋๋ค. ๋์ผํ ํจ์ค๊ฐ ์ ์ ์ผ๋ก
์ปดํ์ผ๋ฌ์์ ์ฌ๋ฌ ๋ฒ ํธ์ถ๋๋ฉด ํจ์ค ์ด๋ฆ์
1๋ถํฐ ์์ํ๋ ์ผ๋ จ๋ฒํธ.
-๊ฐ๋ฅ-rtl-ํจ์ค
-๊ฐ๋ฅ-rtl-ํจ์ค=๋ฒ์ ๋ชฉ๋ก
RTL ํจ์ค ํ์ฑํ ํจ์ค. ์ฐธ์กฐ -fdisable-rtl ์ต์ ์ธ์ ์ค๋ช ๋ฐ
์.
-๊ฐ๋ ๋๋ฌด-ํจ์ค
-๊ฐ๋ ๋๋ฌด-ํจ์ค=๋ฒ์ ๋ชฉ๋ก
ํธ๋ฆฌ ํจ์ค ์ฌ์ฉ ํจ์ค. ์ฐธ์กฐ -fdisable-rtl ์ต์ ์ธ์์ ๋ํ ์ค๋ช ์ ๋๋ค.
๋ค์์ ์ด๋ฌํ ์ต์ ์ ์ฌ์ฉ์ ๋ณด์ฌ์ฃผ๋ ๋ช ๊ฐ์ง ์์ ๋๋ค.
# ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํด ccp1 ๋นํ์ฑํ
-fdisable-tree-ccp1
# cgraph ๋ ธ๋ uid๊ฐ 1์ธ ํจ์์ ๋ํด ์์ ํ ์ธ๋กค์ ๋นํ์ฑํํฉ๋๋ค.
-fenable-tree-cunroll=1
# ๋ค์ ๋ฒ์ [2]์์ ๊ธฐ๋ฅ์ ๋ํด gcse1,1๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
# [300,400] ๋ฐ [400,1000]
# foo ๋ฐ foo2 ๊ธฐ๋ฅ์ ๋ํด gcse2 ๋นํ์ฑํ
-fdisable-rtl-gcse2=ํธ,ํธ2
# ์ด๊ธฐ ์ธ๋ผ์ธ ๋นํ์ฑํ
-fdisable-tree-einline
# ipa ์ธ๋ผ์ด๋ ๋นํ์ฑํ
-fdisable-ipa-inline.
# ํธ๋ฆฌ ์ ์ฒด ์ธ๋กค ํ์ฑํ
-fenable-ํธ๋ฆฌ-ํผ์น๊ธฐ
-dํธ์ง
-fdump-rtl-ํจ์ค
-fdump-rtl-ํจ์ค=ํ์ผ ์ด๋ฆ
๋ค์์์ ์ง์ ํ ์๊ฐ์ ์ปดํ์ผํ๋ ๋์ ๋๋ฒ๊น ๋คํ๋ฅผ ๋ง๋ค๋ผ๊ณ ๋งํฉ๋๋ค. ํธ์ง. ์ด
์ปดํ์ผ๋ฌ์ RTL ๊ธฐ๋ฐ ํจ์ค๋ฅผ ๋๋ฒ๊น ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋๋ถ๋ถ์ ํ์ผ ์ด๋ฆ
๋คํ๋ ํจ์ค ๋ฒํธ์ ๋จ์ด๋ฅผ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค. ๋คํ ์ด๋ฆ๋ฐ
ํ์ผ์ ์ถ๋ ฅ ํ์ผ์ ๋๋ ํ ๋ฆฌ์ ์์ฑ๋ฉ๋๋ค. ์ ๊ฒฝ์ฐ =ํ์ผ ์ด๋ฆ ์ ํ๊ถ,
๋คํ๋ ํจ์ค ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง ๋คํ ํ์ผ ๋์ ์ง์ ๋ ํ์ผ์์ ์ถ๋ ฅ๋ฉ๋๋ค. ๋ฉ๋ชจ
ํจ์ค๊ฐ ํจ์ค์ ๋ฑ๋ก๋ ๋ ํจ์ค ๋ฒํธ๊ฐ ์ ์ ์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
๊ด๋ฆฌ์. ๋ฐ๋ผ์ ๋ฒํธ ๋งค๊ธฐ๊ธฐ๋ ๋์ ์คํ ์์์ ๊ด๋ จ์ด ์์ต๋๋ค.
ํต๊ณผ. ํนํ ํ๋ฌ๊ทธ์ธ์ ์ํด ์ค์น๋ ํจ์ค๋ 200๊ฐ ์ด์์ ์ซ์๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ด ์์ฃผ ์ผ์ฐ ์คํ๋๋ค๋ฉด. ๋คํ ์ด๋ฆ ์ถ๋ ฅ ํ์ผ์ ์ด๋ฆ์์ ์์ฑ๋๋ฉฐ,
๋ช ์์ ์ผ๋ก ์ง์ ๋๊ณ ์คํ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ์ด๋ฆ์ ๋๋ค.
์์ค ํ์ผ. ์ด๋ฌํ ์ค์์น๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ค๋ฅธ ํจ๊ณผ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. -E ~์ ์ฌ์ฉ๋ฉ๋๋ค.
์ ์ฒ๋ฆฌ.
๋๋ฒ๊ทธ ๋คํ๋ ๋ค์์ ์ฌ์ฉํ์ฌ ํ์ฑํํ ์ ์์ต๋๋ค. -fdump-rtl ์ค์์น ๋๋ ์ผ๋ถ -d option ํธ์ง. ์ด๋ฆฌ
์ ์ฌ์ฉํ ์ ์๋ ๋ฌธ์๋ ํจ์ค and ํธ์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์๋ฏธ:
-fdump-rtl-์ ๋ ฌ
๋ถ๊ธฐ ์ ๋ ฌ์ด ๊ณ์ฐ๋ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-asmcons
in/out ์ ์ฝ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ง ์์ rtl ๋ฌธ์ ์์ ํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-auto_inc_dec
auto-inc-dec ๊ฒ์ ํ ๋คํํฉ๋๋ค. ์ด ํจ์ค๋ ๋ค์๊ณผ ๊ฐ์ ์ํคํ ์ฒ์์๋ง ์คํ๋ฉ๋๋ค.
auto inc ๋๋ auto dec ๋ช ๋ น์ด ์์ต๋๋ค.
-fdump-rtl-์ฅ๋ฒฝ
๋ฐฐ๋ฆฌ์ด ์ง์นจ์ ์ ๋ฆฌํ ํ ๋คํํ์ญ์์ค.
-fdump-rtl-bbpart
ํซ ๋ฐ ์ฝ๋ ๊ธฐ๋ณธ ๋ธ๋ก์ ๋ถํ ํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-bbro
๋ธ๋ก ์ฌ์ ๋ ฌ ํ ๋คํ.
-fdump-rtl-btl1
-fdump-rtl-btl2
-fdump-rtl-btl1 and -fdump-rtl-btl2 ๋ ๋ถ๊ธฐ ๋์ ๋ค์ ๋คํ ํ์ฑํ
๋ก๋ ์ต์ ํ๋ฅผ ํต๊ณผํฉ๋๋ค.
-fdump-rtl-๋ฐ์ดํจ์ค
์ ํ ์ฐํ ๋ฐ ์ ์ด ํ๋ฆ ์ต์ ํ ํ ๋คํ.
-fdump-rtl-๊ฒฐํฉ
RTL ๋ช ๋ น์ด ์กฐํฉ ํต๊ณผ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-compgotos
๊ณ์ฐ๋ goto๋ฅผ ๋ณต์ ํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-ce1
-fdump-rtl-ce2
-fdump-rtl-ce3
-fdump-rtl-ce1, -fdump-rtl-ce2๋ฐ -fdump-rtl-ce3 ์ธ ํ ๋คํ ํ์ฑํ
๋ณํ์ด ํต๊ณผํ๋ ๊ฒฝ์ฐ.
-fdump-rtl-cprop_hardreg
ํ๋ ๋ ์ง์คํฐ ๋ณต์ฌ ์ ํ ํ ๋คํ.
-fdump-rtl-csa
์คํ ์กฐ์ ์ ๊ฒฐํฉํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-cse1
-fdump-rtl-cse2
-fdump-rtl-cse1 and -fdump-rtl-cse2 ๋ ๊ณตํต ํ ๋คํ ํ์ฑํ
ํ์ ํํ์ ์ ๊ฑฐ๋ฅผ ํต๊ณผํฉ๋๋ค.
-fdump-rtl-dce
๋ ๋ฆฝ ์คํํ ๋ฐ๋ ์ฝ๋ ์ ๊ฑฐ๋ฅผ ํต๊ณผํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-dbr
์ง์ฐ๋ ๋ถ๊ธฐ ์ค์ผ์ค๋ง ํ ๋คํ.
-fdump-rtl-dce1
-fdump-rtl-dce2
-fdump-rtl-dce1 and -fdump-rtl-dce2 ๋ ๊ฐ์ ์ฃฝ์ ์ ์ฅ์ ํ ๋คํ ํ์ฑํ
์ ๊ฑฐ ํต๊ณผ.
-fdump-rtl-eh
EH ์ฒ๋ฆฌ ์ฝ๋ ์๋ฃ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-eh_ranges
EH ์ฒ๋ฆฌ ๋ฒ์ ์์ญ ๋ณํ ํ ๋คํ.
-fdump-rtl-ํ์ฅ
RTL ์์ฑ ํ ๋คํ.
-fdump-rtl-fwprop1
-fdump-rtl-fwprop2
-fdump-rtl-fwprop1 and -fdump-rtl-fwprop2 ๋ ์์ผ๋ก ๋คํ ํ์ฑํ
์ ํ ํต๊ณผ.
-fdump-rtl-gcse1
-fdump-rtl-gcse2
-fdump-rtl-gcse1 and -fdump-rtl-gcse2 ์ ์ญ ๊ณตํต ํ ๋คํ ํ์ฑํ
ํ์ ํํ ์ ๊ฑฐ.
-fdump-rtl-init-regs
๋ ์ง์คํฐ ์ด๊ธฐํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-์ด๊ธฐํ
์ด๊ธฐ ๊ฐ ์ธํธ ๊ณ์ฐ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-into_cfglayout
cfglayout ๋ชจ๋๋ก ๋ณํํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-ira
๋ ์ง์คํฐ ํ ๋น์ ๋ฐ๋ณตํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-์ ํ
๋ ๋ฒ์งธ ์ ํ ์ต์ ํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-loop2
-fdump-rtl-loop2 rtl ๋ฃจํ ์ต์ ํ๊ฐ ํต๊ณผํ ํ ๋คํ์ ํ์ฑํํฉ๋๋ค.
-fdump-rtl-๋งํ
์์คํ ์ข ์ ์ฌ๊ตฌ์ฑ ๋จ๊ณ๋ฅผ ์ํํ ํ ๋คํ(ํด๋น ํจ์ค์ธ ๊ฒฝ์ฐ)
์กด์ฌํฉ๋๋ค.
-fdump-rtl-mode_sw
์ค๋ณต ๋ชจ๋ ์ค์์น๋ฅผ ์ ๊ฑฐํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-rnreg
๋ ์ง์คํฐ ๋ฒํธ ๋ค์ ๋งค๊ธฐ๊ธฐ ํ ๋คํ.
-fdump-rtl-outof_cfglayout
cfglayout ๋ชจ๋์์ ๋ณํํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-peephole2
์ฟ๋ณด๋ ๊ตฌ๋ฉ ํต๊ณผ ํ ๋คํ.
-fdump-rtl-postreload
๋ค์ ๋ก๋ ํ ์ต์ ํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-pro_and_epilogue
ํจ์ ํ๋กค๋ก๊ทธ ๋ฐ ์ํ๋ก๊ทธ๋ฅผ ์์ฑํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-regmove
๋ ์ง์คํฐ ์ด๋ ํต๊ณผ ํ ๋คํ.
-fdump-rtl-sched1
-fdump-rtl-sched2
-fdump-rtl-sched1 and -fdump-rtl-sched2 ๊ธฐ๋ณธ ๋ธ๋ก ์ดํ์ ๋คํ ํ์ฑํ
์ผ์ ํจ์ค.
-fdump-rtl-์ฐธ์กฐ
๋ถํธ ํ์ฅ ์ ๊ฑฐ ํ ๋คํ.
-fdump-rtl-seqabstr
๊ณตํต ์ํ์ค ๊ฒ์ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-๋จ์ถ
๊ฐ์ง๋ฅผ ์ค์ธ ํ ๋คํํ์ญ์์ค.
-fdump-rtl-ํ์
ํ์ ํธ์ถ ์ต์ ํ ํ ๋คํ.
-fdump-rtl-split1
-fdump-rtl-split2
-fdump-rtl-split3
-fdump-rtl-split4
-fdump-rtl-split5
-fdump-rtl-split1, -fdump-rtl-split2, -fdump-rtl-split3, -fdump-rtl-split4 and
-fdump-rtl-split5 XNUMX ๋ผ์ด๋์ ๋ช ๋ น์ด ๋ถํ ํ ๋คํ์ ํ์ฑํํฉ๋๋ค.
-fdump-rtl-sms
๋ชจ๋๋ก ์ค์ผ์ค๋ง ํ ๋คํ. ์ด ํจ์ค๋ ์ผ๋ถ ์ํคํ ์ฒ์์๋ง ์คํ๋ฉ๋๋ค.
-fdump-rtl-์คํ
GCC์ "ํ๋ซ ๋ ์ง์คํฐ ํ์ผ" ๋ ์ง์คํฐ์์ x87 ๋ ์ง์คํฐ๋ก ๋ณํ ํ ๋คํ
์คํํ ๋ ์ง์คํฐ ์ด ํจ์ค๋ x86 ๋ณํ์์๋ง ์คํ๋ฉ๋๋ค.
-fdump-rtl-subreg1
-fdump-rtl-subreg2
-fdump-rtl-subreg1 and -fdump-rtl-subreg2 ๋ ํ์ ๋ฑ๋ก ๋ค์ ๋คํ ํ์ฑํ
ํ์ฅ ํจ์ค.
-fdump-rtl-๊ณต์ ํด์
๋ชจ๋ rtl์ด ๊ณต์ ํด์ ๋ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-vartrack
๋ณ์ ์ถ์ ํ ๋คํ.
-fdump-rtl-vregs
๊ฐ์ ๋ ์ง์คํฐ๋ฅผ ํ๋ ๋ ์ง์คํฐ๋ก ๋ณํํ ํ ๋คํํฉ๋๋ค.
-fdump-rtl-์น
๋ผ์ด๋ธ ๋ฒ์ ๋ถํ ํ ๋คํ.
-fdump-rtl-regclass
-fdump-rtl-subregs_of_mode_init
-fdump-rtl-subregs_of_mode_finish
-fdump-rtl-dfinit
-fdump-rtl-dfinish
์ด๋ฌํ ๋คํ๋ ์ ์๋์ง๋ง ํญ์ ๋น ํ์ผ์ ์์ฑํฉ๋๋ค.
-in
-fdump-rtl-๋ชจ๋
์์ ๋์ด๋ ๋ชจ๋ ๋คํ๋ฅผ ์์ฑํฉ๋๋ค.
-dA ๊ธฐํ ๋๋ฒ๊น ์ ๋ณด๋ก ์ด์ ๋ธ๋ฌ ์ถ๋ ฅ์ ์ฃผ์์ ๋ต๋๋ค.
-dD ์ ์ฒ๋ฆฌ๊ฐ ๋๋ ๋ ์ผ๋ฐ์ ์ธ ๋งคํฌ๋ก ์ ์ ์ธ์ ๋ชจ๋ ๋งคํฌ๋ก ์ ์๋ฅผ ๋คํํฉ๋๋ค.
์ถ๋ ฅ.
-dH ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ์ฝ์ด ๋คํ๋ฅผ ์์ฑํฉ๋๋ค.
-dp ์ด์ ๋ธ๋ฌ ์ถ๋ ฅ์ ์ด๋ค ํจํด๊ณผ
๋์์ด ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ ๋ช ๋ น์ ๊ธธ์ด๋ ์ธ์๋ฉ๋๋ค.
-dP ๊ฐ ๋ช ๋ น์ด ์์ ์ฃผ์์ผ๋ก ์ด์ ๋ธ๋ฌ ์ถ๋ ฅ์ RTL์ ๋คํํฉ๋๋ค. ๋ํ
์ผ๋ค -dp ์ฃผ์.
-dx ์ปดํ์ผํ๋ ๋์ ํจ์์ ๋ํ RTL์ ์์ฑํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํจ๊ป ์ฌ์ฉ
-fdump-rtl-ํ์ฅ.
-fdump-noaddr
๋๋ฒ๊น ๋คํ๋ฅผ ์ํํ ๋ ์ฃผ์ ์ถ๋ ฅ์ ์ต์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ณด๋ค ์คํ ๊ฐ๋ฅํ
๋ค๋ฅธ ์ปดํ์ผ๋ฌ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผ๋ฌ ํธ์ถ์ ์ํ ๋๋ฒ๊น ๋คํ์ diff ์ฌ์ฉ
๋ฐ/๋๋ ๋ค๋ฅธ ํ ์คํธ/bss/๋ฐ์ดํฐ/ํ/์คํ/dso ์์ ์์น.
-fdump-๋ฒํธ ์์
๋๋ฒ๊น ๋คํ๋ฅผ ์ํํ ๋ ๋ช ๋ น ๋ฒํธ์ ์ฃผ์ ์ถ๋ ฅ์ ์ต์ ํฉ๋๋ค. ์ด๊ฒ
์ปดํ์ผ๋ฌ ํธ์ถ์ ๋ํ ๋๋ฒ๊น ๋คํ์์ diff๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ ํฉํฉ๋๋ค.
ํนํ ์ ๋ฌด์ ๊ด๊ณ์์ด ๋ค์ํ ์ต์ -g.
-fdump-unnumbered-๋งํฌ
๋๋ฒ๊น ๋คํ๋ฅผ ์ํํ ๋(์ฐธ์กฐ -d ์์ ์ต์ )์ ๋ํ ๋ช ๋ น ๋ฒํธ๋ฅผ ์ต์ ํฉ๋๋ค.
์ํ์ค์ ์ด์ ๋ฐ ๋ค์ ๋ช ๋ น์ ๋ํ ๋งํฌ์ ๋๋ค.
-fdump-๋ฒ์ญ-๋จ์ (C++๋ง ํด๋น)
-fdump-๋ฒ์ญ-๋จ์-์ต์ (C++๋ง ํด๋น)
์ ์ฒด ๋ฒ์ญ ๋จ์์ ๋ํ ํธ๋ฆฌ ๊ตฌ์กฐ ํํ์ ํ์ผ๋ก ๋คํํฉ๋๋ค.
ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค. .tu ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก, ํ์ผ์
์ถ๋ ฅ ํ์ผ๊ณผ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์์ฑ๋ฉ๋๋ค. ๋ง์ฝ -์ต์ ํํ๊ฐ ์ฌ์ฉ๋๋ฉฐ,
์ต์ ์ ๋ํด ์ค๋ช ๋ ๋๋ก ๋คํ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ์ดํฉ๋๋ค. -fdump-ํธ๋ฆฌ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-fdump-ํด๋์ค-๊ณ์ธต ๊ตฌ์กฐ (C++๋ง ํด๋น)
-fdump-ํด๋์ค-๊ณ์ธต ๊ตฌ์กฐ-์ต์ (C++๋ง ํด๋น)
๊ฐ ํด๋์ค์ ๊ณ์ธต ๊ตฌ์กฐ ๋ฐ ๊ฐ์ ๊ธฐ๋ฅ ํ ์ด๋ธ ๋ ์ด์์์ ํํ์ ๋ค์์ผ๋ก ๋คํํฉ๋๋ค.
ํ์ผ. ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค. .์์ ์์ค ํ์ผ ์ด๋ฆ ๋ฐ ํ์ผ
์ถ๋ ฅ ํ์ผ๊ณผ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์์ฑ๋ฉ๋๋ค. ๋ง์ฝ -์ต์ ํํ๊ฐ ์ฌ์ฉ๋๋ฉฐ,
์ต์ ์ ๋ํด ์ค๋ช ๋ ๋๋ก ๋คํ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ์ดํฉ๋๋ค. -fdump-ํธ๋ฆฌ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-fdump-ipa-์ค์์น
์ ์ฐจ๊ฐ ๋ถ์ ์ธ์ด ํธ๋ฆฌ์ ๋ค์ํ ๋จ๊ณ์์ ๋คํ์ ์ ์ดํ์ฌ
ํ์ผ. ํ์ผ ์ด๋ฆ์ ์์ค์ ์ค์์น ํน์ ์ ๋ฏธ์ฌ๋ฅผ ์ถ๊ฐํ์ฌ ์์ฑ๋ฉ๋๋ค.
ํ์ผ ์ด๋ฆ์ ์ ๋ ฅํ๊ณ ํ์ผ์ ์ถ๋ ฅ ํ์ผ๊ณผ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์์ฑ๋ฉ๋๋ค. NS
๋ค์ ๋คํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ชจ๋ ๋ชจ๋ ์ ์ฐจ ๊ฐ ๋ถ์ ๋คํ๋ฅผ ํ์ฑํํฉ๋๋ค.
c๊ทธ๋ํ
ํธ์ถ ๊ทธ๋ํ ์ต์ ํ, ์ฌ์ฉํ์ง ์๋ ํจ์ ์ ๊ฑฐ ๋ฐ
์ธ๋ผ์ธ ๊ฒฐ์ .
์ธ๋ผ์ธ
ํจ์ ์ธ๋ผ์ด๋ ํ ๋คํ.
-fdump-pass
ํ์ฌ ์ค์ ๋ฐ ํด์ ๋ ์ต์ ํ ํจ์ค ๋ชฉ๋ก์ ๋คํํฉ๋๋ค.
๋ช ๋ น์ค ์ต์ .
-fdump-ํต๊ณ-option
๋ณ๋์ ํ์ผ์์ ํต๊ณผ ํต๊ณ ๋คํ์ ํ์ฑํํ๊ณ ์ ์ดํฉ๋๋ค. ํ์ผ ์ด๋ฆ์
๋ก ๋๋๋ ์ ๋ฏธ์ฌ๋ฅผ ์ถ๊ฐํ์ฌ ์์ฑ .ํต๊ณ ์์ค ํ์ผ ์ด๋ฆ์
ํ์ผ์ ์ถ๋ ฅ ํ์ผ๊ณผ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์์ฑ๋ฉ๋๋ค. ๋ง์ฝ -option ํํ๋
์ต์ํ, -ํต๊ณ ์นด์ดํฐ๊ฐ ์ ์ฒด ์ปดํ์ผ ๋จ์์ ๋ํด ํฉ์ฐ๋๋๋ก ํฉ๋๋ค.
-์ธ๋ถ ํจ์ค๊ฐ ์์ฑํ ๋ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ๋คํํฉ๋๋ค. ์ต์ ์ด ์๋ ๊ธฐ๋ณธ๊ฐ์
์ปดํ์ผ๋ ๊ฐ ํจ์์ ๋ํ ์นด์ดํฐ๋ฅผ ํฉ์ฐํฉ๋๋ค.
-fdump-ํธ๋ฆฌ-์ค์์น
-fdump-ํธ๋ฆฌ-์ค์์น-์ต์
-fdump-ํธ๋ฆฌ-์ค์์น-์ต์ =ํ์ผ ์ด๋ฆ
์ค๊ฐ ์ธ์ด ํธ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ค์ํ ๋จ๊ณ์์ ๋คํ์ ์ ์ดํ์ฌ
ํ์ผ. ํ์ผ ์ด๋ฆ์ ์ค์์น๋ณ ์ ๋ฏธ์ฌ๋ฅผ ์ถ๊ฐํ์ฌ ์์ฑ๋ฉ๋๋ค.
์์ค ํ์ผ ์ด๋ฆ์ด๊ณ ํ์ผ์ ์ถ๋ ฅ ํ์ผ๊ณผ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์์ฑ๋ฉ๋๋ค. ์
~์ ๊ฒฝ์ฐ =ํ์ผ ์ด๋ฆ ์ต์ ์ ์ ํํ๋ฉด ์๋ ๋์ ์ง์ ๋ ํ์ผ์ ๋คํ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
๋ช ๋ช ๋ ๋คํ ํ์ผ. ๋ง์ฝ -์ต์ ํํ๊ฐ ์ฌ์ฉ๋๋ฉฐ, ์ต์ ๋ชฉ๋ก์ ๋๋ค - ๊ตฌ๋ถ
๋คํ์ ์ธ๋ถ ์ฌํญ์ ์ ์ดํ๋ โโ์ต์ . ๋ชจ๋ ์ต์ ์ด ๋ชจ๋ ์ต์ ์ ์ ์ฉ๋๋ ๊ฒ์ ์๋๋๋ค.
์ฐ์ธ; ์๋ฏธ๊ฐ ์๋ ๊ฒ์ ๋ฌด์๋ฉ๋๋ค. ๋ค์ ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฃผ์
๊ฐ ๋ ธ๋์ ์ฃผ์๋ฅผ ์ถ๋ ฅํ์ญ์์ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๊ฒ์ ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
ํ๊ฒฝ ๋ฐ ์์ค ํ์ผ์ ๋ฐ๋ผ. ์ฃผ์ ์ฉ๋๋ ๋ฌถ๋ ๊ฒ์ ๋๋ค.
๋๋ฒ๊ทธ ํ๊ฒฝ์ด ์๋ ๋คํ ํ์ผ.
์ด๋ฆ
์ง์ ๋ Decl์ ๋ํด "DECL_ASSEMBLER_NAME"์ด ์ค์ ๋ ๊ฒฝ์ฐ ๋คํ์์ ์ฌ์ฉํ์ญ์์ค.
"DECL_NAME" ๋์ . ์ฃผ์ ์ฉ๋๋
์ด์ ๋ธ๋ฆฌ ํ์ผ์ ๋งน๊ธ๋ง๋ ์ด๋ฆ.
๋ ์ฌํ
ํ๋ก ํธ์๋ ์ค๊ฐ ํํ์ ๋คํํ ๋ ๋ฉค๋ฒ์ ๋คํ์ ๊ธ์งํฉ๋๋ค.
๋ฒ์์ ๋๋ฌํ๊ธฐ ๋๋ฌธ์ ํจ์์ ๋ฒ์ ๋๋ ๋ณธ๋ฌธ. ์ค์ง
๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ง์ ๋๋ฌํ ์ ์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ํญ๋ชฉ์ ๋คํํ์ญ์์ค.
์์๊ฒ ์ธ์๋ ๋๋ฌด๋ฅผ ๋คํํ ๋ ์ด ์ต์ ์ ๋๋ฌด์ ๋ชธ์ฒด๋ฅผ ๋คํํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
์ ์ด ๊ตฌ์กฐ.
RTL์ ๋คํํ ๋ RTL์ ๊ธฐ๋ณธ๊ฐ์ด ์๋ ์ฌ๋ฆผ(์ถ์ฝ) ํํ๋ก ์ถ๋ ฅ
LISP์ ์ ์ฌํ ํํ.
์ด๊ฐ์ด ๋ฒ์ด ์ง ๋๋ฌด์ ์์ ํํ์ ์ธ์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฌด๋ ์์๊ฒ ์ธ์๋ฉ๋๋ค.
C์ ๊ฐ์ ํํ.
์ธ๋ถ์ค๋ช
๋ ์์ธํ ๋คํ๋ฅผ ํ์ฑํํฉ๋๋ค(๋ชจ๋ ๋คํ ์ต์ ์์ ์ ์ฉ๋์ง ์์). ๋ํ ํฌํจ
์ต์ ํ ํจ์ค์ ์ ๋ณด์ ๋๋ค.
ํต๊ณ
ํจ์ค์ ๋ํ ๋ค์ํ ํต๊ณ ๋คํ ํ์ฑํ(๋ชจ๋ ๋คํ์์ ์ ์ฉ๋์ง ์์
์ ํ๊ถ).
๋ธ๋ก
๊ธฐ๋ณธ ๋ธ๋ก ๊ฒฝ๊ณ ํ์๋ฅผ ํ์ฑํํฉ๋๋ค(์์ ๋คํ์์๋ ๋นํ์ฑํ๋จ).
๊ทธ๋ํ
ํ์๋ ๋ค๋ฅธ ๋คํ ํ์ผ ๊ฐ๊ฐ์ ๋ํด(-fdump-rtl-ํจ์ค), ๋คํ
GraphViz๋ก ๋ณด๊ธฐ์ ์ ํฉํ ์ ์ด ํ๋ฆ ๊ทธ๋ํ ํํ
ํ์ผ.passid.pass.dot. ํ์ผ์ ๊ฐ ๊ธฐ๋ฅ์ ํ์ ๊ทธ๋ํ๋ก ์์๊ฒ ์ธ์๋์ด ์์ต๋๋ค.
GraphViz๊ฐ ๋จ์ผ ํ๋กฏ์์ ๋ชจ๋ ๋ ๋๋งํ ์ ์๋๋ก ํฉ๋๋ค.
์ด ์ต์ ์ ํ์ฌ RTL ๋คํ์๋ง ์๋ํ๋ฉฐ RTL์ ํญ์ ๋ค์ ์์น์ ๋คํ๋ฉ๋๋ค.
์ฌ๋ฆผํ ํํ.
๋ฐฅ
๋ชจ๋ ๋ช ๋ น๋ฌธ์ ๋ํด ๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ํ์ํ๋๋ก ์ค์ ํฉ๋๋ค.
๋ฆฌ๋ ธ
๋ช ๋ น๋ฌธ์ ์ค ๋ฒํธ ํ์๋ฅผ ํ์ฑํํฉ๋๋ค.
UID ๊ฐ ๋ณ์์ ๋ํด ๊ณ ์ ID("DECL_UID") ํ์๋ฅผ ํ์ฑํํฉ๋๋ค.
๋ง ์๊ฐ ๋ง์
๊ฐ ๋ฌธ์ ๋ํ ํธ๋ฆฌ ๋คํ ํ์๋ฅผ ํ์ฑํํฉ๋๋ค.
eh ๊ฐ ๋ฌธ์ ํฌํจํ๋ EH ์ง์ญ ๋ฒํธ๋ฅผ ํ์ํ๋๋ก ์ค์ ํฉ๋๋ค.
scev
์ค์นผ๋ผ ์งํ ๋ถ์ ์ธ๋ถ ์ ๋ณด ํ์๋ฅผ ํ์ฑํํฉ๋๋ค.
์ต์ ํ
์ต์ ํ ์ ๋ณด ํ์๋ฅผ ํ์ฑํํฉ๋๋ค(ํน์ ํจ์ค์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ).
๋์น
๋๋ฝ๋ ์ต์ ํ ์ ๋ณด ํ์๋ฅผ ํ์ฑํํฉ๋๋ค(ํน์ ํจ์ค์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ).
๋ ธํธ
๊ธฐํ ์ธ๋ถ ์ต์ ํ ์ ๋ณด๋ฅผ ํ์ฑํํฉ๋๋ค(ํน์ ํจ์ค์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ).
=ํ์ผ ์ด๋ฆ
์๋ ๋ช ๋ช ๋ ๋คํ ํ์ผ ๋์ ์ง์ ๋ ํ์ผ ์ด๋ฆ์ผ๋ก ์ถ๋ ฅํฉ๋๋ค. ํ์ผ
์ด๋ฆ ํ์ค ์ถ๋ ฅ and ํ์ค ์ค๋ฅ ํน๋ณํ ์ทจ๊ธ๋๋ฉฐ ์ด๋ฏธ ์ด๋ฆฐ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
ํ์ค ์คํธ๋ฆผ. ์๋ฅผ ๋ค์ด,
gcc -O2 -ftree-Vectorize -fdump-tree-vect-blocks=foo.dump
-fdump-tree-pre=stderr ํ์ผ.c
๋ฒกํฐ๋ผ์ด์ ๋คํ๋ฅผ ์ถ๋ ฅ ํธ.๋คํ, PRE ๋คํ๊ฐ ์ถ๋ ฅ๋๋ ๋์ ํ์ค ์ค๋ฅ.
๋์ผํ ํจ์ค์ ๋ํด ์ถฉ๋ํ๋ ๋ ๊ฐ์ ๋คํ ํ์ผ ์ด๋ฆ์ด ์ ๊ณต๋ ๊ฒฝ์ฐ ํ์๋
์ต์ ์ ์ด์ ์ต์ ๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
๋ชจ๋ ๋ค์์ ์ ์ธํ ๋ชจ๋ ์ต์ ์ ์ผญ๋๋ค. ์ด๊ฐ์ด ๋ฒ์ด ์ง, ๋ ์ฌํ, ๋ง ์๊ฐ ๋ง์ and ๋ฆฌ๋ ธ.
์ตํ
๋ชจ๋ ์ต์ ํ ์ต์ ์ ์ผญ๋๋ค. ์ฆ, ์ต์ ํ, ๋์น๋ฐ ์ฃผ์.
๋ค์ ํธ๋ฆฌ ๋คํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ค๋ฌผ
ํธ๋ฆฌ ๊ธฐ๋ฐ ์ต์ ํ ์ ์ ๋คํ, ํ์ผ.์๋ณธ.
์ต์ ํ
๋ชจ๋ ํธ๋ฆฌ ๊ธฐ๋ฐ ์ต์ ํ ํ ๋คํ, ํ์ผ ์ต์ ํ.
๊นํ
gimplification์ด ํ์ผ๋ก ์ ๋ฌ๋๊ธฐ ์ ํ์ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ
์ด๋ฆ์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค. .gimple ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
cfg ๊ฐ ํจ์์ ์ ์ด ํ๋ฆ ๊ทธ๋ํ๋ฅผ ํ์ผ๋ก ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์
์ฒจ๋ถ .cfg ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
ch ๋ฃจํ ํค๋๋ฅผ ๋ณต์ฌํ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค.
.ch ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
SSA ํ์ผ์ SSA ๊ด๋ จ ์ ๋ณด๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค. .ssa
์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
๋ณ๋ช
๊ฐ ํจ์์ ๋ํ ๋ณ์นญ ์ ๋ณด๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค.
.๋ณ๋ช ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
ccp CCP ํ์ ๊ฐ ํจ์๋ฅผ ๋คํํ์ญ์์ค. ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค. .ccp ๋ถํฐ
์์ค ํ์ผ ์ด๋ฆ.
storeccp
STORE-CCP ํ์ ๊ฐ ํจ์๋ฅผ ๋คํํ์ญ์์ค. ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค. .storeccp
์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
์ฌ์ ๋ถ๋ถ ์ค๋ณต ์ ๊ฑฐ ํ ํธ๋ฆฌ๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์
์ฒจ๋ถ .pre ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
fre ์์ ํ ์ค๋ณต ์ ๊ฑฐ ํ ๋๋ฌด๋ฅผ ๋ฒ๋ฆฝ๋๋ค. ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค.
.fre ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
์นดํผํ๋กญ
๋ณต์ฌ ์ ํ ํ ํธ๋ฆฌ๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค. .copyprop
์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
store_copyprop
์ ์ฅ์ ๋ณต์ฌ ์ ํ ํ ํธ๋ฆฌ๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค.
.store_copyprop ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
๋์ ๋ฐ๋ ์ฝ๋ ์ ๊ฑฐ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์
์ฒจ๋ถ .dce ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
๊ฐฏ๋ฒ
๋จธ๋ํ๋ฉ ๊ณ์ธก์ ์ถ๊ฐํ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์
์ฒจ๋ถ .๋จธ๋ํ๋ฉ ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
๋ฏธ์คํฐ / Ms ์ง๊ณ์ ์ค์นผ๋ผ ๊ต์ฒด๋ฅผ ์ํํ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ
์ด๋ฆ์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค. .sra ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
์ฑํฌ๋
์ฝ๋ ์ฑํน์ ์ํํ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์
์ฒจ๋ถ .์ฑํฌ๋ ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
DOM ๋๋ฏธ๋ค์ดํฐ ํธ๋ฆฌ ์ต์ ํ๋ฅผ ์ ์ฉํ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์
์ถ๊ฐํ์ฌ ๋ง๋ .๋ ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
๋งํ๋ค ๋ฐ๋ ์คํ ์ด ์ ๊ฑฐ๋ฅผ ์ ์ฉํ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ๋ช ์ด ๋ง๋ค์ด์ง๋ค
์ถ๊ฐํ์ฌ .dse ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
ํผ์ตํธ
PHI ๋ ธ๋๋ฅผ ์ง์ ์ฝ๋๋ก ์ต์ ํํ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ
์ด๋ฆ์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค. .phiopt ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
์ ์ง
๋จ์ผ ์ฌ์ฉ ๋ณ์๋ฅผ ์ ๋ฌํ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ
์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค .forwprop ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
์นดํผ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ
๋ณต์ฌ๋ณธ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ ์ต์ ํ๋ฅผ ์ ์ฉํ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์
์ถ๊ฐํ์ฌ ๋ง๋ .์นดํผ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
nrv ์ ๋ค๋ฆญ์ ๋ช ๋ช ๋ ๋ฐํ ๊ฐ ์ต์ ํ๋ฅผ ์ ์ฉํ ํ ๊ฐ ํจ์ ๋คํ
๋๋ฌด. ํ์ผ ์ด๋ฆ์ ๋ค์์ ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ง๋๋ค. .nrv ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
๋ฒกํฐ
๋ฃจํ์ ๋ฒกํฐํ๋ฅผ ์ ์ฉํ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ๋ช ์ด ๋ง๋ค์ด์ง๋ค
์ถ๊ฐํ์ฌ .๋ฒกํธ ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
์ฌ๋ฉ ๊ธฐ๋ณธ ๋ธ๋ก์ ๋ฒกํฐํ๋ฅผ ์ ์ฉํ ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์
์ถ๊ฐํ์ฌ ๋ง๋ .SLP ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
VRP ๊ฐ ๋ฒ์ ์ ํ(VRP) ํ ๊ฐ ํจ์๋ฅผ ๋คํํฉ๋๋ค. ํ์ผ ์ด๋ฆ์
์ฒจ๋ถ .vrp ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก.
๋ชจ๋ ์ด ์ต์ ์ ์ ๊ณต๋ ํ๋๊ทธ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํธ๋ฆฌ ๋คํ๋ฅผ ํ์ฑํํฉ๋๋ค.
-fopt-์ ๋ณด
-fopt-์ ๋ณด-์ต์
-fopt-์ ๋ณด-์ต์ =ํ์ผ ์ด๋ฆ
๋ค์ํ ์ต์ ํ ๋จ๊ณ์์ ์ต์ ํ ๋คํ๋ฅผ ์ ์ดํฉ๋๋ค. ๋ง์ฝ -์ต์ ํํ๋
์ต์ํ, ์ต์ ๋ชฉ๋ก์ ๋๋ค - ๋คํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ํํ๊ณ
์ต์ ํ. ๋ง์ฝ์ ์ต์ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์์ธํ ๋ด์ฉ๊ณผ ์ตํ
์ต์ ํ ๊ทธ๋ฃน์ ๊ฒฝ์ฐ. ๋ง์ฝ ํ์ผ ์ด๋ฆ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ค ์ค๋ฅ. ๋ ธํธ
๊ทธ ์ถ๋ ฅ ํ์ผ ์ด๋ฆ ๋ฒ์ญ ๋จ์๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ๋ฎ์ด์๋๋ค. ๋ง์ฝ์
์ฌ๋ฌ ๋ฒ์ญ ๋จ์์ ๊ฒฐํฉ๋ ์ถ๋ ฅ์ด ํ์ํ๋ฉฐ, ํ์ค ์ค๋ฅ ์ฌ์ฉ๋์ด์ผํ๋ค
๋์ .
์ต์ ์ ๋ ๊ทธ๋ฃน์ผ๋ก ๋๋ ์ ์์ต๋๋ค. 1) ์์ธํ ๋ด์ฉ์ ์ค๋ช ํ๋ ์ต์
๋คํ ๋ฐ 2) ์ด๋ค ์ต์ ํ๊ฐ ํฌํจ๋์ด์ผ ํ๋์ง ์ค๋ช ํ๋ ์ต์ . ์ต์
๋ ๊ทธ๋ฃน ๋ชจ๋ ๊ฒน์น์ง ์์ผ๋ฏ๋ก ์์ ๋กญ๊ฒ ํผํฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ผ์ ๊ฒฝ์ฐ
์ถฉ๋ ์ค ํ์์ ์ต์ ์ด ๋ช ๋ น์ค์ ์ด์ ์ต์ ๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
์ฌ๋ฌ -fopt-info ์ต์ ์ด ํ์ฉ๋์ง๋ง ๊ทธ ์ค ํ๋๋ง ๊ฐ์ง ์ ์์ต๋๋ค. =ํ์ผ ์ด๋ฆ.
๋ค๋ฅธ ํ์ผ ์ด๋ฆ์ด ์ ๊ณต๋๋ฉด ์ฒซ ๋ฒ์งธ ํ์ผ ์ด๋ฆ์ ์ ์ธํ ๋ชจ๋ ํ์ผ ์ด๋ฆ์ด ๋ฌด์๋ฉ๋๋ค.
๋คํ ์์ธ ์ ๋ณด์๋ ๋ค์๊ณผ ๊ฐ์ ์ต์ ์ด ์์ต๋๋ค.
์ต์ ํ
์ต์ ํ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฉ๋๋ฉด ์ ๋ณด๋ฅผ ์ธ์ํฉ๋๋ค. ํฉ๊ฒฉ๊น์ง์ ๋๋ค
์ด๋ค ์ ๋ณด๊ฐ ๊ด๋ จ์ด ์๋์ง ๊ฒฐ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฒกํฐ๋ผ์ด์ ๋ ์ธ์๋ฅผ ์ ๋ฌํฉ๋๋ค.
์ฑ๊ณต์ ์ผ๋ก ๋ฒกํฐํ๋ ๋ฃจํ์ ์์ค โโ์์น.
๋์น
๋์น ์ต์ ํ์ ๋ํ ์ ๋ณด๋ฅผ ์ธ์ํฉ๋๋ค. ๊ฐ๋ณ ํจ์ค ์ ์ด
์ถ๋ ฅ์ ํฌํจํ ์ ๋ณด์ ๋๋ค. ์๋ฅผ ๋ค์ด,
gcc -O2 -ftree-๋ฒกํฐํ -fopt-info-vec-missed
๋ฒกํฐํ์์ ๋์น ์ต์ ํ ๊ธฐํ์ ๋ํ ์ ๋ณด๋ฅผ ์ธ์ํฉ๋๋ค.
stderr์ ์ ๋ฌํฉ๋๋ค.
์ฃผ์
ํน์ ๋ณํ๊ณผ ๊ฐ์ ์ต์ ํ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ธ์ํฉ๋๋ค.
๊ฒฐ์ ๋ฑ์ ๋ํ ์์ธํ ๋ฉ์์ง
๋ชจ๋ ์์ธํ ์ต์ ํ ์ ๋ณด๋ฅผ ์ธ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค. ์ต์ ํ, ๋์น๋ฐ
์ฃผ์.
๋ ๋ฒ์งธ ์ต์ ์ธํธ๋ ์ต์ ํ ๊ทธ๋ฃน์ ์ค๋ช ํ๋ฉฐ ํ๋ ๋๋
๋ค์ ์ค ๋ ๋ง์ ๊ฒ.
IPA ๋ชจ๋ ์ ์ฐจ ๊ฐ ์ต์ ํ์์ ๋คํ๋ฅผ ํ์ฑํํฉ๋๋ค.
๊ณ ๋ฆฌ
๋ชจ๋ ๋ฃจํ ์ต์ ํ์์ ๋คํ๋ฅผ ํ์ฑํํฉ๋๋ค.
์ธ๋ผ์ธ
๋ชจ๋ ์ธ๋ผ์ธ ์ต์ ํ์์ ๋คํ๋ฅผ ํ์ฑํํฉ๋๋ค.
VEC ๋ชจ๋ ๋ฒกํฐํ ์ต์ ํ์์ ๋คํ๋ฅผ ํ์ฑํํฉ๋๋ค.
์๋ฅผ ๋ค์ด,
gcc -O3 -fopt-info-missed=missed.all
๋ชจ๋ ํจ์ค์์ ๋๋ฝ๋ ์ต์ ํ ๋ณด๊ณ ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค. ๋์ณค๋ค.๋ชจ๋.
๋ ๋ค๋ฅธ ์๋ก,
gcc -O3 -fopt-info-inline-optimized-missed=inline.txt
๋๋ฝ๋ ์ต์ ํ ๋ฐ ์ต์ ํ๋ ์์น์ ๋ํ ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
๋ชจ๋ ์ธ๋ผ์ด๋์ ์ธ๋ผ์ธ.txt.
๊ฒฝ์ฐ ํ์ผ ์ด๋ฆ ์ ๊ณต๋๋ ๊ฒฝ์ฐ ์ ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ต์ ํ์ ๋คํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ฐ๊ฒฐ ํ์ผ ์ด๋ฆ. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋คํ๊ฐ ๋ค์์ผ๋ก ์ถ๋ ฅ๋ฉ๋๋ค. ํ์ค ์ค๋ฅ. ๋ฉด ์ต์
์๋ตํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ตํจ, ์ด๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ต์ ํ๋ฅผ ๋คํํจ์ ์๋ฏธํฉ๋๋ค.
๋ชจ๋ ํจ์ค์ ์ ๋ณด. ๋ค์ ์์์ ๋ชจ๋ ์ต์ ํ ์ ๋ณด๋
์ ํ์ค ์ค๋ฅ.
gcc -O3 -fopt-์ ๋ณด
์ฐธ๊ณ -fopt-์ ๋ณด-vec-๋์น ์ ๋์ผํ๊ฒ ํ๋ํฉ๋๋ค -fopt-์ ๋ณด-๋์น-vec.
๋ ๋ค๋ฅธ ์๋ก ๋ค์์ ๊ณ ๋ คํ์ญ์์ค.
gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt
์ฌ๊ธฐ์ ๋ ๊ฐ์ ์ถ๋ ฅ ํ์ผ ์ด๋ฆ์ด ์์ต๋๋ค. ๋ฒก.๋ฏธ์ค and ๋ฃจํ.์ต์ ํ๋๋ฟ์ด๋ฏ๋ก ์ถฉ๋ํฉ๋๋ค.
์ถ๋ ฅ ํ์ผ์ด ํ์ฉ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ์ต์ ๋ง ์ ์ฉ๋๊ณ
ํ์ ์ต์ ์ ๋ฌด์๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ค์ง ๋ฒก.๋ฏธ์ค ์ด๋ค cotains๊ฐ ์์ฐ๋ฉ๋๋ค
๋์น ๊ธฐํ์ ๋ํ ๋ฒกํฐ๋ผ์ด์ ์ ๋คํ.
-ftree-๋ฒกํฐํ๊ธฐ-์์ธ=n
์ด ์ต์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ๋ฉ๋๋ค. -fopt-์ ๋ณด. ์ฌ์ฉํ์ญ์์ค
-fopt-์ ๋ณด-์ข ๋ฅ ๋์ ์์ ์ข ๋ฅ ์ ํจํ opt-info ์ต์ ์ค ํ๋์ ๋๋ค. ๊ทธ๊ฒ
์ถ๊ฐ ์ต์ ํ ์ ๋ณด๋ฅผ ์ธ์ํฉ๋๋ค. ์์ํ n=0 ์ง๋จ ์ ๋ณด๊ฐ ์์ต๋๋ค.
๋ณด๊ณ ํ๋ค. ๋ง์ฝ์ n=1 ๋ฒกํฐ๋ผ์ด์ ๋ ๋ฒกํฐํ๋ ๊ฐ ๋ฃจํ๋ฅผ ๋ณด๊ณ ํ๊ณ ์ด
๋ฒกํฐํ๋ ๋ฃจํ์ ์์ ๋๋ค. ๋ง์ฝ์ n=2 ๋ฒกํฐ๋ผ์ด์ ๋ ๋ค์ ์์น๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.
๋ฒกํฐํํ ์ ์๊ณ ๊ทธ ์ด์ ๊ฐ ์์ต๋๋ค. ๋ ๋์ ์์ธ ์์ค์ ๊ฒฝ์ฐ ๋ชจ๋
๋ฒกํฐ๋ผ์ด์ ์ ๋ถ์ ๋ฐ ๋ณํ ์ ๋ณด๊ฐ ๋ณด๊ณ ๋ฉ๋๋ค.
์ ์ํด ์ถ๋ ฅ๋๋ ์ ๋ณด์ ์ ์ํ์ญ์์ค. -ftree-๋ฒกํฐํ๊ธฐ-์์ธ ์ต์ ์ด ์ ์ก๋ฉ๋๋ค
ํ์ค ์ค๋ฅ. ๋๋ฑํ ํํ์ ๊ฒฝ์ฐ -fopt-์ ๋ณด-์ต์ =ํ์ผ ์ด๋ฆ ๊ฐ ์ฌ์ฉ๋๋ฉด ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ก ๋ณด๋ ํ์ผ ์ด๋ฆ ๋์ .
-์์์ ์๋=ํ
์ด ์ต์ ์ GCC๊ฐ ์์ฑํ ๋ ๋์ ๋์ ์ฌ์ฉํ๋ ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ ์ปดํ์ผ๋ ํ์ผ์์ ๋ฌ๋ผ์ผ ํ๋ ํน์ ๊ธฐํธ ์ด๋ฆ. ๊ทธ๊ฒ์ ๋ํ
์ ์ฉ ๋ฒ์ ๋ฐ์ดํฐ ํ์ผ ๋ฐ ์์ฑํ๋ ๊ฐ์ฒด ํ์ผ์ ๊ณ ์ ํ ์คํฌํ๋ฅผ ๋ฐฐ์นํ๋ ๋ฐ ์ฌ์ฉ
๊ทธ๋ค์. ๋น์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค -์์์ ์ข ์ ์ฌํ ๊ฐ๋ฅํ๊ฒ ๋์ผํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ต์
ํ์ผ.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ํ ์ปดํ์ผํ๋ ๋ชจ๋ ํ์ผ์ ๋ํด ๋ฌ๋ผ์ผ ํฉ๋๋ค.
-fsched-์์ธ=n
๋ช ๋ น ์ค์ผ์ค๋ง์ ์ฌ์ฉํ๋ ๋์์์ ์ด ์ต์ ์
์ค์ผ์ฅด๋ฌ๊ฐ ์ถ๋ ฅํ๋ ๋๋ฒ๊น ์ถ๋ ฅ. ์ด ์ ๋ณด๋ ํ์ค ์ค๋ฅ์ ๊ธฐ๋ก๋๋ฉฐ,
...์ ์ ์ธํ๋ฉด -fdump-rtl-sched1 or -fdump-rtl-sched2 ์ง์ ๋ ๊ฒฝ์ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๋คํ ๋ชฉ๋ก ํ์ผ์ .sched1 or .sched2 ๊ฐ๊ธฐ. ๊ทธ๋ฌ๋ n
XNUMX๋ณด๋ค ํฌ๋ฉด ์ถ๋ ฅ์ ํญ์ ํ์ค ์ค๋ฅ๋ก ์ธ์๋ฉ๋๋ค.
๋ญ์ ๋ฆฌ n XNUMX๋ณด๋ค ํฐ, -fsched-verbose ์ ๊ฐ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅ
-fdump-rtl-sched1 and -fdump-rtl-sched2. ์ฉ n XNUMX๋ณด๋ค ํฌ๋ฉด ๊ธฐ๋ณธ๋ ์ถ๋ ฅํฉ๋๋ค.
๋ธ๋ก ํ๋ฅ , ์์ธํ ์ค๋น ๋ชฉ๋ก ์ ๋ณด ๋ฐ ์ ๋/์์ ์ ๋ณด. ์์ํ n
XNUMX๋ณด๋ค ํฌ๋ฉด ์ค๋จ ์ง์ ์ RTL, ์ ์ด ํ๋ฆ ๋ฐ ์์ญ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ
for n XNUMX๊ฐ ์ด์, -fsched-verbose ์ข ์์ฑ ์ ๋ณด๋ ํฌํจ๋ฉ๋๋ค.
- ์์ ์ ์ฅ
- ์์ ์ ์ฅ = cwd
์ผ๋ฐ์ ์ธ "์์" ์ค๊ฐ ํ์ผ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํฉ๋๋ค. ํ์ฌ์ ๋ฐฐ์น
๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์์ค ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ปดํ์ผ foo.c ๊ณผ -c
- ์์ ์ ์ฅ ํ์ผ์ ์์ฑ ํธ์์ด and ํธ.์์ค, ๋งํผ ์ ํธ.์ค. ์ด๊ฒ์
์ ์ฒ๋ฆฌ ํธ์์ด ์ปดํ์ผ๋ฌ๊ฐ ์ด์ ์ผ๋ฐ์ ์ผ๋ก
ํตํฉ ์ ์ฒ๋ฆฌ๊ธฐ.
์ ํจ๊ป ์ฌ์ฉ์ -x ๋ช ๋ น์ค ์ต์ , - ์์ ์ ์ฅ ํ๋ช ํ๋ค
ํ์ฅ์๊ฐ ๋์ผํ ์ ๋ ฅ ์์ค ํ์ผ์ ๋ฎ์ด์ฐ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค.
์ค๊ฐ ํ์ผ. ํด๋น ์ค๊ฐ ํ์ผ์ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ฌ ์ป์ ์ ์์ต๋๋ค.
์ฌ์ฉํ๊ธฐ ์ ์ ์์ค ํ์ผ - ์์ ์ ์ฅ.
GCC๋ฅผ ๋ณ๋ ฌ๋ก ํธ์ถํ๋ ๊ฒฝ์ฐ ๊ณต์ ํ๋ ์ฌ๋ฌ ๋ค๋ฅธ ์์ค ํ์ผ์ ์ปดํ์ผํฉ๋๋ค.
๋ค๋ฅธ ์๋ธ๋๋ ํ ๋ฆฌ์ ๊ณตํต ๊ธฐ๋ณธ ์ด๋ฆ ๋๋ ๋ค์์ ์ํด ์ปดํ์ผ๋ ๋์ผํ ์์ค ํ์ผ
์ฌ๋ฌ ์ถ๋ ฅ ๋์์ด ์๋ ๊ฒฝ์ฐ ์๋ก ๋ค๋ฅธ ๋ณ๋ ฌ ์ปดํ์ผ๋ฌ๊ฐ
์๋ก ๊ฐ์ญํ๊ณ ์์ ํ์ผ์ ๋ฎ์ด์๋๋ค. ์๋ฅผ ๋ค์ด:
gcc -save-temps -o outdir1/foo.o indir1/foo.c&
gcc -save-temps -o outdir2/foo.o indir2/foo.c&
๋ฐ์ํ ์ ์์ต๋๋ค ํธ์์ด and ํธ.์ค ๋ ์ปดํ์ผ๋ฌ์์ ๋์์ ์์ฑ๋ฉ๋๋ค.
- ์์ ์ ์ฅ = obj
์ผ๋ฐ์ ์ธ "์์" ์ค๊ฐ ํ์ผ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํฉ๋๋ค. ๋ง์ฝ -o ์ต์ ์ ์ฌ์ฉํ๊ณ ,
์์ ํ์ผ์ ๊ฐ์ฒด ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๋ง์ฝ -o ์ต์ ์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ
- ์์ ์ ์ฅ = obj ์ค์์น๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค. - ์์ ์ ์ฅ.
์ :
gcc -save-temps=obj -c foo.c
gcc -save-temps=obj -c bar.c -o ๋๋ ํ ๋ฆฌ/xbar.o
gcc -save-temps=obj foobar.c -o dir2/yfoobar
์์ฑ ํธ์์ด, ํธ.์์ค, ๋๋ ํ ๋ฆฌ/xbar.i, ๋๋ ํ ๋ฆฌ/xbar.s, dir2/yfoobar.i, dir2/yfoobar.s๋ฐ
dir2/yfoobar.o.
-์๊ฐ[=ํ์ผ]
์ปดํ์ผ ์์์์ ๊ฐ ํ์ ํ๋ก์ธ์ค๊ฐ ์์ํ CPU ์๊ฐ์ ๋ณด๊ณ ํฉ๋๋ค. C์ ๊ฒฝ์ฐ
์์ค ํ์ผ, ์ด๊ฒ์ ์ ์ ํ ์ปดํ์ผ๋ฌ ๋ฐ ์ด์ ๋ธ๋ฌ์ ๋๋ค(๋งํฌ๊ฐ
์๋ฃ).
์ถ๋ ฅ ํ์ผ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# CC1 0.12 0.01
# 0.00 0.01
๊ฐ ์ค์ ์ฒซ ๋ฒ์งธ ์ซ์๋ "์ฌ์ฉ์ ์๊ฐ", ์ฆ ์คํ์ ์์๋ ์๊ฐ์ ๋๋ค.
ํ๋ก๊ทธ๋จ ์์ฒด. ๋ ๋ฒ์งธ ์ซ์๋ "์์คํ ์๊ฐ"์ผ๋ก ์ด์ ์คํ์ ์์๋ ์๊ฐ์ ๋๋ค.
ํ๋ก๊ทธ๋จ ๋์ ์์คํ ๋ฃจํด. ๋ ์ซ์ ๋ชจ๋ ์ด ๋จ์์ ๋๋ค.
์ถ๋ ฅ ํ์ผ์ ์ง์ ์ผ๋ก ์ถ๋ ฅ์ ๋ช ๋ช ๋ ํ์ผ์ ์ถ๊ฐ๋๊ณ ,
๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ ๋๋ค :
0.12 0.01cc1
0.00 0.01 ๊ทธ๋๋ก
"์ฌ์ฉ์ ์๊ฐ"๊ณผ "์์คํ ์๊ฐ"์ ํ๋ก๊ทธ๋จ ์ด๋ฆ ์์ ์ด๋ํ๊ณ
ํ๋ก๊ทธ๋จ์ ์ ๋ฌ๋ ์ต์ ์ด ํ์๋๋ฏ๋ก ๋์ค์ ํ์ผ์ด ๋ฌด์์ธ์ง ์ ์ ์์ต๋๋ค.
์ปดํ์ผ ์ค์ด๋ฉฐ ์ด๋ค ์ต์ ์ ์ฌ์ฉํฉ๋๋ค.
-fvar ์ถ์
๋ณ์ ์ถ์ ํจ์ค๋ฅผ ์คํํฉ๋๋ค. ๊ฐ ์์น์์ ๋ณ์๊ฐ ์ ์ฅ๋ ์์น๋ฅผ ๊ณ์ฐํฉ๋๋ค.
์ฝ๋์์. ๊ทธ๋ฌ๋ฉด ๋ ๋์ ๋๋ฒ๊น ์ ๋ณด๊ฐ ์์ฑ๋ฉ๋๋ค(๋๋ฒ๊น ์ ๋ณด๊ฐ
ํ์์ด ์ด ์ ๋ณด๋ฅผ ์ง์ํจ).
์ต์ ํ(- ์ค์ค, -O, -O2, ...),
๋๋ฒ๊น ์ ๋ณด(-g) ๋๋ฒ๊ทธ ์ ๋ณด ํ์์ด ์ด๋ฅผ ์ง์ํฉ๋๋ค.
-fvar-์ถ์ ํ ๋น
์ปดํ์ผ ์ด๊ธฐ์ ์ฌ์ฉ์ ๋ณ์์ ๋ํ ์ฃผ์์ ๋ฌ๊ณ ์ํ์ ์๋ํฉ๋๋ค.
์๋์์ ๋๊น์ง ์ปดํ์ผ ์ ์ฒด์ ๊ฑธ์ณ ์ฃผ์
์ต์ ํํ๋ ๋์ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ๊ฐ์ ํฉ๋๋ค. ์ฌ์ฉ -gdwarf-4 ํจ๊ป ๊ถ์ฅ๋ฉ๋๋ค
๊ทธ๊ฒ์.
var-tracking์ด ๋นํ์ฑํ๋ ๊ฒฝ์ฐ์๋ ํ์ฑํ๋ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ฃผ์์
์์ฑ ๋ฐ ์ ์ง๋์ง๋ง ๊ฒฐ๊ตญ ํ๊ธฐ๋ฉ๋๋ค.
-fvar-์ถ์ -ํ ๋น-์ ํ
์ ํ -fvar-์ถ์ ํ ๋น๊ฐ์ ๋ฐฉ์์ผ๋ก -gttoggle ํ ๊ธํ๋ค -g.
-์ธ์ ํ์ผ ์ด๋ฆ=๋์๊ด
๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ ์ ์ฒด ์ ๋ ์ด๋ฆ ์ธ์ ๋์๊ด ๊ทธ ๋ ์ฌ์ฉ๋ฉ๋๋ค
์ฐ๊ฒฐ --- ๋ค๋ฅธ ์์ ์ ์ํํ์ง ๋ง์ญ์์ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด GCC๊ฐ ์ปดํ์ผํ๊ฑฐ๋ ๋งํฌํ์ง ์์ต๋๋ค.
์๋ฌด๊ฒ; ๊ทธ๊ฒ์ ๋จ์ง ํ์ผ ์ด๋ฆ์ ์ธ์ํฉ๋๋ค.
- ์ธ์ ๋ค์ค ๋๋ ํ ๋ฆฌ
๋ค๋ฅธ ์ค์์น์์ ์ ํํ multilib์ ํด๋นํ๋ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ์ธ์ํฉ๋๋ค.
๋ช ๋ น์ค์ ์์ต๋๋ค. ์ด ๋๋ ํ ๋ฆฌ๋ ๋ค์ ์์น์ ์์ด์ผ ํฉ๋๋ค. GCC_EXEC_PREFIX.
-print-multi-lib
multilib ๋๋ ํ ๋ฆฌ ์ด๋ฆ์์ ์ด๋ฅผ ํ์ฑํํ๋ ์ปดํ์ผ๋ฌ ์ค์์น๋ก์ ๋งคํ์ ์ธ์ํฉ๋๋ค.
๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ๋ค์์ผ๋ก ์ค์์น์ ๊ตฌ๋ถ๋ฉ๋๋ค. ;, ๊ฐ ์ค์์น๋
@ ๋์ ์ -, ์ฌ๋ฌ ์ค์์น ์ฌ์ด์ ๊ณต๋ฐฑ์ด ์์ต๋๋ค. ์ด๊ฒ์
์ ์ฒ๋ฆฌ๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
-print-multi-os-๋๋ ํ ๋ฆฌ
์ผ๋ถ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ํํ multilib์ ๋ํ OS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ธ์ํฉ๋๋ค. lib
ํ์ ๋๋ ํ ๋ฆฌ. OS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ lib ํ์ ๋๋ ํ ๋ฆฌ ๋ฐ ๋ค์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์
์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ฅ ., OS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ์๋ ๊ฒฝ์ฐ libsuffix ํ์
์๋ฅผ ๋ค์ด ์ธ์ํ๋ ๋๋ ํ ๋ฆฌ ../lib64, ../ lib or ../lib32, ๋๋ OS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ
์ ์กด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ/ํ์ ๋๋ ํ ๋ฆฌ ์๋ฅผ ๋ค์ด ์ธ์ํ๋ ํ์ ๋๋ ํ ๋ฆฌ amd64, ์คํํฌv9 or ev6.
-์ธ์ ๋ฉํฐ์ํฌ
์ผ๋ถ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ํํ ๋ฉํฐ์ํฌ์ OS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ธ์ํฉ๋๋ค. lib
ํ์ ๋๋ ํ ๋ฆฌ.
-์ธ์ ํ๋ก๊ทธ๋จ ์ด๋ฆ=ํ๋ก๊ทธ๋จ
์ฒ๋ผ -์ธ์ ํ์ผ ์ด๋ฆ, ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ๊ฒ์ํฉ๋๋ค. CPP.
-print-libgcc-ํ์ผ ์ด๋ฆ
๊ณผ ๋์ผ -์ธ์ ํ์ผ ์ด๋ฆ=libgcc.a.
์ฌ์ฉํ ๋ ์ ์ฉํฉ๋๋ค. -nostdlib or -nodefaultlibs ํ์ง๋ง ๋น์ ์ ์ฐ๊ฒฐํ๊ณ ์ถ์ด
libgcc.a. ๋ ํ ์์์ด:
gcc -nostdlib ... `gcc -print-libgcc-ํ์ผ ์ด๋ฆ`
-์ธ์-๊ฒ์-๋๋ ํ ๋ฆฌ
๊ตฌ์ฑ๋ ์ค์น ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ๊ณผ ํ๋ก๊ทธ๋จ ๋ชฉ๋ก์ ์ธ์ํ๊ณ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ํ ๋ฆฌ GCC ๊ฒ์ --- ๋ค๋ฅธ ์์ ์ ์ํํ์ง ๋ง์ญ์์ค.
์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค. GCC ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ธ์ํฉ๋๋ค ์ค์น ๋ฌธ์ , ์์
cpp0: ์๋ ์ด๋ฌํ ํ์ผ or ์๋ฐฐ ๊ท์น์. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ค์ ์ค ํ๋๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค. cpp0 ๊ทธ๋ฆฌ๊ณ
๋ค๋ฅธ ์ปดํ์ผ๋ฌ ๊ตฌ์ฑ ์์ GCC ์ฐพ์ ๊ฒ์ผ๋ก ์์ํ๊ฑฐ๋ ์ค์ ํ ์ ์์ต๋๋ค.
ํ๊ฒฝ ๋ณ์ GCC_EXEC_PREFIX ์ค์นํ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค. ํ์ง๋ง
ํํ์ ์์ด /.
-์ธ์-sysroot
์ปดํ์ผ ์ค์ ์ฌ์ฉ๋๋ ๋์ sysroot ๋๋ ํฐ๋ฆฌ๋ฅผ ์ธ์ํฉ๋๋ค. ์ด๊ฒ์ด
๊ตฌ์ฑ ์ ๋๋ ๋ค์์ ์ฌ์ฉํ์ฌ ์ง์ ๋ ๋์ sysroot --sysroot ์ ํ๊ถ,
์ปดํ์ผ ์ต์ ์ ๋ฐ๋ผ ์ถ๊ฐ ์ ๋ฏธ์ฌ๊ฐ ๋ถ์ ์ ์์ต๋๋ค. ๋์์ด ์๋ ๊ฒฝ์ฐ
sysroot๊ฐ ์ง์ ๋๋ฉด ์ต์ ์ ์๋ฌด ๊ฒ๋ ์ธ์ํ์ง ์์ต๋๋ค.
-์ธ์-sysroot-ํค๋-์ ๋ฏธ์ฌ
ํค๋๋ฅผ ๊ฒ์ํ ๋ ๋์ sysroot์ ์ถ๊ฐ๋ ์ ๋ฏธ์ฌ๋ฅผ ์ธ์ํ๊ฑฐ๋
์ปดํ์ผ๋ฌ๊ฐ ์ด๋ฌํ ์ ๋ฏธ์ฌ๋ก ๊ตฌ์ฑ๋์ง ์์ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์๋ฌด ์์ ๋ ์ํํ์ง ์์ต๋๋ค.
๊ทธ๋ฐ์.
- ๋คํ ๋จธ์
์ปดํ์ผ๋ฌ์ ๋์ ๋จธ์ ์ ์ธ์ํฉ๋๋ค(์: i686-pc-๋ฆฌ๋ ์ค-gnu) ---ํ์ง ๋ง์ญ์์ค
๋ค๋ฅธ ๊ฒ.
-๋คํ ๋ฒ์
์ปดํ์ผ๋ฌ ๋ฒ์ ์ ์ธ์ํฉ๋๋ค(์: 3.0) --- ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์์ ์ ์ํํ์ง ๋ง์ญ์์ค.
-๋คํ ์ฌ์
์ปดํ์ผ๋ฌ์ ๋ด์ฅ ์ฌ์์ ์ธ์ํ๊ณ ๋ค๋ฅธ ์์ ์ ํ์ง ๋ง์ญ์์ค. (์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
GCC ์์ฒด๊ฐ ๊ตฌ์ถ ์ค์ ๋๋ค.)
-fno-์ ๊ฑฐ-unused-debug-types
์ผ๋ฐ์ ์ผ๋ก DWARF 2 ์ถ๋ ฅ์ ์์ฑํ ๋ GCC๋ ๋๋ฒ๊ทธ ๊ธฐํธ ์ถ๋ ฅ ์์ฑ์ ํผํฉ๋๋ค.
์ปดํ์ผ๋๋ ์์ค ํ์ผ์์ ์ด๋์๋ ์ฌ์ฉ๋์ง ์๋ ์ ํ. ๊ฐ๋์ ์ ์ฉํ๋ค
GCC๊ฐ ์ปดํ์ผ ๋จ์์ ์ ์ธ๋ ๋ชจ๋ ์ ํ์ ๋ํ ๋๋ฒ๊น ์ ๋ณด๋ฅผ ๋ด๋ณด๋ด๋๋ก ํ๋ ค๋ฉด,
ํด๋น ์ปดํ์ผ ๋จ์์์ ์ค์ ๋ก ์ฌ์ฉ๋๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด
์๋ฅผ ๋ค์ด ๋๋ฒ๊ฑฐ์์ ์ค์ ๋ก๋ ์๋ ์ ํ์ผ๋ก ๊ฐ์ ์บ์คํธํ๋ ค๋ ๊ฒฝ์ฐ
ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋ฉ๋๋ค(๊ทธ๋ฌ๋ ์ ์ธ๋จ). ๊ทธ๋ฌ๋ ๋ ์์ฃผ ์ด๋ก ์ธํด
์๋นํ ์์ ๋ญ๋น๋๋ ๊ณต๊ฐ.
์ต์ ๊ทธ Control ์ต์ ํ
์ด๋ฌํ ์ต์ ์ ๋ค์ํ ์ข ๋ฅ์ ์ต์ ํ๋ฅผ ์ ์ดํฉ๋๋ค.
์ต์ ํ ์ต์ ์ด ์์ผ๋ฉด ์ปดํ์ผ๋ฌ์ ๋ชฉํ๋ ์ปดํ์ผ ๋น์ฉ์ ์ค์ด๋ ๊ฒ์ ๋๋ค.
๋๋ฒ๊น ์ ํตํด ์์ํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ช ๋ น๋ฌธ์ ๋ ๋ฆฝ์ ์ ๋๋ค.
๋ช ๋ น๋ฌธ ์ฌ์ด์ ์ค๋จ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ค์งํ ๋ค์ ์ ๊ฐ์ ํ ๋นํ ์ ์์ต๋๋ค.
์์์ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ฅผ ํจ์์ ๋ค๋ฅธ ๋ช ๋ น๋ฌธ์ผ๋ก ๋ณ๊ฒฝํ๊ณ
์์ค ์ฝ๋์์ ๊ธฐ๋ํ๋ ๊ฒฐ๊ณผ์ ์ ํํ ์ผ์นํฉ๋๋ค.
์ต์ ํ ํ๋๊ทธ๋ฅผ ์ผ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์ฑ๋ฅ ๋ฐ/๋๋
์ปดํ์ผ ์๊ฐ๊ณผ ๋๋ฒ๊ทธ ๊ธฐ๋ฅ์ ํฌ์ํ๋ ์ฝ๋ ํฌ๊ธฐ
ํ๋ก๊ทธ๋จ)
์ปดํ์ผ๋ฌ๋ ํ๋ก๊ทธ๋จ์ ๋ํ ์ง์์ ๊ธฐ๋ฐ์ผ๋ก ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค.
ํ ๋ฒ์ ์ฌ๋ฌ ํ์ผ์ ๋จ์ผ ์ถ๋ ฅ ํ์ผ ๋ชจ๋๋ก ์ปดํ์ผํ๋ฉด ์ปดํ์ผ๋ฌ์์ ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฐ ํ์ผ์ ์ปดํ์ผํ ๋ ๋ชจ๋ ํ์ผ์์ ์ป์ ์ ๋ณด.
๋ชจ๋ ์ต์ ํ๊ฐ ํ๋๊ทธ์ ์ํด ์ง์ ์ ์ด๋๋ ๊ฒ์ ์๋๋๋ค. ๋ค์์ด ์๋ ์ต์ ํ๋ง
ํ๋๊ทธ๋ ์ด ์น์ ์ ๋์ด๋ฉ๋๋ค.
๋๋ถ๋ถ์ ์ต์ ํ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ํ์ฑํ๋ฉ๋๋ค. -O ๋ ๋ฒจ์ ๋ช ๋ น์ค์์ ์ค์ ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด
๊ฐ๋ณ ์ต์ ํ ํ๋๊ทธ๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ์๋ ๋นํ์ฑํ๋ฉ๋๋ค.
๋์ ๋ฐ GCC ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ฝ๊ฐ ๋ค๋ฅธ ์งํฉ
์ต์ ํ๋ ๊ฐ๊ฐ์์ ํ์ฑํ๋ ์ ์์ต๋๋ค -O ์ฌ๊ธฐ์ ๋์ด๋ ๊ฒ๋ณด๋ค ์์ค์ด ๋์ต๋๋ค. GCC๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
๊ณผ -Q --help=์ต์ ํ๊ธฐ ํ์ฑํ๋ ์ ํํ ์ต์ ํ ์ธํธ๋ฅผ ์ฐพ์ผ๋ ค๋ฉด
๊ฐ ์์ค.
-O
-O1 ์ต์ ํ ์ปดํ์ผ์ ์ต์ ํํ๋ ๋ฐ ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ ๋ง์ด ์์๋ฉ๋๋ค.
ํฐ ๊ธฐ๋ฅ.
์ -O, ์ปดํ์ผ๋ฌ๋ ์ํํ์ง ์๊ณ ์ฝ๋ ํฌ๊ธฐ์ ์คํ ์๊ฐ์ ์ค์ด๋ ค๊ณ ํฉ๋๋ค.
์ปดํ์ผ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ์ต์ ํ.
-O ๋ค์ ์ต์ ํ ํ๋๊ทธ๋ฅผ ์ผญ๋๋ค.
-fauto-inc-dec -f๋น๊ต-์ ๊ฑฐ -fcprop ๋ ์ง์คํฐ -fdce -fdefer-ํ -fdelayed-๋ถ๊ธฐ
-fdse -fguess-๋ถ๊ธฐ ํ๋ฅ -fi-๋ณํ2 -fif ๋ณํ -fipa-์์-const
-fipa ํ๋กํ -fipa-์ฐธ์กฐ -fmerge-์์ -fsplit-์์ด๋ ์ ํ -ftree-bit-ccp
-ftree-๋ด์ฅ ํธ์ถ-dce -fttree-ccp -fttree-ch -ftree-copy์ด๋ฆ ๋ฐ๊พธ๊ธฐ -fttree-dce
-ftree-์ง๋ฐฐ์-opts -fttree-dse -fttree-forwprop -fttree-fre -fttree-phiprop -fttree-slsr
-fttree-sra -fttree-pta -fttree-ter -ํ ๋ฒ์ ๋จ์
-O ๋ ์ผ์ง๋๋ค -fomit ํ๋ ์ ํฌ์ธํฐ ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ด ๋ฐฉํด๊ฐ ๋์ง ์๋ ๊ธฐ๊ณ์์
๋๋ฒ๊น ๊ณผ ํจ๊ป.
-O2 ๋์ฑ ์ต์ ํํ์ญ์์ค. GCC๋ ์ง์ํ์ง ์๋ ๊ฑฐ์ ๋ชจ๋ ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค.
๊ณต๊ฐ ์๋ ์ ์ถฉ์์ ํฌํจํฉ๋๋ค. ๋น๊ตํ์๋ฉด -O, ์ด ์ต์ ์
์ปดํ์ผ ์๊ฐ๊ณผ ์์ฑ๋ ์ฝ๋์ ์ฑ๋ฅ.
-O2 ์ ์ํด ์ง์ ๋ ๋ชจ๋ ์ต์ ํ ํ๋๊ทธ๋ฅผ ์ผญ๋๋ค. -O. ๋ํ ๋ค์์ ์ผญ๋๋ค.
์ต์ ํ ํ๋๊ทธ: -fthread ์ ํ -falign-ํจ์ -์ ๋ ฌ ์ ํ -์ ๋ ฌ ๋ฃจํ
-falign-๋ผ๋ฒจ -fcaller ์ ์ฅ -ํฌ๋ก์ค์ ํ -fcse-์ถ์ข -์ ํ -fcse-skip-blocks.
-fdelete-null-ํฌ์ธํฐ ๊ฒ์ฌ -f๋น๊ฐ์ํ -๋น์ผ ์ต์ ํ -fgcse
-fgcse-lm -fhoist-์ธ์ ํ์ค -finline-์์ ๊ธฐ๋ฅ -findirect ์ธ๋ผ์ธ
-ํผํ-์ค๋ผ -foptimize-ํ์ ํธ์ถ -f๋ถ๋ถ ์ธ๋ผ์ธ -fpeephole2 -fregmove
-freorder-๋ธ๋ก -freorder-ํจ์ -frerun-cse-ํ-๋ฃจํ -fsched-์ธํฐ๋ธ๋ก
-fsched-spec -fschedule-insns -fschedule-insns2 -fstrict-์จ๋ฆฌ์ด์ฑ -fstrict-์ค๋ฒํ๋ก
-ftree ์ค์์น ๋ณํ -fttree-tail-merge -fttree-pre -fttree-vrp
์๋์ ๊ฒฝ๊ณ ์ ์ ์ํ์ญ์์ค. -fgcse ํธ์ถ์ ๋ํด -O2 ๊ณ์ฐ์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์์
๊ณ ํ ์ค.
์ฐธ๊ณ : Ubuntu 8.10 ์ด์ ๋ฒ์ ์์๋ -D_FORTIFY_SOURCE=2 ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ๋์ด ์์ผ๋ฉฐ
ํ์ฑํ๋๋ฉด -O 2 ์ด์์ผ๋ก ์ค์ ๋ฉ๋๋ค. ์ด๊ฒ์ ์ถ๊ฐ ์ปดํ์ผ ์๊ฐ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ
์ฌ๋ฌ libc ํจ์์ ๋ํ ๋ฐํ์ ๊ฒ์ฌ. ๋นํ์ฑํํ๋ ค๋ฉด ๋ค์ ์ค ํ๋๋ฅผ ์ง์ ํ์ญ์์ค.
-U_FORTIFY_SOURCE or -D_FORTIFY_SOURCE=0.
-O3 ๋ ์ต์ ํํ์ธ์. -O3 ์ ์ํด ์ง์ ๋ ๋ชจ๋ ์ต์ ํ๋ฅผ ์ผญ๋๋ค. -O2 ๋ํ ์ผ์ง๋๋ค
์ ์, -finline-ํจ์, -ํ์ค์์น ๋ฃจํ, -f์์ธก-๊ณตํต, -fgcse-์ฌ๋ก๋ ํ,
-ftree ๋ฒกํฐํ, -fvect-๋น์ฉ ๋ชจ๋ธ, -ftree-๋ถ๋ถ ์ฌ์ and -fipa-cp-ํด๋ก ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-O0 ์ปดํ์ผ ์๊ฐ์ ์ค์ด๊ณ ๋๋ฒ๊น ์ ํตํด ์์ํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ด๊ฒ์ด
ํ๋ง.
- ์ค์ค ํฌ๊ธฐ์ ์ต์ ํํ์ญ์์ค. - ์ค์ค ๋ชจ๋ ํ์ฑํ -O2 ์ผ๋ฐ์ ์ผ๋ก ์ฆ๊ฐํ์ง ์๋ ์ต์ ํ
์ฝ๋ ํฌ๊ธฐ. ๋ํ ์ฝ๋ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ธฐ ์ํด ์ค๊ณ๋ ์ถ๊ฐ ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค.
- ์ค์ค ๋ค์ ์ต์ ํ ํ๋๊ทธ๋ฅผ ๋นํ์ฑํํฉ๋๋ค. -falign-ํจ์ -์ ๋ ฌ ์ ํ
-์ ๋ ฌ ๋ฃจํ -falign-๋ผ๋ฒจ -freorder-๋ธ๋ก -freeorder-blocks-and-partition
-fprefetch ๋ฃจํ ๋ฐฐ์ด
-์คํ์คํธ
์๊ฒฉํ ํ์ค ์ค์๋ฅผ ๋ฌด์ํ์ญ์์ค. -์คํ์คํธ ๋ชจ๋ ํ์ฑํ -O3 ์ต์ ํ. ๋ํ
๋ชจ๋ ํ์ค ํธํ ํ๋ก๊ทธ๋จ์ ์ ํจํ์ง ์์ ์ต์ ํ๋ฅผ ํ์ฑํํฉ๋๋ค. ๊ทธ๊ฒ
์ผ๋ค -๋น ๋ฅธ ์ํ ๊ทธ๋ฆฌ๊ณ ํฌํธ๋ ์ ์ฉ -fno ๋ณดํธ ๊ดํธ and -fstack-๋ฐฐ์ด.
-์ค๊ทธ ๋๋ฒ๊น ๊ฒฝํ์ ์ต์ ํํฉ๋๋ค. -์ค๊ทธ ๋ฐฉํดํ์ง ์๋ ์ต์ ํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๋๋ฒ๊น . ํ์ค ํธ์ง์ ์ํด ์ ํํ ์ต์ ํ ์์ค์ด์ด์ผ ํฉ๋๋ค.
์ ์งํ๋ฉด์ ํฉ๋ฆฌ์ ์ธ ์์ค์ ์ต์ ํ๋ฅผ ์ ๊ณตํ๋ ์ปดํ์ผ-๋๋ฒ๊ทธ ์ฃผ๊ธฐ
๋น ๋ฅธ ์ปดํ์ผ๊ณผ ์ข์ ๋๋ฒ๊น ๊ฒฝํ.
์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ -O ์ต์ , ๋ ๋ฒจ ๋ฒํธ ์ ๋ฌด์ ๊ด๊ณ์์ด ๋ง์ง๋ง ์ต์ ์
ํจ๊ณผ์ ์ธ ๊ฒ.
์์์ ์ต์ -fํ๋๊ทธ ๊ธฐ๊ณ ๋ ๋ฆฝ์ ํ๋๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค. ๋๋ถ๋ถ์ ํ๋๊ทธ์๋ ๋ ๊ฐ์ง๊ฐ ๋ชจ๋ ์์ต๋๋ค.
๊ธ์ ์ ์ด๊ณ ๋ถ์ ์ ์ธ ํํ; ์ ๋ถ์ ์ ์ธ ํํ - ํธํธ is -fno-foo. ์๋ ํ์์,
์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ์์ ์ค ํ๋๋ง ๋์ด๋ฉ๋๋ค. ๋น์ ์ ๋ค๋ฅธ ๊ฒ์ ์์๋ผ ์ ์์ต๋๋ค
์ ๊ฑฐํ์ฌ ํ์ฑ ์๋ - ๋๋ ์ถ๊ฐํฉ๋๋ค.
๋ค์ ์ต์ ์ ํน์ ์ต์ ํ๋ฅผ ์ ์ดํฉ๋๋ค. ๊ทธ๋ค์ ๋ค์ ์ค ํ๋์ ์ํด ํ์ฑํ๋ฉ๋๋ค. -O
์ต์ ๋๋ ํด๋น ์ต์ ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ํฌ๊ทํ ๊ฒฝ์ฐ ๋ค์ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ํํ ์ต์ ํ์ "๋ฏธ์ธ ์กฐ์ "์ด ํ์ํ ๊ฒฝ์ฐ.
-fno-๊ธฐ๋ณธ-์ธ๋ผ์ธ
๋ฉค๋ฒ ํจ์๊ฐ ๋ด๋ถ์ ์ ์๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ผ์ธ์ผ๋ก ๋ง๋ค์ง ๋ง์ญ์์ค.
ํด๋์ค ๋ฒ์(C++๋ง ํด๋น). ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์์ ์ง์ ํ ๋ -O, ๋ฉค๋ฒ ํจ์ ์ ์
๋ด๋ถ ํด๋์ค ๋ฒ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ผ์ธ์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. ์ฆ, ์ถ๊ฐํ ํ์๊ฐ ์์ต๋๋ค ์ธ๋ผ์ธ
๋ฉค๋ฒ ํจ์ ์ด๋ฆ ์์
-fno-์ง์ฐ-ํ
ํจ์๊ฐ ๋ฐํ๋๋ ์ฆ์ ๊ฐ ํจ์ ํธ์ถ์ ๋ํ ์ธ์๋ฅผ ํญ์ ํ์ ํฉ๋๋ค. ์์ํ
ํจ์ ํธ์ถ ํ ์ธ์๋ฅผ ํํด์ผ ํ๋ ์์คํ ์์ ์ปดํ์ผ๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ํ์ฉํฉ๋๋ค.
์ธ์๋ ์ฌ๋ฌ ํจ์ ํธ์ถ์ ๋ํด ์คํ์ ๋์ ๋์ด ๋ชจ๋ ๋ค์ ์์น์ ํ์๋ฉ๋๋ค.
์ผ๋จ.
์์ค์์ ๋นํ์ฑํ๋จ -O, -O2, -O3, - ์ค์ค.
-์์ผ๋ก ์ ํ
RTL์์ ์๋ฐฉํฅ ์ ํ ์ ๋ฌ์ ์ํํฉ๋๋ค. ํจ์ค๋ ๋ ๊ฐ์ง ๋ช ๋ น์ ๊ฒฐํฉํ๋ ค๊ณ ํฉ๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ๋จ์ํํ ์ ์๋์ง ํ์ธํฉ๋๋ค. ๋ฃจํ ์ธ๋กค๋ง์ด ํ์ฑํ๋ ๊ฒฝ์ฐ XNUMXํ ํต๊ณผ
์ํ๋๊ณ ๋ ๋ฒ์งธ๋ ๋ฃจํ ์ธ๋กค๋ง ํ์ ์์ฝ๋ฉ๋๋ค.
์ด ์ต์ ์ ์ต์ ํ ์์ค์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O, -O2, -O3, - ์ค์ค.
-ffp-๊ณ์ฝ=์คํ์ผ
-ffp-๊ณ์ฝ=ํด์ ๋ถ๋ ์์์ ํํ์ ์ถ์๋ฅผ ๋นํ์ฑํํฉ๋๋ค. -ffp-๊ณ์ฝ=๋น ๋ฅธ
fused multi-add์ ํ์ฑ๊ณผ ๊ฐ์ ๋ถ๋์์์ ํํ ์ถ์ฝ ๊ฐ๋ฅ
๋์์ ๊ธฐ๋ณธ ์ง์์ด ์๋ ๊ฒฝ์ฐ ์์ . -ffp-๊ณ์ฝ=์ผ๊ธฐ ์
์ธ์ด ํ์ค์์ ํ์ฉํ๋ ๊ฒฝ์ฐ ๋ถ๋ ์์์ ํํ์ ์ถ์. ์ด๊ฒ์
ํ์ฌ ๊ตฌํ๋์ง ์๊ณ ๋๋ฑํ๊ฒ ์ทจ๊ธ๋จ -ffp-๊ณ์ฝ=ํด์ .
๋ํดํธ๋ -ffp-๊ณ์ฝ=๋น ๋ฅธ.
-fomit ํ๋ ์ ํฌ์ธํฐ
ํ๋ ์ ํฌ์ธํฐ๊ฐ ํ์ํ์ง ์์ ํจ์์ ๋ ์ง์คํฐ์ ํ๋ ์ ํฌ์ธํฐ๋ฅผ ๋ณด๊ดํ์ง ๋ง์ญ์์ค. ์ด๊ฒ
ํ๋ ์ ํฌ์ธํฐ๋ฅผ ์ ์ฅ, ์ค์ ๋ฐ ๋ณต์ํ๋ผ๋ ์ง์๋ฅผ ํผํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ํ ๋ง๋ ๋ค
๋ง์ ๊ธฐ๋ฅ์์ ์ฌ์ฉํ ์ ์๋ ์ถ๊ฐ ๋ ์ง์คํฐ. It ๋ํ ๋ธ๋๋ ๋๋ฒ๊น ๋ถ๊ฐ๋ฅํ on
์ผ๋ถ ๊ธฐ๊ณ.
VAX์ ๊ฐ์ ์ผ๋ถ ์์คํ ์์๋ ์ด ํ๋๊ทธ๊ฐ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
ํธ์ถ ์ํ์ค๋ ์๋์ผ๋ก ํ๋ ์ ํฌ์ธํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์๋ฌด ๊ฒ๋ ์ ์ฅ๋์ง ์์ต๋๋ค.
์กด์ฌํ์ง ์๋ ์ฒ. ๊ธฐ๊ณ ์ค๋ช ๋งคํฌ๋ก "FRAME_POINTER_REQUIRED"
๋์ ๋จธ์ ์ด ์ด ํ๋๊ทธ๋ฅผ ์ง์ํ๋์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค.
GCC ๋ฒ์ 4.6๋ถํฐ ๊ธฐ๋ณธ ์ค์ (ํฌ๊ธฐ ์ต์ ํ๊ฐ ์๋ ๊ฒฝ์ฐ)
32๋นํธ GNU/Linux x86 ๋ฐ 32๋นํธ Darwin x86 ๋์์ด ๋ค์์ผ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
-fomit ํ๋ ์ ํฌ์ธํฐ. ๊ธฐ๋ณธ๊ฐ์ ๋ค์์ผ๋ก ๋๋๋ฆด ์ ์์ต๋๋ค. -fno-์๋ต-ํ๋ ์ ํฌ์ธํฐ by
๋ค์์ ์ฌ์ฉํ์ฌ GCC ๊ตฌ์ฑ --enable-ํ๋ ์ ํฌ์ธํฐ ์ต์ ์ ๊ตฌ์ฑํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O, -O2, -O3, - ์ค์ค.
-foptimize-ํ์ ํธ์ถ
ํ์ ๋ฐ ๊ผฌ๋ฆฌ ์ฌ๊ท ํธ์ถ์ ์ต์ ํํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-fno ์ธ๋ผ์ธ
"always_inline"์ผ๋ก ํ์๋ ๊ธฐ๋ฅ ์ธ์ ์ธ๋ผ์ธ ๊ธฐ๋ฅ์ ํ์ฅํ์ง ๋ง์ญ์์ค.
๊ธฐ์ธํ๋ค. ์ต์ ํํ์ง ์์ ๋์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๋จ์ผ ํจ์๋ "noinline"์ผ๋ก ํ์ํ์ฌ ์ธ๋ผ์ธ์์ ์ ์ธํ ์ ์์ต๋๋ค.
์์ฑ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๋๋ค.
-finline-์์ ๊ธฐ๋ฅ
๋ณธ๋ฌธ์ด ์์๋ณด๋ค ์์ ๋ ํธ์ถ์์ ํจ์๋ฅผ ํตํฉํฉ๋๋ค.
ํจ์ ํธ์ถ ์ฝ๋(๊ทธ๋์ ํ๋ก๊ทธ๋จ์ ์ ์ฒด ํฌ๊ธฐ๊ฐ ์์์ง). ์ปดํ์ผ๋ฌ
ํตํฉํ ๊ฐ์น๊ฐ ์์ ๋งํผ ๊ฐ๋จํ ๊ธฐ๋ฅ์ ๋ฐ๊ฒฌ์ ์ผ๋ก ๊ฒฐ์ ํฉ๋๋ค.
์ด ๋ฐฉ๋ฒ. ์ด ์ธ๋ผ์ธ์ ์ธ๋ผ์ธ์ผ๋ก ์ ์ธ๋์ง ์์ ํจ์๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ํจ์์ ์ ์ฉ๋ฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2.
-findirect ์ธ๋ผ์ธ
์ธ๋ผ์ธ์ ๋ํ ๋ค์ ๋๋ถ์ ์ปดํ์ผ ํ์์ ์๋ ค์ง ๊ฐ์ ํธ์ถ์ ๋๋ค.
์ด์ ์ธ๋ผ์ด๋. ์ด ์ต์ ์ ์ธ๋ผ์ธ ์์ฒด๊ฐ ์ผ์ ธ ์์ ๋๋ง ํจ๊ณผ๊ฐ ์์ต๋๋ค.
๋ก -finline-ํจ์ or -finline-์์ ๊ธฐ๋ฅ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2.
-finline-ํจ์
์ธ๋ผ์ธ์ผ๋ก ์ ์ธ๋์ง ์์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ํจ์๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ๊ณ ๋ คํ์ญ์์ค. NS
์ปดํ์ผ๋ฌ๋ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ํตํฉํ ๊ฐ์น๊ฐ ์๋ ๊ธฐ๋ฅ์ ๊ฒฝํ์ ์ผ๋ก ๊ฒฐ์ ํฉ๋๋ค.
์ฃผ์ด์ง ํจ์์ ๋ํ ๋ชจ๋ ํธ์ถ์ด ํตํฉ๋๊ณ ํจ์๊ฐ ์ ์ธ๋ ๊ฒฝ์ฐ
"์ ์ "์ธ ๊ฒฝ์ฐ ํจ์๋ ์ผ๋ฐ์ ์ผ๋ก ์์ฒด์ ์ผ๋ก ์ด์ ๋ธ๋ฌ ์ฝ๋๋ก ์ถ๋ ฅ๋์ง ์์ต๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O3.
-finline-functions-call-once
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ํธ์ถ์์ ์ธ๋ผ์ธํ๊ธฐ ์ํด ํ ๋ฒ ํธ์ถ๋ ๋ชจ๋ "์ ์ " ํจ์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
"์ธ๋ผ์ธ"์ผ๋ก ํ์๋์ง ์์ต๋๋ค. ์ฃผ์ด์ง ํจ์์ ๋ํ ํธ์ถ์ด ํตํฉ๋๋ฉด
ํจ์๋ ์์ฒด์ ์ผ๋ก ์ด์ ๋ธ๋ฌ ์ฝ๋๋ก ์ถ๋ ฅ๋์ง ์์ต๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O1, -O2, -O3 and - ์ค์ค.
-๋๋ ค์ด ์ธ๋ผ์ธ
"always_inline"์ผ๋ก ํ์๋ ์ธ๋ผ์ธ ํจ์ ๋ฐ ๋ณธ๋ฌธ์ด ๋ค์๋ณด๋ค ์๊ฒ ๋ณด์ด๋ ํจ์
ํ๊ธฐ ์ ์ ์ผ์ฐ ํจ์ ํธ์ถ ์ค๋ฒํค๋ -fprofile ์์ฑ ๊ณ์ธก ๋ฐ
์ค์ ์ธ๋ผ์ธ ํจ์ค. ์ด๋ ๊ฒ ํ๋ฉด ํ๋กํ์ผ๋ง์ด ์๋นํ ์ ๋ ดํด์ง๊ณ ์ผ๋ฐ์ ์ผ๋ก
์ค์ฒฉ๋ ๋ํผ ํจ์์ ํฐ ์ฒด์ธ์ด ์๋ ํ๋ก๊ทธ๋จ์์ ๋ ๋น ๋ฅด๊ฒ ์ธ๋ผ์ธํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
-ํผํ-์ค๋ผ
์ง๊ณ์ ์ ์ฐจ ๊ฐ ์ค์นผ๋ผ ๊ต์ฒด ์ํ, ์ฌ์ฉํ์ง ์๋ ๋งค๊ฐ๋ณ์ ์ ๊ฑฐ
์ฐธ์กฐ๋ก ์ ๋ฌ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ผ๋ก ์ ๋ฌ๋ ๋งค๊ฐ๋ณ์๋ก ๊ต์ฒดํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3 and - ์ค์ค.
-finline-ํ๊ณ=n
๊ธฐ๋ณธ์ ์ผ๋ก GCC๋ ์ธ๋ผ์ธ๋ ์ ์๋ ํจ์์ ํฌ๊ธฐ๋ฅผ ์ ํํฉ๋๋ค. ์ด ํ๋๊ทธ๋
์ด ํ๊ณ์ ๊ฑฐ์น ์ ์ด. n ์ธ๋ผ์ธํ ์ ์๋ ํจ์์ ํฌ๊ธฐ์ ๋๋ค.
์์ฌ ๋ช ๋ น์ด์ ์.
์ธ๋ผ์ธ์ ์ค์ ๋ก ์ง์ ๋ ์ ์๋ ์ฌ๋ฌ ๋งค๊ฐ๋ณ์์ ์ํด ์ ์ด๋ฉ๋๋ค.
์ฌ์ฉํ์ฌ ๊ฐ๋ณ์ ์ผ๋ก --๋งค๊ฐ๋ณ์ name=๊ฐ์น. ๊ทธ๋งํผ -finline-ํ๊ณ=n ์ต์ ์ ์ผ๋ถ๋ฅผ ์ค์ ํฉ๋๋ค.
์ด๋ฌํ ๋งค๊ฐ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ต๋ ์ธ๋ผ์ธ-insns-๋จ์ผ
๊ฐ n/ 2.
์ต๋ ์ธ๋ผ์ธ-insns-์๋
๊ฐ n/ 2.
์ธ๋ผ์ธ์ ์ ์ดํ๋ โโ๊ฐ๋ณ ๋งค๊ฐ๋ณ์์ ๋ํ ๋ฌธ์๋ ์๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ด๋ฌํ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ๋ํด
์ฐธ๊ณ : ๊ฐ์น๊ฐ ์์ ์ ์์ต๋๋ค -finline-ํ๊ณ ๊ธฐ๋ณธ ๋์์ด ๋ฐ์ํฉ๋๋ค.
์ฐธ๊ณ : ์์ฌ ๋ช ๋ น์ด๋ ์ด ํน์ ์ปจํ ์คํธ์์ ์ถ์์ ๋ํ๋ ๋๋ค.
ํจ์์ ํฌ๊ธฐ ์ธก์ . ์ด๋ค ์์ผ๋ก๋ ์ด์ ๋ธ๋ฆฌ ์๋ฅผ ๋ํ๋ด์ง ์์ต๋๋ค.
์ง์นจ์ด ์์ผ๋ฏ๋ก ์ ํํ ์๋ฏธ๋ ๋ฆด๋ฆฌ์ค๋ง๋ค ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ.
-fno-keep-inline-dllexport
๋ ์ธ๋ถํ๋ ๋ฒ์ ์ ๋๋ค. -fkeep ์ธ๋ผ์ธ ํจ์์๋ง ์ ์ฉ๋๋
"dllexport" ์์ฑ ๋๋ declspec์ ์ฌ์ฉํ์ฌ ์ ์ธ๋ ํจ์
-fkeep ์ธ๋ผ์ธ ํจ์
C์์ "์ธ๋ผ์ธ"์ผ๋ก ์ ์ธ๋ "์ ์ " ํจ์๋ฅผ ๊ฐ์ฒด ํ์ผ์ ๋ด๋ณด๋ ๋๋ค.
ํจ์๋ ๋ชจ๋ ํธ์ถ์์ ์ธ๋ผ์ธ๋์์ต๋๋ค. ์ด ์ค์์น๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค
GNU C90์์ "extern inline" ํ์ฅ์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ. C++์์ ๋ชจ๋ ๊ฒ์ ๋ด๋ณด๋ ๋๋ค.
์ธ๋ผ์ธ ํจ์๋ฅผ ๊ฐ์ฒด ํ์ผ์ ๋ฃ์ต๋๋ค.
-fkeep-static-const
์ต์ ํ๊ฐ ์ผ์ ธ ์์ง ์์ผ๋ฉด "์ ์ const"๋ก ์ ์ธ๋ ๋ณ์๋ฅผ ๋ด๋ณด๋ ๋๋ค.
๋ณ์๋ ์ฐธ์กฐ๋์ง ์์ต๋๋ค.
GCC๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ์ต์ ์ ํ์ฑํํฉ๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ์ ๋ก ํ์ธํ๋๋ก ํ๋ ค๋ฉด
์ต์ ํ๊ฐ ์ผ์ ธ ์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ณ์๊ฐ ์ฐธ์กฐ๋ฉ๋๋ค.
์ ์, -fno-keep-static-consts ์ต์ ์ ์ ํํฉ๋๋ค.
-fmerge-์์
๋์ผํ ์์(๋ฌธ์์ด ์์ ๋ฐ ๋ถ๋ ์์์ ์์) ๋ณํฉ ์๋
์ปดํ์ผ ๋จ์์ ๊ฑธ์ณ.
์ด ์ต์ ์ ์ด์ ๋ธ๋ฌ์ ๋ง์ปค๊ฐ
๊ทธ๊ฒ์ ์ง์ํ์ญ์์ค. ์ฌ์ฉํ๋ค -fno-merge-์์ ์ด ํ๋์ ์ต์ ํ๊ธฐ ์ํด.
์์ค์์ ํ์ฑํ๋จ -O, -O2, -O3, - ์ค์ค.
-fmerge-all-์์
๋์ผํ ์์์ ๋์ผํ ๋ณ์๋ฅผ ๋ณํฉํ๋ ค๊ณ ํฉ๋๋ค.
์ด ์ต์ ์ -fmerge-์์. ์ด์ธ์ -fmerge-์์ ์ด
์๋ฅผ ๋ค์ด ์์ ์ด๊ธฐํ ๋ฐฐ์ด ๋๋ ์ด๊ธฐํ ์์ ๋ณ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ณ ๋ คํฉ๋๋ค.
์ ์ ๋๋ ๋ถ๋ ์์์ ์ ํ. C ๋๋ C++์ ๊ฐ์ ์ธ์ด์๋ ๊ฐ ๋ณ์๊ฐ ํ์ํฉ๋๋ค.
์ฌ๊ท ํธ์ถ์ ๋์ผํ ๋ณ์์ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ํฌํจํ์ฌ ๊ณ ์ ํ
๋ฐ๋ผ์ ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ถ์ ํฉํ ๋์์ด ๋ฐ์ํฉ๋๋ค.
-fmodulo-sched
์ฒซ ๋ฒ์งธ ์ค์ผ์ค๋ง ํจ์ค ์ง์ ์ ์ค์ ๋ชจ๋๋ก ์ค์ผ์ค๋ง์ ์ํํฉ๋๋ค. ์ด๊ฒ
pass๋ ๊ฐ์ฅ ์์ชฝ ๋ฃจํ๋ฅผ ์ดํด๋ณด๊ณ ์๋ก ๋ค๋ฅธ ๋ฃจํ๋ฅผ ๊ฒน์ณ์ ๋ช ๋ น์ ์ฌ์ ๋ ฌํฉ๋๋ค.
๋ฐ๋ณต.
-fmodulo-sched-allow-regmoves
๋ ์ง์คํฐ ์ด๋์ด ํ์ฉ๋๋ ๋ณด๋ค ์ ๊ทน์ ์ธ SMS ๊ธฐ๋ฐ ๋ชจ๋๋ก ์ค์ผ์ค๋ง์ ์ํํฉ๋๋ค. ์ ์ํด
์ด ํ๋๊ทธ๋ฅผ ์ค์ ํ๋ฉด ํน์ ๋ฐ์์กด์ฑ ์์ง๊ฐ ์ญ์ ๋์ด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.
์๋ช ๋ฒ์ ๋ถ์์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ reg-moves ์์ฑ. ์ด ์ต์ ์ ์ ํจํฉ๋๋ค
~ ๋ง -fmodulo-sched ์ฌ์ฉํ๋๋ก ์ค์ ๋์์ต๋๋ค.
-fno-๋ธ๋์น-์นด์ดํธ-reg
์นด์ดํธ ๋ ์ง์คํฐ์ "๊ฐ์ ๋ฐ ๋ถ๊ธฐ" ๋ช ๋ น์ ์ฌ์ฉํ์ง ๋ง๊ณ ๋์
๋ ์ง์คํฐ๋ฅผ ๊ฐ์์ํค๋ ์ผ๋ จ์ ๋ช ๋ น์ด๋ฅผ ์์ฑํ๊ณ ๋น๊ต
XNUMX์ด๊ณ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ถ๊ธฐํฉ๋๋ค. ์ด ์ต์ ์ ๋ค์์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
x86, PowerPC, IA-64 ๋ฐ
S/390.
๋ํดํธ๋ -fbranch-count-reg.
-fno-๊ธฐ๋ฅ-cse
๋ ์ง์คํฐ์ ํจ์ ์ฃผ์๋ฅผ ๋ฃ์ง ๋ง์ญ์์ค. ํธ์ถํ๋ ๊ฐ ๋ช ๋ น์
์์ ํจ์๋ ํจ์์ ์ฃผ์๋ฅผ ๋ช ์์ ์ผ๋ก ํฌํจํฉ๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ฝ๋ ํจ์จ์ฑ์ด ๋จ์ด์ง์ง๋ง
์ด์ ๋ธ๋ฌ ์ถ๋ ฅ์ ์ด ์ต์ ์ด ์์ ๋ ์ํ๋๋ ์ต์ ํ๋ก ์ธํด ํผ๋๋ ์ ์์ต๋๋ค.
์ฌ์ฉ๋์ง ์์ต๋๋ค.
๋ํดํธ๋ -fํจ์-cse
-fno-zero-initialized-in-bss
๋์์ด BSS ์น์ ์ ์ง์ํ๋ ๊ฒฝ์ฐ GCC๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ณ์๋ฅผ ๋ฃ์ต๋๋ค.
BSS์ XNUMX์ผ๋ก ์ด๊ธฐํ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฒฐ๊ณผ ์ฝ๋์ ๊ณต๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค.
์ผ๋ถ ํ๋ก๊ทธ๋จ์ ๋ช ์์ ์ผ๋ก ๋ณ์์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ด ์ต์ ์ ์ด ๋์์ ๋๋๋ค.
๋ฐ์ดํฐ ์น์ ์ผ๋ก ์ด๋ --- ์๋ฅผ ๋ค์ด ๊ฒฐ๊ณผ ์คํ ํ์ผ์ด ์ฐพ์ ์ ์๋๋ก
ํด๋น ์น์ ์ ์์ ๋ถ๋ถ ๋ฐ/๋๋ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ํฉ๋๋ค.
๋ํดํธ๋ -fzero-์ด๊ธฐํ-BSS.
-fmudflap -fmudflapth -fmudflapir
์ด๋ฅผ ์ง์ํ๋ ํ๋ฐํธ ์๋(C ๋ฐ C++)์ ๊ฒฝ์ฐ ๋ชจ๋ ์ํํ ํฌ์ธํฐ/๋ฐฐ์ด์ ๊ณ์ธกํฉ๋๋ค.
์ญ์ฐธ์กฐ ์์ , ์ผ๋ถ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฌธ์์ด/ํ ํจ์ ๋ฐ ๊ธฐํ
๋ฒ์/์ ํจ์ฑ ํ ์คํธ์ ๊ด๋ จ๋ ๊ตฌ์ฑ. ๊ทธ๋ ๊ฒ ๊ณ์ธก๋ ๋ชจ๋์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
๋ฒํผ ์ค๋ฒํ๋ก, ์๋ชป๋ ํ ์ฌ์ฉ ๋ฐ ๊ธฐํ C/C++ ํด๋์ค์ ๋ฉด์ญ
ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ. ๊ณ์ธก์ ๋ณ๋์ ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํฉ๋๋ค.
(libmudflap), ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ ๋งํฌ๋ฉ๋๋ค. -fmudflap ๋งํฌ ์๊ฐ์ ์ ๊ณต๋ฉ๋๋ค. ์ด์-
๊ณ์ธก๋ ํ๋ก๊ทธ๋จ์ ์๊ฐ ๋์์ ๋จธ๋ํ๋ฉ_์ต์
ํ๊ฒฝ ๋ณ์. ์ต์ ์ "env MUDFLAP_OPTIONS=-help.out"์ ์ฐธ์กฐํ์ญ์์ค.
-fmudflapth ๋์ -fmudflap ํ๋ก๊ทธ๋จ์ด ๋ค์ค์ธ ๊ฒฝ์ฐ ์ปดํ์ผ ๋ฐ ๋งํฌ
์ค๋ ๋. ์ฌ์ฉํ๋ค -fmudflapir์ด์ธ์๋, -fmudflap or -fmudflapth๋ง์ฝ
๊ณ์ธก์ ํฌ์ธํฐ ์ฝ๊ธฐ๋ฅผ ๋ฌด์ํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ๋ ์ ์ ๊ณ์ธก์ ์์ฑํฉ๋๋ค(๊ทธ๋ฆฌ๊ณ
๋ฐ๋ผ์ ๋ ๋น ๋ฅธ ์คํ) ๋ฐ ์ฌ์ ํ ์์ ํ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ฐ๊ธฐ๋ฅผ ์์์ํค์ง๋ง ํ๋ก๊ทธ๋จ ๋ด์์ ์ ํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์๋ชป ์ฝ์ ์ ์์ต๋๋ค.
-fthread ์ ํ
์ ํ๊ฐ ๋ค๋ฅธ ์์น๋ก ๋ถ๊ธฐ๋๋์ง ํ์ธํ๋ ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค.
์ฒซ ๋ฒ์งธ๋ก ํฌํจ๋ ๋น๊ต๊ฐ ๋ฐ๊ฒฌ๋ฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฒซ ๋ฒ์งธ ๋ถ๊ธฐ๋ ๋ค์์ผ๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค.
๋ ๋ฒ์งธ ๋ถ๊ธฐ์ ๋ชฉ์ ์ง ๋๋ ๋ฐ๋ก ๋ค์ ์ง์ ,
์กฐ๊ฑด์ด ์ฐธ์ธ์ง ๊ฑฐ์ง์ธ์ง์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-fsplit-์์ด๋ ์ ํ
32๋นํธ์์ "long long"๊ณผ ๊ฐ์ด ์ฌ๋ฌ ๋ ์ง์คํฐ๋ฅผ ์ฐจ์งํ๋ ์ ํ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
์์คํ ์์ ๋ ์ง์คํฐ๋ฅผ ๋ถ๋ฆฌํ๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋นํฉ๋๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก
์ด๋ฌํ ์ ํ์ ๋ํด ๋ ๋์ ์ฝ๋๋ฅผ ์์ฑํ์ง๋ง ๋๋ฒ๊น ์ ๋ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O, -O2, -O3, - ์ค์ค.
-fcse-์ถ์ข -์ ํ
CSE(๊ณตํต ๋ถ๋ถ์ ์ ๊ฑฐ)์์ ์ ํ ๋ช ๋ น์ด๋ฅผ ์ค์บํ๋ฉด
์ ํ์ ๋ชฉํ๋ ๋ค๋ฅธ ๊ฒฝ๋ก์ ์ํด ๋๋ฌ๋์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด CSE๊ฐ
"else" ์ ์ด ์๋ "if" ๋ฌธ, CSE๋ ์กฐ๊ฑด์ด ๋ค์๊ณผ ๊ฐ์ ๋ ์ ํ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
ํ ์คํธํ ๊ฒ์ ๊ฑฐ์ง์ ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-fcse-skip-blocks.
์ด๊ฒ์ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค. -fcse-์ถ์ข -์ ํ, ๊ทธ๋ฌ๋ CSE๊ฐ ๋ค์ ์ ํ๋ฅผ ๋ฐ๋ฅด๋๋ก ํฉ๋๋ค.
์กฐ๊ฑด๋ถ๋ก ๋ธ๋ก์ ๊ฑด๋๋๋๋ค. CSE๊ฐ ์๋ ๋จ์ํ "if" ๋ฌธ์ ๋ง๋๋ฉด
else ์ , -fcse-skip-blocks. CSE๋ ๋ชธ ์ฃผ์์ ์ ํ๋ฅผ ๋ฐ๋ผ๊ฐ๋๋ค.
"๋ง์ฝ".
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-frerun-cse-ํ-๋ฃจํ
๋ฃจํ ์ต์ ํ๊ฐ ์ํ๋ ํ ๊ณตํต ํ์ ํํ์ ์ ๊ฑฐ๋ฅผ ๋ค์ ์คํํ์ญ์์ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-fgcse
์ ์ญ ๊ณตํต ๋ถ๋ถ์ ์ ๊ฑฐ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค. ์ด ํจ์ค๋ ์ํํฉ๋๋ค.
์ ์ญ ์์ ๋ฐ ๋ณต์ฌ ์ ํ.
์ฐธ๊ณ : GCC ํ์ฅ์ธ ๊ณ์ฐ๋ gotos๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ ๋ ๋ค์์ ์ป์ ์ ์์ต๋๋ค.
์ ์ญ ๊ณตํต ํ์ ํํ์ ์ ๊ฑฐ๋ฅผ ๋นํ์ฑํํ๋ฉด ๋ฐํ์ ์ฑ๋ฅ ํฅ์
์ถ๊ฐํ์ฌ ํต๊ณผ -FNO-GCSE ๋ช ๋ น ์ค์.
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-fgcse-lm
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -fgcse-lm ํ์ฑํ๋๋ฉด ์ ์ญ ๊ณตํต ํ์ ํํ์ ์ ๊ฑฐ๊ฐ ์ด๋ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์์ ์ ์ํด์๋ง ์ฃฝ์์ ๋นํ๋ ๋ถํ. ์ด๊ฒ์ ๋ค์์ ํฌํจํ๋ ๋ฃจํ๋ฅผ ํ์ฉํฉ๋๋ค.
๋ฃจํ ์ธ๋ถ์ ๋ก๋๋ก ๋ณ๊ฒฝ๋๋ ๋ก๋/์ ์ฅ ์ํ์ค ๋ฐ ๋ฃจํ ๋ด ๋ณต์ฌ/์ ์ฅ
๋ฃจํ.
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -fgcse ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
-fgcse-sm
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -fgcse-sm ํ์ฑํ๋๋ฉด ์ ์ญ ๊ณตํต ์ดํ์ ์คํ ์ด ๋ชจ์ ํจ์ค๊ฐ ์คํ๋ฉ๋๋ค.
ํ์ ํํ ์ ๊ฑฐ. ์ด ํจ์ค๋ ์ ์ฅ์๋ฅผ ๋ฃจํ ๋ฐ์ผ๋ก ์ด๋ํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ฌ์ฉ์
์ ํจ๊ป -fgcse-lm, ๋ก๋/์ ์ฅ ์ํ์ค๊ฐ โโํฌํจ๋ ๋ฃจํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๋ฃจํ ์ด์ ์ ๋ก๋ํ๊ณ ๋ฃจํ ์ดํ์ ์ ์ฅํฉ๋๋ค.
์ด๋ค ์ต์ ํ ์์ค์์๋ ํ์ฑํ๋์ง ์์ต๋๋ค.
-fgcse-las
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -fgcse-las ํ์ฑํ๋๋ฉด ์ ์ญ ๊ณตํต ํ์ ํํ์ ์ ๊ฑฐ ํจ์ค
๋์ผํ ๋ฉ๋ชจ๋ฆฌ ์์น(๋ ๋ค
๋ถ๋ถ ๋ฐ ์ ์ฒด ์ค๋ณต).
์ด๋ค ์ต์ ํ ์์ค์์๋ ํ์ฑํ๋์ง ์์ต๋๋ค.
-fgcse-์ฌ๋ก๋ ํ
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -fgcse-์ฌ๋ก๋ ํ ํ์ฑํ๋๋ฉด ์ค๋ณต ๋ก๋ ์ ๊ฑฐ ํจ์ค๊ฐ ์ํ๋ฉ๋๋ค.
์ฌ์ฅ์ ํ. ์ด ํจ์ค์ ๋ชฉ์ ์ ์ค๋ณต ์ ์ถ์ ์ ๋ฆฌํ๋ ๊ฒ์ ๋๋ค.
- faggressive-loop-optimizations
์ด ์ต์ ์ ๋ฃจํ ์ตํฐ๋ง์ด์ ๊ฐ ์ธ์ด ์ ์ฝ ์กฐ๊ฑด์ ์ฌ์ฉํ์ฌ
๋ฃจํ์ ๋ฐ๋ณต ํ์. ์ด๊ฒ์ ๋ฃจํ ์ฝ๋๊ฐ
์๋ฅผ ๋ค์ด ๋ถํธ ์๋ ์ ์ ์ค๋ฒํ๋ก ๋๋ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ์ ์๋์ง ์์ ๋์
๋ฐฐ์ด ์ก์ธ์ค. ๋ฃจํ์ ๋ฐ๋ณต ํ์์ ๋ํ ๊ฒฝ๊ณ๋ ๋ค์์ ์๋ดํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฃจํ ํ๊ธฐ ๋ฐ ํ๋ง ๋ฐ ๋ฃจํ ์ข ๋ฃ ํ ์คํธ ์ต์ ํ. ์ด ์ต์ ์ด ํ์ฑํ๋์์ต๋๋ค
๊ธฐ๋ณธ์ ์ผ๋ก
-ํ์ธ์ดํ ๋ฃจํ ์ต์ ํ
์ด ์ต์ ์ ๋ฃจํ ์ตํฐ๋ง์ด์ ๊ฐ ๋ฃจํ ์ธ๋ฑ์ค๊ฐ ์ค๋ฒํ๋ก๋์ง ์๋๋ค๊ณ ๊ฐ์ ํ๊ณ
์ค์ํ์ง ์์ ์ข ๋ฃ ์กฐ๊ฑด์ด ์๋ ๋ฃจํ๋ ๋ฌดํํ์ง ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ ๋์
๋ฃจํ ์ต์ ํ ํ๋ก๊ทธ๋จ ์์ฒด๊ฐ ๋ค์์ ์ฆ๋ช ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ๋ฃจํ ์ต์ ํ ๋ฒ์
๊ฐ์ ์ด ์ ํจํฉ๋๋ค. ์ฌ์ฉํ๋ ๊ฒฝ์ฐ -Wunsafe ๋ฃจํ ์ต์ ํ, ์ปดํ์ผ๋ฌ๊ฐ ๊ฒฝ๊ณ ํฉ๋๋ค.
์ด๋ฐ ์ข ๋ฅ์ ๋ฃจํ๋ฅผ ์ฐพ์ผ๋ฉด.
-ํฌ๋ก์ค์ ํ
ํฌ๋ก์ค ์ ํ ๋ณํ์ ์ํํฉ๋๋ค. ์ด ๋ณํ์ ๋๋ฑํ ์ฝ๋๋ฅผ ํตํฉํ๊ณ
์ฝ๋ ํฌ๊ธฐ๋ฅผ ์ ์ฝํฉ๋๋ค. ๊ฒฐ๊ณผ ์ฝ๋๋ ๊ต์ฐจ๊ฐ ์๋ ๊ฒ๋ณด๋ค ๋ ๋์ ์ฑ๋ฅ์ ๋ณด์ผ ์๋ ์๊ณ ๊ทธ๋ ์ง ์์ ์๋ ์์ต๋๋ค.
์ ํ.
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-fauto-inc-dec
๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค์ ์ฃผ์์ ์ฆ๊ฐ ๋๋ ๊ฐ์๋ฅผ ๊ฒฐํฉํฉ๋๋ค. ์ด ํจ์ค๋
์ด๋ฅผ ์ง์ํ๊ธฐ ์ํ ์ง์นจ์ด ์๋ ์ํคํ ์ฒ์์๋ ํญ์ ๊ฑด๋๋ฐ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -O ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ง์ํ๋ ์ํคํ ์ฒ์์ ๋ ๋์ต๋๋ค.
-fdce
RTL์์ ๋ฐ๋ ์ฝ๋ ์ ๊ฑฐ(DCE)๋ฅผ ์ํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -O ์ด์.
-fdse
RTL์์ ๋ฐ๋ ์คํ ์ด ์ ๊ฑฐ(DSE)๋ฅผ ์ํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -O ์ด์.
-fif ๋ณํ
์กฐ๊ฑด๋ถ ์ ํ๋ฅผ ๋ถ๊ธฐ๊ฐ ์๋ ๋ฑ๊ฐ๋ฌผ๋ก ๋ณํํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
์กฐ๊ฑด๋ถ ์ด๋, ์ต์, ์ต๋, ํ๋๊ทธ ๋ฐ ๋ณต๊ทผ ์ค์ ์ง์นจ ๋ฐ ๋ช ๊ฐ์ง ํธ๋ฆญ ์ฌ์ฉ
ํ์ค ์ฐ์ ๋ก ํ ์ ์์ต๋๋ค. ์นฉ์์ ์กฐ๊ฑด๋ถ ์คํ ์ฌ์ฉ
available์ "if-conversion2"์ ์ํด ์ ์ด๋ฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O, -O2, -O3, - ์ค์ค.
-fi-๋ณํ2
์กฐ๊ฑด๋ถ ์คํ(์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ)์ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด๋ถ ์ ํ๋ฅผ ๋ค์์ผ๋ก ๋ณํํฉ๋๋ค.
๊ฐ์ง๊ฐ ์๋ ๋ฑ๊ฐ๋ฌผ.
์์ค์์ ํ์ฑํ๋จ -O, -O2, -O3, - ์ค์ค.
-fdelete-null-ํฌ์ธํฐ ๊ฒ์ฌ
ํ๋ก๊ทธ๋จ์ด ๋ ํฌ์ธํฐ๋ฅผ ์์ ํ๊ฒ ์ญ์ฐธ์กฐํ ์ ์๊ณ ์ฝ๋๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์์๊ฐ ๊ฑฐ๊ธฐ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋จํ ์ผ์ ํ ์ ๊ธฐ ์ต์ ํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ต์ ํ ์์ค. ๋ํ GCC์ ๋ค๋ฅธ ์ต์ ํ ๋จ๊ณ์์๋ ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ
๋ ํฌ์ธํฐ์ ๋ํ ๋ถํ์ํ ๊ฒ์ฌ๋ฅผ ์ ๊ฑฐํ๋ ์ ์ญ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ ์ ์ดํฉ๋๋ค.
์ด๊ฒ์ ํฌ์ธํฐ๊ฐ ์ด๋ฏธ ์ญ์ฐธ์กฐ๋ ํ์ ๊ฒ์ฌ๋๋ฉด
null์ผ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ผ๋ถ ํ๊ฒฝ์์๋ ์ด ๊ฐ์ ์ด ์ฌ์ค์ด ์๋๋๋ค. ์ฌ์ฉํ๋ค
-fno-delete-null-ํฌ์ธํฐ ๊ฒ์ฌ ์์กดํ๋ ํ๋ก๊ทธ๋จ์ ๋ํด ์ด ์ต์ ํ๋ฅผ ๋นํ์ฑํํ๋ ค๋ฉด
๊ทธ ํ๋์.
์ผ๋ถ ๋์, ํนํ ํฌํจ๋ ๋์์ ๋ชจ๋ ์์ค์์ ์ด ์ต์ ์ ๋นํ์ฑํํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด
๋ชจ๋ ์์ค์์ ํ์ฑํ๋ฉ๋๋ค. -O0, -O1, -O2, -O3, - ์ค์ค. ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ ํจ์ค
๋ค๋ฅธ ์ต์ ํ ์์ค์์ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
-f๋น๊ฐ์ํ
๊ฐ์ ํจ์์ ๋ํ ํธ์ถ์ ์ง์ ํธ์ถ๋ก ๋ณํํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ด๊ฒ์ ๋ ๋ค ์ด๋ฃจ์ด์ง๋๋ค
์ ์ฐจ ๋ด์์ ๊ฐ์ ์ธ๋ผ์ธ์ ์ผ๋ถ๋ก ์ ์ฐจ ๊ฐ
("-findirect-inlining") ๋ฐ ์ ์ฐจ ๊ฐ ์์ ์ ํ(-fipa-cp). ํ์ฑํ๋จ
์์ค์์ -O2, -O3, - ์ค์ค.
-๋น์ผ ์ต์ ํ
๋น๊ต์ ๋น์ฉ์ด ๋ง์ด ๋๋ ์ฌ๋ฌ ๊ฐ์ง ์ฌ์ํ ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-๋น์ด ์๋
์ค๋ณต ํ์ฅ ๋ช ๋ น์ ์ ๊ฑฐํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ด๊ฒ์ ํนํ ๋์์ด ๋ฉ๋๋ค.
x86-64 ์ํคํ ์ฒ, 64๋นํธ ๋ ์ง์คํฐ์์ ์์์ ์ผ๋ก XNUMX ํ์ฅ
ํ์ 32๋นํธ ์ ๋ฐ์ ์ฐ๊ธฐ.
์์ค์์ x86์ ๋ํด ํ์ฑํ๋จ -O2, -O3.
-f์ต์ ํ ๋ฑ๋ก ์ด๋
-fregmove
์ด๋ ๋ช ๋ น์์ ๋ ์ง์คํฐ ๋ฒํธ๋ฅผ ๋ค๋ฅธ ํผ์ฐ์ฐ์๋ก ์ฌํ ๋นํ๋ ค๊ณ ํฉ๋๋ค.
๋ ์ง์คํฐ ์ฐ๊ฒฐ์ ์์ ์ต๋ํํ๊ธฐ ์ํ ๊ฐ๋จํ ์ง์นจ. ์ด๊ฒ์
๋ ๊ฐ์ ํผ์ฐ์ฐ์ ๋ช ๋ น์ด๊ฐ ์๋ ๊ธฐ๊ณ์์ ํนํ ์ ์ฉํฉ๋๋ค.
์ฃผ์ ์ฌํญ -fregmove and -f์ต์ ํ ๋ฑ๋ก ์ด๋ ๊ฐ์ ์ต์ ํ์ ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-ํผ๋ผ ์๊ณ ๋ฆฌ์ฆ=์ฐ์ฐ
ํตํฉ ๋ ์ง์คํฐ ํ ๋น์์ ๋ํด ์ง์ ๋ ์์ ์ง์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค. NS
์ฐ์ฐ ์ฃผ์ฅ์ ์ ์์ต๋๋ค ์ฐ์ , Chow์ ์ฐ์ ์์ ์์ ์ง์ , ๋๋ CB,
Chaitin-Briggs ์ฐฉ์์ ์ง์ ํฉ๋๋ค. Chaitin-Briggs ์ฐฉ์์ด ๊ตฌํ๋์ง ์์์ต๋๋ค.
๋ชจ๋ ์ํคํ ์ฒ์ ๋ํด ์ง์ํ์ง๋ง ์ด๋ฅผ ์ง์ํ๋ ๋์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๋ ๋์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
-ํผ๋ผ ์ง์ญ=์ง๋ฐฉ
ํตํฉ ๋ ์ง์คํฐ ํ ๋น์์ ๋ํด ์ง์ ๋ ์์ญ์ ์ฌ์ฉํฉ๋๋ค. NS ์ง๋ฐฉ ๋ ผ์
๋ค์ ์ค ํ๋์ฌ์ผ ํฉ๋๋ค.
๋ชจ๋ ๋ชจ๋ ๋ฃจํ๋ฅผ ๋ ์ง์คํฐ ํ ๋น ์์ญ์ผ๋ก ์ฌ์ฉํ์ญ์์ค. ์ด๊ฒ์ ์ต๊ณ ์ ๊ฒฐ๊ณผ๋ฅผ ์ค ์ ์์ต๋๋ค
์๊ฑฐ๋ ๋ถ๊ท์นํ ๋ ์ง์คํฐ ์ธํธ๊ฐ ์๋ ๊ธฐ๊ณ.
ํผํฉ ๋
์์ญ์ผ๋ก ๋ ์ง์คํฐ ์๋ ฅ์ด ์์ ๋ฃจํ๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ฃจํ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ
๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋๋ถ๋ถ์ ์ํคํ ์ฒ์์ ์ต์์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์๋ ์ต์ ํ(-O, -O2, ...).
ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋จ์ผ ์์ญ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ์์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
ํฌ๊ธฐ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. - ์ค์ค or -O0.
-ํผ๋ผ-ํธ์ด์คํธ-์๋ ฅ
IRA๋ฅผ ์ฌ์ฉํ์ฌ ํธ์ด์คํธ ๊ฒฐ์ ์ ์ํ ์ฝ๋ ํธ์ด์คํ ํจ์ค์ ๋ ์ง์คํฐ ์๋ ฅ ํ๊ฐ
ํํ. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๊ฐ ์์์ง์ง๋ง ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค.
์ปดํ์ผ๋ฌ ๋ค์ด.
์ด ์ต์ ์ ์์ค์์ ํ์ฑํ๋ฉ๋๋ค. - ์ค์ค ๋ชจ๋ ๋์์ ๋ํด.
-ํผ๋ผ ๋ฃจํ ์๋ ฅ
IRA๋ฅผ ์ฌ์ฉํ์ฌ ๋ฃจํ ๋ถ๋ณ๋์ ์ด๋ํ๊ธฐ ์ํ ๊ฒฐ์ ์ ๋ํ ๋ฃจํ์ ๋ ์ง์คํฐ ์๋ ฅ์ ํ๊ฐํฉ๋๋ค.
์ด ์ต์ ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ์ฌ์ฉํ๋ ์์คํ ์์ ๋ ๋น ๋ฅด๊ณ ๋ ์์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
ํฐ ๋ ์ง์คํฐ ํ์ผ(>= 32 ๋ ์ง์คํฐ)์ด์ง๋ง ์ปดํ์ผ๋ฌ๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค.
์ด ์ต์ ์ ์์ค์์ ํ์ฑํ๋ฉ๋๋ค. -O3 ์ผ๋ถ ๋์์ ๋ํด.
-fno-ira-๊ณต์ -์ ์ฅ-์ฌ๋กฏ
ํธ์ถ ์ฌ์ฉ ํ๋ ๋ ์ง์คํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์คํ ์ฌ๋กฏ ๊ณต์ ๋นํ์ฑํ
์ ํ. ๊ฐ ํ๋ ๋ ์ง์คํฐ๋ ๋ณ๋์ ์คํ ์ฌ๋กฏ์ ๊ฐ์ง๋ฉฐ ๊ฒฐ๊ณผ์ ์ผ๋ก ํจ์ ์คํ
ํ๋ ์์ด ๋ ํฝ๋๋ค.
-fno-ira-share-spill-slots
์์ฌ ๋ ์ง์คํฐ์ ํ ๋น๋ ์คํ ์ฌ๋กฏ์ ๊ณต์ ๋ฅผ ๋นํ์ฑํํฉ๋๋ค. ๊ฐ ์์ฌ ๋ ์ง์คํฐ
ํ๋ ๋ ์ง์คํฐ๋ฅผ ์ป์ง ๋ชปํ๋ ๊ฒ์ ๋ณ๋์ ์คํ ์ฌ๋กฏ์ ๊ฐ์ ธ์ค๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ํจ์
์คํ ํ๋ ์์ด ๋ ํฝ๋๋ค.
-Fira-์ฅํฉํ=n
ํตํฉ ๋ ์ง์คํฐ ํ ๋น์์ ๋ํ ๋คํ ํ์ผ์ ์์ธํ ์ ๋๋ฅผ ์ ์ดํฉ๋๋ค. NS
๊ธฐ๋ณธ๊ฐ์ 5์ ๋๋ค. ๊ฐ์ด n 10๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด ๋คํ ์ถ๋ ฅ์ด ์ ์ก๋ฉ๋๋ค.
์ ๊ฐ์ ํ์์ ์ฌ์ฉํ์ฌ stderr๋ก n ๋ง์ด๋์ค 10.
-fdelayed-๋ถ๊ธฐ
๋์ ์์คํ ์ ๋ํด ์ง์๋๋ ๊ฒฝ์ฐ ์ ์ฉํ ๋ช ๋ น์ ์ฌ์ ๋ ฌํ์ญ์์ค.
์ง์ฐ ๋ถ๊ธฐ ๋ช ๋ น ์ดํ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ช ๋ น ์ฌ๋กฏ.
์์ค์์ ํ์ฑํ๋จ -O, -O2, -O3, - ์ค์ค.
-fschedule-insns
๋์ ์์คํ ์ ๋ํด ์ง์๋๋ ๊ฒฝ์ฐ ๋ช ๋ น์ ์ฌ์ ๋ ฌํ์ฌ ์ ๊ฑฐํ์ญ์์ค.
ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์คํ์ด ์ค๋จ๋ฉ๋๋ค. ์ด๊ฒ์ ๋ค์์ ์ํํ๋ ๊ธฐ๊ณ๋ฅผ ๋์ต๋๋ค.
๋ค๋ฅธ ๋ช ๋ น์ด๋ฅผ ํ์ฉํ์ฌ ๋๋ฆฐ ๋ถ๋ ์์์ ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋ก๋ ๋ช ๋ น์ด๋ฅผ
๋ก๋ ๋๋ ๋ถ๋ ์์์ ๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๊ฐ ํ์ํ ๋๊น์ง ๋ฐํ๋ฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3.
-fschedule-insns2
์ ์ฌํ๊ฒ -fschedule-insns, ๊ทธ๋ฌ๋ ๋ช ๋ น ์ค์ผ์ค๋ง์ ์ถ๊ฐ ๋จ๊ณ๋ฅผ ์์ฒญํฉ๋๋ค.
๋ ์ง์คํฐ ํ ๋น์ด ์๋ฃ๋ ํ. ์ด๊ฒ์ ํนํ ๋ค์์ด ์๋ ๊ธฐ๊ณ์์ ์ ์ฉํฉ๋๋ค.
์๋์ ์ผ๋ก ์ ์ ์์ ๋ ์ง์คํฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ก๋ ๋ช ๋ น์ด
ํ ์ฌ์ดํด.
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-fno-sched-์ธํฐ๋ธ๋ก
๊ธฐ๋ณธ ๋ธ๋ก ์ ์ฒด์ ์ง์นจ์ ์์ฝํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
๋ ์ง์คํฐ ํ ๋น ์ ์ ์ค์ผ์ค๋งํ ๋, ์ฆ -fschedule-insns ๋๋์์ -O2 or
๋ ๋์.
-fno-sched-spec
๋ฌด๋ถํ ๋ช ๋ น์ด์ ํฌ๊ธฐ์ ์์ง์์ ํ์ฉํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
๋ ์ง์คํฐ ํ ๋น ์ ์ ์ค์ผ์ค๋งํ ๋ ๊ธฐ๋ณธ๊ฐ, ์ฆ -fschedule-insns ๋๋์์
-O2 ์ด์.
-fsched-์๋ ฅ
๋ ์ง์คํฐ ํ ๋น ์ ์ ๋ ์ง์คํฐ ์๋ ฅ ๊ฐ์ง ์์ ์์ฝ์ ํ์ฑํํฉ๋๋ค. ์ด๊ฒ
๋ ์ง์คํฐ ํ ๋น์ด ํ์ฑํ๋๊ธฐ ์ ์ ์ค์ผ์ค๋งํ ๋๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
-fschedule-insns ๋๋์์ -O2 ๋๋ ๋ ๋๊ฒ. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์์ฑ๋
๋ ์ง์คํฐ ์๋ ฅ์ด ์ซ์ ์ด์์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ํฌ๊ธฐ๋ฅผ ์ค์ ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ ๋ ์ง์คํฐ ๋ฐ ๋ ์ง์คํฐ ํ ๋น์ ํ์ ์ ์ถ.
-fsched-์ฌ์-๋ก๋
์ผ๋ถ ๋ก๋ ๋ช ๋ น์ ์ถ์ธก ๋ชจ์ ์ ํ์ฉํฉ๋๋ค. ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ ์ง์คํฐ ํ ๋น ์ ์ ์ค์ผ์ค๋ง, ์ฆ -fschedule-insns ๋๋์์ -O2 ์ด์.
-fsched-spec-load-์ํํ
๋ ๋ง์ ๋ก๋ ๋ช ๋ น์ ์ถ์ธก ๋ชจ์ ์ ํ์ฉํฉ๋๋ค. ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ ์ง์คํฐ ํ ๋น ์ ์ ์ค์ผ์ค๋ง, ์ฆ -fschedule-insns ๋๋์์ -O2 ์ด์.
-fsched-staled-insns
-fsched-stalled-insns=n
์ง์ฐ ๋๊ธฐ์ด์์ ์กฐ๊ธฐ์ ์ด๋ํ ์ ์๋ ์๋ฐ ์์ค(์๋ ๊ฒฝ์ฐ)์ ์๋ฅผ ์ ์ํฉ๋๋ค.
๋ ๋ฒ์งธ ์ค์ผ์ค๋ง ๋จ๊ณ์์ ์ค๋น ๋ชฉ๋ก์ insns๋ฅผ ์ถ๊ฐํฉ๋๋ค. -fno-sched-staled-insns
์ด๋ค ์ฌ๊ด๋ ์กฐ๊ธฐ์ ์ด๋๋์ง ์์์ ์๋ฏธํ๋ฉฐ, -fsched-stalled-insns=0 ์์์ ์๋ฏธ
์กฐ๊ธฐ์ ์ด๋ํ ์ ์๋ ๋๊ธฐ ์ค์ธ ์ธ์ ์์ ๋ํ ์ ํ. -fsched-staled-insns
๊ฐ์ด ์๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -fsched-stalled-insns=1.
-fsched-stalled-insns-dep
-fsched-stalled-insns-dep=n
์ค๋จ๋ ์์ค์ ๋ํ ์ข ์์ฑ์ ๋ํด ๊ฒ์ฌํ๋ ์๋ฐ ์์ค ๊ทธ๋ฃน(์ฃผ๊ธฐ)์ ์๋ฅผ ์ ์ํฉ๋๋ค.
์ด๋ ์ง์ฐ๋ ์ฌ๊ด ๋๊ธฐ์ด์์ ์กฐ๊ธฐ ์ ๊ฑฐ ํ๋ณด์ ๋๋ค. ์ด๊ฒ์ ๊ฐ์ง๊ณ ์๋ค
๋ ๋ฒ์งธ ์ค์ผ์ฅด๋ง ํจ์ค ๋์์๋ง ํจ๊ณผ๋ฅผ ๋ํ๋ ๋๋ค. -fsched-staled-insns is
์ต์ํ. -fno-sched-stalled-insns-dep ์ ํด๋นํ๋ -fsched-stalled-insns-dep=0.
-fsched-stalled-insns-dep ๊ฐ์ด ์๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-fsched-stalled-insns-dep=1.
-fsched2-use-์ํผ๋ธ๋ก
๋ ์ง์คํฐ ํ ๋น ํ ์ค์ผ์ค๋งํ ๋ ์ํผ๋ธ๋ก ์ค์ผ์ค๋ง์ ์ฌ์ฉํ์ญ์์ค. ์ด๊ฒ์ ํ์ฉ
๊ธฐ๋ณธ ๋ธ๋ก ๊ฒฝ๊ณ๋ฅผ ๋์ด ๋ ๋น ๋ฅธ ์ผ์ ์ผ๋ก ์ด๋ํฉ๋๋ค. ์ด ์ต์ ์
GCC์์ ์ฌ์ฉํ๋ ๋ชจ๋ ๊ธฐ๊ณ ์ค๋ช ์ด CPU๋ฅผ ์ถฉ๋ถํ ๊ฐ๊น๊ฒ ๋ชจ๋ธ๋งํ๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ์คํ์ ์ ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์ ๋ขฐํ ์ ์๋ ๊ฒฐ๊ณผ๋ฅผ ํผํ๊ธฐ ์ํด.
์ด๊ฒ์ ๋ ์ง์คํฐ ํ ๋น ํ ์ค์ผ์ค๋งํ ๋๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
-fschedule-insns2 ๋๋์์ -O2 ์ด์.
-fsched-group-ํด๋ฆฌ์คํฑ
์ค์ผ์ค๋ฌ์์ ๊ทธ๋ฃน ํด๋ฆฌ์คํฑ์ ํ์ฑํํฉ๋๋ค. ์ด ํด๋ฆฌ์คํฑ์ ๋ช ๋ น์ ์ ํธํฉ๋๋ค.
์ผ์ ๊ทธ๋ฃน์ ์ํด ์์ต๋๋ค. ์ผ์ ์ด ๋ค์๊ณผ ๊ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
ํ์ฑํ, ์ฆ -fschedule-insns or -fschedule-insns2 ๋๋์์ -O2 ์ด์.
-fsched-critical-path-ํด๋ฆฌ์คํฑ
์ค์ผ์ค๋ฌ์์ ์๊ณ ๊ฒฝ๋ก ํด๋ฆฌ์คํฑ์ ํ์ฑํํฉ๋๋ค. ์ด ํด๋ฆฌ์คํฑ ํธ์
์ค์ํ ๊ฒฝ๋ก์ ๋ํ ์ง์นจ. ์ผ์ ์ด ๋ค์๊ณผ ๊ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
ํ์ฑํ, ์ฆ -fschedule-insns or -fschedule-insns2 ๋๋์์ -O2 ์ด์.
-fsched-spec-insn-ํด๋ฆฌ์คํฑ
์ค์ผ์ค๋ฌ์์ ์ถ๋ก ์ ๋ช ๋ น์ด ํด๋ฆฌ์คํฑ์ ํ์ฑํํฉ๋๋ค. ์ด ํด๋ฆฌ์คํฑ ํธ์
์์กด์ฑ์ด ๋ ํฐ ํฌ๊ธฐ์ ๋ช ๋ น. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
์ค์ผ์ค๋ง์ด ํ์ฑํ๋ ๊ฒฝ์ฐ, ์ฆ -fschedule-insns or -fschedule-insns2 ๋๋์์ -O2
์ด์.
-fsched-rank-ํด๋ฆฌ์คํฑ
์ค์ผ์ค๋ฌ์์ ์์ ํด๋ฆฌ์คํฑ์ ํ์ฑํํฉ๋๋ค. ์ด ํด๋ฆฌ์คํฑ์ ๋ช ๋ น์ ์ ํธํฉ๋๋ค.
ํฌ๊ธฐ๋ ๋น๋๊ฐ ๋ ํฐ ๊ธฐ๋ณธ ๋ธ๋ก์ ์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
์ค์ผ์ค๋ง์ด ํ์ฑํ๋ ๊ฒฝ์ฐ, ์ฆ -fschedule-insns or -fschedule-insns2 ๋๋์์ -O2
์ด์.
-fsched-last-insn-ํด๋ฆฌ์คํฑ
์ค์ผ์ค๋ฌ์์ ๋ง์ง๋ง ๋ช ๋ น ํด๋ฆฌ์คํฑ์ ํ์ฑํํฉ๋๋ค. ์ด ํด๋ฆฌ์คํฑ์
์์ ๋ ๋ง์ง๋ง ๋ช ๋ น์ ๋ ์์กดํ๋ ๋ช ๋ น. ์ด๊ฒ์ ํ์ฑํ๋์ด ์์ต๋๋ค
์์ฝ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก -fschedule-insns or -fschedule-insns2
๋๋์์ -O2 ์ด์.
-fsched-dep-count-ํด๋ฆฌ์คํฑ
์ค์ผ์ค๋ฌ์์ ์ข ์ ๊ณ์ ํด๋ฆฌ์คํฑ์ ํ์ฑํํฉ๋๋ค. ์ด ํด๋ฆฌ์คํฑ์
๊ทธ์ ๋ฐ๋ผ ๋ ๋ง์ ์ง์นจ์ด ์๋ ์ง์นจ. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
์ค์ผ์ค๋ง์ด ํ์ฑํ๋ ๊ฒฝ์ฐ, ์ฆ -fschedule-insns or -fschedule-insns2 ๋๋์์ -O2
์ด์.
-freschedule-modulo-scheduled-loops
๋ชจ๋๋ก ์ค์ผ์ค๋ง์ ๊ธฐ์กด ์ค์ผ์ค๋ง๋ณด๋ค ๋จผ์ ์ํ๋ฉ๋๋ค. ๋ฃจํ๊ฐ ๋ชจ๋๋ก์ธ ๊ฒฝ์ฐ
์์ ๋, ์ดํ์ ์์ฝ ํจ์ค๋ ์ผ์ ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ
๊ทธ ํ๋์ ํต์ ํ์ญ์์ค.
-f์ ํ์ ์ค์ผ์ค๋ง
์ ํ์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ช ๋ น์ ์ค์ผ์ค๋งํ์ญ์์ค. ์ ํ์ ์ค์ผ์ค๋ง ์คํ
์ฒซ ๋ฒ์งธ ์ค์ผ์ค๋ฌ ํจ์ค ๋์ .
-f์ ํ์ -์ค์ผ์ค๋ง2
์ ํ์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ช ๋ น์ ์ค์ผ์ค๋งํ์ญ์์ค. ์ ํ์ ์ค์ผ์ค๋ง ์คํ
๋ ๋ฒ์งธ ์ค์ผ์ค๋ฌ ํจ์ค ๋์ .
-fsel-sched-ํ์ดํ๋ผ์ด๋
์ ํ์ ์ค์ผ์ค๋ง ์ค์ ๊ฐ์ฅ ์์ชฝ ๋ฃจํ์ ์ํํธ์จ์ด ํ์ดํ๋ผ์ด๋์ ํ์ฑํํฉ๋๋ค. ์ด๊ฒ
์ต์ ์ ๋ค์ ์ค ํ๋๊ฐ ์๋ ํ ํจ๊ณผ๊ฐ ์์ต๋๋ค. -f์ ํ์ ์ค์ผ์ค๋ง or -f์ ํ์ -์ค์ผ์ค๋ง2
์ผ์ ธ ์์ต๋๋ค.
-fsel-sched-ํ์ดํ๋ผ์ธ-์ธ๋ถ ๋ฃจํ
์ ํ์ ์ค์ผ์ค๋ง ์ค์ ๋ฃจํ๋ฅผ ํ์ดํ๋ผ์ด๋ํ ๋ ์ธ๋ถ ๋ฃจํ๋ ํ์ดํ๋ผ์ธํฉ๋๋ค. ์ด๊ฒ
์ต์ ์ ๋ค์์ ์ ์ธํ๊ณ ๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค. -fsel-sched-ํ์ดํ๋ผ์ด๋ ์ผ์ ธ ์์ต๋๋ค.
-fshrink-wrap
ํจ์ ํ๋กค๋ก๊ทธ๋ฅผ ํ์๋ก ํ๋ ๋ถ๋ถ์ด ์๋๋ผ ํจ์์ ์ผ๋ถ ์ ์๋ง ๋ด๋ณด๋ ๋๋ค.
๊ธฐ๋ฅ์ ์๋จ. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O ์ด์.
-fcaller ์ ์ฅ
ํจ์ ํธ์ถ์ ์ํด ์ฐจ๋จ๋ ๋ ์ง์คํฐ์ ๊ฐ ํ ๋น์ ํ์ฑํํฉ๋๋ค.
์ด๋ฌํ ํธ์ถ ์ฃผ๋ณ์ ๋ ์ง์คํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ณต์ํ๊ธฐ ์ํ ์ถ๊ฐ ๋ช ๋ น์ ๋ด๋ณด๋ ๋๋ค. ๊ทธ๋ฐ
ํ ๋น์ ๋ ๋์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ๋๋ง ์ํ๋ฉ๋๋ค.
์ด ์ต์ ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ด ์๋ ํน์ ์์คํ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํญ์ ํ์ฑํ๋์ด ์์ต๋๋ค.
๋์ ์ฌ์ฉํ ํธ์ถ ๋ณด์กด ๋ ์ง์คํฐ๊ฐ ์์ต๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-fcombin-stack-adjustments
์คํ ์กฐ์ (ํธ์ ๋ฐ ํ) ๋ฐ ์คํ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ๋ฅผ ์ถ์ ํ ๋ค์ ์๋ํฉ๋๋ค.
๊ทธ๊ฒ๋ค์ ๊ฒฐํฉํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ ์ํด.
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -O1 ์ด์.
-fconserve-์คํ
์คํ ์ฌ์ฉ์ ์ต์ํํ๋ ค๊ณ ํฉ๋๋ค. ์ปดํ์ผ๋ฌ๋ ๋ ์ ์ ์คํ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ ค๊ณ ์๋ํฉ๋๋ค.
ํ๋ก๊ทธ๋จ์ด ๋๋ ค์ง๋ ๊ฒฝ์ฐ. ์ด ์ต์ ์ ์ค์ ์ ์๋ฏธํฉ๋๋ค ๋ํ ์คํ ํ๋ ์
๋งค๊ฐ๋ณ์๋ฅผ 100์ผ๋ก ์ค์ ํ๊ณ ๋ํ ์คํ ํ๋ ์ ์ฑ์ฅ ๋งค๊ฐ๋ณ์๋ฅผ 400์ผ๋ก ์ค์ ํฉ๋๋ค.
-fttree-์ฌ์ฐ๊ฒฐ
๋๋ฌด์์ ์ฌ๊ฒฐํฉ์ ์ํํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O ์ด์.
-fttree-pre
ํธ๋ฆฌ์์ ๋ถ๋ถ ์ค๋ณต ์ ๊ฑฐ(PRE)๋ฅผ ์ํํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ -O2 and -O3.
-ftree-๋ถ๋ถ ์ฌ์
๋ถ๋ถ ์ค๋ณต ์ ๊ฑฐ(PRE)๋ฅผ ๋ณด๋ค ์ ๊ทน์ ์ผ๋ก ๋ง๋ญ๋๋ค. ์ด ํ๋๊ทธ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ -O3.
-fttree-forwprop
ํธ๋ฆฌ์์ ์๋ฐฉํฅ ์ ํ๋ฅผ ์ํํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O and
๋ ๋์.
-fttree-fre
ํธ๋ฆฌ์์ ์ ์ฒด ์ค๋ณต ์ ๊ฑฐ(FRE)๋ฅผ ์ํํฉ๋๋ค. FRE์ FRE์ ์ฐจ์ด์
PRE๋ FRE๊ฐ ๋ค์์ผ๋ก ์ด์ด์ง๋ ๋ชจ๋ ๊ฒฝ๋ก์์ ๊ณ์ฐ๋ ํํ์๋ง ๊ณ ๋ คํ๋ค๋ ๊ฒ์ ๋๋ค.
์ค๋ณต ๊ณ์ฐ. ์ด ๋ถ์์ PRE๋ณด๋ค ๋น ๋ฅด์ง๋ง ๋ ธ์ถ ํ์๋ ์ ์ต๋๋ค.
์ค๋ณต. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O ์ด์.
-fttree-phiprop
๋๋ฌด์ ์กฐ๊ฑด๋ถ ํฌ์ธํฐ์์ ๋ถํ๋ฅผ ๋์ด์ฌ๋ฆฝ๋๋ค. ์ด ํจ์ค๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ -O ์ด์.
-fhoist-์ธ์ ํ์ค
๋ถํ๊ฐ
๋์ผํ ๊ตฌ์กฐ์ ์ธ์ ์์น์ ๋์ ์ํคํ ์ฒ์๋ ์กฐ๊ฑด๋ถ
์ด๋ ์ง์. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O2 ์ด์.
-ftree ๋ณต์ฌ ์ํ
ํธ๋ฆฌ์์ ๋ณต์ฌ ์ ํ๋ฅผ ์ํํฉ๋๋ค. ์ด ํจ์ค๋ ๋ถํ์ํ ๋ณต์ฌ ์์ ์ ์ ๊ฑฐํฉ๋๋ค.
์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O ์ด์.
-fipa-์์-const
์ด๋ค ํจ์๊ฐ ์์ํ๊ฑฐ๋ ์์์ธ์ง ์์๋ณด์ญ์์ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -O ์ด์.
-fipa-์ฐธ์กฐ
์ปดํ์ผ ๋จ์๋ฅผ ๋ฒ์ด๋์ง ์๋ ์ ์ ๋ณ์๋ฅผ ์ฐพ์ผ์ญ์์ค. ์ ์ํด ํ์ฑํ๋จ
๊ธฐ๋ณธ๊ฐ -O ์ด์.
-fipa-pta
์ ์ฐจ ๊ฐ ํฌ์ธํฐ ๋ถ์ ๋ฐ ์ ์ฐจ ๊ฐ ์์ ์ ์ํํ๊ณ
์ฐธ์กฐ ๋ถ์. ์ด ์ต์ ์ ๊ณผ๋ํ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์ปดํ์ผ ์๊ฐ ์ฌ์ฉ์ ์ ๋ฐํ ์ ์์ต๋๋ค.
ํฐ ์ปดํ์ผ ๋จ์. ์ด๋ค ์ต์ ํ ์์ค์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค.
-fipa ํ๋กํ
์ ์ฐจ ๊ฐ ํ๋กํ์ผ ์ ํ๋ฅผ ์ํํฉ๋๋ค. Cold์์๋ง ํธ์ถ๋๋ ํจ์
๊ธฐ๋ฅ์ ์ฝ๋๋ก ํ์๋ฉ๋๋ค. ๋ํ ํ ๋ฒ ์คํ๋ ๊ธฐ๋ฅ(์: "์ฝ๋",
"noreturn", ์ ์ ์์ฑ์ ๋๋ ์๋ฉธ์)๊ฐ ์๋ณ๋ฉ๋๋ค. ์ฝ๋ ๊ธฐ๋ฅ ๋ฐ
ํ ๋ฒ ์คํ๋ ํจ์์ ๋ฃจํ๊ฐ ์ ์ ๋ถ๋ถ์ ํฌ๊ธฐ์ ๋ง๊ฒ ์ต์ ํ๋ฉ๋๋ค. ์ ์ํด ํ์ฑํ๋จ
๊ธฐ๋ณธ๊ฐ -O ์ด์.
-fipa-cp
์ ์ฐจ๊ฐ ์์ ์ ํ๋ฅผ ์ํํฉ๋๋ค. ์ด ์ต์ ํ๋ ํ๋ก๊ทธ๋จ์ ๋ถ์ํฉ๋๋ค
ํจ์์ ์ ๋ฌ๋ ๊ฐ์ด ์์์ธ์ง ํ์ธํ ๋ค์ ์ต์ ํ
๋ฐ๋ผ์. ์ด ์ต์ ํ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ ํจ์์ ์ ๋ฌ๋ ์์๊ฐ ์์ต๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
-O2, - ์ค์ค and -O3.
-fipa-cp-ํด๋ก
ํ๋ก์์ ๊ฐ ์์ ์ ํ๋ฅผ ๋ ๊ฐํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ํจ์ ๋ณต์ ๋ฅผ ์ํํฉ๋๋ค. ์ธ์
ํ์ฑํ๋ ๊ฒฝ์ฐ ์ ์ฐจ ๊ฐ ์์ ์ ํ๊ฐ ๊ธฐ๋ฅ ๋ณต์ ๋ฅผ ์ํํฉ๋๋ค.
์ธ๋ถ์์ ๋ณผ ์ ์๋ ํจ์๋ ์์ ์ธ์๋ก ํธ์ถํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ์ด๊ฑด
์ต์ ํ๋ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ๋ณต์ฌ๋ณธ์ ์์ฑํ ์ ์์ผ๋ฏ๋ก ํฌ๊ฒ ์ฆ๊ฐํ ์ ์์ต๋๋ค.
์ฝ๋ ํฌ๊ธฐ(์ฐธ์กฐ --๋งค๊ฐ๋ณ์ ipcp ๋จ์ ์ฑ์ฅ =๊ฐ์น). ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
-O3.
-ftree-์ฑํฌ๋
๋๋ฌด์์ ์์ผ๋ก ์ ์ฅ ๋์์ ์ํํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O and
๋ ๋์.
-ftree-bit-ccp
ํธ๋ฆฌ์์ ํฌ์ ์กฐ๊ฑด๋ถ ๋นํธ ์์ ์ ํ ์ํ ๋ฐ ํฌ์ธํฐ ์ ํ
์ผ๋ผ์ธ๋จผํธ ์ ๋ณด. ์ด ํจ์ค๋ ๋ก์ปฌ ์ค์นผ๋ผ ๋ณ์์์๋ง ์๋ํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -O ๊ทธ๋ฆฌ๊ณ ๋ ๋์. ๊ทธ๊ฒ์ ๊ทธ๊ฒ์ ์๊ตฌํ๋ค -fttree-ccp ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
-fttree-ccp
ํธ๋ฆฌ์์ ํฌ์ ์กฐ๊ฑด๋ถ ์์ ์ ํ(CCP)๋ฅผ ์ํํฉ๋๋ค. ์ด ํจ์ค๋ง
๋ก์ปฌ ์ค์นผ๋ผ ๋ณ์์์ ์๋ํ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์์์ ํ์ฑํ๋ฉ๋๋ค. -O ์ด์.
-ftree ์ค์์น ๋ณํ
์ค์์น์์ ๋จ์ ์ด๊ธฐํ๋ฅผ a์์ ์ด๊ธฐํ๋ก ๋ณํ
์ค์นผ๋ผ ๋ฐฐ์ด. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O2 ์ด์.
-fttree-tail-merge
๋์ผํ ์ฝ๋ ์ํ์ค๋ฅผ ์ฐพ์ต๋๋ค. ๋ฐ๊ฒฌ๋๋ฉด ํ๋๋ฅผ ๋ค๋ฅธ ํ๋์ ์ ํ๋ก ๊ต์ฒดํ์ญ์์ค.
์ด ์ต์ ํ๋ฅผ ๊ผฌ๋ฆฌ ๋ณํฉ ๋๋ ๊ต์ฐจ ์ ํ๋ผ๊ณ ํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ -O2 ๊ทธ๋ฆฌ๊ณ ๋ ๋์. ์ด ํจ์ค์ ์ปดํ์ผ ์๊ฐ์ ๋ค์์ ์ฌ์ฉํ์ฌ ์ ํํ ์ ์์ต๋๋ค.
์ต๋ ๊ผฌ๋ฆฌ ๋ณํฉ ๋น๊ต ๋งค๊ฐ ๋ณ์ ๋ฐ ์ต๋ ๊ผฌ๋ฆฌ ๋ณํฉ ๋ฐ๋ณต ๋งค๊ฐ ๋ณ์์ ๋๋ค.
-fttree-dce
ํธ๋ฆฌ์์ ๋ฐ๋ ์ฝ๋ ์ ๊ฑฐ(DCE)๋ฅผ ์ํํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O
์ด์.
-ftree-๋ด์ฅ ํธ์ถ-dce
๋ด์ฅ ํจ์ ํธ์ถ์ ๋ํด ์กฐ๊ฑด๋ถ ๋ฐ๋ ์ฝ๋ ์ ๊ฑฐ(DCE)๋ฅผ ์ํํฉ๋๋ค.
"errno"๋ฅผ ์ค์ ํ ์ ์์ง๋ง ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ถ์์ฉ์ด ์์ต๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
at -O2 ๊ทธ๋ฆฌ๊ณ ๋ ๋์ ๊ฒฝ์ฐ - ์ค์ค ๋ ์ง์ ๋์ง ์์ต๋๋ค.
-ftree-์ง๋ฐฐ์-opts
๋ค์ํ ๋จ์ ์ค์นผ๋ผ ์ ๋ฆฌ ์ํ(์์/๋ณต์ฌ ์ ํ, ์ด์คํ
๋๋ฏธ๋ค์ดํฐ ๊ธฐ๋ฐ ์ ๊ฑฐ, ๋ฒ์ ์ ํ ๋ฐ ํํ ๋จ์ํ)
ํธ๋ฆฌ ์ํ. ์ด๊ฒ์ ๋ํ ์ ํ ์ค๋ ๋ฉ์ ์ํํฉ๋๋ค(์ ํ์ ๋ํ ์ ํ๋ฅผ ์ค์ด๊ธฐ ์ํด). ์ด๊ฒ
ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O ์ด์.
-fttree-dse
๋๋ฌด์์ ์ฃฝ์ ์ ์ฅ์ ์ ๊ฑฐ(DSE)๋ฅผ ์ํํฉ๋๋ค. ์ฃฝ์ ๊ฐ๊ฒ๋ ์ถ์ต์ ๊ฐ๊ฒ๋ค
์ค๊ฐ ๋ก๋ ์์ด ๋์ค์ ๋ค๋ฅธ ์ ์ฅ์์์ ๋ฎ์ด์ฐ๋ ์์น์ ๋๋ค. ์
์ด ๊ฒฝ์ฐ ์ด์ ์ ์ฅ์๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O and
๋ ๋์.
-fttree-ch
ํธ๋ฆฌ์์ ๋ฃจํ ํค๋ ๋ณต์ฌ๋ฅผ ์ํํฉ๋๋ค. ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ ๋ฆฌํฉ๋๋ค.
์ฝ๋ ๋ชจ์ ์ต์ ํ์ ํจ์จ์ฑ. ๊ทธ๊ฒ์ ๋ํ ํ ์ ํ๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด ๊น๋ฐ์
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -O ๊ทธ๋ฆฌ๊ณ ๋ ๋์. ์ ๋ํด ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค. - ์ค์ค, ์ผ๋ฐ์ ์ผ๋ก
์ฝ๋ ํฌ๊ธฐ๋ฅผ ๋๋ฆฝ๋๋ค.
-ftree ๋ฃจํ ์ต์ ํ
ํธ๋ฆฌ์์ ๋ฃจํ ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O and
๋ ๋์.
-ftree ๋ฃจํ ์ ํ
ํธ๋ฆฌ์์ ๋ฃจํ ๊ตํ ๋ณํ์ ์ํํฉ๋๋ค. ์ ๋์ผ - ๋ฃจํ ๊ตํ. ์ฐ๋ค
์ด ์ฝ๋ ๋ณํ์์ GCC๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋์ด์ผ ํฉ๋๋ค. --with-ppl and --ํด๋ฃจ๊ทธ์ ํจ๊ป ์
Graphite ๋ฃจํ ๋ณํ ์ธํ๋ผ๋ฅผ ํ์ฑํํฉ๋๋ค.
- ๋ฃจํ ๊ตํ
๋ฃจํ์์ ๋ฃจํ ๊ตํ ๋ณํ์ ์ํํฉ๋๋ค. ๋ ๊ฐ์ ์ค์ฒฉ ๋ฃจํ ๊ตํ
๋ด๋ถ ๋ฐ ์ธ๋ถ ๋ฃจํ๋ฅผ ์ ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๋ฃจํ๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
DO J = 1, M
๋ด๊ฐ = 1, N
A(J, I) = A(J, I) * C
์๋
์๋
๋ฃจํ ๊ตํ์ ๋ฃจํ๋ฅผ ์์ฑ๋ ๊ฒ์ฒ๋ผ ๋ณํํฉ๋๋ค.
๋ด๊ฐ = 1, N
DO J = 1, M
A(J, I) = A(J, I) * C
์๋
์๋
Fortran์์๋ "N"์ด ์บ์๋ณด๋ค ํด ๋ ์ ์ฉํ ์ ์์ต๋๋ค.
๋ฐฐ์ด์ ์์๋ ์ด๋ณ๋ก ์ฐ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ฉฐ ์๋ณธ
๋ฃจํ๋ ํ์ ๋ฐ๋ณตํ์ฌ ์ก์ธ์คํ ๋๋ง๋ค ์ ์ฌ์ ์ผ๋ก ์บ์ ๋๋ฝ์ ์์ฑํฉ๋๋ค. ์ด๊ฒ
์ต์ ํ๋ GCC์์ ์ง์ํ๋ ๋ชจ๋ ์ธ์ด์ ์ ์ฉ๋๋ฉฐ ์ด์ ๊ตญํ๋์ง ์์ต๋๋ค.
ํฌํธ๋. ์ด ์ฝ๋ ๋ณํ์ ์ฌ์ฉํ๋ ค๋ฉด GCC๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. --with-ppl
and --ํด๋ฃจ๊ทธ์ ํจ๊ป Graphite ๋ฃจํ ๋ณํ ์ธํ๋ผ๋ฅผ ํ์ฑํํฉ๋๋ค.
-floop-์คํธ๋ฆฝ-๊ด์ฐ
๋ฃจํ์์ ๋ฃจํ ์คํธ๋ฆฝ ๋ง์ด๋ ๋ณํ์ ์ํํฉ๋๋ค. ์คํธ๋ฆฝ ๋ง์ด๋์ ๋ฃจํ๋ฅผ ๋ค์์ผ๋ก ๋ถํ ํฉ๋๋ค.
๋ ๊ฐ์ ์ค์ฒฉ ๋ฃจํ. ์ธ๋ถ ๋ฃจํ๋ ์คํธ๋ฆฝ ํฌ๊ธฐ์ ๋์ผํ ๋ณดํญ์ ๊ฐ์ง๋ฉฐ ๋ด๋ถ ๋ฃจํ๋
๋ฃจํ์๋ ์คํธ๋ฆฝ ๋ด์์ ์๋ ๋ฃจํ์ ์คํธ๋ผ์ด๋๊ฐ ์์ต๋๋ค. ์คํธ๋ฆฝ ๊ธธ์ด ๋ณ๊ฒฝ ๊ฐ๋ฅ
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฃจํ ๋ธ๋ก ํ์ผ ํฌ๊ธฐ ๋งค๊ฐ๋ณ์. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๋ฃจํ๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋ด๊ฐ = 1, N
A(I) = A(I) + C
์๋
๋ฃจํ ์คํธ๋ฆฝ ๋ง์ด๋์ ๋ฃจํ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ณํํฉ๋๋ค.
DO II = 1, N, 51
DO I = II, ์ต์(II + 50, N)
A(I) = A(I) + C
์๋
์๋
์ด ์ต์ ํ๋ GCC์์ ์ง์ํ๋ ๋ชจ๋ ์ธ์ด์ ์ ์ฉ๋๋ฉฐ ์ด์ ๊ตญํ๋์ง ์์ต๋๋ค.
ํฌํธ๋. ์ด ์ฝ๋ ๋ณํ์ ์ฌ์ฉํ๋ ค๋ฉด GCC๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. --with-ppl
and --ํด๋ฃจ๊ทธ์ ํจ๊ป Graphite ๋ฃจํ ๋ณํ ์ธํ๋ผ๋ฅผ ํ์ฑํํฉ๋๋ค.
-floop-๋ธ๋ก
๋ฃจํ์์ ๋ฃจํ ์ฐจ๋จ ๋ณํ์ ์ํํฉ๋๋ค. ๋ธ๋กํน ์คํธ๋ฆฝ์ ๊ฐ ๋ฃจํ๋ฅผ ์ฑ๊ตดํฉ๋๋ค.
์์ ๋ฃจํ์ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค๊ฐ ์บ์ ๋ด๋ถ์ ๋ง๋๋ก ๋ฃจํ ์ค์ฒฉ. NS
์คํธ๋ฆฝ ๊ธธ์ด๋ ๋ค์์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋ฃจํ ๋ธ๋ก ํ์ผ ํฌ๊ธฐ ๋งค๊ฐ๋ณ์. ์๋ฅผ ๋ค์ด,
๋ค์๊ณผ ๊ฐ์ ๋ฃจํ๊ฐ ์ฃผ์ด์ง๋๋ค.
๋ด๊ฐ = 1, N
DO J = 1, M
A(J, I) = B(I) + C(J)
์๋
์๋
๋ฃจํ ์ฐจ๋จ์ ๋ฃจํ๋ฅผ ์์ฑ๋ ๊ฒ์ฒ๋ผ ๋ณํํฉ๋๋ค.
DO II = 1, N, 51
DO JJ = 1, M, 51
DO I = II, ์ต์(II + 50, N)
DO J = JJ, ์ต์(JJ + 50, M)
A(J, I) = B(I) + C(J)
์๋
์๋
์๋
์๋
"M"์ด ์บ์๋ณด๋ค ํด ๋ ์ ์ฉํ ์ ์์ต๋๋ค.
์บ์์ ๋ณด๊ดํ ์ ์๋ ๋ ์ ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค. ์ด๊ฒ
์ต์ ํ๋ GCC์์ ์ง์ํ๋ ๋ชจ๋ ์ธ์ด์ ์ ์ฉ๋๋ฉฐ ์ด์ ๊ตญํ๋์ง ์์ต๋๋ค.
ํฌํธ๋. ์ด ์ฝ๋ ๋ณํ์ ์ฌ์ฉํ๋ ค๋ฉด GCC๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. --with-ppl
and --ํด๋ฃจ๊ทธ์ ํจ๊ป Graphite ๋ฃจํ ๋ณํ ์ธํ๋ผ๋ฅผ ํ์ฑํํฉ๋๋ค.
-fgraphite-์ ์ฒด์ฑ
ํ์ฐ์ ๋ํ ID ๋ณํ์ ํ์ฑํํฉ๋๋ค. ๋ชจ๋ SCoP์ ๋ํด
๋ค๋ฉด์ฒด ํํ์ ๋ค์ gimple๋ก ๋ณํํฉ๋๋ค. ์ฌ์ฉ -fgraphite-์ ์ฒด์ฑ
GIMPLE -> GRAPHITE -> GIMPLE ๋ณํ์ ๋น์ฉ ๋๋ ์ด์ ์ ํ์ธํ ์ ์์ต๋๋ค.
index
๋ฃจํ์์ ๋ถํ ๋ฐ ๋ฐ๋ ์ฝ๋ ์ ๊ฑฐ.
-floop-nest-์ต์ ํ
ISL ๊ธฐ๋ฐ ๋ฃจํ ๋ค์คํธ ์ตํฐ๋ง์ด์ ๋ฅผ ํ์ฑํํฉ๋๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ธ ๋ฃจํ ๋ค์คํธ ์ตํฐ๋ง์ด์ ๊ธฐ๋ฐ์ ๋๋ค.
๋ช ์์ฑ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ์. ์ ์ต์ ํ๋ ๋ฃจํ ๊ตฌ์กฐ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
๋ฐ์ดํฐ ์ง์ญ์ฑ๊ณผ ๋ณ๋ ฌ์ฑ. ์ด ์ต์ ์ ์คํ์ ์ ๋๋ค.
-floop-๋ณ๋ ฌํ-๋ชจ๋
ํ์ฐ ๋ฐ์ดํฐ ์ข ์์ฑ ๋ถ์์ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌํํ ์ ์๋ ๋ฃจํ๋ฅผ ์๋ณํฉ๋๋ค.
๋ฃจํ ์ ๋ฌ ์ข ์์ฑ์ ํฌํจํ์ง ์๋๋ก ๋ถ์ํ ์ ์๋ ๋ชจ๋ ๋ฃจํ๋ฅผ ๋ณ๋ ฌํ
๋ฃจํ๋ฅผ ๋ณ๋ ฌํํ๋ ๊ฒ์ด ์์ต์ฑ์ด ์๋์ง ํ์ธํ์ง ์๊ณ .
-fcheck-๋ฐ์ดํฐ-deps
์ฌ๋ฌ ๋ฐ์ดํฐ ์ข ์์ฑ ๋ถ์๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํฉ๋๋ค. ์ด ์ต์ ์ ๋ค์ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ์ดํฐ ์์กด์ฑ ๋ถ์๊ธฐ ๋๋ฒ๊น .
-ftree-loop-if-๋ณํ
๊ฐ์ฅ ์์ชฝ ๋ฃจํ์์ ์กฐ๊ฑด๋ถ ์ ํ๋ฅผ ๋ถ๊ธฐ ์๋ ๊ฒ์ผ๋ก ๋ณํ ์๋
๋ฑ๊ฐ๋ฌผ. ์๋๋ ์์๋๋ก ๊ฐ์ฅ ์์ชฝ ๋ฃจํ์์ ์ ์ด ํ๋ฆ์ ์ ๊ฑฐํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๋ฃจํ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฒกํฐํ ํจ์ค์ ๊ธฐ๋ฅ์ ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ์
๋ฒกํฐํ๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
-ftree-loop-if-convert-stores
๋ฉ๋ชจ๋ฆฌ ์ฐ๊ธฐ๋ฅผ ํฌํจํ๋ if-convert ์กฐ๊ฑด๋ถ ์ ํ๋ ์๋ํฉ๋๋ค. ์ด๊ฒ
๋ณํ์ ์กฐ๊ฑด๋ถ๋ฅผ ๋ณํํ๋ฏ๋ก ๋ค์ค ์ค๋ ๋ ํ๋ก๊ทธ๋จ์ ์์ ํ์ง ์์ ์ ์์ต๋๋ค.
๋ฌด์กฐ๊ฑด ๋ฉ๋ชจ๋ฆฌ ์ฐ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฐ๊ธฐ. ์๋ฅผ ๋ค์ด,
(i = 0, i < N, i++)
๋ง์ฝ (์กฐ๊ฑด)
A[i] = expr;
๋ก ๋ณํ๋ฉ๋๋ค
(i = 0, i < N, i++)
A[i] = ์กฐ๊ฑด ? expr : A[i];
์ ์ฌ์ ์ผ๋ก ๋ฐ์ดํฐ ๋ ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค.
-ftree-loop-๋ถํฌ
๋ฃจํ ๋ถ๋ฐฐ๋ฅผ ์ํํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ํฐ ๋ฃจํ ๋ณธ๋ฌธ์์ ์บ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๋ณ๋ ฌํ ๋๋ ๋ฒกํฐํ์ ๊ฐ์ ์ถ๊ฐ ๋ฃจํ ์ต์ ํ๋ฅผ ํ์ฉํฉ๋๋ค.
์ฅ์. ์๋ฅผ ๋ค์ด, ๋ฃจํ
๋ด๊ฐ = 1, N
A(I) = B(I) + C
D(I) = E(I) * F
์๋
๋ก ๋ณํ๋ฉ๋๋ค
๋ด๊ฐ = 1, N
A(I) = B(I) + C
์๋
๋ด๊ฐ = 1, N
D(I) = E(I) * F
์๋
-ftree-๋ฃจํ-๋ฐฐํฌ-ํจํด
์ ๋ํ ํธ์ถ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ ํจํด์ ๋ฃจํ ๋ฐฐํฌ๋ฅผ ์ํํฉ๋๋ค.
๋์๊ด. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O3.
์ด ํจ์ค๋ ์ด๊ธฐํ ๋ฃจํ๋ฅผ ๋ถ์ฐํ๊ณ memset XNUMX์ ๋ํ ํธ์ถ์ ์์ฑํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ฃจํ
๋ด๊ฐ = 1, N
A(I) = 0
B(I) = A(I) + ๋
์๋
๋ก ๋ณํ๋ฉ๋๋ค
๋ด๊ฐ = 1, N
A(I) = 0
์๋
๋ด๊ฐ = 1, N
B(I) = A(I) + ๋
์๋
์ด๊ธฐํ ๋ฃจํ๋ memset XNUMX์ ๋ํ ํธ์ถ๋ก ๋ณํ๋ฉ๋๋ค.
-ftree-๋ฃจํ-im
๋๋ฌด์์ ๋ฃจํ ๋ถ๋ณ ๋์์ ์ํํฉ๋๋ค. ์ด ํจ์ค๋ ํ๋ ๋ถ๋ณ๋๋ง ์ด๋ํฉ๋๋ค.
RTL ์์ค์์ ์ฒ๋ฆฌ(ํจ์ ํธ์ถ, ์ค์ํ์ง ์์ ์ํ์ค๋ก ํ์ฅ๋๋ ์์
์ฌ๊ด). ์ ํจ๊ป -ํ์ค์์น ๋ฃจํ ๋ํ ๋ค์ ์กฐ๊ฑด์ ํผ์ฐ์ฐ์๋ฅผ ์ด๋ํฉ๋๋ค.
๋ฃจํ ์ธ๋ถ์์ ๋ถ๋ณํ๋ฏ๋ก ๋ค์์์ ์ฌ์ํ ๋ถ๋ณ์ฑ ๋ถ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฃจํ ํด์ . ํจ์ค์๋ ์คํ ์ด ๋ชจ์ ๋ ํฌํจ๋ฉ๋๋ค.
-ftree-๋ฃจํ-ivcanon
๊ฒฐ์ ํ๋ ๋ฃจํ์ ๋ฐ๋ณต ํ์์ ๋ํ ํ์ค ์นด์ดํฐ๋ฅผ ๋ง๋ญ๋๋ค.
๋ฐ๋ณต ํ์๋ ๋ณต์กํ ๋ถ์์ด ํ์ํฉ๋๋ค. ์ดํ ์ต์ ํ๋
์๋ฅผ ์ฝ๊ฒ ๊ฒฐ์ ํ์ญ์์ค. ํนํ ์ธ๋กค๋ง๊ณผ ๊ด๋ จํ์ฌ ์ ์ฉํฉ๋๋ค.
-fivopts
์ ๋ ๋ณ์ ์ต์ ํ ์ํ(๊ฐ๋ ๊ฐ์, ์ ๋ ๋ณ์
๋ณํฉ ๋ฐ ์ ๋ ๋ณ์ ์ ๊ฑฐ).
-ftree ๋ณ๋ ฌํ ๋ฃจํ=n
๋ฃจํ๋ฅผ ๋ณ๋ ฌํํฉ๋๋ค. ์ฆ, ๋ฐ๋ณต ๊ณต๊ฐ์ ๋ถํ ํ์ฌ n๊ฐ์ ์ค๋ ๋์์ ์คํํฉ๋๋ค. ์ด๊ฒ์
๋ฐ๋ณต์ด ๋ ๋ฆฝ์ ์ด๊ณ ์์๋ก ์ํ๋ ์ ์๋ ๋ฃจํ์์๋ง ๊ฐ๋ฅ
์ฌ์ ๋ ฌ. ์ต์ ํ๋ ๋ฃจํ์ ๋ํ ๋ค์ค ํ๋ก์ธ์ ์์คํ ์์๋ง ์์ต์ฑ์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ์ ์ํด ์ ์ฝ์ ๋ฐ๊ธฐ๋ณด๋ค๋ CPU ์ง์ฝ์ ์ ๋๋ค. ์ด ์ต์
์๋ฏธํ๋ค -pthread, ๋ฐ๋ผ์ ๋ค์์ ์ง์ํ๋ ๋์์์๋ง ์ง์๋ฉ๋๋ค.
-pthread.
-fttree-pta
๋๋ฌด์ ๋ํ ๊ธฐ๋ฅ ๋ก์ปฌ ์ง์ ๋ถ์์ ์ํํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
at -O ์ด์.
-fttree-sra
์ง๊ณ์ ์ค์นผ๋ผ ๊ต์ฒด๋ฅผ ์ํํฉ๋๋ค. ์ด ํจ์ค๋ ๊ตฌ์กฐ ์ฐธ์กฐ๋ฅผ ๋์ฒดํฉ๋๋ค.
๊ตฌ์กฐ๋ฅผ ๋๋ฌด ์ผ์ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ปค๋ฐํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ค์นผ๋ผ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๊น๋ฐ์
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -O ์ด์.
-ftree-copy์ด๋ฆ ๋ฐ๊พธ๊ธฐ
๋๋ฌด์ ๋ณต์ฌ๋ณธ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ๋ฅผ ์ํํฉ๋๋ค. ์ด ํจ์ค๋ ์ปดํ์ผ๋ฌ ์์ ์ด๋ฆ์ ๋ค์์ผ๋ก ๋ฐ๊พธ๋ ค๊ณ ์๋ํฉ๋๋ค.
๋ณต์ฌ ์์น์ ์๋ ๋ค๋ฅธ ๋ณ์, ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ง์ ๋ณ์ ์ด๋ฆ์ด ์์ฑ๋ฉ๋๋ค.
์๋ ๋ณ์์ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O and
๋ ๋์.
-ftree-coalesce-inlined-vars
copyrename ํจ์ค๋ฅผ ์๋ ค์ฃผ์ธ์(์ฐธ์กฐ -ftree-copy์ด๋ฆ ๋ฐ๊พธ๊ธฐ) ์๊ท๋ชจ ์ฌ์ฉ์๋ฅผ ๊ฒฐํฉํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ ์๋ ๋ณ์๋ ์์ง๋ง ๋ค๋ฅธ ํจ์์์ ์ธ๋ผ์ธ๋ ๊ฒฝ์ฐ์๋ง ํด๋น๋ฉ๋๋ค. ์ด๊ฒ์
๋ณด๋ค ์ ํ๋ ํํ์ -ftree-coalesce-vars. ์ด๊ฒ์ ๊ทธ๋ฌํ ๋๋ฒ๊ทธ ์ ๋ณด์ ํด๋ฅผ ๋ผ์น ์ ์์ต๋๋ค.
์ธ๋ผ์ธ๋ ๋ณ์์ด์ง๋ง ์ธ๋ผ์ธ๋ ํจ์์ ๋ณ์๋ฅผ ๋ค์๊ณผ ๋ณ๋๋ก ์ ์งํฉ๋๋ค.
์์ ๊ฐ์ ํฌํจํ ๊ฐ๋ฅ์ฑ์ด ๋ ๋๋๋ก
๋๋ฒ๊น ์ธ์ . ์ด๊ฒ์ 4.7 ์ด์ ์ GCC ๋ฒ์ ์์ ๊ธฐ๋ณธ๊ฐ์ด์์ต๋๋ค.
-ftree-coalesce-vars
copyrename ํจ์ค๋ฅผ ์๋ ค์ฃผ์ธ์(์ฐธ์กฐ -ftree-copy์ด๋ฆ ๋ฐ๊พธ๊ธฐ) ์๊ท๋ชจ ์ฌ์ฉ์๋ฅผ ๊ฒฐํฉํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ปดํ์ผ๋ฌ ์์ ๋์ ์ ์๋ ๋ณ์๋ ์์ต๋๋ค. ์ด๊ฒ์ ์ฌ๊ฐํ๊ฒ ์ ํํ ์ ์์ต๋๋ค
๋ค์์ผ๋ก ์ปดํ์ผ๋ ์ต์ ํ๋ ํ๋ก๊ทธ๋จ์ ๋๋ฒ๊ทธํ๋ ๊ธฐ๋ฅ -fno-var-์ถ์ -ํ ๋น.
๋ถ์ ํ์์์ ์ด ํ๋๊ทธ๋ ๋ค์์ ํฌํจํ ์ฌ์ฉ์ ๋ณ์์ SSA ๋ณํฉ์ ๋ฐฉ์งํฉ๋๋ค.
์ธ๋ผ์ธ ๋ ๊ฒ. ์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
-fttree-ter
SSA->์ ์ ๋จ๊ณ์์ ์์ ํํ์ ๊ต์ฒด๋ฅผ ์ํํฉ๋๋ค. ํ๋์
use/single def ์์๋ ์ฌ์ฉ ์์น์์ ์ ์๋ ๊ฐ์ผ๋ก ๋์ฒด๋ฉ๋๋ค.
ํํ. ์ด๋ GIMPLE ์ฝ๋๊ฐ ์๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค์ง๋ง ํ์ฅ์์๊ฒ ํจ์ฌ ๋ ๋ง์ ๊ฒ์ ์ ๊ณตํฉ๋๋ค.
๋ณต์กํ ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋์ RTL ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด๊ฒ์ ๋ค์์ ์ํด ํ์ฑํ๋ฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ -O ์ด์.
-fttree-slsr
๋๋ฌด์ ์ง์ ๊ฐ๋ ๊ฐ์๋ฅผ ์ํํฉ๋๋ค. ์ด๊ฒ์ ๊ด๋ จ๋
๊ณฑ์ ์ ํฌํจํ๋ ํํ์์ ๋ ์ ๋ ดํ ๊ณ์ฐ์ผ๋ก ๋์ฒด
๊ฐ๋ฅํ ๋. ์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O ์ด์.
-ftree ๋ฒกํฐํ
ํธ๋ฆฌ์์ ๋ฃจํ ๋ฒกํฐํ๋ฅผ ์ํํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O3.
-ftree-slp-๋ฒกํฐํ
๋๋ฌด์์ ๊ธฐ๋ณธ ๋ธ๋ก ๋ฒกํฐํ๋ฅผ ์ํํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O3 and
์ธ์ -ftree ๋ฒกํฐํ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
-fvect-๋น์ฉ ๋ชจ๋ธ=๋ชจ๋ธ
๋ฒกํฐํ์ ์ฌ์ฉ๋๋ ๋น์ฉ ๋ชจ๋ธ์ ๋ณ๊ฒฝํฉ๋๋ค. NS ๋ชจ๋ธ ์ธ์๋ ๋ค์ ์ค ํ๋์ฌ์ผ ํฉ๋๋ค.
"๋ฌด์ ํ", "๋์ " ๋๋ "์ ๋ ดํ". "๋ฌด์ ํ" ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฉด ๋ฒกํฐํ๋ ์ฝ๋-
"๋์ " ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฉด ๋ฐํ์ ๊ฒ์ฌ๊ฐ
๋ฒกํฐํ๋ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ๋ณดํธํ์ฌ ๋ค์๊ณผ ๊ฐ์ ๋ฐ๋ณต ํ์์ ๋ํด์๋ง ํ์ฑํํฉ๋๋ค.
์๋ ์ค์นผ๋ผ ๋ฃจํ๋ฅผ ์คํํ ๋๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์คํ๋ฉ๋๋ค. "์ ๋ ดํ" ๋ชจ๋ธ์
์๋ฅผ ๋ค์ด ๋น์ฉ์ด ๋ง์ด ๋๋ ๋ฃจํ์ ๋ฒกํฐํ๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
๋ฐ์ดํฐ ์ข ์์ฑ ๋๋ ์ ๋ ฌ์ ๋ํ ๋ฐํ์ ๊ฒ์ฌ๊ฐ ํ์ํ์ง๋ง ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์ผํฉ๋๋ค.
"๋์ " ๋ชจ๋ธ์. ๊ธฐ๋ณธ ๋น์ฉ ๋ชจ๋ธ์ ๋ค๋ฅธ ์ต์ ํ ํ๋๊ทธ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
"๋์ "์ด๊ฑฐ๋ "์ ๋ ด"ํฉ๋๋ค.
-fttree-vrp
ํธ๋ฆฌ์์ ๊ฐ ๋ฒ์ ์ ํ๋ฅผ ์ํํฉ๋๋ค. ์ด๊ฒ์ ์ผ์ ํ ์ ํ์ ์ ์ฌํฉ๋๋ค.
์ ๋ฌํ์ง๋ง ๊ฐ ๋์ ๊ฐ ๋ฒ์๊ฐ ์ ํ๋ฉ๋๋ค. ์ด๊ฒ์ ํ์ฉ
๋ฐฐ์ด ๋ฐ์ด๋ ๊ฒ์ฌ ๋ฐ ๋ ํฌ์ธํฐ์ ๊ฐ์ ๋ถํ์ํ ๋ฒ์ ๊ฒ์ฌ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํ ์ตํฐ๋ง์ด์
์ฒดํฌ ๋ฌด๋ฌ. ์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -O2 ๊ทธ๋ฆฌ๊ณ ๋ ๋์. ๋ ํฌ์ธํฐ ๊ฒ์ฌ ์ ๊ฑฐ
๊ฒฝ์ฐ์๋ง ์ํ๋ฉ๋๋ค -fdelete-null-ํฌ์ธํฐ ๊ฒ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
-์ถ์ ์
๊ผฌ๋ฆฌ ๋ณต์ ๋ฅผ ์ํํ์ฌ ์ํผ ๋ธ๋ก ํฌ๊ธฐ๋ฅผ ํ๋ํฉ๋๋ค. ์ด ๋ณํ์ ๋จ์ํ
๋ค๋ฅธ ์ต์ ํ๊ฐ ๋ ๋์ ์์ ์ ์ํํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ ์ ์ด ํ๋ฆ.
-ํ๋กค ๋ฃจํ
๋ฐ๋ณต ํ์๊ฐ ์ปดํ์ผ ์๊ฐ ๋๋ ์ปดํ์ผ ์๊ฐ์ ๊ฒฐ์ ๋ ์ ์๋ ๋ฃจํ๋ฅผ ํ๋๋ค.
๋ฃจํ ์ง์ . -ํ๋กค ๋ฃจํ ์๋ฏธํ๋ค -frerun-cse-ํ-๋ฃจํ. ์ด ์ต์ ์
์ฝ๋๋ฅผ ๋ ํฌ๊ฒ ๋ง๋ค๊ณ ๋ ๋น ๋ฅด๊ฒ ์คํํ ์๋ ์๊ณ ๊ทธ๋ ์ง ์์ ์๋ ์์ต๋๋ค.
-Funroll-All-๋ฃจํ
๋ฃจํ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๋ ๋ฐ๋ณต ํ์๊ฐ ๋ถํ์คํ๋๋ผ๋ ๋ชจ๋ ๋ฃจํ๋ฅผ ํ๋๋ค.
๋ค์ด๊ฐ๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ๋ ๋๋ฆฌ๊ฒ ์คํ๋ฉ๋๋ค. -Funroll-All-๋ฃจํ ๋ฅผ ์๋ฏธํ๋ค
๊ฐ์ ์ต์ -ํ๋กค ๋ฃจํ,
-fsplit-ivs-in-unroller
์ดํ์ ๋ฐ๋ณต์์ ์ ๋ ๋ณ์ ๊ฐ์ ํํ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ๋ฐ๋ณต์ ๊ฐ์ ์ฌ์ฉํ์ฌ ํผ์ณ์ง ๋ฃจํ. ์ด๊ฒ์ ๊ธด ์์กด์ฑ์ ๊นจ๋จ๋ฆฝ๋๋ค.
๋ฐ๋ผ์ ์ค์ผ์ค๋ง ํจ์ค์ ํจ์จ์ฑ์ด ํฅ์๋ฉ๋๋ค.
์กฐํฉ -fweb CSE๋ ์ข ์ข ๋์ผํ ํจ๊ณผ๋ฅผ ์ป๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ฃจํ ๋ณธ์ฒด๊ฐ ๋ณด๋ค ๋ณต์กํ ๊ฒฝ์ฐ์๋ ์ ๋ขฐํ ์ ์์ต๋๋ค.
๋จ์ผ ๊ธฐ๋ณธ ๋ธ๋ก. ๋ํ ์ผ๋ถ ์ํคํ ์ฒ์์๋ ๋ค์์ผ๋ก ์ธํด ์ ํ ์๋ํ์ง ์์ต๋๋ค.
CSE ํต๊ณผ ์ ํ.
์ด ์ต์ ํ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
-f๋ณ์ ํ์ฅ-์ธ๋กค๋ฌ
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ผ๋ถ ๋ก์ปฌ ๋ณ์์ ์ฌ๋ฌ ๋ณต์ฌ๋ณธ์ ๋ง๋ญ๋๋ค.
๋ฃจํ๋ฅผ ํ์ด์ ์ฐ์ํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
-f๋ถ๋ถ ์ธ๋ผ์ธ
ํจ์์ ์ธ๋ผ์ธ ๋ถ๋ถ. ์ด ์ต์ ์ ์์ ์ ์ธ๋ผ์ธํ ๋๋ง ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์ ์ํด ์ผ์ก๋ค -finline-ํจ์ or -finline-์์ ๊ธฐ๋ฅ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2.
-f์์ธก-๊ณตํต
์์ธก ์ปค๋จธ๋ ์ต์ ํ, ์ฆ ๊ณ์ฐ ์ฌ์ฌ์ฉ(ํนํ
๋ฉ๋ชจ๋ฆฌ ๋ก๋ ๋ฐ ์ ์ฅ) ๋ฃจํ์ ์ด์ ๋ฐ๋ณต์์ ์ํ๋์์ต๋๋ค.
์ด ์ต์ ์ ์์ค์์ ํ์ฑํ๋ฉ๋๋ค. -O3.
-fprefetch ๋ฃจํ ๋ฐฐ์ด
๋์ ๋จธ์ ์์ ์ง์ํ๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ฆฌํ์นํ๊ธฐ ์ํ ๋ช ๋ น์ ์์ฑํฉ๋๋ค.
ํฐ ๋ฐฐ์ด์ ์ก์ธ์คํ๋ ๋ฃจํ์ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
์ด ์ต์ ์ ๋ ์ข๊ฑฐ๋ ๋ ๋์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ๋ ์ ํฌ๊ฒ ์์กด
์์ค ์ฝ๋ ๋ด์ ๋ฃจํ ๊ตฌ์กฐ.
์์ค์์ ๋นํ์ฑํ๋จ - ์ค์ค.
-fno ์ฟ๋ณด๊ธฐ
-fno-๊ตฌ๋ฉ2
๋จธ์ ๋ณ ์ฟ๋ณด๊ธฐ ๊ตฌ๋ฉ ์ต์ ํ๋ฅผ ๋นํ์ฑํํฉ๋๋ค. ์ฐจ์ด์
-fno ์ฟ๋ณด๊ธฐ and -fno-๊ตฌ๋ฉ2 ์ปดํ์ผ๋ฌ์์ ๊ตฌํ๋๋ ๋ฐฉ์์ ์์ต๋๋ค. ์ผ๋ถ
๋์์ ํ๋๋ฅผ ์ฌ์ฉํ๊ณ ์ผ๋ถ๋ ๋ค๋ฅธ ํ๋๋ฅผ ์ฌ์ฉํ๊ณ ์ผ๋ถ๋ ๋ ๋ค ์ฌ์ฉํฉ๋๋ค.
-f๊ตฌ๋ฉ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -fpeephole2 ์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-fno-์ถ์ธก-๋ถ๊ธฐ-ํ๋ฅ
ํด๋ฆฌ์คํฑ์ ์ฌ์ฉํ์ฌ ๋ถ๊ธฐ ํ๋ฅ ์ ์ถ์ธกํ์ง ๋ง์ญ์์ค.
GCC๋ ๋ถ๊ธฐ ํ๋ฅ ์ด ์ ๊ณต๋์ง ์๋ ๊ฒฝ์ฐ ๋ฐ๊ฒฌ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ถ๊ธฐ ํ๋ฅ ์ ์ถ์ธกํฉ๋๋ค.
ํ๋กํ์ผ๋ง ํผ๋๋ฐฑ(-fprofile-ํธ). ์ด๋ฌํ ํด๋ฆฌ์คํฑ์ ์ ์ด ํ๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
๊ทธ๋ํ. ์ผ๋ถ ๋ถ๊ธฐ ํ๋ฅ ์ด ๋ค์์ผ๋ก ์ง์ ๋๋ ๊ฒฝ์ฐ __builtin_expect, ๊ทธ ๋ค์์
ํด๋ฆฌ์คํฑ์ ๋๋จธ์ง ์ ์ด ํ๋ฆ์ ๋ํ ๋ถ๊ธฐ ํ๋ฅ ์ ์ถ์ธกํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ทธ๋ํ, ๋ณต์ฉ __builtin_expect ์ ๋ณด๋ฅผ ๊ณ ๋ คํฉ๋๋ค. ์ฌ์ด์ ์ํธ ์์ฉ
ํด๋ฆฌ์คํฑ๊ณผ __builtin_expect ๋ณต์กํ ์ ์์ผ๋ฉฐ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค์์ ์ํํ๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค.
ํด๋ฆฌ์คํฑ์ ๋นํ์ฑํํ์ฌ __builtin_expect ๋ ์ฝ๋ค
์๋ค.
๋ํดํธ๋ -fguess-๋ถ๊ธฐ ํ๋ฅ ์์ค์์ -O, -O2, -O3, - ์ค์ค.
-freorder-๋ธ๋ก
์ทจํ๋ ์๋ฅผ ์ค์ด๊ธฐ ์ํด ์ปดํ์ผ๋ ํจ์์์ ๊ธฐ๋ณธ ๋ธ๋ก์ ์ฌ์ ๋ ฌํฉ๋๋ค.
๋ถ๊ธฐํ๊ณ ์ฝ๋ ์ง์ญ์ฑ์ ๊ฐ์ ํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3.
-freeorder-blocks-and-partition
์ปดํ์ผ๋ ํจ์์์ ๊ธฐ๋ณธ ๋ธ๋ก์ ์ฌ์ ๋ ฌํ๋ ๊ฒ ์ธ์๋
์ทจํ ๋ถ๊ธฐ์ ์, ํซ ๋ฐ ์ฝ๋ ๊ธฐ๋ณธ ๋ธ๋ก์ ๋ณ๋์ ์น์ ์ผ๋ก ๋ถํ
์ด์ ๋ธ๋ฆฌ ๋ฐ .o ํ์ผ์ ํ์ด์ง ๋ฐ ์บ์ ์ง์ญ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
์ด ์ต์ ํ๋ ์์ธ ์ฒ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ํด์ ๋ฉ๋๋ค.
linkonce ์น์ , ์ฌ์ฉ์ ์ ์ ์น์ ์์ฑ์ด ์๋ ํจ์ ๋ฐ ๋ชจ๋
๋ช ๋ช ๋ ์น์ ์ ์ง์ํ์ง ์๋ ์ํคํ ์ฒ
-freorder-ํจ์
์ฝ๋ ์ง์ญ์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด ๊ฐ์ฒด ํ์ผ์์ ํจ์๋ฅผ ์ฌ์ ๋ ฌํฉ๋๋ค. ์ด๊ฒ์
๊ฐ์ฅ ์์ฃผ ์คํ๋๋ ํน์ ํ์ ์น์ ".text.hot"์ ์ฌ์ฉํ์ฌ ๊ตฌํ
๊ธฐ๋ฅ ๋ฐ ์คํ๋์ง ์๋ ๊ธฐ๋ฅ์ ๋ํ ".text.unlikely". ์ฌ์ ๋ ฌ์ ๋ค์๊ณผ ๊ฐ์ด ์ํ๋ฉ๋๋ค.
๋ง์ปค๋ ๊ฐ์ฒด ํ์ผ ํ์์ด ๋ช ๋ช ๋ ์น์ ์ ์ง์ํด์ผ ํ๋ฏ๋ก ๋ง์ปค๋
ํฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก.
๋ํ ์ด ์ต์ ์ ์ ์ฉํ๋ ค๋ฉด ํ๋กํ ํผ๋๋ฐฑ์ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ณด๋ค
-fprofile-ํธ ์์ธํ ๋ด์ฉ์.
์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-fstrict-์จ๋ฆฌ์ด์ฑ
์ปดํ์ผ๋ฌ๊ฐ ์ธ์ด์ ์ ์ฉํ ์ ์๋ ๊ฐ์ฅ ์๊ฒฉํ ์จ๋ฆฌ์ด์ฑ ๊ท์น์ ๊ฐ์ ํ๋๋ก ํ์ฉ
์ปดํ์ผ ์ค์ ๋๋ค. C(๋ฐ C++)์ ๊ฒฝ์ฐ ์ ํ์ ๋ฐ๋ผ ์ต์ ํ๊ฐ ํ์ฑํ๋ฉ๋๋ค.
ํํ. ํนํ, ํ ์ ํ์ ๊ฐ์ฒด๋ ์ ๋
์ ํ์ด ๊ฑฐ์ ๋์ผํ์ง ์๋ ํ ๋ค๋ฅธ ์ ํ์ ๊ฐ์ฒด์ ๋์ผํ ์ฃผ์์ ๋๋ค.
์๋ฅผ ๋ค์ด, "unsigned int"๋ "int"์ ๋ณ์นญ์ ์ง์ ํ ์ ์์ง๋ง "void*" ๋๋ "double"์ ๋ณ์นญ์ ์ง์ ํ ์ ์์ต๋๋ค. NS
๋ฌธ์ ์ ํ์ ๋ค๋ฅธ ์ ํ์ ๋ณ์นญ์ ์ง์ ํ ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ฝ๋์ ํนํ ์ฃผ์ํ์ญ์์ค.
๋ ธ๋์กฐํฉ {
int i;
๋๋ธ d;
};
์ ์ f() {
์ฐํฉ a_union t;
td = 3.0;
๋ฐํ ํฐ;
}
๊ฐ์ฅ ์ต๊ทผ์ ์กฐํฉ์๊ณผ ๋ค๋ฅธ ์กฐํฉ์์ ๊ธ์ ์ฝ๋ ์ต๊ด
("type-punning"์ด๋ผ๊ณ ํจ) ์ฐ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ์๋ -fstrict-์จ๋ฆฌ์ด์ฑ, ์ ํ-
์ ๋์จ ์ ํ์ ํตํด ๋ฉ๋ชจ๋ฆฌ์ ์ก์ธ์คํ๋ ๊ฒฝ์ฐ ๋ง์ฅ๋์ด ํ์ฉ๋ฉ๋๋ค. ๊ทธ๋์
์์ ์ฝ๋๋ ์์๋๋ก ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ฝ๋๋ ๋ค์์ ์ํํ์ง ์์ ์ ์์ต๋๋ค.
์ ์ f() {
์ฐํฉ a_union t;
์ ์* ip;
td = 3.0;
์์ดํผ = &t.i;
๋ฐํ *ip;
}
๋ง์ฐฌ๊ฐ์ง๋ก ์ฃผ์๋ฅผ ๊ฐ์ ธ์ ๊ฒฐ๊ณผ ํฌ์ธํฐ๋ฅผ ์บ์คํ ํ๊ณ
์บ์คํธ๊ฐ ๊ณต์ฉ์ฒด ์ ํ์ ์ฌ์ฉํ๋๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ญ์ฐธ์กฐํ๋ฉด ์ ์๋์ง ์์ ๋์์ด ์์ต๋๋ค.
์ :
์ ์ f() {
์ด์ค d = 3.0;
return ((union a_union *) &d)->i;
}
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -fstrict-์จ๋ฆฌ์ด์ฑ ์ต์ ์ด ์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-fstrict-์ค๋ฒํ๋ก
์ปดํ์ผ๋ฌ๊ฐ ์ธ์ด์ ๋ฐ๋ผ ์๊ฒฉํ ์๋ช ๋ ์ค๋ฒํ๋ก ๊ท์น์ ๊ฐ์ ํ๋๋ก ํ์ฉ
์ปดํ์ผ ์ค์ ๋๋ค. C(๋ฐ C++)์ ๊ฒฝ์ฐ ์ด๋ ๋ค์์ ์ฌ์ฉํ์ฌ ์ฐ์ ์ ์ํํ ๋ ์ค๋ฒํ๋ก๋ฅผ ์๋ฏธํฉ๋๋ค.
๋ถํธ ์๋ ์ซ์๋ ์ ์๋์ง ์์ต๋๋ค. ์ฆ, ์ปดํ์ผ๋ฌ๋ ๊ทธ๋ ์ง ์๋ค๊ณ ๊ฐ์ ํ ์ ์์ต๋๋ค.
์ผ์ด๋ ๋ค. ์ด๋ฅผ ํตํด ๋ค์ํ ์ต์ ํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ปดํ์ผ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ํฉ๋๋ค.
"i + 10 > i"์ ๊ฐ์ ํํ์์ ๋ถํธ ์๋ "i"์ ๋ํด ํญ์ ์ฐธ์ ๋๋ค. ์ด ๊ฐ์ ์
"i + 10"์ธ ๊ฒฝ์ฐ ํํ์์ด ๊ฑฐ์ง์ด๋ฏ๋ก ๋ถํธ ์๋ ์ค๋ฒํ๋ก๊ฐ ์ ์๋์ง ์์ ๊ฒฝ์ฐ์๋ง ์ ํจํฉ๋๋ค.
XNUMX์ ๋ณด์ ์ฐ์ ์ ์ฌ์ฉํ ๋ ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ์ต์ ์ด ์ ์ฉ๋๋ฉด
๋ถํธ ์๋ ์ซ์ ์ค๋ฒํ๋ก์ ๋ํ ์์ ์ ์์ฑํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ค์ ๋ก ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํ์ง ์๋๋ก ์ฃผ์ํ์ญ์์ค.
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์๊ฒฉํ ํฌ์ธํฐ ์๋ฏธ๋ฅผ ๊ฐ์ ํ ์๋ ์์ต๋๋ค.
๊ฐ์ฒด์ ๋ํ ํฌ์ธํฐ(ํด๋น ํฌ์ธํฐ์ ์คํ์ ์ ์ถ๊ฐํด๋ ํฌ์ธํฐ๊ฐ ์์ฑ๋์ง ์๋ ๊ฒฝ์ฐ)
๋์ผํ ๊ฐ์ฒด์ ๋ํ ์ถ๊ฐ๋ ์ ์๋์ง ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ๊ฒฐ๋ก ์ ๋ด๋ฆด ์ ์์ต๋๋ค.
"p + u > p"๋ ํฌ์ธํฐ "p"์ ๋ถํธ ์๋ ์ ์ "u"์ ๋ํด ํญ์ ์ฐธ์ ๋๋ค. ์ด๊ฒ
ํํ์์ด ๋ค์๊ณผ ๊ฐ์ด ํฌ์ธํฐ ๋ฉ์ด๋ผ์ด๋๊ฐ ์ ์๋์ง ์์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ ์ ํจํฉ๋๋ค.
XNUMX์ ๋ณด์ ์ฐ์ ์ ์ฌ์ฉํ์ฌ "p + u"๊ฐ ์ค๋ฒํ๋ก๋๋ฉด false์ ๋๋ค.
์ฐธ์กฐ ํญ๋ชฉ -fwrapv ์ต์ . ์ฌ์ฉ -fwrapv ์ ์ ๋ถํธ ์๋ ์ค๋ฒํ๋ก๋ ๋ค์์ ์๋ฏธํฉ๋๋ค.
์์ ํ ์ ์๋จ: ๋ฉํ๋ฉ๋๋ค. ์ธ์ -fwrapv ๊ฐ ์ฌ์ฉ๋๋ฉฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
-fstrict-์ค๋ฒํ๋ก and -fno-strict-์ค๋ฒํ๋ก ์ ์์ ๊ฒฝ์ฐ. ์ ํจ๊ป -fwrapv ํน์ ์ ํ
์ค๋ฒํ๋ก๊ฐ ํ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ปดํ์ผ๋ฌ๊ฐ ๋ค์์ ์ํํ ๋ ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํ๋ฉด
์์์ ๋ํ ์ฐ์ , ์ค๋ฒํ๋ก๋ ๊ฐ์ ์ฌ์ ํ โโ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. -fwrapv, ํ์ง๋ง
๊ทธ๋ ์ง ์์ผ๋ฉด.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -fstrict-์ค๋ฒํ๋ก ์ต์ ์ด ์์ค์์ ํ์ฑํ๋จ -O2, -O3, - ์ค์ค.
-falign-ํจ์
-falign-๊ธฐ๋ฅ=n
ํจ์์ ์์์ ๋ค์๋ณด๋ค ํฐ XNUMX์ ๊ฑฐ๋ญ์ ๊ณฑ์ ๋ง์ถฅ๋๋ค. n, ๋ค์์ผ๋ก ๊ฑด๋๋ฐ๊ธฐ n
๋ฐ์ดํธ. ์๋ฅผ ๋ค์ด, -falign-๊ธฐ๋ฅ=32 ํจ์๋ฅผ ๋ค์ 32๋ฐ์ดํธ์ ์ ๋ ฌํฉ๋๋ค.
๊ฒฝ๊ณํ์ง๋ง -falign-๊ธฐ๋ฅ=24 ์ด ๊ฒฝ์ฐ์๋ง ๋ค์ 32๋ฐ์ดํธ ๊ฒฝ๊ณ์ ์ ๋ ฌํฉ๋๋ค.
23๋ฐ์ดํธ ์ดํ๋ฅผ ๊ฑด๋๋ฐ์ด ์ํํ ์ ์์ต๋๋ค.
-fno-์ ๋ ฌ-๊ธฐ๋ฅ and -falign-๊ธฐ๋ฅ=1 ๋๋ฑํ๊ณ ๊ธฐ๋ฅ์ ์๋ฏธํฉ๋๋ค
์ ๋ ฌ๋์ง ์์ต๋๋ค.
์ผ๋ถ ์ด์ ๋ธ๋ฌ๋ ๋ค์ ๊ฒฝ์ฐ์๋ง ์ด ํ๋๊ทธ๋ฅผ ์ง์ํฉ๋๋ค. n XNUMX์ ๊ฑฐ๋ญ์ ๊ณฑ์ ๋๋ค. ๊ทธ ๊ฒฝ์ฐ, ๊ทธ๊ฒ์
๋ฐ์ฌ๋ฆผ.
If n ์ง์ ๋์ง ์์๊ฑฐ๋ XNUMX์ด๋ฉด ์์คํ ์ข ์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3.
-falign-๋ผ๋ฒจ
-falign-๋ ์ด๋ธ=n
๋ชจ๋ ๋ถ๊ธฐ ๋์์ XNUMX์ ๊ฑฐ๋ญ์ ๊ณฑ ๊ฒฝ๊ณ์ ์ ๋ ฌํ๊ณ n ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํธ
-falign-ํจ์. ์ด ์ต์ ์
์ฝ๋์ ์ผ๋ฐ์ ์ธ ํ๋ฆ์์ ๋ถ๊ธฐ ๋์์ ๋๋ฌํ์ ๋์ ๋๋ฏธ ์์ ์ ๋๋ค.
-fno-์ ๋ ฌ-๋ ์ด๋ธ and -falign-๋ ์ด๋ธ=1 ๋์ผํ๋ฉฐ ๋ ์ด๋ธ์ด ๋์ผํ์ง ์์์ ์๋ฏธํฉ๋๋ค.
์ ๋ ฌ.
If -์ ๋ ฌ ๋ฃจํ or -์ ๋ ฌ ์ ํ ์ ์ฉ ๊ฐ๋ฅํ๊ณ ์ด ๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ
๋์ ํด๋น ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
If n ์ง์ ๋์ง ์์๊ฑฐ๋ XNUMX์ธ ๊ฒฝ์ฐ ๊ธฐ๊ณ ์ข ์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
๋ 1, ์ ๋ ฌ์ด ์์์ ์๋ฏธํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3.
-์ ๋ ฌ ๋ฃจํ
-์ ๋ ฌ ๋ฃจํ=n
๋ฃจํ๋ฅผ XNUMX์ ๊ฑฐ๋ญ์ ๊ณฑ ๊ฒฝ๊ณ๋ก ์ ๋ ฌํ๊ณ ๋ค์์ผ๋ก ๊ฑด๋๋๋๋ค. n ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํธ -falign-ํจ์.
๋ฃจํ๊ฐ ์ฌ๋ฌ ๋ฒ ์คํ๋๋ฉด ๋๋ฏธ ์คํ์ ๋ณด์ํฉ๋๋ค.
์์ .
-fno-align ๋ฃจํ and -falign ๋ฃจํ=1 ๋๋ฑํ๋ฉฐ ๋ฃจํ๊ฐ
์ ๋ ฌ.
If n ์ง์ ๋์ง ์์๊ฑฐ๋ XNUMX์ด๋ฉด ์์คํ ์ข ์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3.
-์ ๋ ฌ ์ ํ
-falign-์ ํ=n
๋ชฉํ๊ฐ ์๋ ๋ถ๊ธฐ ๋ชฉํ์ ๋ํด ๋ถ๊ธฐ ๋ชฉํ๋ฅผ XNUMX์ ๊ฑฐ๋ญ์ ๊ณฑ ๊ฒฝ๊ณ์ ๋ง์ถฅ๋๋ค.
์ ํ๋ฅผ ํตํด์๋ง ๋๋ฌํ ์ ์์ต๋๋ค. n ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํธ -falign-ํจ์. ์
์ด ๊ฒฝ์ฐ ๋๋ฏธ ์์ ์ ์คํํ ํ์๊ฐ ์์ต๋๋ค.
-fno-align-์ ํ and -falign-์ ํ=1 ๋๋ฑํ๋ฉฐ ๋ฃจํ๊ฐ
์ ๋ ฌ.
If n ์ง์ ๋์ง ์์๊ฑฐ๋ XNUMX์ด๋ฉด ์์คํ ์ข ์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O2, -O3.
-ํ ๋ฒ์ ๋จ์
์ด ์ต์ ์ ํธํ์ฑ์ ์ํด ๋จ๊ฒจ๋ก๋๋ค. -ํ ๋ฒ์ ๋จ์ ํจ๊ณผ๊ฐ ์๋ ๋ฐ๋ฉด
-fno-ํ ๋ฒ์ ๋จ์ ์๋ฏธํ๋ค -fno-์ต์์-์ฌ์ฃผ๋ฌธ and -fno-์น์ ์ต์ปค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
-fno-์ต์์-์ฌ์ฃผ๋ฌธ
์ต์์ ํจ์, ๋ณ์ ๋ฐ "asm" ๋ฌธ์ ์ฌ์ ๋ ฌํ์ง ๋ง์ญ์์ค. ์ถ๋ ฅ
์ ๋ ฅ ํ์ผ์ ๋ํ๋๋ ์์์ ๋์ผํฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ ๋,
์ฐธ์กฐ๋์ง ์์ ์ ์ ๋ณ์๋ ์ ๊ฑฐ๋์ง ์์ต๋๋ค. ์ด ์ต์ ์ ๋ค์์ ์ง์ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
ํน์ ์์์ ์์กดํ๋ ๊ธฐ์กด ์ฝ๋. ์ ์ฝ๋์ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์์ฑ.
์์ค์์ ํ์ฑํ๋จ -O0. ๋ช ์์ ์ผ๋ก ๋นํ์ฑํํ๋ฉด ๋ค์์ ์๋ฏธํ๊ธฐ๋ ํฉ๋๋ค. -fno-์น์ ์ต์ปค,
๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ฑํ๋ฉ๋๋ค. -O0 ์ผ๋ถ ๋์์.
-fweb
๋ ์ง์คํฐ ํ ๋น ๋ชฉ์ ์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์น์ ๊ตฌ์ฑํ๊ณ ๊ฐ ์น์ ํ ๋นํฉ๋๋ค.
๊ฐ๋ณ ์์ฌ ๋ ์ง์คํฐ ์ด๋ฅผ ํตํด ๋ ์ง์คํฐ ํ ๋น ํจ์ค๊ฐ ์๋ํ ์ ์์ต๋๋ค.
์ ์ฌํ์ง๋ง CSE,
๋ฃจํ ์ตํฐ๋ง์ด์ ๋ฐ ์ฌ์ํ ๋ฐ๋ ์ฝ๋ ์ ๊ฑฐ๊ธฐ. ๊ทธ๋ฌ๋ ๋๋ฒ๊น ์ ํ ์ ์์ต๋๋ค.
๋ณ์๋ ๋ ์ด์ "ํ ๋ ์ง์คํฐ"์ ๋จธ๋ฌผ์ง ์๊ธฐ ๋๋ฌธ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -ํ๋กค ๋ฃจํ.
-์ ์ฒด ํ๋ก๊ทธ๋จ
ํ์ฌ ์ปดํ์ผ ๋จ์๊ฐ ์ปดํ์ผ๋๋ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ๋ํ๋ธ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
"main"๊ณผ ๋ณํฉ๋ ๊ฒ์ ์ ์ธํ ๋ชจ๋ ๊ณต์ฉ ํจ์ ๋ฐ ๋ณ์
์์ฑ "externally_visible"์ ์ ์ ํจ์๊ฐ ๋๊ณ ์ค์ ๋ก ์ต์ ํ๋ฉ๋๋ค.
์ ์ฐจ ๊ฐ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ์ํด ๋ณด๋ค ์ ๊ทน์ ์ผ๋ก.
์ด ์ต์ ์ "-flto"์ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ ๋ฉ๋๋ค. ๋์ ์ ์์กด
๋ง์ปค ํ๋ฌ๊ทธ์ธ์ ๋ณด๋ค ์์ ํ๊ณ ์ ํํ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
-flto[=n]
์ด ์ต์ ์ ํ์ค ๋งํฌ ์๊ฐ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ์คํํฉ๋๋ค. ์์ค ์ฝ๋์ ํจ๊ป ํธ์ถ๋ ๋
GIMPLE(GCC์ ๋ด๋ถ ํํ ์ค ํ๋)์ ์์ฑํ๊ณ ํน์ ELF์ ์๋๋ค.
๊ฐ์ฒด ํ์ผ์ ์น์ . ์ค๋ธ์ ํธ ํ์ผ์ด ํจ๊ป ๋งํฌ๋๋ฉด ๋ชจ๋
ํจ์ ๋ณธ๋ฌธ์ ์ด๋ฌํ ELF ์น์ ์์ ์ฝ๊ณ ๋ง์น ์ด์ ์ ์์๋ ๊ฒ์ฒ๋ผ ์ธ์คํด์คํ๋ฉ๋๋ค.
๋์ผํ ๋ฒ์ญ ๋จ์์ ์ผ๋ถ์ ๋๋ค.
๋งํฌ ํ์ ์ตํฐ๋ง์ด์ ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, -flto ์ปดํ์ผ ์๊ฐ๊ณผ ๋์ค์ ์ง์ ํด์ผ ํฉ๋๋ค.
๋ง์ง๋ง ๋งํฌ. ์๋ฅผ ๋ค์ด:
gcc -c -O2 -flto foo.c
gcc -c -O2 -flto bar.c
gcc -o myprog -flto -O2 foo.o bar.o
GCC์ ๋ํ ์ฒ์ ๋ ๋ฒ์ ํธ์ถ์ GIMPLE์ ๋ฐ์ดํธ ์ฝ๋ ํํ์ ํน์ ํ์ผ์ ์ ์ฅํฉ๋๋ค.
๋ด๋ถ ELF ์น์ ํธ.์ค and ๋ฐ์ค. ์ต์ข ํธ์ถ์ GIMPLE ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์ฝ์ต๋๋ค.
์ ํธ.์ค and ๋ฐ์ค, ๋ ํ์ผ์ ๋จ์ผ ๋ด๋ถ ์ด๋ฏธ์ง๋ก ๋ณํฉํ๊ณ ์ปดํ์ผํฉ๋๋ค.
ํ์์ ๊ฐ์ ๊ฒฐ๊ณผ. ๋ ๋ค ์ดํ๋ก ํธ.์ค and ๋ฐ์ค ์ด๊ฒ์ ํ๋์ ์ด๋ฏธ์ง๋ก ๋ณํฉ๋ฉ๋๋ค.
GCC์ ๋ชจ๋ ์ ์ฐจ ๊ฐ ๋ถ์ ๋ฐ ์ต์ ํ๊ฐ
๋ ๊ฐ์ ํ์ผ์ด ํ๋์ ํ์ผ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ด๊ฒ์ ์๋ฅผ ๋ค์ด ๋ด๋ถ๊ฐ ๋ค์๊ณผ ๊ฐ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ํจ์๋ฅผ ์ธ๋ผ์ธํ ์ ์๋ ๋ฐ์ค ๊ธฐ๋ฅ์ผ๋ก ํธ.์ค ๊ทธ ๋ฐ๋.
๋งํฌ ์๊ฐ ์ต์ ํ๋ฅผ ํ์ฑํํ๋ ๋ ๋ค๋ฅธ (๊ฐ๋จํ) ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
gcc -o myprog -flto -O2 foo.c bar.c
์์ ๋ฐ์ดํธ ์ฝ๋ ์์ฑ foo.c and ๋ฐ.์จ, ๊ทธ๊ฒ๋ค์ ํ๋๋ก ๋ณํฉํฉ๋๋ค.
GIMPLE ํํ ๋ฐ ํ์์ ๊ฐ์ด ์ต์ ํํ์ฌ ์์ฑ ๋ง์ดํ๋ก๊ทธ.
์ผ๋์ ๋์ด์ผ ํ ์ ์ผํ ์ค์ํ ์ฌํญ์ ๋งํฌ ์๊ฐ ์ต์ ํ๋ฅผ ํ์ฑํํ๋ค๋ ๊ฒ์ ๋๋ค.
-flto ํ๋๊ทธ๋ ์ปดํ์ผ ๋ฐ ๋งํฌ ๋ช ๋ น ๋ชจ๋์ ์ ๋ฌ๋์ด์ผ ํฉ๋๋ค.
์ ์ฒด ํ๋ก๊ทธ๋จ ์ต์ ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ํํ๋ ค๋ฉด ํน์ ์ ์ฒด ํ๋ก๊ทธ๋จ์
ํ๋ก๊ทธ๋จ ๊ฐ์ . ์ปดํ์ผ๋ฌ๋ ์ด๋ค ํจ์์ ๋ณ์๊ฐ ๋ ์ ์๋์ง ์์์ผ ํฉ๋๋ค.
๋งํฌ ์๊ฐ์ ์ต์ ํ๋ ๋จ์ ์ธ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ฐํ์์์ ์ก์ธ์คํฉ๋๋ค. ์ธ์
๋ง์ปค์์ ์ง์ํ๋ ๋ง์ปค ํ๋ฌ๊ทธ์ธ(์ฐธ์กฐ -ํจ์ฆ-๋ง์ปค-ํ๋ฌ๊ทธ์ธ) ํต๊ณผ
์ฌ์ฉ๋ ๊ธฐํธ์ ์ธ๋ถ์์ ๋ณผ ์ ์๋ ๊ธฐํธ์ ๋ํ ์ ๋ณด๋ฅผ ์ปดํ์ผ๋ฌ์ ์ ๊ณตํฉ๋๋ค. ๋
๋ง์ปค ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. -์ ์ฒด ํ๋ก๊ทธ๋จ ์ปดํ์ผ๋ฌ๋ฅผ ํ์ฉํ๋ ๋ฐ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ๊ฐ์ ์ ํ๋ฉด ๋ณด๋ค ์ ๊ทน์ ์ธ ์ต์ ํ ๊ฒฐ์ ์ด ๋ด๋ ค์ง๋๋ค.
ํ์ผ์ด ๋ค์์ผ๋ก ์ปดํ์ผ๋ ๋ ์ฃผ์ํ์ญ์์ค. -flto, ์์ฑ๋ ์ค๋ธ์ ํธ ํ์ผ์ด ๋ค์๋ณด๋ค ํฝ๋๋ค.
GIMPLE ๋ฐ์ดํธ ์ฝ๋์ ์ผ๋ฐ์ ์ธ ์ต์ข ์ฝ๋๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ ๊ฐ์ฒด ํ์ผ์ ๋๋ค.
์ด๋ LTO ์ ๋ณด๊ฐ ์๋ ์ค๋ธ์ ํธ ํ์ผ์ ์ผ๋ฐ ์ค๋ธ์ ํธ๋ก ๋งํฌํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
ํ์ผ; ๋ง์ฝ -flto ๋ง์ปค์ ์ ๋ฌ๋์ง ์๊ณ ์ ์ฐจ ๊ฐ ์ต์ ํ๊ฐ ์ํ๋์ง ์์ต๋๋ค.
์ ์ฉ๋.
๋ํ ๊ฐ๋ณ ํ์ผ์ ์ปดํ์ผํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ต์ ํ ํ๋๊ทธ๋
๋งํฌ ํ์์ ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ๋ฐ๋์ โโ๊ด๋ จ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด,
gcc -c -O0 -flto foo.c
gcc -c -O0 -flto bar.c
gcc -o myprog -flto -O3 foo.o bar.o
์ด๋ ๊ฒ ํ๋ฉด ์ต์ ํ๋์ง ์์ ์ด์ ๋ธ๋ฌ ์ฝ๋๊ฐ ํฌํจ๋ ๊ฐ๋ณ ๊ฐ์ฒด ํ์ผ์ด ์์ฑ๋์ง๋ง
๊ฒฐ๊ณผ ๋ฐ์ด๋๋ฆฌ ๋ง์ดํ๋ก๊ทธ ์ ์ต์ ํ๋์ด ์์ต๋๋ค. -O3. ๋์ ์ต์ข ๋ฐ์ด๋๋ฆฌ๊ฐ
์์ด ์์ฑ -flto๋ค์, ๋ง์ดํ๋ก๊ทธ ์ต์ ํ๋์ด ์์ง ์์ต๋๋ค.
๋ก ์ต์ข ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์ฑํ ๋ -flto, GCC๋ ๋งํฌ ์๊ฐ ์ต์ ํ๋ง ์ ์ฉํฉ๋๋ค.
๋ฐ์ดํธ์ฝ๋๊ฐ ํฌํจ๋ ํ์ผ์. ๋ฐ๋ผ์ ๊ฐ์ฒด ํ์ผ์ ํผํฉ ๋ฐ ์ผ์น์ํฌ ์ ์์ต๋๋ค.
๋ฐ GIMPLE ๋ฐ์ดํธ ์ฝ๋ ๋ฐ ์ต์ข ๊ฐ์ฒด ์ฝ๋๊ฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. GCC๊ฐ ์๋์ผ๋ก ์ ํ
LTO ๋ชจ๋์์ ์ต์ ํํ ํ์ผ๊ณผ ์ถ๊ฐ ์์ด ์ฐ๊ฒฐํ ํ์ผ
์ฒ๋ฆฌ.
๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์์ฑํ ๋ GCC์ ์ํด ๋ณด์กด๋๋ ์ผ๋ถ ์ฝ๋ ์์ฑ ํ๋๊ทธ๊ฐ ์์ต๋๋ค.
์ต์ข ์ฐ๊ฒฐ ๋จ๊ณ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ํ์ฌ ๋ค์ ์ต์
GIMPLE ๋ฐ์ดํธ์ฝ๋ ํ์ผ์ ์ ์ฅ๋ฉ๋๋ค. -fPIC, -f๊ณตํต ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ -m ํ๊ฒ ํ๋๊ทธ.
๋งํฌ ์๊ฐ์ ์ด๋ฌํ ์ต์ ์ ์ฝ๊ณ ๋ค์ ์ ์ฉํฉ๋๋ค. ์ฐธ๊ณ ๋ก ํ์ฌ
๊ตฌํ์์๋ ์ด๋ฌํ ์ต์ ์ ๋ํด ์ถฉ๋ํ๋ ๊ฐ์ ์ธ์ํ๋ ค๊ณ ์๋ํ์ง ์์ต๋๋ค. ๋ง์ฝ์
๋ค๋ฅธ ํ์ผ์๋ ์ถฉ๋ํ๋ ์ต์ ๊ฐ์ด ์์ต๋๋ค(์: ํ ํ์ผ์ ๋ค์์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. -fPIC
๋ค๋ฅธ ํ๋๋ ๊ทธ๋ ์ง ์์), ์ปดํ์ผ๋ฌ๋ ๋จ์ํ ๋ฐ์ดํธ ์ฝ๋์์ ์ฝ์ ๋ง์ง๋ง ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
ํ์ผ. ๊ทธ๋ฐ ๋ค์ ํ๋ก์ ํธ์ ์ฐธ์ฌํ๋ ๋ชจ๋ ํ์ผ์ ์ปดํ์ผํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋์ผํ ์ต์ ์ด ์๋ ๋์ผํ ๋งํฌ.
LTO๊ฐ ๋ณ๋์ ํธํ๋์ง ์๋ ์ ํ์ผ๋ก ์ ์ธ๋ C ์ฐ๊ฒฐ์ด ์๋ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ
ํจ๊ป ์ฐ๊ฒฐ๋ ๋ฒ์ญ ๋จ์(ISO C99์ ๋ฐ๋ฅธ ์ ์๋์ง ์์ ๋์
6.2.7), ๋น์น๋ช ์ ์ง๋จ์ด ๋ด๋ ค์ง ์ ์์ต๋๋ค. ๋์์ ์คํ ์ ์ฌ์ ํ ์ ์๋์ง ์์ต๋๋ค.
์๊ฐ.
LTO์ ๋ ๋ค๋ฅธ ํน์ง์ ์ ์ฐจ๊ฐ ์ต์ ํ๋ฅผ ์ ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ค๋ฅธ ์ธ์ด๋ก ์์ฑ๋ ํ์ผ์ ์ด๋ฅผ ์ํด์๋ ์ธ์ด ์ ๋ฉด์ ์ง์์ด ํ์ํฉ๋๋ค
๋. ํ์ฌ C, C++ ๋ฐ Fortran ํ๋ฐํธ ์๋๋ GIMPLE์ ๋ฐฉ์ถํ ์ ์์ต๋๋ค.
๋ฐ์ดํธ์ฝ๋์ด๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ์๋ํด์ผ ํฉ๋๋ค.
gcc -c -flto foo.c
g++ -c -flto bar.cc
gfortran -c -flto baz.f90
g++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran
์ต์ข ๋งํฌ๋ ๋ค์์ผ๋ก ์๋ฃ๋ฉ๋๋ค. g ++ C++ ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๊ณ
-lgfortran Fortran ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ถ๊ฐ๋์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํผํฉํ ๋
LTO ๋ชจ๋์์ ์ธ์ด๋ฅผ ํผํฉํ ๋์ ๋์ผํ ๋งํฌ ๋ช ๋ น ์ต์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ผ๋ฐ(๋น LTO) ์ปดํ์ผ์ ์ธ์ด ์ถ๊ฐํด์ผ ํ ๊ฒ์ -flto ์ ๋ํ ๋ชจ๋
์ปดํ์ผ ๋ฐ ๋งํฌ ๋ช ๋ น.
GIMPLE ๋ฐ์ดํธ์ฝ๋๊ฐ ํฌํจ๋ ๊ฐ์ฒด ํ์ผ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์นด์ด๋ธ์ ์ ์ฅ๋์ด ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ๋งํ์ญ์์ค.
libfoo.a, ์ฌ์ฉ์ค์ธ ๊ฒฝ์ฐ LTO ๋งํฌ์์ ์ถ์ถํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ์ง์ํ๋ ๋ง์ปค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ธ์. -ํจ์ฆ-๋ง์ปค-ํ๋ฌ๊ทธ์ธ
๋งํฌ ์๊ฐ:
gcc -o myprog -O2 -flto -fuse-linker-plugin ao bo -lfoo
๋ง์ปค ํ๋ฌ๊ทธ์ธ์ด ํ์ฑํ๋ ์ํ์์ ๋ง์ปค๋ ๋ค์์์ ํ์ํ GIMPLE ํ์ผ์ ์ถ์ถํฉ๋๋ค.
libfoo.a ์คํ ์ค์ธ GCC์ ์ ๋ฌํ์ฌ ์ง๊ณ๋ ์ผ๋ถ๋ก ๋ง๋ญ๋๋ค.
์ต์ ํํ GIMPLE ์ด๋ฏธ์ง์ ๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ์ง์ํ๋ ๋ง์ปค๋ฅผ ์ฌ์ฉํ์ง ์๊ฑฐ๋ ๋ง์ปค๋ฅผ ํ์ฑํํ์ง ์๋ ๊ฒฝ์ฐ
ํ๋ฌ๊ทธ์ธ ๋ค์ ๋ด๋ถ ๊ฐ์ฒด libfoo.a ํ์์ ๊ฐ์ด ์ถ์ถ๋๊ณ ์ฐ๊ฒฐ๋์ง๋ง
LTO ์ต์ ํ ํ๋ก์ธ์ค์ ์ฐธ์ฌํ์ง ๋ง์ญ์์ค.
๋งํฌ ํ์ ์ต์ ํ๋ ์ ์ฒด ํ๋ก๊ทธ๋จ์ด ์๋ํ ํ์๊ฐ ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ์์ ๋ด๋ณด๋ผ ๊ธฐํธ๊ฐ ํ์ํ์ง ์์ ๊ฒฝ์ฐ ๋ค์์ ๊ฒฐํฉํ ์ ์์ต๋๋ค.
-flto and -์ ์ฒด ํ๋ก๊ทธ๋จ ์ ์ฐจ ๊ฐ ์ต์ ํ ํ๋ก๊ทธ๋จ์ด ๋ ๋ง์ ๊ฒ์ ์ฌ์ฉํ ์ ์๋๋ก
๊ฐ์ ๋ ์ต์ ํ ๊ธฐํ๋ก ์ด์ด์ง ์ ์๋ ๊ณต๊ฒฉ์ ์ธ ๊ฐ์ . ์ฌ์ฉ
-์ ์ฒด ํ๋ก๊ทธ๋จ ๋ง์ปค ํ๋ฌ๊ทธ์ธ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ ํ์ํ์ง ์์ต๋๋ค(์ฐธ์กฐ -ํจ์ฆ-๋ง์ปค-ํ๋ฌ๊ทธ์ธ).
LTO์ ํ์ฌ ๊ตฌํ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ฑํ๋ ค๊ณ ์๋ํ์ง ์์ต๋๋ค.
์๋ก ๋ค๋ฅธ ์ ํ์ ํธ์คํธ ๊ฐ์ ์ด์ ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ์ดํธ์ฝ๋ ํ์ผ์ ๋ฒ์ ์ด ์ง์ ๋์ด ์์ต๋๋ค.
์๊ฒฉํ ๋ฒ์ ๊ฒ์ฌ์ด๋ฏ๋ก ํ ๋ฒ์ ์ GCC์์ ์์ฑ๋ ๋ฐ์ดํธ์ฝ๋ ํ์ผ์
์ด์ /์ต์ ๋ฒ์ ์ GCC๋ก ์์ ํฉ๋๋ค.
๋งํฌ ์๊ฐ ์ต์ ํ๋ ๋๋ฒ๊น ์ ๋ณด ์์ฑ๊ณผ ์ ์๋ํ์ง ์์ต๋๋ค.
๊ฒฐํฉ -flto ๊ณผ -g ํ์ฌ ์คํ ์ค์ด๋ฉฐ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ ๊ฒ์ผ๋ก ์์๋จ
๊ฒฐ๊ณผ.
์ต์ ์ ์ง์ ํ๋ฉด n, ๋งํฌ ํ์์ ์ํ๋๋ ์ต์ ํ ๋ฐ ์ฝ๋ ์์ฑ
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ๋ก ์คํ๋ฉ๋๋ค. n ์ค์น๋ ๋ณ๋ ฌ ์์ ์ ํ์ฉํ์ฌ ํ์ธ ํ๋ก๊ทธ๋จ)
ํ๊ฒฝ ๋ณ์ MAKE ์ฌ์ฉ๋ ํ๋ก๊ทธ๋จ์ ์ฌ์ ์ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ
๊ฐ์น n 1์ ๋๋ค.
์ง์ ํ ์๋ ์์ต๋๋ค. -flto=์์ ์๋ฒ GNU make์ ์์ ์๋ฒ ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ฌ
๋ณ๋ ฌ ์์ ์ ์. ์ด๊ฒ์ GCC๋ฅผ ํธ์ถํ๋ Makefile์ด ์ด๋ฏธ
๋ณ๋ ฌ๋ก ์คํํฉ๋๋ค. ๋ค์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. + ๋ถ๋ชจ์ ๋ช ๋ น ๋ ์ํผ์
์ด ์์ ์ ์ํํ๋ ค๋ฉด Makefile์ด ํ์ํฉ๋๋ค. ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. MAKE GNU make์ ๋๋ค.
์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
-flto-ํํฐ์ =ALG
๋งํฌ ์๊ฐ ์ต์ ํ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๋ ๋ถํ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํฉ๋๋ค. ๊ฐ์
์๋ณธ ์์ค ํ์ผ์ ๋ฏธ๋ฌ๋งํ๋ ํํฐ์ ์ ์ง์ ํ๋ ค๋ฉด "1to1"์ ์ฌ์ฉํ๊ฑฐ๋
๋์ผํ ํฌ๊ธฐ์ ์ฒญํฌ๋ก ๋ถํ ์ ์ง์ ํ๋ "๊ท ํ"(๊ฐ๋ฅํ ๊ฒฝ์ฐ) ๋๋
"max"๋ ๊ฐ๋ฅํ ๋ชจ๋ ๊ธฐํธ์ ๋ํด ์ ํํฐ์ ์ ์์ฑํฉ๋๋ค. "์์"์ ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํฉ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ๋ถํ ๋ฐ ์คํธ๋ฆฌ๋ฐ์ ์์ ํ ๋นํ์ฑํํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
"๊ท ํ์ด ์กํ". "1to1"์ ๋ค์ํ ์ฝ๋ ์์์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ๋ ์ ์์ง๋ง
๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ "์ต๋" ๋ถํ ์ ๋ด๋ถ ํ ์คํธ ์ ์ฉ์ ๋๋ค.
-flto-์์ถ ์์ค=n
์ด ์ต์ ์ ์์ฑ๋ ์ค๊ฐ ์ธ์ด์ ์ฌ์ฉ๋๋ ์์ถ ์์ค์ ์ง์ ํฉ๋๋ค.
LTO ์ค๋ธ์ ํธ ํ์ผ์ ์ ์ฉ๋๋ฉฐ LTO ๋ชจ๋(-flto).
์ ํจํ ๊ฐ์ 0(์์ถ ์์)์์ 9(์ต๋ ์์ถ)๊น์ง์ ๋๋ค. ์ด ๋ฐ์ ๊ฐ
๋ฒ์๋ 0 ๋๋ 9๋ก ๊ณ ์ ๋ฉ๋๋ค. ์ต์ ์ด ์ ๊ณต๋์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ๊ท ํ
์์ถ ์ค์ ์ด ์ฌ์ฉ๋ฉ๋๋ค.
-flto-๋ณด๊ณ
๋งํฌ ์๊ฐ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ์๋์ ๋ํ ๋ด๋ถ ์ธ๋ถ ์ ๋ณด๊ฐ ํฌํจ๋ ๋ณด๊ณ ์๋ฅผ ์ธ์ํฉ๋๋ค. NS
์ด ๋ณด๊ณ ์์ ๋ด์ฉ์ ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. GCC์ ์ ์ฉํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
๊ฐ๋ฐ์๋ LTO ๋ชจ๋์์ ๊ฐ์ฒด ํ์ผ์ ์ฒ๋ฆฌํ ๋(ํตํด -flto).
๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ๋์ด ์์ต๋๋ค.
-ํจ์ฆ-๋ง์ปค-ํ๋ฌ๊ทธ์ธ
๋งํฌ ์๊ฐ ์ต์ ํ ์ค์ ๋ง์ปค ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์ต์ ์
๊ณจ๋ ๋๋ GNU ld 2.21 ๋๋
๋ ์๋ก์ด.
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ GIMPLE ๋ฐ์ดํธ ์ฝ๋๊ฐ ์๋ ๊ฐ์ฒด ํ์ผ์ ์ถ์ถํ ์ ์์ต๋๋ค.
์์นด์ด๋ธ. ์ด๊ฒ์ ๋งํฌ์ ๋ ๋ง์ ์ฝ๋๋ฅผ ๋ ธ์ถ์์ผ ์ต์ ํ ํ์ง์ ํฅ์์ํต๋๋ค.
์๊ฐ ์ต์ ํ๊ธฐ. ์ด ์ ๋ณด๋ ์ธ๋ถ์์ ์ก์ธ์คํ ์ ์๋ ๊ธฐํธ๋ฅผ ์ง์ ํฉ๋๋ค.
(๋น LTO ๊ฐ์ฒด์ ์ํด ๋๋ ๋์ ์ฐ๊ฒฐ ์ค์). ๊ฒฐ๊ณผ ์ฝ๋ ํ์ง ํฅ์
๋ฐ์ด๋๋ฆฌ(๋ฐ ์จ๊ฒจ์ง ๊ฐ์์ฑ์ ์ฌ์ฉํ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค.
"-์ ์ฒด ํ๋ก๊ทธ๋จ". ๋ณด๋ค -flto ์ด ํ๋๊ทธ์ ํจ๊ณผ์ ๋ํ ์ค๋ช ๊ณผ
๊ทธ๊ฑธ ์จ.
์ด ์ต์ ์ GCC์์ LTO ์ง์์ด ํ์ฑํ๋๊ณ GCC๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
๋ง์ปค ์ง์ ํ๋ฌ๊ทธ์ธ(GNU ld 2.21 ์ด์ ๋๋ ๊ณจ๋)๊ณผ ํจ๊ป ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
-ffat-lto-๊ฐ์ฒด
Fat LTO ๊ฐ์ฒด๋ ์ค๊ฐ ์ธ์ด์
๊ฐ์ฒด ์ฝ๋. ์ด๋ฅผ ํตํด LTO ์ฐ๊ฒฐ ๋ฐ ์ผ๋ฐ ์ฐ๊ฒฐ ๋ชจ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ
์ต์ ์ ๋ค์์ผ๋ก ์ปดํ์ผํ ๋๋ง ์ ํจํฉ๋๋ค. -flto ๋งํฌ ์๊ฐ์๋ ๋ฌด์๋ฉ๋๋ค.
-fno-fat-lto-๊ฐ์ฒด ์ผ๋ฐ LTO์ ๋นํด ์ปดํ์ผ ์๊ฐ์ด ํฅ์๋์ง๋ง
LTO๋ฅผ ์ธ์ํ ์ ์๋ ์์ ํ ๋๊ตฌ ์ฒด์ธ. ๋ง์ปค ํ๋ฌ๊ทธ์ธ์ ์ง์ํ๋ ๋ง์ปค๊ฐ ํ์ํฉ๋๋ค.
๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ํด. ์ถ๊ฐ์ ์ผ๋ก, nm, ar and ๋๋ฆฝ ๋ง์ปค๋ฅผ ์ง์ํด์ผ ํฉ๋๋ค
๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋น๋ ํ๊ฒฝ์ ํ์ฉํ๋ ํ๋ฌ๊ทธ์ธ(์ ์ ๋น๋ ๊ฐ๋ฅ
๋์๊ด ๋ฑ). GCC๋ gcc-ar, gcc-nm, gcc-ranlib ์ ๋ฌํ ๋ํผ
์ด๋ฌํ ๋๊ตฌ์ ๋ํ ์ฌ๋ฐ๋ฅธ ์ต์ . non-fat LTO makefile์ ์ฌ์ฉํ๋ ค๋ฉด ์์ ํด์ผ ํฉ๋๋ค.
๊ทธ๋ค.
๋ํดํธ๋ -ffat-lto-๊ฐ์ฒด ๊ทธ๋ฌ๋ ์ด ๊ธฐ๋ณธ๊ฐ์ ํฅํ ๋ณ๊ฒฝ๋ ์์ ์ ๋๋ค.
๋ง์ปค ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ ํ๊ฒฝ์ด ์ผ๋ฐํ๋๋ฉด ๋ฆด๋ฆฌ์ค๋ฉ๋๋ค.
-f๋น๊ต-์ ๊ฑฐ
๋ ์ง์คํฐ ํ ๋น ๋ฐ ์ฌํ ๋ ์ง์คํฐ ํ ๋น ๋ช ๋ น ๋ถํ ํ ์๋ณ
๋น๊ต ์ฐ์ฐ๊ณผ ์ ์ฌํ ํ๋ก์ธ์ ํ๋๊ทธ๋ฅผ ๊ณ์ฐํ๋ ์ฐ์ ๋ช ๋ น์ด
๊ทธ ์ฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๊ฐ๋ฅํ๋ฉด ๋ช ์์ ๋น๊ต ์์ ์ ์ ๊ฑฐํ์ญ์์ค.
์ด ํจ์ค๋ ๋ช ์์ ์ผ๋ก ๋ํ๋ผ ์ ์๋ ํน์ ๋์์๋ง ์ ์ฉ๋ฉ๋๋ค.
๋ ์ง์คํฐ ํ ๋น์ด ์๋ฃ๋๊ธฐ ์ ์ ๋น๊ต ์์ ์ ์ํํฉ๋๋ค.
์์ค์์ ํ์ฑํ๋จ -O, -O2, -O3, - ์ค์ค.
-ํจ์ฆ-ld=bfd
์ฌ์ฉ BFD ๊ธฐ๋ณธ ๋ง์ปค ๋์ ๋ง์ปค.
-fuse-ld=๊ธ
์ฌ์ฉ ๊ธ ๊ธฐ๋ณธ ๋ง์ปค ๋์ ๋ง์ปค.
-fcprop ๋ ์ง์คํฐ
๋ ์ง์คํฐ ํ ๋น ๋ฐ ์ฌํ ๋ ์ง์คํฐ ํ ๋น ๋ช ๋ น ๋ถํ ํ ์ํ
์ค์ผ์ค๋ง ์ข ์์ฑ์ ์ค์ด๊ธฐ ์ํด ๋ณต์ฌ ์ ํ ๋จ๊ณ๋ฅผ ์ํํ๊ณ ๋๋๋ก
์ฌ๋ณธ์ ์ ๊ฑฐํ์ญ์์ค.
์์ค์์ ํ์ฑํ๋จ -O, -O2, -O3, - ์ค์ค.
-fprofile-์์
๋ค์ค ์ค๋ ๋ ํ๋ก๊ทธ๋จ์ ๋ํด ๊ณ์ธก๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ง๋ ํ๋กํ์ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.
๋๋ฝ๋ ์นด์ดํฐ ์ ๋ฐ์ดํธ๋ก ์ธํด ์ผ๊ด์ฑ์ด ์์ต๋๋ค. ์ด ์ต์ ์ด ์ง์ ๋๋ฉด GCC๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
์ด๋ฌํ ๋ถ์ผ์น๋ฅผ ์์ ํ๊ฑฐ๋ ์ํํ๊ธฐ ์ํ ํด๋ฆฌ์คํฑ. ๊ธฐ๋ณธ์ ์ผ๋ก GCC๋
์ผ์นํ์ง ์๋ ํ๋กํ์ด ๊ฐ์ง๋๋ฉด ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
-fํ๋กํ-๋๋ ํ ๋ฆฌ=ํต๋ก
ํ๋กํ ๋ฐ์ดํฐ ํ์ผ์ ๊ฒ์ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. ํต๋ก. ์ด ์ต์
์ ์ํด ์์ฑ๋ ํ๋กํ ๋ฐ์ดํฐ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค. -fprofile ์์ฑ, -์ตํ ๋ฒ์,
-fprofile-ํธ ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ -fprofile-์ฌ์ฉ and -f๋ถ๊ธฐ ํ๋ฅ ๋ฐ ๊ด๋ จ
์ต์ . ์ ๋ ๊ฒฝ๋ก์ ์๋ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก GCC๋
ํ์ฌ ๋๋ ํ ๋ฆฌ ํต๋ก, ๋ฐ๋ผ์ ํ๋กํ ๋ฐ์ดํฐ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ๋๋ ํฐ๋ฆฌ์ ๋ํ๋ฉ๋๋ค.
๋ชฉ์ ํ์ผ.
-fprofile ์์ฑ
-fprofile ์์ฑ=ํต๋ก
์ ์ฉํ ํ๋กํ์ ์์ฑํ๊ธฐ ์ํด ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ณ์ธกํ๋ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ต์ ์ ํ์ฑํํฉ๋๋ค.
ํ๋กํ ํผ๋๋ฐฑ ๊ธฐ๋ฐ ์ต์ ํ๋ก ๋์ค์ ๋ค์ ์ปดํ์ผํ๊ธฐ ์ํด. ๋น์ ์ ์ฌ์ฉํด์ผํฉ๋๋ค
-fprofile ์์ฑ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ ๋์ ๋งํฌํ ๋ ๋ชจ๋.
"-fprofile-arcs", "-fprofile-values", "-fvpt" ์ต์ ์ด ํ์ฑํ๋ฉ๋๋ค.
If ํต๋ก ๊ฐ ์ง์ ๋๋ฉด GCC๋ ํต๋ก ํ๋กํ ํผ๋๋ฐฑ ๋ฐ์ดํฐ ํ์ผ์ ์ฐพ์ต๋๋ค.
๋ง๋๋ค -fํ๋กํ-๋๋ ํฐ๋ฆฌ.
-fprofile-์ฌ์ฉ
-fํ๋กํ ์ฌ์ฉ=ํต๋ก
ํ๋กํ ํผ๋๋ฐฑ ์งํฅ ์ต์ ํ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์์ต์ฑ ์๋ ์ต์ ํ ํ์ฑํ
ํ๋กํ ํผ๋๋ฐฑ์ด ์๋ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅํฉ๋๋ค.
๋ค์ ์ต์ ์ด ํ์ฑํ๋ฉ๋๋ค: "-fbranch-probabilities", "-fvpt",
"-funroll-loops", "-fpeel-loops", "-ftracer", "-ftree-vectorize",
"ftree-loop-distribute-patterns"
๊ธฐ๋ณธ์ ์ผ๋ก GCC๋ ํผ๋๋ฐฑ ํ๋กํ์ด ์ผ์นํ์ง ์์ผ๋ฉด ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ด๋ณด๋ ๋๋ค.
์์ค ์ฝ๋. ์ด ์ค๋ฅ๋ ๋ค์์ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ๋ก ์ ํํ ์ ์์ต๋๋ค. -Wcoverage-๋ถ์ผ์น.
์ด๋ก ์ธํด ์ต์ ํ๋์ง ์์ ์ฝ๋๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
If ํต๋ก ๊ฐ ์ง์ ๋๋ฉด GCC๋ ํต๋ก ํ๋กํ ํผ๋๋ฐฑ ๋ฐ์ดํฐ ํ์ผ์ ์ฐพ์ต๋๋ค.
๋ง๋๋ค -fํ๋กํ-๋๋ ํฐ๋ฆฌ.
๋ค์ ์ต์ ์ ๋ถ๋ ์์์ ์ฐ์ ๊ณผ ๊ด๋ จ๋ ์ปดํ์ผ๋ฌ ๋์์ ์ ์ดํฉ๋๋ค.
์ด๋ฌํ ์ต์ ์ ์๋์ ์ ํ์ฑ ์ฌ์ด์์ ์ ์ถฉํฉ๋๋ค. ๋ชจ๋ ๊ตฌ์ฒด์ ์ผ๋ก ํ์ฑํํด์ผ ํฉ๋๋ค.
-fffloat-store
๋ถ๋ ์์์ ๋ณ์๋ฅผ ๋ ์ง์คํฐ์ ์ ์ฅํ์ง ๋ง๊ณ ๋ค๋ฅธ ์ต์ ์ ๊ธ์งํ์ญ์์ค.
๋ถ๋ ์์์ ๊ฐ์ ๋ ์ง์คํฐ ๋๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์ค๋์ง ์ฌ๋ถ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ด ์ต์ ์ 68000๊ณผ ๊ฐ์ ๊ธฐ๊ณ์์ ๋ฐ๋์งํ์ง ์์ ๊ณผ๋ํ ์ ๋ฐ๋๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
๋ถ๋ ๋ ์ง์คํฐ(68881 ์ค)๋ "๋๋ธ"์ด ๊ฐ์ ํ๋ ๊ฒ๋ณด๋ค ๋ ๋์ ์ ๋ฐ๋๋ฅผ ์ ์งํฉ๋๋ค.
๊ฐ์ง๊ณ . x86 ์ํคํ ์ฒ์์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ์์ ์ด๊ณผ ์ ๋ฐ๋
์ข์ ์ผ๋ง ํ ์ ์์ง๋ง ์ผ๋ถ ํ๋ก๊ทธ๋จ์ IEEE ํ๋กํ ์ ์ ํํ ์ ์์ ์์กดํฉ๋๋ค.
๊ฐ๋ฆฌํค๋ค. ์ฌ์ฉํ๋ค -fffloat-store ์ด๋ฌํ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ๋ชจ๋ ํ์ผ์ ์ ์ฅํ๋๋ก ์์ ํ ํ
๋ณ์์ ์ ์ ํ ์ค๊ฐ ๊ณ์ฐ.
-fexcess-์ ๋ฐ๋=์คํ์ผ
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ถ๋ ์ํ์ ๊ธฐ๊ณ์์ ๊ณผ๋ํ ์ ๋ฐ๋๋ฅผ ์ถ๊ฐ๋ก ์ ์ดํ ์ ์์ต๋๋ค.
ํฌ์ธํธ ๋ ์ง์คํฐ๋ IEEE "float" ๋ฐ "double" ์ ํ๋ณด๋ค ์ ๋ฐ๋๊ฐ ๋์ผ๋ฉฐ
ํ๋ก์ธ์๋ ์ด๋ฌํ ์ ํ์ผ๋ก ๋ฐ์ฌ๋ฆผํ๋ ์์ ์ ์ง์ํ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก,
-fexcess-์ ๋ฐ๋=๋น ๋ฆ ์ ํจํ๋ค; ์ด๊ฒ์ ์์ ์ด ์ํ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ ์ง์คํฐ์ ์ ๋ฐ๋ ๋ฐ ์ ํ์ผ๋ก ๋ฐ์ฌ๋ฆผํ ๋ ์์ธกํ ์ ์์
์์ค ์ฝ๋์ ์ง์ ๋ ์์ ์ด ์ํ๋ฉ๋๋ค. C๋ฅผ ์ปดํ์ผํ ๋,
-fexcess-์ ๋ฐ๋=ํ์ค ๊ฐ ์ง์ ๋๋ฉด ์ด๊ณผ ์ ๋ฐ๋๊ฐ ๊ท์น์ ๋ฐ๋ฆ ๋๋ค.
ISO C99์ ๋ช ์๋จ; ํนํ ์บ์คํธ์ ํ ๋น ๋ชจ๋ ๊ฐ์ด
์๋ฏธ๋ก ์ ์ ํ์ผ๋ก ๋ฐ์ฌ๋ฆผ๋ฉ๋๋ค(๋ฐ๋ฉด -fffloat-store ํ ๋น์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค).
์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ์๊ฒฉํ ์ค์ ์ต์ ์ด ์๋ ๊ฒฝ์ฐ C์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
-ํ์ค=c99 ์ฌ์ฉ.
-fexcess-์ ๋ฐ๋=ํ์ค C ์ด์ธ์ ์ธ์ด์๋ ๊ตฌํ๋์ง ์์ผ๋ฉฐ
ํจ๊ณผ๊ฐ ์๋ค๋ฉด -์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ or -๋น ๋ฅธ ์ํ ์ง์ ๋ฉ๋๋ค. x86์์๋
๊ฒฝ์ฐ์๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค. -mfpmath=sse or -mfpmath=sse+387 ์ง์ ๋จ; ์ด์ ์
์ด ๊ฒฝ์ฐ IEEE ์๋ฏธ๋ก ์ ๊ณผ๋ํ ์ ๋ฐ๋ ์์ด ์ ์ฉ๋๋ฉฐ ํ์์ ๊ฒฝ์ฐ ๋ฐ์ฌ๋ฆผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ธกํ ์์๋.
-๋น ๋ฅธ ์ํ
์ค์ -fno-์ํ-errno, -์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ, - ์ ํ ์ํ ์ ์ฉ,
-fno ๋ฐ์ฌ๋ฆผ ์ํ, -fno-์๊ทธ๋๋ง-nans and -fcx ์ ํ ๋ฒ์.
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก "__FAST_MATH__"๊ฐ ์ ์๋ฉ๋๋ค.
์ด ์ต์ ์ ์ด๋ค ์ฌ๋๋ ์ผ์ ธ ์์ง ์์ต๋๋ค. -O ์ด์ธ์ ์ต์ -์คํ์คํธ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์๊ธฐ ๋๋ฌธ์
IEEE ๋๋ ISO์ ์ ํํ ๊ตฌํ์ ์์กดํ๋ ํ๋ก๊ทธ๋จ์ ๋ํ ์๋ชป๋ ์ถ๋ ฅ
์ํ ํจ์์ ๋ํ ๊ท์น/์ฌ์. ๊ทธ๋ฌ๋ ๋ ๋น ๋ฅธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฌ์์ ๋ณด์ฆ์ด ํ์ํ์ง ์์ ํ๋ก๊ทธ๋จ.
-fno-์ํ-errno
๋จ์ผ๋ก ์คํ๋๋ ์ํ ํจ์๋ฅผ ํธ์ถํ ํ "errno"๋ฅผ ์ค์ ํ์ง ๋ง์ญ์์ค.
๋ช ๋ น(์: "sqrt"). ์ํ ์ค๋ฅ์ ๋ํ IEEE ์์ธ์ ์์กดํ๋ ํ๋ก๊ทธ๋จ
์ฒ๋ฆฌ๋ IEEE ์ฐ์ ์ ์ ์งํ๋ฉด์ ์๋๋ฅผ ์ํด ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ ์ ์์ต๋๋ค.
ํธํ์ฑ.
์ด ์ต์ ์ ์ด๋ค ์ฌ๋๋ ์ผ์ ธ ์์ง ์์ต๋๋ค. -O ์๋ชป๋ ์ถ๋ ฅ์ ์ด๋ํ ์ ์์ผ๋ฏ๋ก ์ต์
IEEE ๋๋ ISO์ ์ ํํ ๊ตฌํ์ ์์กดํ๋ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ
์ํ ํจ์์ ๋ํ ๊ท์น/์ฌ์. ๊ทธ๋ฌ๋ ๋ ๋น ๋ฅธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฌ์์ ๋ณด์ฆ์ด ํ์ํ์ง ์์ ํ๋ก๊ทธ๋จ.
๋ํดํธ๋ -fmath-errno.
Darwin ์์คํ ์์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ "errno"๋ฅผ ์ค์ ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ด์ ๊ฐ ์๋ค.
์ปดํ์ผ๋ฌ๊ฐ ๊ทธ๋ด ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํ๊ณ , -fno-์ํ-errno ์ด๋ค
ํ๋ง.
-์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ
(a) ์ธ์ ๋ฐ
๊ฒฐ๊ณผ๊ฐ ์ ํจํ๊ณ (b) IEEE ๋๋ ANSI ํ์ค์ ์๋ฐํ ์ ์์ต๋๋ค. ๋งํฌ ํ์์ ์ฌ์ฉํ๋ฉด,
๊ธฐ๋ณธ FPU ์ ์ด ๋จ์ด๋ฅผ ๋ณ๊ฒฝํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ์์ ํ์ผ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
๋ค๋ฅธ ์ ์ฌํ ์ต์ ํ.
์ด ์ต์ ์ ์ด๋ค ์ฌ๋๋ ์ผ์ ธ ์์ง ์์ต๋๋ค. -O ์๋ชป๋ ์ถ๋ ฅ์ ์ด๋ํ ์ ์์ผ๋ฏ๋ก ์ต์
IEEE ๋๋ ISO์ ์ ํํ ๊ตฌํ์ ์์กดํ๋ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ
์ํ ํจ์์ ๋ํ ๊ท์น/์ฌ์. ๊ทธ๋ฌ๋ ๋ ๋น ๋ฅธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฌ์์ ๋ณด์ฆ์ด ํ์ํ์ง ์์ ํ๋ก๊ทธ๋จ. ํ์ฑํ
-fno ๋ถํธ ์๋ XNUMX, -fno ํธ๋ํ ์ํ, -์ฐ๊ด ์ํ and - ๋ถ์ ์ํ.
๋ํดํธ๋ -fno-์์ ํ์ง ์์-์ํ ์ต์ ํ.
-์ฐ๊ด ์ํ
์ผ๋ จ์ ๋ถ๋ ์์์ ์ฐ์ฐ์์ ํผ์ฐ์ฐ์์ ์ฌ์ฐ๊ฒฐ์ ํ์ฉํฉ๋๋ค. ์ด๊ฒ
๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณ๊ฒฝํ์ฌ ISO C ๋ฐ C++ ์ธ์ด ํ์ค์ ์๋ฐํ ์ ์์ต๋๋ค.
์ฐธ๊ณ : ์ฌ์ ๋ ฌ์ XNUMX์ ๋ถํธ๋ฅผ ๋ณ๊ฒฝํ๊ณ NaN์ ๋ฌด์ํ๊ณ ๊ธ์ง ๋๋
์ธ๋ํ๋ก ๋๋ ์ค๋ฒํ๋ก ์์ฑ(๋ฐ๋ผ์ ๋ฐ์ฌ๋ฆผ์ ์์กดํ๋ ์ฝ๋์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
"(x + 2**52) - 2**52"์ ๊ฐ์ ๋์. ๋ํ ๋ถ๋ ์์์ ๋น๊ต๋ฅผ ์ฌ์ ๋ ฌํ๊ณ
๋ฐ๋ผ์ ์์ ๋น๊ต๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์ต์ ์๋ ๋ค์์ด ํ์ํฉ๋๋ค.
๋ -fno ๋ถํธ ์๋ XNUMX and -fno ํธ๋ํ ์ํ ์ ํจํ๋ค. ๊ฒ๋ค๊ฐ ํ์ง ์๋๋ค.
๋ง์ ์๋ฏธ - ๋ฐ์ฌ๋ฆผ ์ํ. Fortran์ ๊ฒฝ์ฐ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์๋์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
๋ -fno ๋ถํธ ์๋ XNUMX and -fno ํธ๋ํ ์ํ ์ ํจํฉ๋๋ค.
๋ํดํธ๋ -fno ์ฐ๊ด ์ํ.
- ๋ถ์ ์ํ
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ฐ์ผ๋ก ๋๋๋ ๋์ ๊ฐ์ ์ญ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ต์ ํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "x / y"๋ "x * (1/y)"๋ก ๋์ฒด๋ ์ ์์ต๋๋ค.
"(1/y)"๊ฐ ๊ณตํต ํ์ ํํ์ ์ ๊ฑฐ ๋์์ธ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค. ์ด
์ ๋ฐ๋๋ฅผ ์๊ณ ๊ฐ์์ ์๋ํ๋ ํ๋กญ ์๋ฅผ ๋๋ฆฝ๋๋ค.
๋ํดํธ๋ -fno-์ญ์-์ํ.
- ์ ํ ์ํ ์ ์ฉ
์ธ์ ๋ฐ
๊ฒฐ๊ณผ๋ NaN ๋๋ +-Infs๊ฐ ์๋๋๋ค.
์ด ์ต์ ์ ์ด๋ค ์ฌ๋๋ ์ผ์ ธ ์์ง ์์ต๋๋ค. -O ์๋ชป๋ ์ถ๋ ฅ์ ์ด๋ํ ์ ์์ผ๋ฏ๋ก ์ต์
IEEE ๋๋ ISO์ ์ ํํ ๊ตฌํ์ ์์กดํ๋ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ
์ํ ํจ์์ ๋ํ ๊ท์น/์ฌ์. ๊ทธ๋ฌ๋ ๋ ๋น ๋ฅธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฌ์์ ๋ณด์ฆ์ด ํ์ํ์ง ์์ ํ๋ก๊ทธ๋จ.
๋ํดํธ๋ -fno-finite-math-only.
-fno ๋ถํธ ์๋ XNUMX
XNUMX์ ๋ถํธ๋ฅผ ๋ฌด์ํ๋ ๋ถ๋ ์์์ ์ฐ์ ์ ๋ํ ์ต์ ํ๋ฅผ ํ์ฉํฉ๋๋ค.
IEEE ์ฐ์ ์ ๊ณ ์ ํ +0.0 ๋ฐ -0.0 ๊ฐ์ ๋์์ ์ง์ ํฉ๋๋ค.
x+0.0 ๋๋ 0.0*x์ ๊ฐ์ ํํ์์ ๋จ์ํ๋ฅผ ๊ธ์งํฉ๋๋ค.
- ์ ํ ์ํ ์ ์ฉ). ์ด ์ต์ ์ XNUMX ๊ฒฐ๊ณผ์ ๋ถํธ๊ฐ
์ค์ํ.
๋ํดํธ๋ -f๋ถํธ๊ฐ ๋ถ์ XNUMX.
-fno ํธ๋ํ ์ํ
๋ถ๋ ์์์ ์ฐ์ฐ์ด ์ฌ์ฉ์์๊ฒ ํ์๋๋ ๊ฒ์ ์์ฑํ ์ ์๋ค๊ณ ๊ฐ์ ํ๋ ์ปดํ์ผ ์ฝ๋
ํธ๋ฉ. ์ด๋ฌํ ํธ๋ฉ์๋ XNUMX์ผ๋ก ๋๋๊ธฐ, ์ค๋ฒํ๋ก, ์ธ๋ํ๋ก, ๋ถ์ ํํ ๊ฒฐ๊ณผ ๋ฐ
์๋ชป๋ ์์ . ์ด ์ต์ ์๋ ๋ค์์ด ํ์ํฉ๋๋ค. -fno-์๊ทธ๋๋ง-nans ์ ํจํ๋ค.
์ด ์ต์ ์ ์ค์ ํ๋ฉด "๋ ผ์คํฑ" IEEE ์ฐ์ ์ ์์กดํ๋ ๊ฒฝ์ฐ ๋ ๋น ๋ฅธ ์ฝ๋๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด.
์ด ์ต์ ์ ์ ๋๋ก ์ผ์๋ ์ ๋ฉ๋๋ค. -O ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์์ผ๋ฏ๋ก ์ต์
IEEE ๋๋ ISO์ ์ ํํ ๊ตฌํ์ ์์กดํ๋ ํ๋ก๊ทธ๋จ์ ๋ํ ์๋ชป๋ ์ถ๋ ฅ
์ํ ํจ์์ ๋ํ ๊ท์น/์ฌ์.
๋ํดํธ๋ -ํ๋ํ-์ํ.
- ๋ฐ์ฌ๋ฆผ ์ํ
๊ธฐ๋ณธ ๋ถ๋ ์์์ ๋ฐ์ฌ๋ฆผ์ ๊ฐ์ ํ๋ ๋ณํ ๋ฐ ์ต์ ํ ๋นํ์ฑํ
ํ๋. ์ด๊ฒ์ ๋ชจ๋ ๋ถ๋ ์์์ ์์ ์ ์๋ก์ ๋ณํ์ ๋ํด XNUMX์ผ๋ก ๋ฐ์ฌ๋ฆผ๋๋ฉฐ,
๋ค๋ฅธ ๋ชจ๋ ์ฐ์ ์ ๋จ์ ๋ํด ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ผ๋ก ๋ฐ์ฌ๋ฆผํฉ๋๋ค. ์ด ์ต์ ์
FP ๋ฐ์ฌ๋ฆผ ๋ชจ๋๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ๊ฑฐ๋
๊ธฐ๋ณธ์ด ์๋ ๋ฐ์ฌ๋ฆผ ๋ชจ๋๋ก ์คํ๋ฉ๋๋ค. ์ด ์ต์ ์
์ปดํ์ผ ์ ๋ถ๋ ์์์ ํํ์(๋ฐ์ฌ๋ฆผ ๋ชจ๋์ ์ํฅ์ ๋ฐ์ ์ ์์)
๋ฐ ๋ถํธ ์ข ์ ์กด์ฌ ์ ์์ ํ์ง ์์ ์ฐ์ ๋ณํ
๋ฐ์ฌ๋ฆผ ๋ชจ๋.
๋ํดํธ๋ -fno ๋ฐ์ฌ๋ฆผ ์ํ.
์ด ์ต์ ์ ์คํ์ ์ด๋ฉฐ ํ์ฌ ๋ชจ๋ GCC ๋นํ์ฑํ๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค.
๋ฐ์ฌ๋ฆผ ๋ชจ๋์ ์ํฅ์ ๋ฐ๋ ์ต์ ํ GCC์ ํฅํ ๋ฒ์ ์ ๋ค์์ ์ ๊ณตํ ์ ์์ต๋๋ค.
C99์ "FENV_ACCESS" pragma๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์ค์ ์ ๋ฏธ์ธํ๊ฒ ์ ์ดํฉ๋๋ค. ์ด ๋ช ๋ น์ค
์ต์ ์ "FENV_ACCESS"์ ๊ธฐ๋ณธ ์ํ๋ฅผ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
-fsignaling-nans
IEEE ์๊ทธ๋๋ง NaN์ด ๋์ ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ํธ๋ฉ์ ์์ฑํ ์ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ฝ๋๋ฅผ ์ปดํ์ผํ์ญ์์ค.
๋ถ๋ ์์์ ์ฐ์ฐ. ์ด ์ต์ ์ ์ค์ ํ๋ฉด ๋ณ๊ฒฝ๋ ์ ์๋ ์ต์ ํ๊ฐ ๋นํ์ฑํ๋ฉ๋๋ค.
์ ํธ NaN์ผ๋ก ๋ณผ ์ ์๋ ์์ธ์ ์์ ๋๋ค. ์ด ์ต์ ์ ๋ค์์ ์๋ฏธํฉ๋๋ค.
-ํ๋ํ-์ํ.
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก "__SUPPORT_SNAN__"์ด ์ ์๋ฉ๋๋ค.
๋ํดํธ๋ -fno-์๊ทธ๋๋ง-nans.
์ด ์ต์ ์ ์คํ์ ์ด๋ฉฐ ํ์ฌ ๋ชจ๋ GCC ๋นํ์ฑํ๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค.
์ ํธ NaN ๋์์ ์ํฅ์ ์ฃผ๋ ์ต์ ํ.
-fsingle-precision-์์
์์์ ์ผ๋ก ๋ณํํ๋ ๋์ ๋ถ๋ ์์์ ์์๋ฅผ ๋จ์ ๋ฐ๋๋ก ์ฒ๋ฆฌํฉ๋๋ค.
๋ฐฐ์ ๋ฐ๋ ์์๋ก ๋ณํํฉ๋๋ค.
-fcx ์ ํ ๋ฒ์
ํ์ฑํ๋๋ฉด ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ฒ์ ์ถ์ ๋จ๊ณ๊ฐ ํ์ํ์ง ์์์ ๋ํ๋ ๋๋ค.
๋ณต์กํ ๋ถํ ์ ์ํํฉ๋๋ค. ๋ํ ๊ฒฐ๊ณผ์ ๋ํ ํ์ธ์ด ์์ต๋๋ค.
๋ณต์กํ ๊ณฑ์ ๋๋ ๋๋์ ์ "NaN + I*NaN"์ด๋ฉฐ,
๊ทธ ๊ฒฝ์ฐ์ ์ํฉ. ๊ธฐ๋ณธ๊ฐ์ -fno-cx-์ ํ๋ ๋ฒ์์ ์ํด ํ์ฑํ๋์ง๋ง
-๋น ๋ฅธ ์ํ.
์ด ์ต์ ์ ISO C99 "CX_LIMITED_RANGE" pragma์ ๊ธฐ๋ณธ ์ค์ ์ ์ ์ดํฉ๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ด ์ต์ ์ ๋ชจ๋ ์ธ์ด์ ์ ์ฉ๋ฉ๋๋ค.
-fcx-fortran-๊ท์น
๋ณต์กํ ๊ณฑ์ ๊ณผ ๋๋์ ์ Fortran ๊ท์น์ ๋ฐ๋ฆ ๋๋ค. ๋ฒ์ ๊ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ํ๋ฉ๋๋ค.
๋ณต์กํ ๋ถํ ์ ์ผ๋ถ์ด์ง๋ง ๋ณต์กํ ๋ถํ ์ ๊ฒฐ๊ณผ๊ฐ
๊ณฑ์ ๋๋ ๋๋์ ์ "NaN + I*NaN"์ด๋ฉฐ ์ํฉ์ ๊ตฌํ๋ ค๋ ์๋์ ๋๋ค.
๊ทธ ๊ฒฝ์ฐ.
๋ํดํธ๋ -fno-cx-fortran-๊ท์น.
๋ค์ ์ต์ ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ง๋ง ๊ทธ๋ ์ง ์์ ์ต์ ํ๋ฅผ ์ ์ดํฉ๋๋ค.
๋๊ตฌ์ ์ํด ํ์ฑํ -O ์ต์ . ์ด ์น์ ์๋ ๋ค์์ ์์ฑํ ์ ์๋ ์คํ์ ์ต์ ์ด ํฌํจ๋์ด ์์ต๋๋ค.
๊นจ์ง ์ฝ๋.
-f๋ถ๊ธฐ ํ๋ฅ
๋ก ์ปดํ์ผ๋ ํ๋ก๊ทธ๋จ์ ์คํํ ํ -fprofile-ํธ, ๋ ๋ฒ์งธ๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค.
์ฌ์ฉ -f๋ถ๊ธฐ ํ๋ฅ , ํ์์ ๋ฐ๋ผ ์ต์ ํ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด
๊ฐ ์ง์ ์ ๊ฐ์ ธ๊ฐ๋ค. ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ ๋ -fprofile-ํธ ์ข ๋ฃ, ์ ์ฅ
ํธ ์คํ์ ๋ค์๊ณผ ๊ฐ์ ํ์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค. ์์ค ์ด๋ฆ.gcda ๊ฐ ์์ค ํ์ผ์ ๋ํด NS
์ด ๋ฐ์ดํฐ ํ์ผ์ ์ ๋ณด๋ ์์ฑ๋
์ฝ๋์ด๋ฏ๋ก ๋ ๋ค์ ๋ํด ๋์ผํ ์์ค ์ฝ๋์ ๋์ผํ ์ต์ ํ ์ต์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํธ์ง.
์ -f๋ถ๊ธฐ ํ๋ฅ , GCC๋ REG_BR_PROB ๊ฐ๊ฐ์ ๋ํ ์ฐธ๊ณ JUMP_INSN and
CALL_INSN. ์ต์ ํ๋ฅผ ๊ฐ์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ฌ, ๊ทธ๋ค์ ๋ง ์ฌ์ฉ๋ฉ๋๋ค
ํ ๊ณณ์์: ์์ reorg.c, ๋ถ๊ธฐ๊ฐ ๊ฐ์ฅ ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ฒฝ๋ก๋ฅผ ์ถ์ธกํ๋ ๋์
๋ฐ์, REG_BR_PROB ๊ฐ์ ์ด๋ค ๊ฒฝ๋ก๊ฐ ๋ ๋ง์ด ์ฌ์ฉ๋๋์ง ์ ํํ๊ฒ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์์ฃผ.
-fprofile-๊ฐ
์ ๊ฒฐํฉํ๋ฉด -fprofile-ํธ, ์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ ๊ฐ์ ๋ํ ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ
ํ๋ก๊ทธ๋จ์ ํํ์ ์์งํฉ๋๋ค.
์ -f๋ถ๊ธฐ ํ๋ฅ , ํ๋กํ์ผ๋ง ๊ฐ์์ ์์งํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฝ์ต๋๋ค.
์ต์ ํ์ ์ฌ์ฉํ๊ธฐ ์ํ ํํ์์ ๋๋ค.
๋ค์์ผ๋ก ํ์ฑํ๋จ -fprofile ์์ฑ and -fprofile-์ฌ์ฉ.
-fvpt
์ ๊ฒฐํฉํ๋ฉด -fprofile-ํธ, ์ด ์ต์ ์ ์ปดํ์ผ๋ฌ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋๋ก ์ง์ํฉ๋๋ค.
ํํ์์ ๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ์์งํฉ๋๋ค.
์ -f๋ถ๊ธฐ ํ๋ฅ , ์์ง๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฝ๊ณ ์ค์ ๋ก ์ํํฉ๋๋ค.
์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ต์ ํํฉ๋๋ค. ํ์ฌ ์ต์ ํ์๋ ์ ๋ฌธํ๊ฐ ํฌํจ๋ฉ๋๋ค.
๋ถ๋ชจ ๊ฐ์ ๋ํ ์ง์์ ์ฌ์ฉํ๋ ๋๋์ ์ฐ์ฐ.
-frename ๋ ์ง์คํฐ
๋จ์ ์๋ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฝ๋ ์ฝ๋์์ ์๋ชป๋ ์ข ์์ฑ์ ํผํ๋ ค๊ณ ์๋ํฉ๋๋ค.
๋ ์ง์คํฐ ํ ๋น ํ ์ค๋ฒ. ์ด ์ต์ ํ๋ ๋ง์ ํ๋ก์ธ์์ ๊ฐ์ฅ ์ ๋ฆฌํฉ๋๋ค.
๋ ์ง์คํฐ์. ๋์์ด ์ฑํํ ๋๋ฒ๊ทธ ์ ๋ณด ํ์์ ๋ฐ๋ผ,
๊ทธ๋ฌ๋ ๋ณ์๊ฐ ๋ ์ด์ "ํ"์ ๋จธ๋ฌผ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ฒ๊น ์ด ๋ถ๊ฐ๋ฅํ ์ ์์ต๋๋ค.
๋ฑ๋กํ๋ค".
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -ํ๋กค ๋ฃจํ and -ํ ๋ฃจํ.
-์ถ์ ์
๊ผฌ๋ฆฌ ๋ณต์ ๋ฅผ ์ํํ์ฌ ์ํผ ๋ธ๋ก ํฌ๊ธฐ๋ฅผ ํ๋ํฉ๋๋ค. ์ด ๋ณํ์ ๋จ์ํ
๋ค๋ฅธ ์ต์ ํ๊ฐ ๋ ๋์ ์์ ์ ์ํํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ ์ ์ด ํ๋ฆ.
๋ค์์ผ๋ก ํ์ฑํ๋จ -fprofile-์ฌ์ฉ.
-ํ๋กค ๋ฃจํ
๋ฐ๋ณต ํ์๊ฐ ์ปดํ์ผ ์๊ฐ ๋๋ ์ปดํ์ผ ์๊ฐ์ ๊ฒฐ์ ๋ ์ ์๋ ๋ฃจํ๋ฅผ ํ๋๋ค.
๋ฃจํ ์ง์ . -ํ๋กค ๋ฃจํ ์๋ฏธํ๋ค -frerun-cse-ํ-๋ฃจํ, -fweb and
-frename ๋ ์ง์คํฐ. ๋ํ ์์ ํ ๋ฃจํ ํ๋ง(์ฆ,
๋ฐ๋ณต ํ์๊ฐ ์ ์ ๋ฃจํ). ์ด ์ต์ ์ ์ฝ๋๋ฅผ ๋ ํฌ๊ฒ ๋ง๋ค๊ณ
๋ ๋น ๋ฅด๊ฒ ์คํํ ์๋ ์๊ณ ๊ทธ๋ ์ง ์์ ์๋ ์์ต๋๋ค.
๋ค์์ผ๋ก ํ์ฑํ๋จ -fprofile-์ฌ์ฉ.
-Funroll-All-๋ฃจํ
๋ฃจํ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๋ ๋ฐ๋ณต ํ์๊ฐ ๋ถํ์คํ๋๋ผ๋ ๋ชจ๋ ๋ฃจํ๋ฅผ ํ๋๋ค.
๋ค์ด๊ฐ๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ๋ ๋๋ฆฌ๊ฒ ์คํ๋ฉ๋๋ค. -Funroll-All-๋ฃจํ ๋ฅผ ์๋ฏธํ๋ค
๊ฐ์ ์ต์ -ํ๋กค ๋ฃจํ.
-ํ ๋ฃจํ
๋ง์ด ๋กค๋ง๋์ง ์๋ ์ถฉ๋ถํ ์ ๋ณด๊ฐ ์๋ ๋ฃจํ๋ฅผ ๋ฒ๊น๋๋ค(
ํ๋กํ ํผ๋๋ฐฑ). ๋ํ ์์ ํ ๋ฃจํ ํ๋ง(์ฆ,
๋ฐ๋ณต ํ์๊ฐ ์ ์ ๋ฃจํ).
๋ค์์ผ๋ก ํ์ฑํ๋จ -fprofile-์ฌ์ฉ.
-fmove-loop-๋ถ๋ณ
RTL ๋ฃจํ ์ตํฐ๋ง์ด์ ์์ ๋ฃจํ ๋ถ๋ณ ๋ชจ์ ํจ์ค๋ฅผ ํ์ฑํํฉ๋๋ค. ์์ค์์ ํ์ฑํ๋จ
-O1
-ํ์ค์์น ๋ฃจํ
๋ฃจํ ๋ถ๋ณ ์กฐ๊ฑด์ด ์๋ ๋ถ๊ธฐ๋ฅผ ๋ฃจํ ์ธ๋ถ๋ก ์ด๋ํฉ๋๋ค.
๋ ๊ฐ์ง์ ๋ฃจํ(์กฐ๊ฑด์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์์ ๋จ).
-ffunction-์น์
-fdata ์น์
๋์์ด
์์์ ์น์ ์ ์ง์ํฉ๋๋ค. ํจ์ ์ด๋ฆ ๋๋ ๋ฐ์ดํฐ ํญ๋ชฉ ์ด๋ฆ
์ถ๋ ฅ ํ์ผ์์ ์น์ ์ ์ด๋ฆ์ ๊ฒฐ์ ํฉ๋๋ค.
๋ง์ปค๊ฐ ์ต์ ํ๋ฅผ ์ํํ์ฌ ๊ฐ์ ํ ์ ์๋ ์์คํ ์์ ์ด ์ต์ ์ ์ฌ์ฉํ์ญ์์ค.
๋ช ๋ น ๊ณต๊ฐ์์ ์ฐธ์กฐ์ ์์น. ELF ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ์์คํ
ํ์ ๋ฐ Solaris 2๋ฅผ ์คํํ๋ SPARC ํ๋ก์ธ์์๋ ์ด๋ฌํ ์ต์ ํ๊ฐ ํฌํจ๋ ๋ง์ปค๊ฐ ์์ต๋๋ค.
AIX๋ ๋ฏธ๋์ ์ด๋ฌํ ์ต์ ํ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
๊ทธ๋ ๊ฒ ํจ์ผ๋ก์จ ์๋นํ ์ด์ ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ด ์ต์ ์ ์ฌ์ฉํ์ญ์์ค. ๋๋ฅผ
์ด๋ฌํ ์ต์ ์ ์ง์ ํ๋ฉด ์ด์ ๋ธ๋ฌ์ ๋ง์ปค๊ฐ ๋ ํฐ ๊ฐ์ฒด์ ์คํ ํ์ผ์ ๋ง๋ญ๋๋ค.
ํ์ผ๋ ๋๋ ค์ง๋๋ค. ์ด๊ฒ์ ์ง์ ํ๋ฉด ๋ชจ๋ ์์คํ ์์ "gprof"๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ต์ ์ด๋ฉฐ ์ด ์ต์ ๊ณผ
-g.
-fbranch-๋์-๋ก๋-์ต์ ํ
ํ๋กค๋ก๊ทธ/์ํ๋ก๊ทธ ์ค๋ ๋ฉ ์ ์ ๋ถ๊ธฐ ๋์ ๋ ์ง์คํฐ ๋ก๋ ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค.
๋์ ๋ ์ง์คํฐ์ ์ฌ์ฉ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ๋ก๋ํ๋ ๋์์๋ง ๋ ธ์ถ๋ ์ ์์ผ๋ฏ๋ก ํธ์ด์คํ
๋ฃจํ ๋ฐ์ผ๋ก ๋ก๋ํ๊ณ ๋ธ๋ก ๊ฐ ์ค์ผ์ค๋ง์ ์ํํ๋ ค๋ฉด ๋ณ๋์ ์ต์ ํ๊ฐ ํ์ํฉ๋๋ค.
ํจ์ค.
-fbranch-๋์-๋ก๋-์ต์ ํ2
ํ๋กค๋ก๊ทธ/์ํ๋ก๊ทธ ์ค๋ ๋ฉ ํ ๋ถ๊ธฐ ๋์ ๋ ์ง์คํฐ ๋ก๋ ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค.
-fbtr-bb-๋ ์
๋ถ๊ธฐ ๋์ ๋ ์ง์คํฐ ๋ก๋ ์ต์ ํ๋ฅผ ์ํํ ๋ ๋ถ๊ธฐ ๋์์ ์ฌ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
๋ชจ๋ ๊ธฐ๋ณธ ๋ธ๋ก ๋ด์์ ๋ฑ๋กํฉ๋๋ค.
-fstack ๋ณดํธ๊ธฐ
์คํ ์ค๋งค์ฑ ๊ณต๊ฒฉ๊ณผ ๊ฐ์ ๋ฒํผ ์ค๋ฒํ๋ก๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ถ๊ฐ ์ฝ๋๋ฅผ ๋ด๋ณด๋ ๋๋ค. ์ด๊ฒ
์ทจ์ฝํ ๊ฐ์ฒด๊ฐ ์๋ ํจ์์ ๊ฐ๋ ๋ณ์๋ฅผ ์ถ๊ฐํ์ฌ ์ํ๋ฉ๋๋ค. ์ด๊ฒ
"alloca"๋ฅผ ํธ์ถํ๋ ํจ์์ 8๋ฐ์ดํธ๋ณด๋ค ํฐ ๋ฒํผ๊ฐ ์๋ ํจ์๋ฅผ ํฌํจํฉ๋๋ค.
๊ฐ๋๋ ํจ์๊ฐ ์ ๋ ฅ๋ ๋ ์ด๊ธฐํ๋๊ณ
๊ธฐ๋ฅ์ด ์ข ๋ฃ๋ฉ๋๋ค. ๊ฐ๋ ์ฒดํฌ๊ฐ ์คํจํ๋ฉด ์ค๋ฅ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๊ณ ํ๋ก๊ทธ๋จ์ด
์ถ๊ตฌ.
์ฐธ๊ณ : Ubuntu 6.10 ์ด์ ๋ฒ์ ์์๋ ์ด ์ต์ ์ด ๊ธฐ๋ณธ์ ์ผ๋ก C, C++,
ObjC, ObjC++, ํด๋น ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ -fno-์คํ ๋ณดํธ๊ธฐ, -nostdlib,๋ ์๋๋ค -ํ๋ฆฌ์คํ ๋ฉ are
๋ น์ด๋ค.
-fstack-ํ๋กํ ํฐ-all
์ฒ๋ผ -fstack ๋ณดํธ๊ธฐ ๋ชจ๋ ๊ธฐ๋ฅ์ด ๋ณดํธ๋๋ค๋ ์ ์ ์ ์ธํ๊ณ .
-f์น์ ์ต์ปค
๊ณต์ "์ต์ปค"๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐํธ ์ฃผ์ ๊ณ์ฐ์ ์๋ฅผ ์ค์ด์ญ์์ค.
์ฃผ๋ณ ๋ฌผ์ฒด๋ฅผ ๋ํ๋ด๋ ๊ธฐํธ. ์ด ๋ณํ์ ์ซ์๋ฅผ ์ค์ด๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ผ๋ถ ๋์์ ๋ํ GOT ํญ๋ชฉ ๋ฐ GOT ์ก์ธ์ค ์.
์๋ฅผ ๋ค์ด ๋ค์ ํจ์ "foo"์ ๊ตฌํ:
์ ์ int, b, c;
int foo (void) { return + b + c; }
์ผ๋ฐ์ ์ผ๋ก ์ธ ๋ณ์ ๋ชจ๋์ ์ฃผ์๋ฅผ ๊ณ์ฐํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ์ปดํ์ผํ๋ฉด
-f์น์ ์ต์ปค, ๋์ ๊ณตํต ์ต์ปค ํฌ์ธํธ์์ ๋ณ์์ ์ก์ธ์คํฉ๋๋ค. NS
ํจ๊ณผ๋ ๋ค์ ์์ฌ ์ฝ๋(์ ํจํ C๊ฐ ์๋)์ ์ ์ฌํฉ๋๋ค.
int foo(๋ฌดํจ)
{
๋ ์ง์คํฐ int *xr = &x;
๋ฐํ xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
}
๋ชจ๋ ๋์์ด ์ด ์ต์ ์ ์ง์ํ๋ ๊ฒ์ ์๋๋๋ค.
--๋งค๊ฐ๋ณ์ name=๊ฐ์น
์ด๋ค ๊ณณ์์๋ GCC๊ฐ ๋ค์ํ ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ํ์ ์์ ์ ์ดํฉ๋๋ค.
์ํ. ์๋ฅผ ๋ค์ด, GCC๋ ํน์ ์ด์์ ํฌํจํ๋ ํจ์๋ฅผ ์ธ๋ผ์ธํ์ง ์์ต๋๋ค.
์ง์์ ์. ๋ช ๋ น์ค์์ ์ด๋ฌํ ์์ ์ค ์ผ๋ถ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
๋ฅผ ์ฌ์ฉํ์ฌ --๋งค๊ฐ๋ณ์ ์ต์ ์ ์ ํํฉ๋๋ค.
ํน์ ๋งค๊ฐ๋ณ์์ ์ด๋ฆ๊ณผ ๊ฐ์ ์๋ฏธ๋
์ปดํ์ผ๋ฌ์ ๋ด๋ถ์ด๋ฉฐ ํฅํ ์๊ณ ์์ด ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
์ถ์.
๊ฐ๊ฐ์ ๊ฒฝ์ฐ, ๊ฐ์น ์ ์์ ๋๋ค. ํ์ฉ๋๋ ์ ํ name ์์น :
์์ธก ๊ฐ๋ฅํ ๋ถ๊ธฐ ๊ฒฐ๊ณผ
์ด ์๊ณ๊ฐ๋ณด๋ค ๋ฎ์ ํ๋ฅ ๋ก ๋ถ๊ธฐ๋ฅผ ์ทจํ ๊ฒ์ผ๋ก ์์๋๋ ๊ฒฝ์ฐ
(๋ฐฑ๋ถ์จ๋ก), ์ ์์ธก ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
์ต๋ ํฌ๋ก์ค ์ ํ ์์ง
๊ต์ฐจ ์ ํ๋ฅผ ์ํด ๊ณ ๋ คํ ์ต๋ ๋ค์ด์ค๋ ๊ฐ์ฅ์๋ฆฌ ์์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ
์ ์ํด ์ฌ์ฉ๋๋ -ํฌ๋ก์ค์ ํ ๊ฐ ๋ธ๋ก์ผ๋ก ๋ค์ด์ค๋ ์์ง์ ์๋ O(N^2)์ ๋๋ค.
๊ฐ์ ๋๋ฆฌ๋ฉด ์ต์ ํ๊ฐ ๋ ์ ๊ทน์ ์ผ๋ก ์ํ๋์ด ์ปดํ์ผ ์๊ฐ์ด ๋์ด๋ฉ๋๋ค.
์คํ ํ์ผ ํฌ๊ธฐ๊ฐ ์ฝ๊ฐ ๊ฐ์ ๋๋ฉด ์ฆ๊ฐํฉ๋๋ค.
min-crossjump-inns
๋ ๋ธ๋ก์ ๋์์ ์ผ์นํด์ผ ํ๋ ์ต์ ๋ช ๋ น์ด ์
ํฌ๋ก์ค ์ ํ๊ฐ ์ํ๋๊ธฐ ์ ์. ์ด ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ฌด์๋ฉ๋๋ค.
์ฌ๊ธฐ์ ๊ต์ฐจ ์ ํ๋๋ ๋ธ๋ก์ ๋ชจ๋ ๋ช ๋ น์ด๊ฐ ์ผ์นํฉ๋๋ค. NS
๊ธฐ๋ณธ๊ฐ์ 5์ ๋๋ค.
์ต๋ ์ฑ์ฅ ๋ณต์ฌ-bb-insns
๋์ ๊ธฐ๋ณธ ๋ธ๋ก์ ๋ณต์ฌํ ๋ ์ต๋ ์ฝ๋ ํฌ๊ธฐ ํ์ฅ ๊ณ์
์ ํ. ํ์ฅ์ ์ ํ ๋ช ๋ น์ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
8.
์ต๋-๊ณ ํ -์ค๋ณต-insns
๋ก ์ ํํ๋ ๋ธ๋ก์ ๋ณต์ ํ ์ต๋ ๋ช ๋ น์ด ์
๊ณ์ฐ๋ ๊ณ ํ . ์ฌ๋ฌ ํจ์ค์์ O(N^2) ๋์์ ํผํ๊ธฐ ์ํด GCC ์์ธ
์ปดํ์ผ ํ๋ก์ธ์ค ์ด๊ธฐ์ goto๋ฅผ ๊ณ์ฐํ๊ณ ์ต๋ํ ๋ฆ๊ฒ ๋ถํดํฉ๋๋ค.
๊ฐ๋ฅํ. ์ต๋๊ฐ ์ดํ์ ๊ธฐ๋ณธ ๋ธ๋ก ๋์์๋ง ๊ณ์ฐ๋ ์ ํ
goto-duplication-insns๋ ํฉํฐ๋ง๋์ง ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 8์ ๋๋ค.
์ต๋ ์ง์ฐ-์ฌ๋กฏ-insn-๊ฒ์
๋ช ๋ น์ ์ฐพ์ ๋ ๊ณ ๋ คํด์ผ ํ ์ต๋ ๋ช ๋ น ์
์ง์ฐ ์ฌ๋กฏ์ ์ฑ์๋๋ค. ์ด ์์์ ๋ช ๋ น ์๋ณด๋ค ๋ง์ ๊ฒฝ์ฐ
๊ฒ์ํ๋ฉด ์ง์ฐ ์ฌ๋กฏ์ ์ฑ์ฐ๋ ๋ฐ ๋ฐ๋ฅธ ์๊ฐ ์ ์ฝ์ด ์ต์ํ๋๋ฏ๋ก ์ค์งํ์ญ์์ค.
์์. ๊ฐ์ ๋์ด๋ฉด ๋ ์ ๊ทน์ ์ธ ์ต์ ํ๋ฅผ ์๋ฏธํ๋ฏ๋ก
์คํ ์๊ฐ์ ์ฝ๊ฐ์ ๊ฐ์ ์ผ๋ก ์ปดํ์ผ ์๊ฐ์ด ์ฆ๊ฐํฉ๋๋ค.
์ต๋ ์ง์ฐ ์ฌ๋กฏ ๋ผ์ด๋ธ ๊ฒ์
์ง์ฐ ์ฌ๋กฏ์ ์ฑ์ฐ๋ ค๊ณ ํ ๋ ๊ณ ๋ คํด์ผ ํ ์ต๋ ๋ช ๋ น ์
์ ํจํ ๋ผ์ด๋ธ ๋ ์ง์คํฐ ์ ๋ณด๊ฐ ์๋ ๋ธ๋ก์ ๊ฒ์ํ ๋. ์ด๊ฒ์ ์ฆ๊ฐ
์์๋ก ์ ํํ ๊ฐ์ ๋ณด๋ค ์ ๊ทน์ ์ธ ์ต์ ํ๋ฅผ ์๋ฏธํ๋ฉฐ,
์ปดํ์ผ ์๊ฐ. ์ง์ฐ ์ฌ๋กฏ ์ฝ๋๊ฐ ๋ค์๊ณผ ๊ฐ์ ๋ ์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ ๊ฑฐํด์ผ ํฉ๋๋ค.
์ ์ด ํ๋ฆ ๊ทธ๋ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด ๋ค์ ์์ฑ๋์์ต๋๋ค.
์ต๋ gcse ๋ฉ๋ชจ๋ฆฌ
์ํํ๊ธฐ ์ํด ํ ๋นํ ์ ์๋ ๋๋ต์ ์ธ ์ต๋ ๋ฉ๋ชจ๋ฆฌ ์
์ ์ญ ๊ณตํต ํ์ ํํ์ ์ ๊ฑฐ ์ต์ ํ. ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ ๋ง์ ๊ฒฝ์ฐ
์ง์ ๋ ํ์ ํญ๋ชฉ์ธ ๊ฒฝ์ฐ ์ต์ ํ๊ฐ ์ํ๋์ง ์์ต๋๋ค.
์ต๋ gcse ์ฝ์ ๋น์จ
์ญ์ ์ ๋ํ ํํ์ ์ฝ์ ์ ๋น์จ์ด ์ด ๊ฐ๋ณด๋ค ํด ๊ฒฝ์ฐ
์์์ ํํ์์ด ์๋ ๊ฒฝ์ฐ RTL PRE๊ฐ ํํ์์ ์ฝ์ ํ๊ฑฐ๋ ์ ๊ฑฐํ์ฌ ๊ทธ๋๋ก ๋ก๋๋ค.
๋ช ๋ น ์คํธ๋ฆผ์์ ๋ถ๋ถ์ ์ผ๋ก ์ค๋ณต๋ ๊ณ์ฐ. ๊ธฐ๋ณธ๊ฐ์
20.
์ต๋ ๋ณด๋ฅ ๋ชฉ๋ก ๊ธธ์ด
ํ๋ฌ์ํ๊ธฐ ์ ์ ์ค์ผ์ค๋ง์ด ํ์ฉํ๋ ์ต๋ ๋ณด๋ฅ ์ข ์์ฑ ์
ํ์ฌ ์ํ ๋ฐ ๋ค์ ์์ํฉ๋๋ค. ๋ถ๊ธฐ ๋๋ ํธ์ถ์ด ๊ฑฐ์ ์๋ ํฐ ํจ์๋
๋ถํ์ํ๊ฒ ๋ฉ๋ชจ๋ฆฌ์ ๋ฆฌ์์ค๋ฅผ ์๋นํ๋ ์ง๋์น๊ฒ ํฐ ๋ชฉ๋ก์ ๋ง๋ญ๋๋ค.
์ต๋ ๋ชจ๋๋ก ์ญ์ถ์ ์๋
๋ชจ๋๋ก์ผ ๋ ์ค์ผ์ค๋ฌ๊ฐ ์ํํด์ผ ํ๋ ์ต๋ ์ญ์ถ์ ์๋ ํ์
๋ฃจํ ์ค์ผ์ค๋ง. ๊ฐ์ด ํด์๋ก ์ปดํ์ผ ์๊ฐ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋ ์ ์์ต๋๋ค.
์ต๋ ์ธ๋ผ์ธ-insns-๋จ์ผ
์ฌ๋ฌ ๋งค๊ฐ๋ณ์๊ฐ GCC์์ ์ฌ์ฉ๋๋ ํธ๋ฆฌ ์ธ๋ผ์ด๋๋ฅผ ์ ์ดํฉ๋๋ค. ์ด ์ซ์๋
์ต๋ ๋ช ๋ น์ด ์(GCC์ ๋ด๋ถ ํํ์ผ๋ก ๊ณ์ฐ)
ํธ๋ฆฌ ์ธ๋ผ์ด๋๊ฐ ์ธ๋ผ์ด๋์ ์ํด ๊ณ ๋ คํ๋ ๋จ์ผ ํจ์. ์ด๊ฒ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค
์ธ๋ผ์ธ์ผ๋ก ์ ์ธ๋ ํจ์์ ํด๋์ค ์ ์ธ์์ ๊ตฌํ๋ ๋ฉ์๋(C++).
๊ธฐ๋ณธ๊ฐ์ 400์ ๋๋ค.
์ต๋ ์ธ๋ผ์ธ-insns-์๋
๋ ์ฌ์ฉ -finline-ํจ์ (ํฌํจ ๋ -O3), ๋ง์ ๊ธฐ๋ฅ
๊ทธ๋ ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ์์ ์ธ๋ผ์ธ์ผ๋ก ๊ณ ๋ ค๋์ง ์๋์ง ์กฐ์ฌํฉ๋๋ค. NS
์ด๋ฌํ ๊ธฐ๋ฅ, ๊ธฐ๋ฅ์ ๋นํด ๋ค๋ฅธ(๋ ์ ํ์ ์ธ) ์ ํ
์ ์ธ๋ ์ธ๋ผ์ธ์ ์ ์ฉํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 40์ ๋๋ค.
์ธ๋ผ์ธ ์ต์ ์๋ ํฅ์
ํธ์ถ์ + ํธ์ถ ์์ ์ ๋ฐํ์์ ์์ ์ฑ๋ฅ ํฅ์์ด ์ด๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ
์๊ณ๊ฐ(ํ์ฌ)์ ๋ํ ์ ํ์ ๊ด๊ณ์์ด ํจ์๋ฅผ ์ธ๋ผ์ธํ ์ ์์ต๋๋ค.
--๋งค๊ฐ๋ณ์ ์ต๋ ์ธ๋ผ์ธ-insns-๋จ์ผ and --๋งค๊ฐ๋ณ์ ์ต๋ ์ธ๋ผ์ธ-insns-์๋.
๋๊ธฐ๋ฅ ์ฌ๊ด
์ ๋ง ํฐ ๊ธฐ๋ฅ์ ์ง์ ํ๋ ์ ํ. ์ด ์ ํ๋ณด๋ค ํฐ ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ
์ธ๋ผ์ธ ํ ์ธ๋ผ์ธ์ ๋ค์์ผ๋ก ์ ํ๋ฉ๋๋ค. --๋งค๊ฐ๋ณ์ ํฐ ๊ธฐ๋ฅ ์ฑ์ฅ. ์ด
๋งค๊ฐ๋ณ์๋ ์ฃผ๋ก
๋ฐฑ์๋์์ ์ฌ์ฉํ๋ ์ ํ ์๊ณ ๋ฆฌ์ฆ. ๊ธฐ๋ณธ๊ฐ์ 2700์ ๋๋ค.
ํฐ ๊ธฐ๋ฅ ์ฑ์ฅ
์ธ๋ผ์ธ์ผ๋ก ์ธํ ๋ํ ํจ์์ ์ต๋ ์ฆ๊ฐ๋ฅผ ๋ฐฑ๋ถ์จ๋ก ์ง์ ํฉ๋๋ค. NS
๊ธฐ๋ณธ๊ฐ์ 100์ผ๋ก ํฐ ๊ธฐ๋ฅ ์ฆ๊ฐ๋ฅผ ์๋์ 2.0๋ฐฐ๋ก ์ ํํฉ๋๋ค.
ํฌ๊ธฐ.
๋ํ ์ฌ๊ด
ํฐ ๋ฒ์ญ ๋จ์๋ฅผ ์ง์ ํ๋ ์ ํ์ ๋๋ค. ๋จ์ ์ธ๋ผ์ธ์ผ๋ก ์ธํ ์ฑ์ฅ
์ด ์ ํ๋ณด๋ค ํฐ ๊ฒ์ ๋ค์์ผ๋ก ์ ํ๋ฉ๋๋ค. --๋งค๊ฐ๋ณ์ ์ธ๋ผ์ธ ๋จ์ ์ฑ์ฅ. ์ํ ์ ๋์ฉ
์ด๊ฒ์ ๋๋ฌด ๋นก๋นกํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํจ์ A๋ก ๊ตฌ์ฑ๋ ๋จ์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
๊ทธ๊ฒ์ ์ธ๋ผ์ธ์ด๊ณ B๋ A๋ฅผ ์ธ ๋ฒ ํธ์ถํฉ๋๋ค. B๊ฐ A์ ๋นํด ์๋ค๋ฉด,
๋จ์์ ์ฑ์ฅ์ 300\%์ด์ง๋ง ์ด๋ฌํ ์ธ๋ผ์ธ์ ๋งค์ฐ ์ ์์ ์ ๋๋ค. ๋งค์ฐ ํฐ ๊ฒฝ์ฐ
์ธ๋ผ์ธ ๊ฐ๋ฅํ ์์ ๊ธฐ๋ฅ์ผ๋ก ๊ตฌ์ฑ๋ ๋จ์, ๊ทธ๋ฌ๋ ์ ์ฒด ๋จ์ ์ฑ์ฅ
์ฝ๋ ํฌ๊ธฐ์ ๊ธฐํ๊ธ์์ ์ธ ํญ๋ฐ์ ํผํ๊ธฐ ์ํด ์ ํ์ด ํ์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ ์์
๋จ์, ํฌ๊ธฐ๊ฐ ๋ค์์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. --๋งค๊ฐ๋ณ์ ๋ํ ์ฌ๊ด ์ ์ฒญํ๊ธฐ ์ ์ --๋งค๊ฐ๋ณ์
์ธ๋ผ์ธ ๋จ์ ์ฑ์ฅ. ๊ธฐ๋ณธ๊ฐ์ 10000์ ๋๋ค.
์ธ๋ผ์ธ ๋จ์ ์ฑ์ฅ
์ธ๋ผ์ธ์ผ๋ก ์ธํ ์ปดํ์ผ ๋จ์์ ์ต๋ ์ ์ฒด ์ฆ๊ฐ๋ฅผ ์ง์ ํฉ๋๋ค. NS
๊ธฐ๋ณธ๊ฐ์ ๋จ์ ์ฆ๊ฐ๋ฅผ ์๋ ํฌ๊ธฐ์ 30๋ฐฐ๋ก ์ ํํ๋ 1.3์ ๋๋ค.
ipcp ๋จ์ ์ฑ์ฅ
ํ๋ก์์ ๊ฐ์ผ๋ก ์ธํ ์ปดํ์ผ ๋จ์์ ์ต๋ ์ ์ฒด ์ฆ๊ฐ๋ฅผ ์ง์ ํฉ๋๋ค.
์ง์์ ์ธ ์ ํ. ๊ธฐ๋ณธ๊ฐ์ 10์ด๋ฉฐ ๋จ์ ์ฑ์ฅ์ 1.1๋ก ์ ํํฉ๋๋ค.
์๋ ํฌ๊ธฐ์ ๋ฐฐ.
๋ํ ์คํ ํ๋ ์
ํฐ ์คํ ํ๋ ์์ ์ง์ ํ๋ ์ ํ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์ธ๋ผ์ธํ๋ ๋์
์ด ํ๊ณ๋ฅผ ๋๋ฌด ๋ง์ด ์ด๊ณผํ์ง ์๋๋ก. ๊ธฐ๋ณธ๊ฐ์ 256๋ฐ์ดํธ์ ๋๋ค.
๋ํ ์คํ ํ๋ ์ ์ฑ์ฅ
์ธ๋ผ์ธ์ผ๋ก ์ธํ ๋ํ ์คํ ํ๋ ์์ ์ต๋ ์ฆ๊ฐ๋ฅผ ๋ฐฑ๋ถ์จ๋ก ์ง์ ํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ 1000์ผ๋ก ํฐ ์คํ ํ๋ ์ ์ฆ๊ฐ๋ฅผ 11๋ฐฐ๋ก ์ ํํฉ๋๋ค.
์๋ ํฌ๊ธฐ.
์ต๋ ์ธ๋ผ์ธ-insns-์ฌ๊ท
์ต๋ ์ธ๋ผ์ธ-insns-์ฌ๊ท-์๋
์์ฒด ๋ณต์ฌ๋ณธ์ ์ต๋ ๋ช ๋ น ์๋ฅผ ์ง์ ํฉ๋๋ค.
์ฌ๊ท ์ธ๋ผ์ธ ํจ์๋ ์ฌ๊ท ์ธ๋ผ์ธ์ ์ํํ์ฌ ์ฑ์ฅํ ์ ์์ต๋๋ค.
์ธ๋ผ์ธ์ผ๋ก ์ ์ธ๋ ํจ์์ ๊ฒฝ์ฐ, --๋งค๊ฐ๋ณ์ ์ต๋ ์ธ๋ผ์ธ-insns-์ฌ๊ท ์ ์ทจํด์ง๋ค
๊ณ์ . ์ธ๋ผ์ธ์ผ๋ก ์ ์ธ๋์ง ์์ ํจ์์ ๊ฒฝ์ฐ ์ฌ๊ท ์ธ๋ผ์ธ์ ๋ค์ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๋ค.
-finline-ํจ์ (ํฌํจ ๋ -O3)์ด ํ์ฑํ๋๊ณ --๋งค๊ฐ๋ณ์ ์ต๋-์ธ๋ผ์ธ-insns-
์ฌ๊ท ์๋ ์ฌ์ฉ. ๊ธฐ๋ณธ๊ฐ์ 450์ ๋๋ค.
์ต๋ ์ธ๋ผ์ธ ์ฌ๊ท ๊น์ด
์ต๋ ์ธ๋ผ์ธ ์ฌ๊ท ๊น์ด ์๋
์ฌ๊ท ์ธ๋ผ์ธ์ ์ฌ์ฉ๋๋ ์ต๋ ์ฌ๊ท ๊น์ด๋ฅผ ์ง์ ํฉ๋๋ค.
์ธ๋ผ์ธ์ผ๋ก ์ ์ธ๋ ํจ์์ ๊ฒฝ์ฐ, --๋งค๊ฐ๋ณ์ ์ต๋ ์ธ๋ผ์ธ ์ฌ๊ท ๊น์ด ์ ์ทจํด์ง๋ค
๊ณ์ . ์ธ๋ผ์ธ์ผ๋ก ์ ์ธ๋์ง ์์ ํจ์์ ๊ฒฝ์ฐ ์ฌ๊ท ์ธ๋ผ์ธ์ ๋ค์ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๋ค.
-finline-ํจ์ (ํฌํจ ๋ -O3)์ด ํ์ฑํ๋๊ณ --๋งค๊ฐ๋ณ์ ์ต๋ ์ธ๋ผ์ธ ์ฌ๊ท
๊น์ด ์๋ ์ฌ์ฉ. ๊ธฐ๋ณธ๊ฐ์ 8์ ๋๋ค.
์ต์ ์ธ๋ผ์ธ ์ฌ๊ท ํ๋ฅ
์ฌ๊ท ์ธ๋ผ์ธ์ ๊น์ ์ฌ๊ท๊ฐ ์๋ ํจ์์ ๋ํด์๋ง ์์ต์ฑ์ด ์์ต๋๋ค.
ํ๊ท ์ ๋ด๊ณ ์ฌ๊ท ๊น์ด๊ฐ ์ ์ ํจ์์ ์์์ ์ค ์ ์์ต๋๋ค.
๋ค๋ฅธ ์ตํฐ๋ง์ด์ ์ ๋ํ ํ๋กค๋ก๊ทธ ํฌ๊ธฐ ๋๋ ํจ์ ๋ณธ๋ฌธ์ ๋ณต์ก์ฑ.
ํ๋กํ ํผ๋๋ฐฑ์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ(์ฐธ์กฐ -fprofile ์์ฑ) ์ค์ ์ฌ๊ท
์ฃผ์ด์ง ํธ์ถ์ ํตํด ํจ์๊ฐ ์ฌ๊ทํ ํ๋ฅ ์์ ๊น์ด๋ฅผ ์ถ์ธกํ ์ ์์ต๋๋ค.
ํํ. ์ด ๋งค๊ฐ๋ณ์๋ ์ธ๋ผ์ธ์ ๋ค์๊ณผ ๊ฐ์ ํธ์ถ ํํ์์ผ๋ก๋ง ์ ํํฉ๋๋ค.
ํ๋ฅ ์ด ์ฃผ์ด์ง ์๊ณ๊ฐ(ํผ์ผํธ)์ ์ด๊ณผํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
์ผ๋ฆฌ ์ธ๋ผ์ด๋ ์ธ์ค
์ด๊ธฐ ์ธ๋ผ์ด๋๊ฐ ๋ง๋ค ์ ์๋ ์ฑ์ฅ์ ์ง์ ํฉ๋๋ค. ์ฌ์ค์ ์์ ์ฆ๊ฐ์ํจ๋ค.
์ถ์ํ ํจ๋ํฐ๊ฐ ํฐ ์ฝ๋์ ๋ํ ์ธ๋ผ์ธ ์ฒ๋ฆฌ. ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
์ต๋ ์ด๊ธฐ ์ธ๋ผ์ด๋ ๋ฐ๋ณต
์ต๋ ์ด๊ธฐ ์ธ๋ผ์ด๋ ๋ฐ๋ณต
์ด๊ธฐ ์ธ๋ผ์ด๋์ ๋ฐ๋ณต ์ ํ. ์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก
์ค์ฒฉ ๊ฐ์ ํธ์ถ์ ์ด๊ธฐ ์ธ๋ผ์ด๋๊ฐ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๋ ๊น์ ์ฌ์ฌ์ ์ฌ์ ํ
๋ฆ์ ์ธ๋ผ์ด๋์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
comdat ๊ณต์ ํ๋ฅ
comdat ๊ณต์ ํ๋ฅ
comdat ๊ฐ์์ฑ์ด ์๋ C++ ์ธ๋ผ์ธ ํจ์๊ฐ ๋ค์๊ณผ ๊ฐ์ ํ๋ฅ (ํผ์ผํธ)
์ฌ๋ฌ ์ปดํ์ผ ๋จ์์์ ๊ณต์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 20์ ๋๋ค.
์ต์ ๋ฒกํฐ ๋ฃจํ ๊ฒฝ๊ณ
๋ฃจํ๊ฐ ๋ฒกํฐํ๋์ง ์๋ ์ต์ ๋ฐ๋ณต ํ์
-ftree ๋ฒกํฐํ ์ฌ์ฉ. ๋ฒกํฐํ ํ ๋ฐ๋ณต ํ์๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
๋ฒกํฐํ๋ฅผ ํ์ฉํ๋ ค๋ฉด ์ด ์ต์ ์์ ์ง์ ํ ๊ฐ๋ณด๋ค ์ปค์ผ ํฉ๋๋ค. NS
๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค.
gcse ๋น์ฉ ๊ฑฐ๋ฆฌ ๋น์จ
์์ ์ด๋ํ ์ ์๋ ์ต๋ ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ๋ฐฐ์จ ์ธ์
GCSE ์ต์ ํ. ์ด๊ฒ์ ํ์ฌ ์ฝ๋ ํธ์ด์คํ ํจ์ค์์๋ง ์ง์๋ฉ๋๋ค.
๋น์จ์ด ํด์๋ก ๊ฐ๋จํ ์ฝ๋ ํธ์ด์คํ ์ด ๋ ๊ณต๊ฒฉ์ ์ ๋๋ค.
ํํ์, ์ฆ ๋น์ฉ์ด ๋ค์๋ณด๋ค ์์ ํํ์ gcse-๋ฌด์ ํ-
๋น์ฉ. 0์ ์ง์ ํ๋ฉด ๋จ์ ํํ์์ ํธ์ด์คํ ์ด ๋นํ์ฑํ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
10.
gcse-๋ฌด์ ํ ๋น์ฉ
๋น์ฉ์ ๋๋ต ํ๋์ ์ผ๋ฐ์ ์ธ ๊ธฐ๊ณ ๋ช ๋ น ๋น์ฉ์ผ๋ก ์ธก์ ๋ฉ๋๋ค.
GCSE ์ต์ ํ๋ ํํ์์ด ์ด๋ํ ์ ์๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ ํํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ํ์ฌ ์ฝ๋ ํธ์ด์คํ ํจ์ค์์๋ง ์ง์๋ฉ๋๋ค. ๋น์ฉ์ด ์ ๊ฒ ๋ค์๋ก,
๋ ๊ณต๊ฒฉ์ ์ธ ์ฝ๋ ํธ์ด์คํ ์ ๋๋ค. 0์ ์ง์ ํ๋ฉด ๋ชจ๋ ํํ์์ด
๋ฌด์ ํ ๊ฑฐ๋ฆฌ๋ฅผ ์ฌํํ์ญ์์ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
์ต๋ ํธ์ด์คํธ ๊น์ด
ํธ์ด์คํธํ ํํ์์ ๋ํ ๋๋ฏธ๋ค์ดํฐ ํธ๋ฆฌ์ ๊ฒ์ ๊น์ด์ ๋๋ค. ์ด๊ฒ์ ์ฌ์ฉ
ํธ์ด์คํ ์๊ณ ๋ฆฌ์ฆ์์ 0์ฐจ ๋์์ ํผํ๊ธฐ ์ํด. XNUMX์ ๊ฐ์ ์ ํ๋์ง ์์ต๋๋ค.
๊ฒ์ํ ์ ์์ง๋ง ๊ฑฐ๋ํ ๊ธฐ๋ฅ์ ์ปดํ์ผ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ
30์ ๋๋ค.
์ต๋ ๊ผฌ๋ฆฌ ๋ณํฉ ๋น๊ต
bb๋ฅผ ๋น๊ตํ ์ ์ฌํ bb์ ์ต๋๋์ ๋๋ค. ์ด๊ฒ์ ํผํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค
ํธ๋ฆฌ ํ ์ผ ๋ณํฉ์ 10์ฐจ ๋์. ๊ธฐ๋ณธ๊ฐ์ XNUMX์ ๋๋ค.
์ต๋ ๊ผฌ๋ฆฌ ๋ณํฉ ๋ฐ๋ณต
ํจ์์ ๋ํ ์ ๋ฌ์ ์ต๋ ๋ฐ๋ณต ํ์์ ๋๋ค. ์ด๊ฒ์ ์ฌ์ฉ๋ฉ๋๋ค
ํธ๋ฆฌ ํ ์ผ ๋ณํฉ์์ ์ปดํ์ผ ์๊ฐ์ ์ ํํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 2์ ๋๋ค.
์ต๋ ์ธ๋กค๋ง๋ ๊ธฐ๋ฅ
๋ฃจํ๋ฅผ ํ์ด์ผ ํ ์ ์๋ ์ต๋ ๋ช ๋ น์ด ์์ ๋๋ค. ๋ฃจํ์ ๊ฒฝ์ฐ
๋กค๋ง๋์ง ์์ ๊ฒฝ์ฐ ์ด ๋งค๊ฐ๋ณ์๋ ๋ฃจํ ์ฝ๋๊ฐ ๋ช ๋ฒ
ํ๋ ธ๋ค.
์ต๋-ํ๊ท -unrolled-insns
์คํ ํ๋ฅ ์ ๋ฐ๋ผ ํธํฅ๋ ์ต๋ ๋ช ๋ น์ด ์
๋ฃจํ๋ฅผ ํ์ด์ผ ํ ์๋ ์์ต๋๋ค. ๋ฃจํ๊ฐ ํผ์ณ์ง๋ฉด ์ด ๋งค๊ฐ๋ณ์๋
๋ฃจํ ์ฝ๋๊ฐ ํผ์ณ์ง๋ ํ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
์ต๋ ์ธ๋กค ์๊ฐ
๋จ์ผ ๋ฃจํ์ ์ต๋ ์ธ๋กค๋ง ์์ ๋๋ค.
์ต๋ ๊ป์ง์ ๋ฒ๊ธด ๊ธฐ๋ฅ
๋ฃจํ๋ฅผ ์ ๊ฑฐํด์ผ ํ ์ ์๋ ์ต๋ ๋ช ๋ น์ด ์์ ๋๋ค. ๋ฃจํ์ ๊ฒฝ์ฐ
์ด ๋งค๊ฐ๋ณ์๋ ๋ฃจํ ์ฝ๋๊ฐ ๋ฒ๊ฒจ์ง๋ ํ์๋ ๊ฒฐ์ ํฉ๋๋ค.
์ต๋ ํ ์๊ฐ
๋จ์ผ ๋ฃจํ์ ์ต๋ ํ๋ง ์์ ๋๋ค.
์ต๋ ๊ป์ง ๋ถ๊ธฐ
๋ฒ๊ฒจ์ง ์ํ์ค๋ฅผ ํตํ ํซ ๊ฒฝ๋ก์ ์ต๋ ๋ถ๊ธฐ ์์ ๋๋ค.
์ต๋-์์ -ํ๋ง-insns
์์ ํ ๋ฒ๊ฒจ์ง ๋ฃจํ์ ์ต๋ ์ธ์ค ์์ ๋๋ค.
์ต๋ ์์ ๋ฐ๋ฆฌ ์๊ฐ
์์ ํ ํ๋ง์ ์ ํฉํ ๋ฃจํ์ ์ต๋ ๋ฐ๋ณต ํ์์ ๋๋ค.
์ต๋ ์์ ๊ป์ง ๋ฃจํ ์ค์ฒฉ ๊น์ด
์์ ํ ํ๋ง์ ์ ํฉํ ๋ฃจํ ๋ค์คํธ์ ์ต๋ ๊น์ด.
์ต๋-unswitch-insns
์ ํ๋์ง ์์ ๋ฃจํ์ ์ต๋ insns ์์ ๋๋ค.
์ต๋ ์ค์์น ํด์ ์์ค
๋จ์ผ ๋ฃจํ์์ ์ ํ๋์ง ์์ ์ต๋ ๋ถ๊ธฐ ์์ ๋๋ค.
๋น์ธ๋ค
๋ฃจํ ๋ถ๋ณ ๋ชจ์ ์์ ๊ฐ๋น์ผ ํํ์์ ์ต์ ๋น์ฉ.
iv-๋ชจ๋ ํ๋ณด๋ฅผ ๊ณ ๋ ค
๋ชจ๋ ํ๋ณด๊ฐ ๊ทธ ์ดํ์ธ ์ ๋ ๋ณ์์ ํ๋ณด ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
์ ๋ ๋ณ์ ์ต์ ํ์ ๊ฐ ์ฉ๋์ ๋ํด ๊ณ ๋ ค๋ฉ๋๋ค. ๋ง์ผ ๊ฑฐ๊ธฐ์
์ด๋ณด๋ค ๋ง์ ํ๋ณด์, ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ ํ๋ณด์๋ง ํผํ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
XNUMX์ฐจ ์๊ฐ ๋ณต์ก๋.
iv-์ต๋ ๊ณ ๋ ค ์ฉ๋
์ ๋ ๋ณ์ ์ต์ ํ๋ ๋ ๋ง์ ์ ๋๋ฅผ ํฌํจํ๋ ๋ฃจํ๋ฅผ ํฌ๊ธฐํฉ๋๋ค.
๋ณ์ ์ฌ์ฉ.
iv-ํญ์ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
์งํฉ์ ํ๋ณด ์๊ฐ ์ด ๊ฐ๋ณด๋ค ์์ผ๋ฉด ํญ์
์ ํญ๋ชฉ์ ์ถ๊ฐํ ๋ ์ธํธ์์ ๋ถํ์ํ ivs๋ฅผ ์ ๊ฑฐํ์ญ์์ค.
scev-max-expr-ํฌ๊ธฐ
์ค์นผ๋ผ ์งํ ๋ถ์๊ธฐ์์ ์ฌ์ฉ๋๋ ํํ์์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ํฌ๊ธฐ๊ฐ ํฐ
ํํ์ ๋ถ์๊ธฐ๋ฅผ ๋๋ฆฌ๊ฒ ํฉ๋๋ค.
scev-max-expr-๋ณต์ก๋
์ค์นผ๋ผ ์งํ ๋ถ์๊ธฐ์ ํํ์์ ๋ณต์ก์ฑ์ ๊ตฌ์๋ฉ๋๋ค.
๋ณต์กํ ํํ์์ ๋ถ์๊ธฐ๋ฅผ ๋๋ฆฌ๊ฒ ๋ง๋ญ๋๋ค.
์ค๋ฉ๊ฐ ์ต๋ ๋ณ์
Omega ์ ์ฝ ์์คํ ์ ์ต๋ ๋ณ์ ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ
128์ ๋๋ค.
Omega-max-geqs
Omega ์ ์ฝ ์์คํ ์ ์ต๋ ๋ถ๋ฑ์ ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ
๊ฐ์ 256์ ๋๋ค.
์ค๋ฉ๊ฐ-๋งฅ์ค-eqs
Omega ์ ์ฝ ์์คํ ์ ์ต๋ ๋ฑ์ ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ
128์ ๋๋ค.
์ค๋ฉ๊ฐ-๋งฅ์ค-์์ผ๋ ์นด๋
Omega ์๋ฒ๊ฐ ์ฝ์ ํ ์ ์๋ ์ต๋ ์์ผ๋์นด๋ ๋ณ์ ์์ ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ 18์ ๋๋ค.
์ค๋ฉ๊ฐ ํด์ ํ ์ด๋ธ ํฌ๊ธฐ
Omega ์๋ฒ์ ํด์ ํ ์ด๋ธ ํฌ๊ธฐ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 550์ ๋๋ค.
์ค๋ฉ๊ฐ ๋งฅ์ค ํค
Omega ์๋ฒ๊ฐ ์ฌ์ฉํ๋ ์ต๋ ํค ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 500์ ๋๋ค.
์ค๋ฉ๊ฐ ์ ๊ฑฐ ์ค๋ณต ์ ์ฝ
1๋ก ์ค์ ํ๋ฉด ๋น์ฉ์ด ๋ง์ด ๋๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ค๋ณต ์ ์ฝ ์กฐ๊ฑด์ ์ ๊ฑฐํฉ๋๋ค. NS
๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค.
vect-max-version-for-alignment-checks
๋ฃจํ๋ฅผ ์ํํ ๋ ์ํํ ์ ์๋ ๋ฐํ์ ๊ฒ์ฌ์ ์ต๋ ์
๋ฒกํฐ๋ผ์ด์ ์์ ์ ๋ ฌ์ ์ํ ๋ฒ์ ๊ด๋ฆฌ.
vect-max-version-๋ณ์นญ-๊ฒ์ฌ
๋ฃจํ๋ฅผ ์ํํ ๋ ์ํํ ์ ์๋ ๋ฐํ์ ๊ฒ์ฌ์ ์ต๋ ์
๋ฒกํฐ๋ผ์ด์ ์์ ๋ณ์นญ์ ๋ํ ๋ฒ์ ๊ด๋ฆฌ.
vect-max-ํ๋ง-ํฌ-์ ๋ ฌ
๋ฒกํฐ๋ผ์ด์ ์ ๋ํ ์ก์ธ์ค ์ ๋ ฌ์ ํฅ์์ํค๊ธฐ ์ํ ์ต๋ ๋ฃจํ ํ ์์ ๋๋ค. ๊ฐ
-1์ '์ ํ ์์'์ ์๋ฏธํฉ๋๋ค.
์ถ์ ํ ์ต๋ ๋ฐ๋ณต ํ์
๋ถ์์ ์ํ ๋ฌด์ฐจ๋ณ ๋์ ์๊ณ ๋ฆฌ์ฆ ๋ฃจํ์ ์ต๋ ๋ฐ๋ณต ํ์
๋ฃจํ์ ๋ฐ๋ณต ํ์๋ฅผ ํ๊ฐํ๋ ค๊ณ ํฉ๋๋ค.
๋จ๊ฑฐ์ด bb-count-ws-permille
๊ธฐ๋ณธ ๋ธ๋ก ํ๋กํ ์๋ ์ฃผ์ด์ง ๊ฒฐ๊ณผ์ ๊ธฐ์ฌํ๋ ๊ฒฝ์ฐ ํซ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ ์ฒด ํ๋กํ์ผ ์คํ์ permillage(์ฆ, 0...1000)์ ๋๋ค.
ํซ bb ์ฃผํ์ ๋ถ์
๊ธฐ๋ณธ ๋ธ๋ก ์คํ์ ์ง์ ๋ธ๋ก ๋น๋์ ๋น์จ์ ์ ํํ์ญ์์ค.
๊ธฐ๋ณธ ๋ธ๋ก์ด ์ฃผ์ด์ง ๊ธฐ๋ฅ์ ํซ์ผ๋ก ๊ฐ์ฃผ๋์ด์ผ ํฉ๋๋ค.
์ต๋ ์์ธก ๋ฐ๋ณต
์ ์ ์ผ๋ก ์์ธกํ๋ ์ต๋ ๋ฃจํ ๋ฐ๋ณต ํ์์ ๋๋ค. ์ด๊ฒ์ ์ ์ฉํฉ๋๋ค
ํจ์์ ๊ฒฝ๊ณ๊ฐ ์๋ ค์ง ๋จ์ผ ๋ฃจํ์ ๋ค๋ฅธ ๋ฃจํ๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ
์ ์ ์๋ ๊ฒฝ๊ณ๋ก. ์๋ ค์ง ๋ฐ๋ณต ํ์๋ ์ฌ๋ฐ๋ฅด๊ฒ ์์ธก๋์ง๋ง,
์ ์ ์๋ ๋ฐ๋ณต ํ์์ ํ๊ท ์ ๋๋ต 10์ ๋๋ค. ์ด๋ ๋ฃจํ๊ฐ
๊ฒฝ๊ณ๊ฐ ์๋ ๊ฒ์ ๋ค๋ฅธ ๊ฒ์ ๋นํด ์ธ์์ ์ผ๋ก ์ฐจ๊ฐ๊ฒ ๋ณด์ ๋๋ค.
์ ๋ ฌ ์๊ณ๊ฐ
๊ธฐ๋ณธ ๋ธ๋ก์ ์ต๋ ์คํ ๋น๋์ ์ผ๋ถ๋ฅผ ์ ํํ์ญ์์ค.
๊ธฐ๋ณธ ๋ธ๋ก์ ์ ๋ ฌํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
์ ๋ ฌ ๋ฃจํ ๋ฐ๋ณต
์ ํํ ๋ฐ๋ณต ํ์ ์ด์์ ๋ฐ๋ณตํ ๊ฒ์ผ๋ก ์์๋๋ ๋ฃจํ๊ฐ ์ ๋ ฌ๋ฉ๋๋ค.
์ถ์ ์ ๋์ ๋ฒ์
์ถ์ ์ ๋์ ์ ์ฉ ๋ฒ์ ํผ๋๋ฐฑ
์ด ๊ฐ์ ์ฃผ์ด์ง ๋น์จ์ ์ํผ๋ธ๋ก ํ์ฑ์ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์คํ๋ ๋ช ๋ น์ด๋ฅผ ๋ค๋ฃน๋๋ค. ์ด๊ฒ์ ๋ถํ์ํ ์ฝ๋ ํฌ๊ธฐ ํ์ฅ์ ์ ํํฉ๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ์ถ์ ์ ๋์ ์ ์ฉ ๋ฒ์ ํผ๋๋ฐฑ ํ๋กํ ํผ๋๋ฐฑ์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅ. ์ค์ ํ๋กํ(์ ์ ์ผ๋ก ์ถ์ ๋ ํ๋กํ๊ณผ ๋์กฐ์ ์ผ๋ก)์
์๊ณ๊ฐ์ด ๋ ํฐ ๊ฐ์ ํ์ฉํ๋ ๋ ๊ท ํ.
์ถ์ ์ ์ต๋ ์ฝ๋ ์ฑ์ฅ
์ฝ๋ ์ฑ์ฅ์ด ์ฃผ์ด์ง ๋ฐฑ๋ถ์จ์ ๋๋ฌํ๋ฉด ๊ผฌ๋ฆฌ ์ค๋ณต์ ์ค์งํ์ญ์์ค. ์ด๊ฒ์
๋๋ถ๋ถ์ ์ค๋ณต์ด ๋์ค์ ํฌ๋ก์ค์์ ์ ๊ฑฐ๋๊ธฐ ๋๋ฌธ์ ๋ค์ ์ธ์์ ์ธ ์ ํ
์ ํํ๋ฏ๋ก ์ํ๋ ์ฝ๋ ์ฆ๊ฐ๋ณด๋ค ํจ์ฌ ๋์ ๊ฐ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค.
์ถ์ ์ ์ต์ ๋ถ๊ธฐ ๋น์จ
์ต์์ ์์ง์ ์ญํ๋ฅ ์ด ์ด๋ณด๋ค ์์ผ๋ฉด ์ญ์ฑ์ฅ์ ์ค์งํฉ๋๋ค.
์๊ณ๊ฐ(ํผ์ผํธ).
์ถ์ ์ ์ต์ ๋ถ๊ธฐ ๋น์จ
์ถ์ ๊ธฐ ์ต์ ๋ถ๊ธฐ ๋น์จ ํผ๋๋ฐฑ
์ต์์ ์์ง์ ํ๋ฅ ์ด ์ด ์๊ณ๊ฐ๋ณด๋ค ๋ฎ์ผ๋ฉด ์์ผ๋ก ์ฑ์ฅ์ ์ค์งํฉ๋๋ค.
๋น์ทํ๊ฒ ์ถ์ ์ ๋์ ๋ฒ์ ๋ ๊ฐ์ ๊ฐ์ด ์์ผ๋ฉฐ ํ๋๋ ์ปดํ์ผ์ฉ์ ๋๋ค.
ํ๋กํ ํผ๋๋ฐฑ์ฉ๊ณผ ์๋ ์ปดํ์ผ์ฉ ํ๋. ์ปดํ์ผ ๊ฐ
ํ๋กํ ํผ๋๋ฐฑ์ ๋ ๋ณด์์ ์ด์ด์ผ ํฉ๋๋ค.
ํจ๊ณผ์ ์ธ ์ถ์ ์.
์ต๋ cse ๊ฒฝ๋ก ๊ธธ์ด
CSE๊ฐ ๊ณ ๋ คํ๋ ๊ฒฝ๋ก์ ์ต๋ ๊ธฐ๋ณธ ๋ธ๋ก ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
์ต๋ cse-insns
ํ๋ฌ์ํ๊ธฐ ์ ์ CSE๊ฐ ์ฒ๋ฆฌํ๋ ์ต๋ ๋ช ๋ น์ด ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
1000.
ggc-๋ถ-ํ์ฅ
GCC๋ ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒด ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๊ด๋ฆฌํฉ๋๋ค. ์ด ๋งค๊ฐ๋ณ์
๊ฐ๋น์ง ์์ง๊ธฐ์ ํ์ด ์์ด์ผ ํ๋ ์ต์ ๋ฐฑ๋ถ์จ์ ์ง์ ํฉ๋๋ค.
์ปฌ๋ ์ ๊ฐ์ ํ์ฅํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์กฐ์ ํ๋ฉด ์ปดํ์ผ ์๋๊ฐ ํฅ์๋ ์ ์์ต๋๋ค.
์ฝ๋ ์์ฑ์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ์ 30% + 70% * (RAM/1GB)์ด๋ฉฐ RAM >= 100GB์ธ ๊ฒฝ์ฐ ์ํ์ 1%์ ๋๋ค.
"getrlimit"๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ "RAM"์ด๋ผ๋ ๊ฐ๋ ์ ์ค์ RAM ์ค ๊ฐ์ฅ ์์ ๊ฒ์ด๋ฉฐ
"RLIMIT_DATA" ๋๋ "RLIMIT_AS". GCC๊ฐ ํน์ ๋ฉ๋ชจ๋ฆฌ์์ RAM์ ๊ณ์ฐํ ์ ์๋ ๊ฒฝ์ฐ
ํ๋ซํผ์์๋ 30%์ ํํ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ๊ณ gc-๋ถ-
์๋ค XNUMX์ผ๋ก ์ค์ ํ๋ฉด ๋ชจ๋ ๊ธฐํ์์ ์ ์ฒด ์์ง์ด ๋ฐ์ํฉ๋๋ค. ์ด๊ฒ์
๋งค์ฐ ๋๋ฆฌ์ง๋ง ๋๋ฒ๊น ์ ์ ์ฉํ ์ ์์ต๋๋ค.
ggc-๋ถ-ํ ํฌ๊ธฐ
๊ท์ฐฎ๊ฒ ์์ง์ ์์ํ๊ธฐ ์ ์ ๊ฐ๋น์ง ์์ง๊ธฐ ํ์ ์ต์ ํฌ๊ธฐ
์ฐ๋ ๊ธฐ. ํ์ด ํ์ฅ๋ ํ ์ฒซ ๋ฒ์งธ ์ปฌ๋ ์ ์ด ๋ฐ์ํฉ๋๋ค. ggc-๋ถ-ํ์ฅ%
๊ทธ ๋๋จธ ggc-๋ถ-ํ ํฌ๊ธฐ. ๋ค์ ๋งํ์ง๋ง, ์ด๊ฒ์ ์กฐ์ ํ๋ฉด ์ปดํ์ผ ์๋๊ฐ ํฅ์๋ ์ ์์ผ๋ฉฐ,
์ฝ๋ ์์ฑ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ์ RAM/8, RLIMIT_RSS ๋๋
RLIMIT_DATA ๋๋ RLIMIT_AS๋ ์ด๊ณผ๋์ง ์์ง๋ง ํํ์ 4096์ ๋๋ค.
(131072MB) ๋ฐ ์ํ 128(XNUMXMB). GCC๊ฐ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ
ํน์ ํ๋ซํผ์์ RAM์ ๊ณ์ฐํ๊ธฐ ์ํด ํํ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ด๊ฒ์ ์ค์
๋งค์ฐ ํฐ ๋งค๊ฐ๋ณ์๋ ๊ฐ๋น์ง ์์ง์ ํจ๊ณผ์ ์ผ๋ก ๋นํ์ฑํํฉ๋๋ค. ์ด๊ฒ์ ์ค์
๋งค๊ฐ ๋ณ์ ๋ฐ ggc-๋ถ-ํ์ฅ XNUMX์ผ๋ก ์ค์ ํ๋ฉด ๋งค ์๊ฐ๋ง๋ค ์ ์ฒด ์์ง์ด ๋ฐ์ํฉ๋๋ค.
๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ต๋ ๋ค์ ๋ก๋ ๊ฒ์-insns
๋ช ๋ น์ด ์ฌ๋ก๋์ ์ต๋ ํ์๋ ๋๋ฑํ ํญ๋ชฉ์ ์ญ์ผ๋ก ์ฐพ์์ผ ํฉ๋๋ค.
๋ฑ๋กํ๋ค. ๊ฐ์ ๋์ด๋ฉด ๋ ์ ๊ทน์ ์ธ ์ต์ ํ๋ฅผ ์๋ฏธํ๋ฏ๋ก
์ฝ๊ฐ ๋ ๋์ ์ฑ๋ฅ์ผ๋ก ์ปดํ์ผ ์๊ฐ์ด ์ฆ๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ
๊ฐ์ 100์ ๋๋ค.
์ต๋ cselib ๋ฉ๋ชจ๋ฆฌ ์์น
cselib๊ฐ ๊ณ ๋ คํด์ผ ํ๋ ์ต๋ ๋ฉ๋ชจ๋ฆฌ ์์น ์.
๊ฐ์ ๋๋ฆฌ๋ฉด ์ต์ ํ๊ฐ ๋ ์ ๊ทน์ ์ผ๋ก ์ํ๋์ด ์ปดํ์ผ ์๊ฐ์ด ๋์ด๋ฉ๋๋ค.
์ฝ๊ฐ ๋ ๋์ ์ฑ๋ฅ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 500์ ๋๋ค.
์ฌ์ ๋ ฌ ๋ธ๋ก ๋ณต์
์ฌ์ ๋ ฌ-๋ธ๋ก-์ค๋ณต-ํผ๋๋ฐฑ
๋ฌด์กฐ๊ฑด ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ๊ธฐ๋ณธ ๋ธ๋ก ์ฌ์ ๋ ฌ ํจ์ค์์ ์ฌ์ฉ
๋์์์ ์ฝ๋๋ฅผ ๋ถ๊ธฐํ๊ฑฐ๋ ๋ณต์ ํฉ๋๋ค. ์ฝ๋๊ฐ ๋ณต์ ๋ ๋
์์ ํฌ๊ธฐ๊ฐ ์ด ๊ฐ์ ์์ ํฌ๊ธฐ๋ฅผ ๊ณฑํ ๊ฒ๋ณด๋ค ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ์ ํซ์คํ์์ ๋ฌด์กฐ๊ฑด ์ ํ.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ์ฌ์ ๋ ฌ-๋ธ๋ก-๋ณต์ -ํผ๋๋ฐฑ ํ๋กํ ํผ๋๋ฐฑ์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅ. ๋ณด๋ค ๋์ ๊ฐ์ผ๋ก ์ค์ ๋ ์ ์์ต๋๋ค. ์ฌ์ ๋ ฌ-๋ธ๋ก-๋ณต์ ์ดํ
ํซ์คํ์ ๋ํ ์ ๋ณด๊ฐ ๋ ์ ํํฉ๋๋ค.
์ต๋-sched-ready-insns
์ค์ผ์ค๋ฌ๋ฅผ ๋ฐํํ ์ค๋น๊ฐ ๋ ์ต๋ ๋ช ๋ น์ด ์๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์ค์ผ์ค๋ง ํจ์ค ๋์ ์ฃผ์ด์ง ์๊ฐ์ ๊ณ ๋ คํ์ญ์์ค. ๊ฐ ์ฆ๊ฐ
๋ ์ฒ ์ ํ ๊ฒ์์ ์๋ฏธํ๋ฏ๋ก ์๋ง๋ ์ปดํ์ผ ์๊ฐ์ด ์ฆ๊ฐํ ๊ฒ์ ๋๋ค.
์์ ์ด์ต. ๊ธฐ๋ณธ๊ฐ์ 100์ ๋๋ค.
์ต๋ ์ผ์ ์ง์ญ ๋ธ๋ก
๋ธ๋ก ๊ฐ ๊ณ ๋ ค ๋์ ์์ญ์ ์ต๋ ๋ธ๋ก ์
์ผ์ . ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
์ต๋ ํ์ดํ๋ผ์ธ ์์ญ ๋ธ๋ก
ํ์ดํ๋ผ์ด๋์ ์ํด ๊ณ ๋ ค๋๋ ์ง์ญ์ ์ต๋ ๋ธ๋ก ์
์ ํ์ ์ค์ผ์ค๋ฌ ๊ธฐ๋ณธ๊ฐ์ 15์ ๋๋ค.
์ต๋-sched-์ง์ญ-insns
Interblock ๊ณ ๋ ค ๋์ ์ง์ญ ๋ด ์ต๋ ์์ ์
์ผ์ . ๊ธฐ๋ณธ๊ฐ์ 100์ ๋๋ค.
์ต๋ ํ์ดํ๋ผ์ธ-์ง์ญ-insns
ํ์ดํ๋ผ์ด๋์ ์ํด ๊ณ ๋ ค๋๋ ์ง์ญ์ ์ต๋ ์ฌ๊ด ์
์ ํ์ ์ค์ผ์ค๋ฌ ๊ธฐ๋ณธ๊ฐ์ 200์ ๋๋ค.
์ต์ ์ฌ์ ๋ฌธ์
์ธํฐ๋ธ๋ก์ ์์ค ๋ธ๋ก์ ๋๋ฌํ ์ต์ ํ๋ฅ (๋ฐฑ๋ถ์จ)
์ถ์ธก์ฑ ์ผ์ . ๊ธฐ๋ณธ๊ฐ์ 40์ ๋๋ค.
์ต๋-sched-ํ์ฅ-์ง์ญ-iters
์์ญ์ ํ์ฅํ๊ธฐ ์ํด CFG๋ฅผ ํตํ ์ต๋ ๋ฐ๋ณต ํ์์ ๋๋ค. ๊ฐ 0(
๊ธฐ๋ณธ) ์ง์ญ ํ์ฅ์ ๋นํ์ฑํํฉ๋๋ค.
์ต๋-sched-insn-์ถฉ๋-์ง์ฐ
ํฌ๊ธฐ์ ์์ง์์ ๋ํด ๊ณ ๋ ค๋๋ ์ฌ๊ด์ ์ต๋ ์ถฉ๋ ์ง์ฐ์ ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
์ผ์ -์ฌ์-๋ฌธ์ -์ปท์คํ
ํฌ๊ธฐ ์ฑ๊ณต์ ์ต์ ํ๋ฅ (๋ฐฑ๋ถ์จ), ๋ฐ๋ผ์ ํฌ๊ธฐ์
์์๊ฐ ์์ ๋์ด ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 40์ ๋๋ค.
์ผ์ -์ฌ์-์ํ-๊ฐ์ฅ์๋ฆฌ-๋ฌธ์ -์ปท์คํ
์ค์ผ์ค๋ฌ๊ฐ ์ํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๊ฐ์ฅ์๋ฆฌ๊ฐ ๊ฐ์ ธ์ผ ํ๋ ์ต์ ํ๋ฅ
๊ฑด๋ํธ. ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
sched-mem-true-dep-๋น์ฉ
๋์ผํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์์ผ๋ก ํ๋ ์ ์ฅ์์ ๋ก๋ ์ฌ์ด์ ์ต์ ๊ฑฐ๋ฆฌ(CPU ์ฃผ๊ธฐ)
์์น. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
selsched-max-lookahead
์ ํ์ ์ค์ผ์ค๋ง์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ฐฝ์ ์ต๋ ํฌ๊ธฐ์ ๋๋ค. ๊น์ด์ด๋ค
์ฌ์ฉ ๊ฐ๋ฅํ ์ง์นจ์ ๊ฒ์ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 50์ ๋๋ค.
selsched-์ต๋-sched-์๊ฐ
์ ํ ์ค์ ๋ช ๋ น์ด ์์ฝ๋๋ ์ต๋ ํ์
์ผ์ . ์ด๊ฒ์ ๋ฐ๋ณต ํ์์ ๋ํ ์ ํ์ ๋๋ค.
๋ช ๋ น์ด ํ์ดํ๋ผ์ธ๋ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 2์ ๋๋ค.
selsched-max-insns-์ด๋ฆ ๋ฐ๊พธ๊ธฐ
์ค๋น ๋ชฉ๋ก์์ ๊ณ ๋ ค๋๋ ์ต์์ ๋ช ๋ น์ ์ต๋ ์
์ ํ์ ์ค์ผ์ค๋ฌ์์ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ. ๊ธฐ๋ณธ๊ฐ์ 2์ ๋๋ค.
SMS-min-sc
์ค์ ๋ชจ๋๋ก ์ค์ผ์ค๋ฌ๊ฐ ์์ฑํ๋ ์คํ ์ด์ง ์์ ์ต์๊ฐ์ ๋๋ค. NS
๊ธฐ๋ณธ๊ฐ์ 2์ ๋๋ค.
์ต๋ ๋ง์ง๋ง ๊ฐ rtl
ํํ์์ ๊ธฐ๋ก๋ ์ ์๋ RTL์ ์๋ก ์ธก์ ๋ ์ต๋ ํฌ๊ธฐ
์์ฌ ๋ ์ง์คํฐ์ ๋ํ ๊ฒฐํฉ๊ธฐ์์ ํด๋น ๋ ์ง์คํฐ์ ๋ง์ง๋ง์ผ๋ก ์๋ ค์ง ๊ฐ์ผ๋ก. NS
๊ธฐ๋ณธ๊ฐ์ 10000์ ๋๋ค.
์ ์ ๊ณต์ ์ ํ
์์ ์ ์ ์์๋ ๊ณต์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผ๋ฌ์
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๋ฐ ์๋ ์ฆ๊ฐ. ์ด๊ฒ์ ๊ณต์ ์ ์ต๋๊ฐ์ ์ค์ ํฉ๋๋ค.
์ ์ ์์. ๊ธฐ๋ณธ๊ฐ์ 256์ ๋๋ค.
ssp ๋ฒํผ ํฌ๊ธฐ
์คํ ์ค๋งค์ฑ ๋ณดํธ๋ฅผ ๋ฐ๋ ๋ฒํผ(์: ์ด๋ ์ด)์ ์ต์ ํฌ๊ธฐ
์ธ์ -fstack ๋ณดํธ ์ฌ์ฉ.
Ubuntu 10.10 ์ด์ ์ ์ด ๊ธฐ๋ณธ๊ฐ์ "8"์ด์์ต๋๋ค. ํ์ฌ "4"์ ๋๋ค.
์คํ ๋ณดํธ๊ธฐ์ ์ํด ๋ณดํธ๋๋ ๊ธฐ๋ฅ์ ์.
์ต๋-์ ํ-์ค๋ ๋-์ค๋ณต-stmts
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ณต์ ํด์ผ ํ๋ ๋ธ๋ก์ ํ์ฉ๋๋ ์ต๋ ๋ช ๋ น๋ฌธ ์
์ค๋ ๋ฉ ์ ํ.
์ต๋ ํ๋ ๋ ํ๋ ๊ฐ์ง
ํ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๋ ๊ตฌ์กฐ์ ์ต๋ ํ๋ ์
ํฌ์ธํฐ ๋ถ์. ๊ธฐ๋ณธ๊ฐ์ XNUMX์ ๋๋ค. -O0 and -O1, 100 for - ์ค์ค, -O2๋ฐ
-O3.
ํ๋ฆฌํ์น ๋๊ธฐ ์๊ฐ
ํ๋ฆฌํ์น ์ ์ ์คํ๋๋ ํ๊ท ๋ช ๋ น์ด ์ ์ถ์
๋. ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๋ ๊ฑฐ๋ฆฌ๋ ์ด ์์์ ๋น๋กํฉ๋๋ค.
์ด ์๋ฅผ ๋๋ฆฌ๋ฉด ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๋ ์คํธ๋ฆผ์ด ์ค์ด๋ค ์๋ ์์ต๋๋ค(์ฐธ์กฐ
๋์ ํ๋ฆฌํ์น).
๋์ ํ๋ฆฌํ์น
๋์์ ์คํํ ์ ์๋ ์ต๋ ํ๋ฆฌํ์น ์์ ๋๋ค.
l1-์บ์-๋ผ์ธ-ํฌ๊ธฐ
L1 ์บ์์ ์บ์ ๋ผ์ธ ํฌ๊ธฐ(๋ฐ์ดํธ)์ ๋๋ค.
l1 ์บ์ ํฌ๊ธฐ
L1 ์บ์์ ํฌ๊ธฐ(KB)์ ๋๋ค.
l2 ์บ์ ํฌ๊ธฐ
L2 ์บ์์ ํฌ๊ธฐ(KB)์ ๋๋ค.
์ต์ insn ๋ ํ๋ฆฌํ์น ๋น์จ
๋ช ๋ น์ด ์์ ํ๋ฆฌํ์น ์ ์ฌ์ด์ ์ต์ ๋น์จ
๋ฃจํ์์ ํ๋ฆฌํ์น๋ฅผ ํ์ฑํํฉ๋๋ค.
prefetch-min-insn-to-mem ๋น์จ
๋ช ๋ น์ด ์์ ๋ฉ๋ชจ๋ฆฌ ์ ์ฌ์ด์ ์ต์ ๋น์จ
๋ฃจํ์์ ํ๋ฆฌํ์น๋ฅผ ํ์ฑํํ๊ธฐ ์ํ ์ฐธ์กฐ.
ํ์ค ์ ํ ์ฌ์ฉ
์ปดํ์ผ๋ฌ๊ฐ "ํ์ค" ์ ํ ์์คํ ์ ์ฌ์ฉํด์ผ ํ๋์ง ์ฌ๋ถ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด
ํญ์ 1์ด์ด์ผ ํ๋ฉฐ, ๋น๊ต๋ฅผ ์ํด ๋ณด๋ค ํจ์จ์ ์ธ ๋ด๋ถ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค.
C++ ๋ฐ Objective-C++์ ์ ํ. ๊ทธ๋ฌ๋ ํ์ค ์ ํ ์์คํ ์ ๋ฒ๊ทธ๊ฐ
์ปดํ์ผ ์คํจ๋ฅผ ์ผ์ผํค๋ ๊ฒฝ์ฐ ์ด ๊ฐ์ 0์ผ๋ก ์ค์ ํ์ฌ ํ์ค ์ ํ์ ๋นํ์ฑํํฉ๋๋ค.
์ค์์น ๋ณํ ์ต๋ ๋ถ๊ธฐ ๋น์จ
์ค์์น ์ด๊ธฐํ ๋ณํ์ ๋ค์๋ณด๋ค ํฐ ์ด๋ ์ด ์์ฑ์ ๊ฑฐ๋ถํฉ๋๋ค.
์ค์์น ๋ณํ ์ต๋ ๋ถ๊ธฐ ๋น์จ ์ค์์น์ ๋ถ๊ธฐ ์๋ฅผ ๊ณฑํฉ๋๋ค.
์ต๋ ๋ถ๋ถ ๊ธธ์ด
ํธ๋ฆฌ ๋ถ๋ถ ๋์ ๊ณ์ฐ๋ ๋ถ๋ถ์ ์ต์คํธ๋ฆผ ์งํฉ์ ์ต๋ ๊ธธ์ด
์ค๋ณต ์ ๊ฑฐ ์ต์ ํ(-fttree-pre)์์ ์ต์ ํํ ๋ -O3 ์ด์.
์ผ๋ถ ์์ค ์ฝ๋์ ๊ฒฝ์ฐ ํฅ์๋ ๋ถ๋ถ ์ค๋ณต ์ ๊ฑฐ
์ต์ ํ๊ฐ ์คํ๋์ด ํธ์คํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ชจํ ์ ์์ต๋๋ค.
๊ธฐ๊ณ. ์ด ๋งค๊ฐ๋ณ์๋ ๊ณ์ฐ๋๋ ์ธํธ์ ๊ธธ์ด์ ๋ํ ์ ํ์ ์ค์ ํฉ๋๋ค.
๊ฐ์ถ ํ๋์ ๋ฐฉ์งํฉ๋๋ค. ์ด ๋งค๊ฐ๋ณ์์ ๊ฐ์ 0์ผ๋ก ์ค์
๋ฌด์ ํ ์ค์ ๊ธธ์ด๋ฅผ ํ์ฉํฉ๋๋ค.
sccvn-max-scc-ํฌ๊ธฐ
SCCVN ์ฒ๋ฆฌ ์ค SCC(๊ฐ๋ ฅํ๊ฒ ์ฐ๊ฒฐ๋ ๊ตฌ์ฑ ์์)์ ์ต๋ ํฌ๊ธฐ์ ๋๋ค. ๋ง์ฝ์
์ด ์ ํ์ ๋๋ฌํ๋ฉด ์ ์ฒด ๊ธฐ๋ฅ์ ๋ํ SCCVN ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์ง ์๊ณ
๊ทธ์ ๋ฐ๋ฅธ ์ต์ ํ๊ฐ ๋นํ์ฑํ๋ฉ๋๋ค. ๊ธฐ๋ณธ ์ต๋ SCC ํฌ๊ธฐ๋
10000.
sccvn-max-alias-์ก์ธ์ค๋น ์ฟผ๋ฆฌ
์ค๋ณต์ ์ฐพ์ ๋ ์ํํ๋ ์ต๋ alias-oracle ์ฟผ๋ฆฌ ์
๋ก๋ ๋ฐ ์คํ ์ด์ฉ. ์ด ์ ํ์ ๋๋ฌํ๋ฉด ๊ฒ์์ด ์ค๋จ๋๊ณ ๋ก๋ ๋๋
์ ์ฅ์๋ ์ค๋ณต์ผ๋ก ๊ฐ์ฃผ๋์ง ์์ต๋๋ค. ์ฟผ๋ฆฌ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์ผ๋ก
๋ก๋์์ ํจ์ ํญ๋ชฉ๊น์ง์ ๋ชจ๋ ๊ฒฝ๋ก์ ์๋ ์ ์ฅ์ ์๋ก ์ ํ๋ฉ๋๋ค.
๊ธฐ๋ณธ ์ต๋ ์ฟผ๋ฆฌ ์๋ 1000์ ๋๋ค.
ira-์ต๋-๋ฃจํ-๋ฒํธ
IRA๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ญ ๋ ์ง์คํฐ ํ ๋น์ ์ฌ์ฉํฉ๋๋ค. ํจ์์ ๋ ๋ง์ ๋ด์ฉ์ด ํฌํจ๋ ๊ฒฝ์ฐ
๋ฃจํ๋ ์ด ๋งค๊ฐ๋ณ์์ ์ํด ์ฃผ์ด์ง ์๋ณด๋ค ๋ง์์ผ ์ฃผ์ด์ง ์์
๊ฐ์ฅ ์์ฃผ ์คํ๋๋ ๋ฃจํ๋ ์ง์ญ ๋ ์ง์คํฐ ํ ๋น์ ์ํ ์์ญ์ ํ์ฑํฉ๋๋ค.
๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ 100์ ๋๋ค.
ira-max-์ถฉ๋-ํ ์ด๋ธ-ํฌ๊ธฐ
IRA๋ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ถฉ๋ ํ ์ด๋ธ์ ์์ถํ์ง๋ง,
ํ ์ด๋ธ์ ์ฌ์ ํ โโ๊ฑฐ๋ํ ๊ธฐ๋ฅ์ ์ํด ๊ณผ๋ํ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์๋ก ํ ์ ์์ต๋๋ค. ๋ง์ฝ
ํจ์์ ๋ํ ์ถฉ๋ ํ ์ด๋ธ์ ๋ค์์์ ์ง์ ํ ํฌ๊ธฐ(MB)๋ณด๋ค ํด ์ ์์ต๋๋ค.
๋งค๊ฐ๋ณ์ ๋์ ๋ ์ง์คํฐ ํ ๋น์๋ ๋ ๋น ๋ฅด๊ณ ๊ฐ๋จํ๋ฉฐ ๋ ๋ฎ์ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
์์ฌ ๋ ์ง์คํฐ ์ถฉ๋ ํ ์ด๋ธ์ ๊ตฌ์ถํ ํ์๊ฐ ์๋ ํ์ง ์๊ณ ๋ฆฌ์ฆ.
๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ 2000์ ๋๋ค.
ira-๋ฃจํ-์์ฝ-regs
IRA๋ ๊ฒฐ์ ์ ์ํ ๋ฃจํ์์ ๋ณด๋ค ์ ํํ ๋ ์ง์คํฐ ์๋ ฅ์ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฃจํ ๋ถ๋ณ๋์ ์ด๋ํ๋ ค๋ฉด(์ฐธ์กฐ -O3). ์์ฝ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ ์ง์คํฐ ์
์ด ๋งค๊ฐ๋ณ์๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ ๋ชฉ์ ์ ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ณธ ๊ฐ
๋งค๊ฐ๋ณ์๋ 2์ด๋ฉฐ, ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ํ์ํ ์ต์ ๋ ์ง์คํฐ ์์ ๋๋ค.
์ง์นจ. ์ด ๊ฐ์ ์๋ง์ ์คํ์์ ๋ฐ๊ฒฌ๋ ๊ฐ์ฅ ์ข์ ๊ฐ์ ๋๋ค.
๋ฃจํ ๋ถ๋ณ ์ต๋-bbs-in-loop
๋ฃจํ ๋ถ๋ณ ๋์์ ์ปดํ์ผ ์๊ฐ๊ณผ ์ปดํ์ผ ์๊ฐ ๋ชจ๋์์ ๋งค์ฐ ๋น์ ์ ์์ต๋๋ค.
๋งค์ฐ ํฐ ๋ฃจํ์ ํจ๊ป ํ์ํ ์ปดํ์ผ ์๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์. ๋ ๋ง์ ๋ฃจํ
์ด ๋งค๊ฐ๋ณ์๋ณด๋ค ๊ธฐ๋ณธ ๋ธ๋ก์๋ ๋ฃจํ ๋ถ๋ณ ๋ชจ์ ์ต์ ํ๊ฐ ์์ต๋๋ค.
๊ทธ๋ค์ ์ํ. ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ 1000์ ๋๋ค. -O1 ๋ฐ 10000
for -O2 ์ด์.
๋ฃจํ-์ต๋-datarefs-for-datadeps
๋ฐ์ดํฐ ์ข ์์ฑ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋งค์ฐ ํฐ ๋ฃจํ์ ๊ฒฝ์ฐ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค. ์ด ๋งค๊ฐ๋ณ์
๋ฐ์ดํฐ์ ๋ํด ๊ณ ๋ ค๋๋ ๋ฃจํ์ ๋ฐ์ดํฐ ์ฐธ์กฐ ์๋ฅผ ์ ํํฉ๋๋ค.
์์กด์ฑ ๋ถ์. ์ด๋ฌํ ํฐ ๋ฃจํ๋ ๋ค์์ ์ฌ์ฉํ๋ ์ต์ ํ์ ์ํด ์ฒ๋ฆฌ๋์ง ์์ต๋๋ค.
๋ฃจํ ๋ฐ์ดํฐ ์ข ์์ฑ. ๊ธฐ๋ณธ๊ฐ์ 1000์ ๋๋ค.
์ต๋ ๋ณ์ ํธ๋ ํฌ๊ธฐ
๋ณ์ ์ถ์ ๋ฐ์ดํฐ ํ๋ฆ ์ค์ ์ฌ์ฉํ ํด์ ํ ์ด๋ธ ์ฌ๋กฏ์ ์ต๋ ์๋ฅผ ์ค์ ํฉ๋๋ค.
์ด๋ค ๊ธฐ๋ฅ์ ๋ถ์. ์์ ๋ณ์ ์ถ์ ์ผ๋ก ์ด ์ ํ์ ์ด๊ณผํ๋ ๊ฒฝ์ฐ
ํ ๋น์ด ํ์ฑํ๋๋ฉด ํด๋น ๊ธฐ๋ฅ์ ๋ํ ๋ถ์์ด ํ ๋น ์์ด ์ฌ์๋๋ฉ๋๋ค.
ํจ์์์ ๋ชจ๋ ๋๋ฒ๊ทธ ์ธ์คํด์ค๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์์ด๋ ํ๋๋ฅผ ์ด๊ณผํ ๊ฒฝ์ฐ
debug insns, var ์ถ์ ๋ถ์์ ๊ธฐ๋ฅ์ ๋ํด ์์ ํ ๋นํ์ฑํ๋ฉ๋๋ค.
๋งค๊ฐ๋ณ์๋ฅผ XNUMX์ผ๋ก ์ค์ ํ๋ฉด ๋ฌด์ ํ์ด ๋ฉ๋๋ค.
max-vartrack-expr-๊น์ด
๋ณ์ ์ด๋ฆ์ ๋งคํํ๊ฑฐ๋
๊ฐ ํํ์์ ๋ํ ๋๋ฒ๊ทธ ์์. ์ด๊ฒ์ ๋ ๋ง์ ๊ฒ์ ์ํด ์ปดํ์ผ ์๊ฐ์ ๊ตํํฉ๋๋ค
์์ ํ ๋๋ฒ๊ทธ ์ ๋ณด. ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด ๊ฐ ํํ์์ด
์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ๋๋ฒ๊ทธ ์ ๋ณด๋ก ํ์๋ ์ ์์ผ๋ฉฐ ๊ฒฐ๊ตญ ์ฌ์ฉ๋์ง ์์ ์ ์์ต๋๋ค.
์ด ๊ฐ์ ๋๊ฒ ์ค์ ํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ๋ ๋ณต์กํ ๋๋ฒ๊ทธ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
ํํ์์ด์ง๋ง ์ปดํ์ผ ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋์ด๋ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 12์ ๋๋ค.
์ต์-nondebug-insn-uid
nondebug insns์ ๋ํด ์ด ๋งค๊ฐ๋ณ์์์ ์์ํ๋ uid๋ฅผ ์ฌ์ฉํ์ญ์์ค. ์ดํ์ ๋ฒ์
๋งค๊ฐ๋ณ์๋
-fvar-์ถ์ ํ ๋น, ๊ทธ๋ฌ๋ ๋๋ฒ๊ทธ insns๋ ์์ (์ค์ฒฉ๋์ง ์์) uid๋ฅผ ์ป์ ์ ์์ต๋๋ค.
์์ฝ๋ ๋ฒ์๊ฐ ์์ง๋ ๊ฒฝ์ฐ์ ๋๋ค.
ipa-sra-ptr-์ฑ์ฅ ์ธ์
IPA-SRA๋ ์ง๊ณ์ ๋ํ ํฌ์ธํฐ๋ฅผ ํ๋ ์ด์์ ์ ๋งค๊ฐ๋ณ์๋ก๋ง ๋์ฒดํฉ๋๋ค.
๋์ ํฌ๊ธฐ๊ฐ ๋ค์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋ ipa-sra-ptr-์ฑ์ฅ ์ธ์ ์๊ฐ์
์๋ ํฌ์ธํฐ ๋งค๊ฐ๋ณ์์ ํฌ๊ธฐ์ ๋๋ค.
tm-์ต๋ ์ง๊ณ ํฌ๊ธฐ
ํธ๋์ญ์ ์์ ์ค๋ ๋ ๋ก์ปฌ ๋ณ์์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค ๋ ์ด ๋งค๊ฐ๋ณ์๋
๋ณ์๊ฐ ๋ก๊น ๊ณผ ํจ๊ป ์ ์ฅ๋๋ ์ดํ์ ํฌ๊ธฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ง์ ํฉ๋๋ค.
์ฝ๋ ์ํ์ค ์์ ์ ์ฅ/๋ณต์ํ๋ ๊ฒ๊ณผ๋ ๋์กฐ์ ์ผ๋ก ๊ธฐ๋ฅํฉ๋๋ค. ์ด ์ต์ ๋ง
์ฌ์ฉํ ๋ ์ ์ฉ -fgnu-tm.
ํ์ฐ-์ต๋-nb-scop-params
ํ์ฐ ๋ฃจํ ๋ณํ์์ ๊ธฐํ๊ธ์์ ์ธ ์ํฅ์ ํผํ๊ธฐ ์ํด
SCoP(Static Control Part)์ ๋งค๊ฐ๋ณ์๋ ์ ํ์ ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
๋งค๊ฐ๋ณ์. ์ปดํ์ผ ์ ๊ฐ์ ์ ์ ์๊ณ ์ ์๋ ๋ณ์
SCoP ์ธ๋ถ๋ SCoP์ ๋งค๊ฐ๋ณ์์ ๋๋ค.
๊ธฐ๋ฅ๋น graphite-max-bbs
SCoP ํ์ง ์ ๊ธฐํ๊ธ์์ ์ธ ์ํฅ์ ํผํ๊ธฐ ์ํด ํจ์์ ํฌ๊ธฐ
Graphite์ ์ํด ๋ถ์๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 100 ๊ธฐ๋ณธ ๋ธ๋ก์ ๋๋ค.
๋ฃจํ ๋ธ๋ก ํ์ผ ํฌ๊ธฐ
๋ฃจํ ์ฐจ๋จ ๋๋ ์คํธ๋ฆฝ ๋ง์ด๋ ๋ณํ, ์ฌ์ฉ ๊ฐ๋ฅ -floop-๋ธ๋ก or
-floop-์คํธ๋ฆฝ-๊ด์ฐ, ์ฃผ์ด์ง ์๋งํผ ๋ฃจํ ๋ค์คํธ์ ๊ฐ ๋ฃจํ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
๋ฐ๋ณต. ์คํธ๋ฆฝ ๊ธธ์ด๋ ๋ค์์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋ฃจํ ๋ธ๋ก ํ์ผ ํฌ๊ธฐ
๋งค๊ฐ๋ณ์. ๊ธฐ๋ณธ๊ฐ์ 51ํ ๋ฐ๋ณต์ ๋๋ค.
ipa-cp-๊ฐ-๋ชฉ๋ก-ํฌ๊ธฐ
IPA-CP๋ ํจ์์ ์ ๋ฌ๋ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ๊ณผ ์ ํ์ ์ถ์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
๋งค๊ฐ๋ณ์๋ฅผ ์ ํํ๊ณ ๊ฐ์ํ๋ฅผ ์ํํฉ๋๋ค. ipa-cp-๊ฐ-
๋ชฉ๋ก ํฌ๊ธฐ ํ๋์ ํ์๋น ์ ์ฅํ๋ ๊ฐ ๋ฐ ์ ํ์ ์ต๋ ์์ ๋๋ค.
ํจ์์ ๋งค๊ฐ๋ณ์.
lto ํํฐ์
WHOPR ์ปดํ์ผ ์ค์ ์์ฑ๋๋ ์ํ๋ ํํฐ์ ์๋ฅผ ์ง์ ํฉ๋๋ค. NS
ํํฐ์ ์๋ ์ปดํ์ผ์ ์ฌ์ฉ๋๋ CPU ์๋ฅผ ์ด๊ณผํด์ผ ํฉ๋๋ค. NS
๊ธฐ๋ณธ๊ฐ์ 32์ ๋๋ค.
lto-์ต์ ํํฐ์
WHOPR์ ๋ํ ์ต์ ํํฐ์ ํฌ๊ธฐ(์์ ์ง์นจ). ์ด๊ฒ์ ๋ฐฉ์ง
์์ฃผ ์์ ํ๋ก๊ทธ๋จ์ ๋๋ฌด ๋ง์ ํํฐ์ ์ผ๋ก ๋ถํ ํ๋ ๋น์ฉ.
cxx-max-๋ค์์คํ์ด์ค-for-diagnostic-help
C++ ์ด๋ฆ ์กฐํ ์ ์ ์์ ์ฐธ์กฐํ ์ต๋ ๋ค์์คํ์ด์ค ์
์๋ณ์์ ๋ํด ์คํจํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 1000์ ๋๋ค.
์ฑํฌ ์ฃผํ์ ์๊ณ๊ฐ
๋์ ๋ธ๋ก์ ์ต๋ ์๋ ์คํ ๋น๋(๋ฐฑ๋ถ์จ)
๋ช ๋ น๋ฌธ ์ฑํน์ ํ์ฉํ๊ธฐ ์ํด ๋ช ๋ น๋ฌธ์ ์๋ ๋ธ๋ก์ ์๋์
์ฑ๋ช . ์ซ์๊ฐ ํด์๋ก ๋ ๊ณต๊ฒฉ์ ์ธ ๋ฌธ ์ฑํฌ๊ฐ ๋ฐ์ํฉ๋๋ค. NS
๊ธฐ๋ณธ๊ฐ์ 75์ ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ํผ์ฐ์ฐ์๋ ํจ์ฌ ๋ ์์ต์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ๊ฐ๋ผ์์ต๋๋ค.
์ต๋ ๋งค์ฅ ์
๋งค๋ชฐ๋ ์ ์๋ ์กฐ๊ฑด๋ถ ์ ์ฅ์ ์์ ์ต๋ ์์ ๋๋ค. ๊ฒฝ์ฐ 0์ผ๋ก ์ค์
๋ฒกํฐํ(-ftree ๋ฒกํฐํ) ๋๋ if ๋ณํ(-ftree-loop-if-๋ณํ)
๋นํ์ฑํ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 2์ ๋๋ค.
ํ์ฉ ๋ก๋ ๋ฐ์ดํฐ ๋ ์ด์ค
์ตํฐ๋ง์ด์ ๊ฐ ๋ก๋ ์ ์๋ก์ด ๋ฐ์ดํฐ ๊ฒฝ์์ ๋์ ํ๋๋ก ํ์ฉํฉ๋๋ค. ํ์ฉํ๋ ค๋ฉด 1๋ก ์ค์ ํ๊ณ ,
๊ทธ๋ ์ง ์์ผ๋ฉด 0์ผ๋ก ์ค์ ํฉ๋๋ค. ์ด ์ต์ ์
-f๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ= ์ต์ ์ ์ ํํฉ๋๋ค.
ํ์ฉ ์ ์ฅ ๋ฐ์ดํฐ ๋ ์ด์ค
์ต์ ํ ํ๋ก๊ทธ๋จ์ด ์์ ์ ์๋ก์ด ๋ฐ์ดํฐ ๊ฒฝ์์ ๋์ ํ๋๋ก ํ์ฉํฉ๋๋ค. ํ์ฉํ๋ ค๋ฉด 1๋ก ์ค์ ํ๊ณ ,
๊ทธ๋ ์ง ์์ผ๋ฉด 0์ผ๋ก ์ค์ ํฉ๋๋ค. ์ด ์ต์ ์
-f๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ= ์ต์ ์ ์ ํํฉ๋๋ค.
ํ์ฉ-ํฌ์ฅ-๋ก๋-๋ฐ์ดํฐ ๋ ์ด์ค
์ต์ ํ ํ๋ก๊ทธ๋จ์ด ์์ถ๋ ๋ฐ์ดํฐ ๋ก๋์ ๋ํด ์๋ก์ด ๋ฐ์ดํฐ ๊ฒฝ์์ ๋์ ํ๋๋ก ํ์ฉํฉ๋๋ค. 1๋ก ์ค์
ํ์ฉ, ๊ทธ๋ ์ง ์์ผ๋ฉด 0. ์ด ์ต์ ์ ๋ค์์์ ์์์ ์ผ๋ก ์ค์ ํ์ง ์๋ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
์ ์, -f๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ= ์ต์ ์ ์ ํํฉ๋๋ค.
ํ์ฉ ํฌ์ฅ ์ ์ฅ ๋ฐ์ดํฐ ๊ฒฝ์ฃผ
์ต์ ํ ํ๋ก๊ทธ๋จ์ด ์์ถ๋ ๋ฐ์ดํฐ ์ ์ฅ์์ ์๋ก์ด ๋ฐ์ดํฐ ๊ฒฝ์์ ๋์ ํ ์ ์๋๋ก ํฉ๋๋ค. 1๋ก ์ค์
ํ์ฉ, ๊ทธ๋ ์ง ์์ผ๋ฉด 0. ์ด ์ต์ ์ ๋ค์์์ ์์์ ์ผ๋ก ์ค์ ํ์ง ์๋ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
์ ์, -f๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ= ์ต์ ์ ์ ํํฉ๋๋ค.
์ผ์ด์ค ๊ฐ ์๊ณ๊ฐ
์ ํ ํ ์ด๋ธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ์๋ก ๋ค๋ฅธ ๊ฐ์ ์ต์ ์
์กฐ๊ฑด๋ถ ๊ฐ์ง์ ๋๋ฌด ๋์ . ๊ฐ์ด 0์ด๋ฉด ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
๊ธฐ๊ณ. ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค.
ํธ๋ฆฌ ์ฌ์ฐ๊ฒฐ ๋๋น
์ฌ์ฐ๊ด ํธ๋ฆฌ์์ ๋ณ๋ ฌ๋ก ์คํ๋๋ ์ต๋ ๋ช ๋ น์ด ์๋ฅผ ์ค์ ํฉ๋๋ค.
์ด ๋งค๊ฐ๋ณ์๋ ๋ค์์ด ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋์ ์ข ์ ํด๋ฆฌ์คํฑ์ ์ฌ์ ์ํฉ๋๋ค.
์ ๋ก ๊ฐ.
์ผ์ ์๋ ฅ ์๊ณ ๋ฆฌ์ฆ
์ฌ์ฉ ๊ฐ๋ฅํ ๋ ๊ฐ์ง ๊ตฌํ ์ค์์ ์ ํํ์ญ์์ค. -fsched-์๋ ฅ. ์๊ณ ๋ฆฌ์ฆ 1
์๋ ๊ตฌํ์ด๋ฉฐ ๋ช ๋ น์ด
์ฌ์ฃผ๋ฌธ ์ค์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ 2๋
์๊ณ ๋ฆฌ์ฆ 1์์ ์ทจํ ๋น๊ต์ ๋ณด์์ ์ธ ์ ๊ทผ ๋ฐฉ์๊ณผ ๋ค์ ๊ณต๊ฒฉ์ ์ธ ์ ๊ทผ ๋ฐฉ์
๊ธฐ๋ณธ ์ค์ผ์ค๋ฌ๊ฐ ์ฌ์ฉํ๋ ์ ๊ทผ ๋ฐฉ์. ๊ฐ๋ ๊ฒ์ ๋ ํฌ๊ฒ ์์กดํ๋ค.
์ผ๋ฐ ๋ ์ง์คํฐ ํ์ผ ๋ฐ ์ ํํ ๋ ์ง์คํฐ ์๋ ฅ ๋ฑ๊ธ. ๋ณด๋ค ํ์ดํ-sched.c
์์ธํ ๋ด์ฉ์ GCC ์์ค์์ ํ์ธํ์ธ์.
๊ธฐ๋ณธ ์ ํ์ ๋์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ต๋-slsr-cand-์ค์บ
๊ฒ์ ์ ๊ณ ๋ ค๋ ๊ธฐ์กด ํ๋ณด์์ ์ต๋ ์๋ฅผ ์ค์ ํฉ๋๋ค.
์๋ก์ด ์ง์ ๊ฐ๋ ๊ฐ์ ํ๋ณด์ ๊ธฐ์ด.
์ต์ ์ ์ด ์ ์, ์ ์ฒ๋ฆฌ๊ธฐ
์ด ์ต์ ์ ์ค์ ์คํ ์ ์ ๊ฐ C ์์ค ํ์ผ์์ ์คํ๋๋ C ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ ์ดํฉ๋๋ค.
ํธ์ง.
๋น์ ์ด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ -E ์ต์ ์ ์ ํํ๋ฉด ์ ์ฒ๋ฆฌ ์ธ์๋ ์๋ฌด ๊ฒ๋ ์ํ๋์ง ์์ต๋๋ค. ์ด๋ฌํ ์ต์ ์ค ์ผ๋ถ
ํจ๊ป ๋ง ์๋ฏธ -E ์ ์ฒ๋ฆฌ๊ธฐ ์ถ๋ ฅ์ด
์ค์ ์ปดํ์ผ์๋ ์ ํฉํ์ง ์์ต๋๋ค.
-์,option
๋น์ ์ด ์ฌ์ฉํ ์ -์,option ์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ๋ฅผ ์ฐํํ๊ณ ํต๊ณผ option ์ง์ ์ ์ผ๋ก
์ ์ฒ๋ฆฌ๊ธฐ์. ๋ง์ฝ์ option ์ผํ๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ ๋ค์ ์์น์์ ์ฌ๋ฌ ์ต์ ์ผ๋ก ๋๋ฉ๋๋ค.
์ผํ. ๊ทธ๋ฌ๋ ๋ง์ ์ต์ ์ด ์์ , ๋ฒ์ญ ๋๋ ํด์๋ฉ๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ๋ก ์ ๋ฌ๋๊ธฐ ์ ์ ์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ, -Wp ๊ฐ์ ๋ก ์ฐํ
์ด ๋จ๊ณ. ์ ์ฒ๋ฆฌ๊ธฐ์ ์ง์ ์ธํฐํ์ด์ค๋ ๋ฌธ์ํ๋์ง ์์์ผ๋ฉฐ
๋ณ๊ฒฝํ๋ฏ๋ก ๊ฐ๋ฅํ๋ฉด ์ฌ์ฉ์ ํผํด์ผ ํฉ๋๋ค. -Wp ๊ทธ๋ฆฌ๊ณ ์ด์ ์๊ฐ ํธ๋ค์ ์ก๋๋ก ํ์ญ์์ค.
๋์ ์ต์ .
-์์คํ๋ฆฌํ๋ก์ธ์ option
ํจ์ค option ์ ์ฒ๋ฆฌ๊ธฐ์ ๋ํ ์ต์ ์ผ๋ก. ์ด๊ฒ์ ์ฌ์ฉํ์ฌ ์์คํ ์ ๊ณต๊ธํ ์ ์์ต๋๋ค.
GCC๊ฐ ์ธ์ํ์ง ๋ชปํ๋ ํน์ ์ ์ฒ๋ฆฌ๊ธฐ ์ต์ .
์ธ์๋ฅผ ์ทจํ๋ ์ต์ ์ ์ ๋ฌํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. -์์คํ๋ฆฌํ๋ก์ธ์
๋ ๋ฒ, ์ต์ ์ ๋ํด ํ ๋ฒ, ์ธ์์ ๋ํด ํ ๋ฒ.
-ํตํฉ๋์ง ์์-cpp
์ปดํ์ผ ์ ์ ๋ณ๋์ ํจ์ค๋ก ์ ์ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก GCC๋ ๋ค์์ ์ํํฉ๋๋ค.
์ ๋ ฅ ํ ํฐํ ๋ฐ ๊ตฌ๋ฌธ ๋ถ์์ ํตํฉ๋ ๋ถ๋ถ์ผ๋ก ์ฌ์ ์ฒ๋ฆฌ. ์ด ์ต์ ์ ๊ฒฝ์ฐ
์ ์ ํ ์ธ์ด ํ๋ฐํธ ์๋(cc1, ์จ์ํ๋ฌ์ค๋ฐ cc1obj C, C++์ ๊ฒฝ์ฐ,
๋ฐ Objective-C)๋ ๋์ ์ ์ฒ๋ฆฌ๋ฅผ ์ํด ํ ๋ฒ๋ง ๋ ๋ฒ ํธ์ถ๋ฉ๋๋ค.
์ฌ์ ์ฒ๋ฆฌ๋ ์ ๋ ฅ์ ์ค์ ์ปดํ์ผ์ ์ํด ํ ๋ฒ. ์ด ์ต์ ์ ์ ์ฉํ ์ ์์ต๋๋ค
๊ณผ ํจ๊ป -B or -์ธ๊ฐ ๋์ฒด ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ง์ ํ๋ ์ต์ ๋๋
์ ์์ ์ธ ์ ์ฒ๋ฆฌ์ ์ ์ฒ๋ฆฌ ์ฌ์ด์ ํ๋ก๊ทธ๋จ ์์ค์ ์ถ๊ฐ ์ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค.
ํธ์ง.
-D name
์ฌ์ ์ ์ name ๋งคํฌ๋ก๋ก ์ ์ 1.
-D name=์ ์
๋ด์ฉ ์ ์ ํ ํฐํ ๋ฐ ์ฒ๋ฆฌ๋ฉ๋๋ค.
๋ฒ์ญ ๋จ๊ณ XNUMX #๋ฐํ๋ค ์ง๋ น. ํนํ, ์ ์๋
ํฌํจ๋ ๊ฐํ ๋ฌธ์๋ก ์๋ฆฝ๋๋ค.
์ ๋๋ ์๊ณผ ์ ์ฌํ ํ๋ก๊ทธ๋จ์์ ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ ๋ค์์ด ํ์ํ ์ ์์ต๋๋ค.
์์ ์ธ์ฉ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ณต๋ฐฑ๊ณผ ๊ฐ์ ๋ฌธ์๋ฅผ ๋ณดํธํฉ๋๋ค.
์ ๊ตฌ๋ฌธ์ ์๋ฏธ.
๋ช ๋ น์ค์์ ํจ์์ ๊ฐ์ ๋งคํฌ๋ก๋ฅผ ์ ์ํ๋ ค๋ฉด ํด๋น ์ธ์๋ฅผ ์์ฑํ์ญ์์ค.
๋ฑํธ(์๋ ๊ฒฝ์ฐ) ์์ ๊ดํธ๊ฐ ์๋ ๋ชฉ๋ก. ๊ดํธ๋
๋๋ถ๋ถ์ ์์ ์๋ฏธ๊ฐ ์์ผ๋ฏ๋ก ์ต์ ์ ์ธ์ฉํด์ผ ํฉ๋๋ค. ์ ํจ๊ป sh and CSH,
-NS'name(์ธ์...)=์ ์' ์๋ํฉ๋๋ค.
-D and -U ์ต์ ์ ๋ช ๋ น์ค์ ์ ๊ณต๋ ์์๋๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ชจ๋
-๋งคํฌ๋ก ํ์ผ and -ํฌํจ ํ์ผ ์ต์ ์ ๊ฒฐ๊ตญ ์ฒ๋ฆฌ๋ฉ๋๋ค -D and -U ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-U name
์ด์ ์ ์ ์ทจ์ name, ๋ด์ฅ ๋๋ ์ ๊ณต -D ์ต์ ์ ์ ํํฉ๋๋ค.
-์ธ๋ฐํ
์์คํ ํน์ ๋๋ GCC ํน์ ๋งคํฌ๋ก๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ์ง ๋ง์ญ์์ค. ๋ฏธ๋ฆฌ ์ ์๋ ํ์ค
๋งคํฌ๋ก๋ ์ ์๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
-I DIR
๋๋ ํ ๋ฆฌ ์ถ๊ฐ DIR ํค๋ ํ์ผ์ ๊ฒ์ํ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ผ๋ก ์ด๋ํฉ๋๋ค.
์ด๋ฆ์ด ์ง์ ๋ ๋๋ ํ ๋ฆฌ -I ํ์ค ์์คํ ์ด ๋๋ ํ ๋ฆฌ๋ฅผ ํฌํจํ๊ธฐ ์ ์ ๊ฒ์๋ฉ๋๋ค.
๋๋ ํ ๋ฆฌ์ ๊ฒฝ์ฐ DIR ํ์ค ์์คํ ํฌํจ ๋๋ ํ ๋ฆฌ์ธ ๊ฒฝ์ฐ ์ต์ ์ด ๋ฌด์๋ฉ๋๋ค.
์์คํ ๋๋ ํ ๋ฆฌ์ ๋ํ ๊ธฐ๋ณธ ๊ฒ์ ์์์ ํน์ ์ฒ๋ฆฌ๊ฐ
์ ์์คํ ํค๋๋ ํจ๋ฐฐํ์ง ์์ต๋๋ค. ๋ง์ฝ์ DIR "="๋ก ์์ํ๋ฉด "="๊ฐ ๋ฉ๋๋ค.
sysroot ์ ๋์ฌ๋ก ๋์ฒด๋ฉ๋๋ค. ๋ณด๋ค --sysroot and -isysroot.
-o ํ์ผ
์ ์ถ๋ ฅ ์ฐ๊ธฐ ํ์ผ. ์ง์ ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ํ์ผ ๋ ๋ฒ์งธ ์ต์ ์ผ๋ก
์ธ์ CPP. GCC ์ต์ ์ด ์๋ ๋ ๋ฒ์งธ ์ธ์์ ๋ํด ๋ค๋ฅธ ํด์์ด ์๋ ๊ฒฝ์ฐ
๊ทธ๋์ ๋น์ ์ ์ฌ์ฉํด์ผํฉ๋๋ค -o ์ถ๋ ฅ ํ์ผ์ ์ง์ ํฉ๋๋ค.
-๋ฒฝ
์ผ๋ฐ ์ฝ๋์ ํ์ํ ๋ชจ๋ ์ ํ์ ๊ฒฝ๊ณ ๋ฅผ ์ผญ๋๋ค. ํ์ฌ ์ด
is -๋๊ธ, -์ ์, -W๋ฉํฐ๋ฌธ์ ๋ฐ ์ ์ ์น๊ฒฉ์ ๋ํ ๊ฒฝ๊ณ ๋ก ์ธํด
"#if" ํํ์ ๊ธฐํธ ๋ณ๊ฒฝ. ๋ง์ ์ ์ฒ๋ฆฌ๊ธฐ์ ๊ฒฝ๊ณ ๊ฐ
๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ผ๋ฉฐ ์ ์ดํ ์ ์๋ ์ต์ ์ด ์์ต๋๋ค.
-๋๊ธ
-W๋๊ธ
์ฃผ์ ์์ ์ํ์ค ๋๋ง๋ค ๊ฒฝ๊ณ /* ์ ๋ํ๋ฉ๋๋ค /* ๋๊ธ ๋๋ ์ธ์ ๋ ์ง
๋ฐฑ์ฌ๋์-๊ฐํ ๋ฌธ์๊ฐ ๋ํ๋ฉ๋๋ค. // ๋ ผํ. (๋ ํํ ๋ชจ๋ ๋์ผํ ํจ๊ณผ๋ฅผ ๊ฐ์ง๋๋ค.)
-์ ์
์ฃผ์์ ์๋ ๋๋ถ๋ถ์ ์ผ์ค์๋ ํ๋ก๊ทธ๋จ์ ์๋ฏธ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋
์ด์ค์ผ์ดํ๋ ๊ฐํ ๋ฌธ์(??/ ์ค ๋์์) ํ ์ ์์ต๋๋ค.
์ฃผ์์ด ์์๋๊ฑฐ๋ ๋๋๋ ์์น๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ๋ฐ๋ผ์,
์ด์ค์ผ์ดํ๋ ์ค ๋ฐ๊ฟ์ ์ฃผ์ ๋ด๋ถ์ ๊ฒฝ๊ณ ๋ฅผ ์์ฑํฉ๋๋ค.
์ด ์ต์ ์ -๋ฒฝ. ๋ฉด -๋ฒฝ ์ด ์ต์ ์ ์ฌ์ ํ โโํ์ฑํ๋์ด ์์ต๋๋ค.
trigraphs๊ฐ ํ์ฑํ๋์ง ์๋ ํ. ๊ฒฝ๊ณ ์์ด trigraph ๋ณํ์ ์ป์ผ๋ ค๋ฉด
๋ค๋ฅธ -๋ฒฝ ๊ฒฝ๊ณ , ์ฌ์ฉ -์ผ๊ฐํ -๋ฒฝ -Wno-trigraphs.
-์ ํต์ ์ธ
๊ธฐ์กด ๋ฐ ISO C์์ ๋ค๋ฅด๊ฒ ๋์ํ๋ ํน์ ๊ตฌ์ฑ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ๋ํ
๊ธฐ์กด์ C์ ํด๋นํ๋ ํญ๋ชฉ์ด ์๊ณ ๋ฌธ์ ๊ฐ ์๋ ISO C ๊ตฌ์ฑ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
ํผํด์ผ ํ ๊ตฌ์กฐ.
-๋ถ๋ฐํ
๋งคํฌ๋ก๊ฐ ์๋ ์๋ณ์๊ฐ #๋ง์ฝ ์ง์๋ฌธ
๋ฐ์ ํ์ ๋. ์ด๋ฌํ ์๋ณ์๋ XNUMX์ผ๋ก ๋์ฒด๋ฉ๋๋ค.
-์ฌ์ฉํ์ง ์์ ๋งคํฌ๋ก
์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ณธ ํ์ผ์ ์ ์๋ ๋งคํฌ๋ก์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ๋งคํฌ๋ก๋ ์ต์ํ ๊ทธ๋ ๋ค๋ฉด
์ ์ด๋ ํ ๋ฒ์ ํ์ฅ๋๊ฑฐ๋ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ ์คํธํ์ต๋๋ค. ์ ์ฒ๋ฆฌ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
๋งคํฌ๋ก๊ฐ ์ฌ์ ์๋๊ฑฐ๋ ์ ์๋์ง ์์ ์์ ์ ์ฌ์ฉ๋์ง ์์์ต๋๋ค.
๊ธฐ๋ณธ ์ ๊ณต ๋งคํฌ๋ก, ๋ช ๋ น์ค์ ์ ์๋ ๋งคํฌ๋ก ๋ฐ ์ ์ ์๋ ๋งคํฌ๋ก๋ ๋ค์์ ํฌํจํฉ๋๋ค.
ํ์ผ์ ๋ํด ๊ฒฝ๊ณ ํ์ง ์์ต๋๋ค.
์ฐธ๊ณ : ๋งคํฌ๋ก๊ฐ ์ค์ ๋ก ์ฌ์ฉ๋์ง๋ง ๊ฑด๋๋ด ์กฐ๊ฑด๋ถ ๋ธ๋ก์์๋ง ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
CPP๋ ์ด๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒ์ผ๋ก ๋ณด๊ณ ํฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฅผ ํผํ๊ธฐ ์ํด ๋ค์์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋งคํฌ๋ก ์ ์์ ๋ฒ์๋ฅผ ๊ฑด๋๋ด ์ฒซ ๋ฒ์งธ ํญ๋ชฉ์ผ๋ก ์ด๋ํฉ๋๋ค.
๋ธ๋ก. ๋๋ ๋ค์๊ณผ ๊ฐ์ด ๋๋ฏธ ์ฌ์ฉ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
#the_macro_causing_the_warning์ ์ ์ํ ๊ฒฝ์ฐ
#endif
-์ฌ๋ํ ๋ผ๋ฒจ
์ธ์ ๋ ์ง ๊ฒฝ๊ณ #๊ทธ๋ฐ์ ๋๋ #endif ํ ์คํธ๊ฐ ๋ค๋ฐ๋ฆ ๋๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์์ ๋ฐ์ํฉ๋๋ค.
ํ์์ ์ฝ๋
#๋ง์ฝ FOO๋ผ๋ฉด
...
#else ํธ
...
#endif foo
๋ ๋ฒ์งธ์ ์ธ ๋ฒ์งธ "FOO"๋ ์ฃผ์์ ์์ด์ผ ํ์ง๋ง ์ด์ ํ๋ก๊ทธ๋จ์๋ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ด ๊ฒฝ๊ณ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค.
-์๋ฌ
๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ํ๋ ์ค๋ฅ๋ก ๋ง๋ญ๋๋ค. ๊ฒฝ๊ณ ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ์์ค ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฑฐ๋ถ๋์์ต๋๋ค.
-Wsystem ํค๋
์์คํ ํค๋์ ์ฝ๋์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๊ฒ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์ฐพ๋ ๋ฐ ๋์์ด ๋์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ์์ ์ ์ฝ๋์ ์๋ ๋ฒ๊ทธ๋ฅผ ์ต์ ํฉ๋๋ค. ์์คํ ์ ๋ํ ์ฑ ์์ด ์๋ ๊ฒฝ์ฐ
๋์๊ด, ๋น์ ์ ๊ทธ๋ค์๋ณด๊ณ ์ถ์ ์ ์์ต๋๋ค.
-w GNU CPP๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐํํ๋ ๊ฒฝ๊ณ ๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ต๋๋ค.
-ํ๋จ ํฑ
C ํ์ค์ ๋์ด๋ ๋ชจ๋ ํ์ ์ง๋จ์ ๋ฐํํ์ญ์์ค. ๊ทธ๋ค ์ค ์ผ๋ถ๋ ๋จ์ ์์ต๋๋ค
๋ฌดํดํ ์ฝ๋์์ ์์ฃผ ํธ๋ฆฌ๊ฑฐ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก out.
- ํํ์ ์ค๋ฅ
๋ชจ๋ ํ์ ์ง๋จ์ ์คํํ๊ณ ๋ชจ๋ ํ์ ์ง๋จ์ ์ค๋ฅ๋ก ๋ง๋ญ๋๋ค.
์ฌ๊ธฐ์๋ GCC๊ฐ ๋ค์ ์์ด ๋ฐํํ๋ ํ์ ์ง๋จ์ด ํฌํจ๋ฉ๋๋ค. -ํ๋จ ํฑ ๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ด ์ทจ๊ธํฉ๋๋ค.
๊ฒฝ๊ณ .
-M ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ๋์ ์ ์ ํฉํ ๊ท์น์ ์ถ๋ ฅ ํ์ธ
๊ธฐ๋ณธ ์์ค ํ์ผ์ ์ข ์์ฑ์ ์ค๋ช ํฉ๋๋ค. ์ ์ฒ๋ฆฌ๊ธฐ๋ ํ๋๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
ํ์ธ ํด๋น ์์ค ํ์ผ์ ๋ํ ๊ฐ์ฒด ํ์ผ ์ด๋ฆ, ์ฝ๋ก ๋ฐ ์ด๋ฆ์ ํฌํจํ๋ ๊ท์น
๋ค์์์ ์ค๋ ํ์ผ์ ํฌํจํ์ฌ ํฌํจ๋ ๋ชจ๋ ํ์ผ์ -ํฌํจ or -๋งคํฌ๋ก ๋ช ๋ น
๋ผ์ธ ์ต์ .
๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์๋ ํ( -์ฐ or -MQ), ๊ฐ์ฒด ํ์ผ ์ด๋ฆ์
์ ๋ฏธ์ฌ๊ฐ ๊ฐ์ฒด ํ์ผ ์ ๋ฏธ์ฌ๋ก ๋์ฒด๋๊ณ ์์์ ์ ๋ฏธ์ฌ๊ฐ ์๋ ์์ค ํ์ผ์ ์ด๋ฆ
์ ํ ๋๋ ํ ๋ฆฌ ๋ถ๋ถ์ด ์ ๊ฑฐ๋์์ต๋๋ค. ํฌํจ๋ ํ์ผ์ด ๋ง์ ๊ฒฝ์ฐ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์ค๋ก ๋ถํ \- ๊ฐํ. ๊ท์น์๋ ๋ช ๋ น์ด ์์ต๋๋ค.
์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ์ ์ฒ๋ฆฌ๊ธฐ์ ๋๋ฒ๊ทธ ์ถ๋ ฅ์ ์ต์ ํ์ง ์์ต๋๋ค. -dM. ํผํ๋ ค๋ฉด
์ด๋ฌํ ๋๋ฒ๊ทธ ์ถ๋ ฅ์ ์ข ์์ฑ ๊ท์น๊ณผ ํผํฉํ์ฌ ๋ช ์์ ์ผ๋ก ์ง์ ํด์ผ ํฉ๋๋ค.
์ข ์์ฑ ์ถ๋ ฅ ํ์ผ -MF, ๋๋ ๋ค์๊ณผ ๊ฐ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ญ์์ค.
DEPENDENCIES_OUTPUT. ๋๋ฒ๊ทธ ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ๋ฐ ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ๊ณ์ ์ ์ก๋ฉ๋๋ค.
์ ์์ ๋๋ค.
ํต๊ณผ -M ์ด์ ์์๊ฒ ์๋ฏธ -E, ๊ทธ๋ฆฌ๊ณ ์์์ ์ผ๋ก ๊ฒฝ๊ณ ๋ฅผ ์ต์ ํฉ๋๋ค. -w.
-MM ์ฒ๋ผ -M ๊ทธ๋ฌ๋ ์์คํ ํค๋ ๋๋ ํ ๋ฆฌ์ ์๋ ํค๋ ํ์ผ์ ์ธ๊ธํ์ง ๋ง์ญ์์ค.
์ด๋ฌํ ํค๋์์ ์ง์ ๋๋ ๊ฐ์ ์ ์ผ๋ก ํฌํจ๋ ํค๋ ํ์ผ๋ ์์ต๋๋ค.
์ด๊ฒ์ ๊บพ์ ๊ดํธ ๋๋ ํฐ ๋ฐ์ดํ๋ฅผ ์ ํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. #ํฌํจ
์ง์๋ฌธ ์์ฒด๋ ํด๋น ํค๋๊ฐ ๋ค์์ ๋ํ๋ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ์ง ์์ต๋๋ค. -MM
์์กด์ฑ ์ถ๋ ฅ. ์ด๊ฒ์ GCC ๋ฒ์ 3.0 ๋ฐ
์ผ์ฐ์ด.
-MF ํ์ผ
ํจ๊ป ์ฌ์ฉํ ๋ -M or -MM, ์ข ์์ฑ์ ์ธ ํ์ผ์ ์ง์ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ -MF
์ค์์น๋ ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์ ์กํ์ ๋์ผํ ์์น๋ก ๊ท์น์ ๋ณด๋ ๋๋ค.
์ ์ฒ๋ฆฌ๋ ์ถ๋ ฅ.
๋๋ผ์ด๋ฒ ์ต์ ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ -MD or -MMD, -MF ๊ธฐ๋ณธ ์ข ์์ฑ์ ์ฌ์ ์ํฉ๋๋ค.
๊ฒฐ๊ณผ๋ฌผ ํ์ผ.
-mg ๋ค์๊ณผ ๊ฐ์ ์ต์ ๊ณผ ํจ๊ป -M ์์กด์ฑ ์์ฑ ์์ฒญ, -mg ๊ฐ์ ํ๋ค
๋๋ฝ๋ ํค๋ ํ์ผ์ ์์ฑ๋ ํ์ผ์ด๋ฉฐ ์ด๋ฅผ ์ ์ธํ๊ณ ์ข ์์ฑ ๋ชฉ๋ก์ ์ถ๊ฐํฉ๋๋ค.
์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค. ์ข ์์ฑ ํ์ผ ์ด๋ฆ์ "#include"์์ ์ง์ ๊ฐ์ ธ์ต๋๋ค.
๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ์ง์๋ฌธ. -mg ๋ํ ์ ์ฒ๋ฆฌ๋ ์ถ๋ ฅ์ ์ต์ ํฉ๋๋ค.
๋๋ฝ๋ ํค๋ ํ์ผ์ ์ด๊ฒ์ ์ธ๋ชจ์๊ฒ ๋ง๋ญ๋๋ค.
์ด ๊ธฐ๋ฅ์ makefile์ ์๋ ์ ๋ฐ์ดํธ์ ์ฌ์ฉ๋ฉ๋๋ค.
- MP ์ด ์ต์ ์ CPP๊ฐ ๋ค์ ์ด์ธ์ ๊ฐ ์ข ์์ฑ์ ๋ํด ๊ฐ์ง ๋์์ ์ถ๊ฐํ๋๋ก ์ง์ํฉ๋๋ค.
๋ฉ์ธ ํ์ผ์ ์์ฑํ์ฌ ๊ฐ๊ฐ์ด ์๋ฌด๊ฒ๋ ์์กดํ์ง ์๊ฒ ํฉ๋๋ค. ์ด ๋๋ฏธ ๊ท์น์ ์ค๋ฅ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
ํ์ธ ์ ๋ฐ์ดํธํ์ง ์๊ณ ํค๋ ํ์ผ์ ์ ๊ฑฐํ๋ฉด ์ ๊ณต Makefile ์ผ์นํฉ๋๋ค.
๋ค์์ ์ผ๋ฐ์ ์ธ ์ถ๋ ฅ์ ๋๋ค.
test.o: test.c test.h
test.h :
-์ฐ ๋ชฉํ
์ข ์์ฑ ์์ฑ์์ ๋ด๋ณด๋ธ ๊ท์น์ ๋์์ ๋ณ๊ฒฝํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก CPP๋
๊ธฐ๋ณธ ์ ๋ ฅ ํ์ผ์ ์ด๋ฆ, ๋ชจ๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ ์์ ๋ฐ ํ์ผ ์ ๋ฏธ์ฌ ์ญ์
๋ฑ .c, ํ๋ซํผ์ ์ผ๋ฐ์ ์ธ ๊ฐ์ฒด ์ ๋ฏธ์ฌ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๊ฒฐ๊ณผ๋ ๋ชฉํ์ ๋๋ค.
An -์ฐ ์ต์ ์ ๋์์ ์ ํํ ์ง์ ํ ๋ฌธ์์ด๋ก ์ค์ ํฉ๋๋ค. ๋ค๊ฐ ์ํ๋ค๋ฉด
์ฌ๋ฌ ๋์์ ๋จ์ผ ์ธ์๋ก ์ง์ ํ ์ ์์ต๋๋ค. -์ฐ, ๋๋ ์ฌ๋ฌ
-์ฐ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
์๋ฅผ ๋ค์ด, -์ฐ '$(objpfx)foo.o' ์ค ์๋
$(objpfx)foo.o: foo.c
-MQ ๋ชฉํ
๊ณผ ๋์ผ -์ฐ, ๊ทธ๋ฌ๋ Make์ ํน๋ณํ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ธ์ฉํฉ๋๋ค.
-MQ '$(objpfx)foo.o' ์ ๊ณต
$$(objpfx)foo.o: foo.c
๊ธฐ๋ณธ ๋์์ ๋ค์๊ณผ ๊ฐ์ด ์ ๊ณต๋ ๊ฒ์ฒ๋ผ ์๋์ผ๋ก ์ธ์ฉ๋ฉ๋๋ค. -MQ.
-MD -MD ์ ํด๋นํ๋ -M -MF ํ์ผ์ ์ธํ๊ณ -E ์์๋์ง ์์ต๋๋ค. ์ด์ ์ฌ
๊ฒฐ์ ํ๋ค ํ์ผ ์ฌ๋ถ์ ๋ฐ๋ผ -o ์ต์ ์ด ์ฃผ์ด์ง๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๋๋ผ์ด๋ฒ๋
์ธ์์ด์ง๋ง ์ ๋ฏธ์ฌ .d, ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ๋ ฅ ํ์ผ์ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค.
๋ชจ๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ ์์์ ์ ๋ฏธ์ฌ๋ฅผ ์ ๊ฑฐํ๊ณ .d ์ ๋ฏธ์ฌ.
If -MD ์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค -E, ์ด๋ค -o ์ค์์น๋ ๋ค์์ ์ง์ ํ๋ ๊ฒ์ผ๋ก ์ดํด๋ฉ๋๋ค.
์ข ์์ฑ ์ถ๋ ฅ ํ์ผ์ด์ง๋ง ์์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ -E, ๊ฐ๊ฐ -o ์ง์ ํ๋ ๊ฒ์ผ๋ก ์ดํด๋๋ค
๋์ ๊ฐ์ฒด ํ์ผ.
์ดํ -E ์์๋์ง ์์ผ๋ฉฐ, -MD ์ข ์์ฑ ์ถ๋ ฅ ํ์ผ์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ปดํ์ผ ๊ณผ์ ์ ๋ถ์์ฉ
-MMD
์ฒ๋ผ -MD ์์คํ ํค๋ ํ์ผ์ด ์๋ ์ฌ์ฉ์ ํค๋ ํ์ผ๋ง ์ธ๊ธํ๋ ๊ฒ์ ์ ์ธํ๊ณ .
-fpch-deps
๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋๋ฅผ ์ฌ์ฉํ ๋ ์ด ํ๋๊ทธ๋ก ์ธํด ์ข ์์ฑ ์ถ๋ ฅ ํ๋๊ทธ๊ฐ
๋ํ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋์ ์ข ์์ฑ์์ ํ์ผ์ ๋์ดํฉ๋๋ค. ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ์๋ง
๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋๊ฐ ๋์ด๋๊ณ ํค๋๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ ํ์ผ์ด ๋์ด๋์ง ์์ต๋๋ค.
๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋๋ฅผ ์ฌ์ฉํ ๋ ํด๋น ํ์ผ์ ์ฐธ์กฐํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
-fpch-์ ์ฒ๋ฆฌ
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋๋ฅผ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. -E. ํน์๋ฌธ์๋ฅผ ์ฝ์ ํฉ๋๋ค
"#pragma", "#pragma GCC pch_preprocess "ํ์ผ ์ด๋ฆ"" ์ฅ์๋ฅผ ํ์ํ๊ธฐ ์ํด ์ถ๋ ฅ์์
๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋๊ฐ ๋ฐ๊ฒฌ๋ ์์น ๋ฐ ํ์ผ ์ด๋ฆ. ์ธ์ -f์ ์ฒ๋ฆฌ ์
์ฌ์ฉํ๋ฉด GCC๊ฐ ์ด "#pragma"๋ฅผ ์ธ์ํ๊ณ PCH๋ฅผ ๋ก๋ํฉ๋๋ค.
์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊บผ์ ธ ์์ต๋๋ค. ์ฌ์ ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ ์ถ๋ ฅ์
GCC์ ๋ํ ์ ๋ ฅ์ผ๋ก ์ ๋ง ์ ํฉํฉ๋๋ค. ์ ์ํด ์ผ์ ธ ์์ต๋๋ค. - ์์ ์ ์ฅ.
์ด "#pragma"๋ฅผ ์์ ์ ์ฝ๋์ ์์ฑํด์๋ ์ ๋์ง๋ง ํธ์งํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
PCH ํ์ผ์ด ๋ค๋ฅธ ์์น์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ filename. ํ์ผ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.
์ ๋ ๋๋ GCC์ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋์ ์ผ ์ ์์ต๋๋ค.
-x c
-x C ++
-x ๋ชฉ์ -c
-x cpp ์ด์ ๋ธ๋ฌ
์์ค ์ธ์ด(C, C++, Objective-C ๋๋ ์ด์ ๋ธ๋ฆฌ)๋ฅผ ์ง์ ํฉ๋๋ค. ์ด๊ฑด ํ ๋ง์ด ์๋ค
ํ์ค ์ค์ ๋๋ ํ์ฅ ์ด๋ค ๊ธฐ๋ณธ ๊ตฌ๋ฌธ์
์์ํ๋ค. ์ด ์ต์ ์ค ์๋ฌด ๊ฒ๋ ์ ๊ณตํ์ง ์์ผ๋ฉด cpp๋ ๋ค์์์ ์ธ์ด๋ฅผ ์ถ๋ก ํฉ๋๋ค.
์์ค ํ์ผ์ ํ์ฅ์: .c, .CC, .m๋ฐ .S. ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ ํ์ฅ
C++ ๋ฐ ์ด์ ๋ธ๋ฆฌ๋ ์ธ์๋ฉ๋๋ค. cpp๊ฐ ํ์ฅ์๋ฅผ ์ธ์ํ์ง ๋ชปํ๋ฉด
ํ์ผ์ C๋ก ์ทจ๊ธํฉ๋๋ค. ์ด๊ฒ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ชจ๋์ ๋๋ค.
์ฐธ๊ณ : ์ด์ ๋ฒ์ ์ cpp๊ฐ ํ์ฉ๋จ -๋ ๋ ๋ค ์ ํํ ์ต์
์ธ์ด ๋ฐ ํ์ค ์ค์ ์์ค. ์ด ์ต์ ์ ์ ๊ฑฐ๋์์ต๋๋ค.
์ ์ถฉ๋ํ๋ค -l ์ต์ ์ ์ ํํฉ๋๋ค.
-ํ์ค=ํ์ง
-์์
์ฝ๋๊ฐ ์ค์ํด์ผ ํ๋ ํ์ค์ ์ง์ ํฉ๋๋ค. ํ์ฌ CPP๋ C์ ๋ํด ์๊ณ ์์ต๋๋ค.
๋ฐ C++ ํ์ค; ๋ค๋ฅธ ์ฌ๋๋ค์ ๋ฏธ๋์ ์ถ๊ฐ๋ ์ ์์ต๋๋ค.
ํ์ง ๋ค์ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
"c90"
"c89"
"iso9899:1990"
1990๋ ๋ถํฐ ISO C ํ์ค์ ๋๋ค. c90 ์ด ๋ฒ์ ์ ๊ด๋ก์ ์ธ ์ฝ์ด์ ๋๋ค.
ํ์ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -์์ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -ํ์ค=c90.
"iso9899:199409"
1990๋ ์ ๊ฐ์ ๋ 1994๋ C ํ์ค.
"iso9899:1999"
"c99"
"iso9899:199x"
"c9x"
1999๋ XNUMX์์ ์ถํ๋ ๊ฐ์ ๋ ISO C ํ์ค.
C9X๋ก ์๋ ค์ก์ต๋๋ค.
"iso9899:2011"
"c11"
"c1x"
2011๋ XNUMX์์ ์ถํ๋ ๊ฐ์ ๋ ISO C ํ์ค.
C1X๋ก ์๋ ค์ก์ต๋๋ค.
"๊ทธ๋90"
"๊ทธ๋89"
1990 C ํ์ค๊ณผ GNU ํ์ฅ. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
"๊ทธ๋99"
"gnu9x"
1999 C ํ์ค๊ณผ GNU ํ์ฅ.
"๊ทธ๋11"
"gnu1x"
2011 C ํ์ค๊ณผ GNU ํ์ฅ.
"C++98"
1998 ISO C++ ํ์ค ๋ฐ ์์ ์ฌํญ.
"๊ทธ๋++98"
๊ฐ์ -std = c ++ 98 ํ๋ฌ์ค GNU ํ์ฅ. ์ด๊ฒ์ C++ ์ฝ๋์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-๋๋- ํฌํจ ๊ฒฝ๋ก๋ฅผ ๋ถํ ํฉ๋๋ค. ๋ค์์ผ๋ก ์ง์ ๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ -I ์ ์ ์ต์ -๋๋- are
"#include "๋ก ์์ฒญ๋ ํค๋๋ง ๊ฒ์ํฉ๋๋ค.ํ์ผ""; ๊ทธ๋ค์ ๊ฒ์๋์ง ์์ต๋๋ค
"#ํฌํจํ๋คํ์ผ>". ์ถ๊ฐ ๋๋ ํ ๋ฆฌ๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ -I ์ดํ์ ์ต์
-๋๋-, ํด๋น ๋๋ ํ ๋ฆฌ๋ ๋ชจ๋ ๊ฒ์๋ฉ๋๋ค. #ํฌํจ ๊ฐ์ด๋ ๋ผ์ธ.
๋ํ, -๋๋- ํ์ฌ ํ์ผ ๋๋ ํ ๋ฆฌ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ ๊ฒ์ ๊ธ์งํฉ๋๋ค.
"#include "์ ๋ํ ์ฒซ ๋ฒ์งธ ๊ฒ์ ๋๋ ํ ๋ฆฌํ์ผ"". ์ด ์ต์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
-Nostdinc
ํค๋ ํ์ผ์ ๋ํ ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฒ์ํ์ง ๋ง์ญ์์ค. ๋๋ ํ ๋ฆฌ๋ง
๋น์ ์ ๋ก ์ง์ ํ์ต๋๋ค -I ์ต์ (๋ฐ ํ์ฌ ํ์ผ์ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ
ํด๋น)์ด ๊ฒ์๋ฉ๋๋ค.
-nostdinc++
C++ ๊ด๋ จ ํ์ค ๋๋ ํ ๋ฆฌ์์ ํค๋ ํ์ผ์ ๊ฒ์ํ์ง ๋ง์ญ์์ค.
๋ค๋ฅธ ํ์ค ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฒ์ํ์ญ์์ค. (์ด ์ต์ ์ C++๋ฅผ ๋น๋ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
๋์๊ด.)
-ํฌํจ ํ์ผ
๋ฐฉ๋ฒ ํ์ผ "#include "file""์ด ๊ธฐ๋ณธ ์์ค์ ์ฒซ ๋ฒ์งธ ์ค์ ๋ํ๋ ๊ฒ์ฒ๋ผ
ํ์ผ. ๊ทธ๋ฌ๋ ๊ฒ์ํ ์ฒซ ๋ฒ์งธ ๋๋ ํ ๋ฆฌ๋ ํ์ผ ์ ์ฒ๋ฆฌ๊ธฐ์ ์๋์ ๋๋ค
์๋ฐฐ ๊ท์น์ ๋ฅผ ๋ฐ์์ผ ํ๋ ๋ฏธ๊ตญ ์ฌํ์ of ๊ธฐ๋ณธ ์์ค ํ์ผ์ด ํฌํจ๋ ๋๋ ํ ๋ฆฌ. ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ
๊ฑฐ๊ธฐ์์ "#include "..."" ๊ฒ์ ์ฒด์ธ์ ๋๋จธ์ง ๋ถ๋ถ์์ ๋ค์๊ณผ ๊ฐ์ด ๊ฒ์๋ฉ๋๋ค.
์ ์์ ๋๋ค.
์ฌ๋ฌ ๊ฒฝ์ฐ -ํฌํจ ์ต์ ์ด ์ฃผ์ด์ง๋ฉด ํ์ผ์ ์์๋๋ก ํฌํจ๋ฉ๋๋ค.
๋ช ๋ น์ค์ ๋ํ๋ฉ๋๋ค.
-๋งคํฌ๋ก ํ์ผ
์ ํํ ๊ฐ์ -ํฌํจ, ์ค์บ์ ์ํด ์์ฑ๋ ๋ชจ๋ ์ถ๋ ฅ์ ์ ์ธ ํ์ผ ๋์ ธ์ง๋ค
๋จ์ด์ ธ์๋. ์ ์ํ ๋งคํฌ๋ก๋ ์ ์๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ ๋งคํฌ๋ก๋ฅผ ํ๋ํ ์ ์์ต๋๋ค.
์ ์ธ์ ์ฒ๋ฆฌํ์ง ์๊ณ ํค๋์์.
์ ์ํด ์ง์ ๋ ๋ชจ๋ ํ์ผ -๋งคํฌ๋ก ์ ์ํด ์ง์ ๋ ๋ชจ๋ ํ์ผ๋ณด๋ค ๋จผ์ ์ฒ๋ฆฌ๋ฉ๋๋ค. -ํฌํจ.
-idirafter DIR
๊ฒ์ DIR ํค๋ ํ์ผ์ ๊ฒฝ์ฐ ์๊ฐ ๋ด์ ๋ก ์ง์ ๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ -I ๊ทธ๋ฆฌ๊ณ
ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ๊ฐ ์์ง๋์์ต๋๋ค. DIR ๋ค์์ ํฌํจํ๋ ์์คํ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
์๋ฐฐ ๊ท์น์. ๋ง์ฝ์ DIR "="๋ก ์์ํ๋ฉด "="๋ sysroot๋ก ๋์ฒด๋ฉ๋๋ค.
์ ๋์ฌ; ๋ณด๋ค --sysroot and -isysroot.
-ipprefix ์ ๋์ฌ
์ง์ ์ ๋์ฌ ํ์ ์ ๋์ฌ๋ก -iwith ์ ๋์ฌ ์ต์ . ์ ๋์ด์ ๊ฒฝ์ฐ
๋๋ ํ ๋ฆฌ๋ฅผ ๋ํ๋ด๋ฏ๋ก ์ต์ข /.
-iwith ์ ๋์ฌ DIR
-์์ ์ ๋์ฌ๊ฐ ์๋ ๊ฒฝ์ฐ DIR
์ถ๊ฐ DIR ์ด์ ์ ์ง์ ๋ ์ ๋์ฌ์ -ipprefix, ๊ฒฐ๊ณผ๋ฅผ ์ถ๊ฐํ์ญ์์ค
๋๋ ํ ๋ฆฌ๋ฅผ ํฌํจ ๊ฒ์ ๊ฒฝ๋ก๋ก ์ด๋ํฉ๋๋ค. -์์ ์ ๋์ฌ๊ฐ ์๋ ๊ฒฝ์ฐ ๊ฐ์ ์ฅ์์ ๋๋ค. -I
์ผ ๊ฒ์ด๋ค; -iwith ์ ๋์ฌ ๊ทธ๊ฒ์ ์ด๋์ ๋๋ค -idirafter ํ ๊ฒ์ด๋ค.
-isysroot DIR
์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. --sysroot ์ต์ ์ด์ง๋ง ํค๋ ํ์ผ์๋ง ์ ์ฉ๋ฉ๋๋ค(์์ธ
ํค๋ ํ์ผ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋์ ์ ์ฉ๋๋ Darwin ๋์). ์ฐธ์กฐ
--sysroot ์์ธํ ๋ด์ฉ์ ์ต์ ์ ์ฐธ์กฐํ์ญ์์ค.
-imultilib DIR
DIR ๋์๋ณ C++ ํค๋๋ฅผ ํฌํจํ๋ ๋๋ ํ ๋ฆฌ์ ํ์ ๋๋ ํ ๋ฆฌ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
-์์ด์์คํ DIR
๊ฒ์ DIR ํค๋ ํ์ผ์ ๊ฒฝ์ฐ ๋ค์์ผ๋ก ์ง์ ๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ ๋ค์ -I ๊ทธ๋ฌ๋ ์ ์
ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ. ์์คํ ๋๋ ํ ๋ฆฌ๋ก ํ์ํ์ฌ ๋์ผํ๊ฒ ๊ฐ์ ธ์ต๋๋ค.
ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ์ ์ ์ฉ๋๋ ํน๋ณํ ์ทจ๊ธ. ๋ง์ฝ์ DIR ์์
"="๋ฅผ ์ฌ์ฉํ๋ฉด "="๊ฐ sysroot ์ ๋์ฌ๋ก ๋ฐ๋๋๋ค. ๋ณด๋ค --sysroot and
-isysroot.
- ์ธ์ฉ DIR
๊ฒ์ DIR "#include "๋ก ์์ฒญ๋ ํค๋ ํ์ผ์๋ง ํด๋นํ์ผ""; ๊ทธ๋ค์ ์๋๋ค
"#ํฌํจ"์ ๊ฒ์ํ์ต๋๋ค.ํ์ผ>", ๋ค์์ ์ํด ์ง์ ๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ ์์ -I ๊ทธ๋ฆฌ๊ณ ์ ์
ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ. ๋ง์ฝ์ DIR "="๋ก ์์ํ๋ฉด "="๋ก ๋์ฒด๋ฉ๋๋ค.
sysroot ์ ๋์ฌ; ๋ณด๋ค --sysroot and -isysroot.
-f ์ง์๋ฌธ ์ ์ฉ
์ ์ฒ๋ฆฌํ ๋ ์ง์๋ฌธ์ ์ฒ๋ฆฌํ๋ ๋งคํฌ๋ก๋ฅผ ํ์ฅํ์ง ๋ง์ญ์์ค.
์ต์ ์ ๋์์ -E and -f์ ์ฒ๋ฆฌ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
์ -E, ์ ์ฒ๋ฆฌ๋ "#define"๊ณผ ๊ฐ์ ์ง์๋ฌธ ์ฒ๋ฆฌ๋ก ์ ํ๋ฉ๋๋ค.
"#ifdef" ๋ฐ "#์ค๋ฅ". ๋งคํฌ๋ก ํ์ฅ ๋ฐ
trigraph ๋ณํ์ ์ํ๋์ง ์์ต๋๋ค. ๋ํ, -dD ์ต์ ์ ์์์ ์ผ๋ก
์ฌ์ฉํ๋๋ก ์ค์ ๋์์ต๋๋ค.
์ -f์ ์ฒ๋ฆฌ, ๋ช ๋ น์ค ๋ฐ ๋๋ถ๋ถ์ ๋ด์ฅ ๋งคํฌ๋ก์ ์ฌ์ ์ ์๋
์ฅ์ ๊ฐ์๋. ์ปจํ ์คํธ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ "__LINE__"๊ณผ ๊ฐ์ ๋งคํฌ๋ก๊ฐ ์ฒ๋ฆฌ๋ฉ๋๋ค.
๋ณดํต. ์ด๋ ๊ฒ ํ๋ฉด ์ด์ ์ "-E"๋ก ์ฌ์ ์ฒ๋ฆฌ๋ ํ์ผ์ ์ปดํ์ผํ ์ ์์ต๋๋ค.
-f์ง์์ด ์ ์ฉ".
๋์ด ํจ๊ป -E and -f์ ์ฒ๋ฆฌ, ๊ท์น -f์ ์ฒ๋ฆฌ ์ฐ์ ๊ถ์ ๊ฐ์ง๋ค. ์ด๊ฒ
์ด์ ์ "-E"๋ก ์ ์ฒ๋ฆฌ๋ ํ์ผ์ ์ ์ฒด ์ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
-f์ง์์ด ์ ์ฉ".
-fdollars-in-์๋ณ์
์๋ฝ $ ์๋ณ์์.
-fextended-์๋ณ์
์๋ณ์์ ๋ฒ์ฉ ๋ฌธ์ ์ด๋ฆ์ ํ์ฉํฉ๋๋ค. ์ด ์ต์ ์ ์คํ์ ์ ๋๋ค. ์์
GCC์ ํฅํ ๋ฒ์ ์์๋ C99 ๋ฐ C++์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
-fno-ํ์ค ์์คํ ํค๋
์ ์ฒ๋ฆฌํ ๋ ์ ๊ทํ๋ก ์์คํ ํค๋ ๊ฒฝ๋ก๋ฅผ ์ค์ด์ง ๋ง์ญ์์ค.
-f์ ์ฒ๋ฆฌ
์ ๋ ฅ ํ์ผ์ด ์ด๋ฏธ ์ ์ฒ๋ฆฌ๋์์์ ์ ์ฒ๋ฆฌ๊ธฐ์ ํ์ํฉ๋๋ค. ์ด๊ฒ
๋งคํฌ๋ก ํ์ฅ, ์ผ์ค ๊ทธ๋ํ ๋ณํ, ์ด์ค์ผ์ดํ๋ ๊ฐํ ์ฐ๊ฒฐ,
๋ฐ ๋๋ถ๋ถ์ ์ง์๋ฌธ ์ฒ๋ฆฌ. ์ ์ฒ๋ฆฌ๊ธฐ๋ ์ฌ์ ํ ์ธ์ํ๊ณ ์ ๊ฑฐํฉ๋๋ค.
์ฃผ์์ผ๋ก ์ฌ์ ์ฒ๋ฆฌ๋ ํ์ผ์ ์ ๋ฌํ ์ ์์ต๋๋ค. -C ์์ด ์ปดํ์ผ๋ฌ์
๋ฌธ์ . ์ด ๋ชจ๋์์ ํตํฉ ์ ์ฒ๋ฆฌ๊ธฐ๋ ํ ํฌ๋์ด์ ์ ๋ถ๊ณผํฉ๋๋ค.
ํ๋ก ํธ ์๋๋ฅผ ์ํด.
-f์ ์ฒ๋ฆฌ ์ ๋ ฅ ํ์ผ์ ํ์ฅ์ ์ค ํ๋๊ฐ ์์ผ๋ฉด ์์์ ์ ๋๋ค. .i, .ii or .๋ฏธ.
๋ค์์ GCC๊ฐ ์์ฑํ ์ ์ฒ๋ฆฌ๋ ํ์ผ์ ์ฌ์ฉํ๋ ํ์ฅ์์ ๋๋ค. - ์์ ์ ์ฅ.
-ftabstop=ํญ
ํญ ์ ์ง ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์ค์ ํฉ๋๋ค. ์ด๊ฒ์ ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์ฌ๋ฐ๋ฅธ ์ด์ ๋ณด๊ณ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ค์ ํญ์ด ๋ํ๋๋๋ผ๋ ๊ฒฝ๊ณ ๋๋ ์ค๋ฅ์ ์ซ์. ๊ฐ์ด ์์ ๊ฒฝ์ฐ
1๋ณด๋ค ํฌ๊ฑฐ๋ 100๋ณด๋ค ํฌ๋ฉด ์ต์ ์ด ๋ฌด์๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 8์ ๋๋ค.
-fdebug-cpp
์ด ์ต์ ์ GCC ๋๋ฒ๊น ์๋ง ์ ์ฉํฉ๋๋ค. ์ ํจ๊ป ์ฌ์ฉํ ๋ -E, ๋คํ ๋๋ฒ๊น
์์น ์ง๋์ ๋ํ ์ ๋ณด์ ๋๋ค. ์ถ๋ ฅ์ ๋ชจ๋ ํ ํฐ ์์๋ ๋คํ๊ฐ ์ต๋๋ค.
๊ทธ ์์น๊ฐ ์ํ ์ง๋. ํ ํฐ์ ์์น๋ฅผ โโ๋ด๊ณ ์๋ ๋งต์ ๋คํ
๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{"P":F ;"F":F ;"์": ;"์จ": ;"NS": ;"๋ฏธ๋์": ;"์ด์ํ": ,"์์น": }
์์ด ์ฌ์ฉํ ๋ -E, ์ด ์ต์ ์ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
-ftrack ๋งคํฌ๋ก ํ์ฅ[=์ํ]
๋งคํฌ๋ก ํ์ฅ์์ ํ ํฐ์ ์์น๋ฅผ โโ์ถ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ปดํ์ผ๋ฌ๋
์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ ํ์ฌ ๋งคํฌ๋ก ํ์ฅ ์คํ์ ๋ํ ์ง๋จ
๋งคํฌ๋ก ํ์ฅ. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ ์ฒ๋ฆฌ๊ธฐ์ ์ปดํ์ผ๋ฌ๊ฐ
๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ. NS ์ํ ๋งค๊ฐ๋ณ์๋ ํ ํฐ์ ์ ๋ฐ๋ ์์ค์ ์ ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์น ์ถ์ ์ ํตํด ํ์ํ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ์๋น๋ฅผ ์ค์ ๋๋ค. ๊ฐ 0 of
์ํ ์ด ์ต์ ์ ๋นํ์ฑํํฉ๋๋ค. -ftrack ๋งคํฌ๋ก ํ์ฅ ์ ์์๋ค
๋ช ๋ น์ค. ๊ฐ 1 ๋ฅผ ์ํด ์ ํ๋ ๋ชจ๋์์ ํ ํฐ ์์น๋ฅผ ์ถ์ ํฉ๋๋ค.
์ต์ํ์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋. ์ด ๋ชจ๋์์๋ ํ์ฅ์ผ๋ก ์ธํ ๋ชจ๋ ํ ํฐ
ํจ์์ ๊ฐ์ ๋งคํฌ๋ก์ ์ธ์๋ ๋์ผํ ์์น๋ฅผ ๊ฐ์ต๋๋ค. ๊ฐ 2 ์ถ์ ํ ํฐ
์์น๋ฅผ ์์ ํ. ์ด ๊ฐ์ ๊ฐ์ฅ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ชจํฉ๋๋ค. ์ด ์ต์ ์ด ์ฃผ์ด์ก์ ๋
์ธ์๊ฐ ์์ผ๋ฉด ๊ธฐ๋ณธ ๋งค๊ฐ๋ณ์ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 2.
-ftrack-macro-expansion=2๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
-fexec-๋ฌธ์์ =๋ฌธ์์
๋ฌธ์์ด ๋ฐ ๋ฌธ์ ์์์ ์ฌ์ฉ๋๋ ์คํ ๋ฌธ์ ์งํฉ์ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ
UTF-8์ ๋๋ค. ๋ฌธ์์ ์์คํ ์ "iconv" ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ง์ํ๋ ๋ชจ๋ ์ธ์ฝ๋ฉ์ผ ์ ์์ต๋๋ค.
์ผ์.
-fwide-exec-charset=๋ฌธ์์
์์ด๋ ๋ฌธ์์ด ๋ฐ ๋ฌธ์ ์์์ ์ฌ์ฉ๋๋ ์์ด๋ ์คํ ๋ฌธ์ ์ธํธ๋ฅผ ์ค์ ํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ "wchar_t"์ ๋๋น์ ํด๋นํ๋ UTF-32 ๋๋ UTF-16์ ๋๋ค. ๊ฐ์ด
๊ณผ -fexec-๋ฌธ์์ , ๋ฌธ์์ ์์คํ ์ "iconv"์์ ์ง์ํ๋ ๋ชจ๋ ์ธ์ฝ๋ฉ์ผ ์ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฃจํด; ๊ทธ๋ฌ๋ ์ ํฉํ์ง ์์ ์ธ์ฝ๋ฉ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ ํํ "wchar_t"์ ์์ต๋๋ค.
-finput-๋ฌธ์์ =๋ฌธ์์
์ ๋ ฅ์ ๋ฌธ์ ์งํฉ์์ ๋ฒ์ญ์ ์ฌ์ฉ๋๋ ์ ๋ ฅ ๋ฌธ์ ์งํฉ์ ์ค์ ํฉ๋๋ค.
ํ์ผ์ GCC์์ ์ฌ์ฉํ๋ ์์ค ๋ฌธ์ ์ธํธ๋ก ๋ณํํฉ๋๋ค. ๋ก์ผ์ผ์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๋๋ GCC
๋ก์ผ์ผ์์ ์ด ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ UTF-8์ ๋๋ค. ์ด๊ฒ์ ๋ ์์๋ค
๋ก์ผ์ผ ๋๋ ์ด ๋ช ๋ น์ค ์ต์ ์ ์ํด ์ฌ์ ์๋ฉ๋๋ค. ํ์ฌ ๋ช ๋ น
์ถฉ๋์ด ์๋ ๊ฒฝ์ฐ line ์ต์ ์ด ์ฐ์ ํฉ๋๋ค. ๋ฌธ์์ ๋ชจ๋ ์ธ์ฝ๋ฉ์ด ๋ ์ ์์ต๋๋ค
์์คํ ์ "iconv" ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฃจํด์์ ์ง์ํฉ๋๋ค.
-fworking-๋๋ ํ ๋ฆฌ
์ปดํ์ผ๋ฌ๊ฐ ํ์ฉํ๋ ์ ์ฒ๋ฆฌ๊ธฐ ์ถ๋ ฅ์์ โโ๋ผ์ธ ๋ง์ปค ์์ฑ์ ํ์ฑํ
์ ์ฒ๋ฆฌ ์์ ์ ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์๊ณ ์์ต๋๋ค. ์ด ์ต์ ์ด
ํ์ฑํ๋๋ฉด ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์ด๊ธฐ ๋ผ์ธ ๋ง์ปค ๋ค์์ ๋ ๋ฒ์งธ ๋ผ์ธ ๋ง์ปค๋ฅผ ๋ด๋ณด๋ ๋๋ค.
ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ ๋ค์ ๋ ๊ฐ์ ์ฌ๋์๊ฐ ์์ต๋๋ค. GCC๋ ์ด๊ฒ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค
๋๋ ํ ๋ฆฌ, ์ฌ์ ์ฒ๋ฆฌ๋ ์ ๋ ฅ์ ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ๋ด๋ณด๋ธ ๋๋ ํ ๋ฆฌ๋ก
์ผ๋ถ ๋๋ฒ๊น ์ ๋ณด ํ์์ ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ. ์ด ์ต์ ์
๋๋ฒ๊น ์ ๋ณด๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ ์์์ ์ผ๋ก ํ์ฑํ๋์ง๋ง ๋ค์์ผ๋ก ๊ธ์งํ ์ ์์ต๋๋ค.
๋ถ์ ํ -fno-์์ ๋๋ ํฐ๋ฆฌ. ๊ฒฝ์ฐ -P ํ๋๊ทธ๊ฐ ๋ช ๋ น์ ์์ต๋๋ค.
line์์ "#line" ์ง์๋ฌธ์ด ์ ํ ์์ฑ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ด ์ต์ ์ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
-fno-show-์ด
์ง๋จ์์ ์ด ๋ฒํธ๋ฅผ ์ธ์ํ์ง ๋ง์ญ์์ค. ์ง๋จ์ด ํ์ํ ๊ฒฝ์ฐ ํ์ํ ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ด ๋ฒํธ๋ฅผ ์ดํดํ์ง ๋ชปํ๋ ํ๋ก๊ทธ๋จ์ ์ํด ์ค์บ๋๊ณ ์์ต๋๋ค.
๋ฐ์๋.
-A ์ ๋ถ=๋ต๋ณ
์ ์ด๋ก ์ฃผ์ฅํ๊ธฐ ์ ๋ถ ๋๋ต ๋ต๋ณ. ์ด ์์์
๊ตฌํ๋ณด๋ค ์ ํธ -A ์ ๋ถ(๋ต๋ณ), ์ฌ์ ํ ์ง์๋ฉ๋๋ค.
์ ํน์ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
-A -์ ๋ถ=๋ต๋ณ
์ ์ด๋ก ์ด์ค์ ์ทจ์ ์ ๋ถ ๋๋ต ๋ต๋ณ.
-dCHARS
๋ฌธ์ ๋ค์ ๋ฌธ์ ์ค ํ๋ ์ด์์ ์ํ์ค์ด๋ฉฐ ๋ค์ ๋ฌธ์๊ฐ ์๋์ด์ผ ํฉ๋๋ค.
๊ณต๋ฐฑ์ด ์์ ์ต๋๋ค. ๋ค๋ฅธ ๋ฌธ์๋ ์ปดํ์ผ๋ฌ์ ์ํด ์ ์ ํ๊ฒ ํด์๋๊ฑฐ๋
GCC์ ํฅํ ๋ฒ์ ์ ์ํด ์์ฝ๋์ด ์์ผ๋ฏ๋ก ์๋์ผ๋ก ๋ฌด์๋ฉ๋๋ค. ์ง์ ํ๋ ๊ฒฝ์ฐ
ํ๋์ด ์ถฉ๋ํ๋ ์บ๋ฆญํฐ, ๊ฒฐ๊ณผ๋ ์ ์๋์ง ์์ต๋๋ค.
M ์ผ๋ฐ ์ถ๋ ฅ ๋์ ๋ค์ ๋ชฉ๋ก์ ์์ฑํ์ญ์์ค. #๋ฐํ๋ค ๋ชจ๋ ์ง์นจ
๋ฏธ๋ฆฌ ์ ์๋ ๊ฒ์ ํฌํจํ์ฌ ์ ์ฒ๋ฆฌ๊ธฐ ์คํ ์ค์ ์ ์๋ ๋งคํฌ๋ก
๋งคํฌ๋ก. ์ด๊ฒ์ ๋น์ ์ ๋ฒ์ ์ ์ฌ์ ์ ์๋ ๊ฒ์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ. ํ์ผ์ด ์๋ค๊ณ ๊ฐ์ ํธ.h, ๋ช ๋ น
ํฐ์น foo.h; cpp -dM foo.h
๋ฏธ๋ฆฌ ์ ์ ๋ ๋ชจ๋ ๋งคํฌ๋ก๊ฐ ํ์๋ฉ๋๋ค.
๋น์ ์ด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ -dM ~์์ด -E ์ ํ๊ถ, -dM ์ ๋์์ด๋ก ํด์๋ฉ๋๋ค.
-fdump-rtl-๋งํ.
D ์ฒ๋ผ M ๋ ๊ฐ์ง ์ธก๋ฉด์ ์ ์ธํ๊ณ : ์ง์ ๋ฏธ๋ฆฌ ์ ์๋ ๋งคํฌ๋ก๋ฅผ ํฌํจํ๊ณ
์ถ๋ ฅ ๋ ์ ์, #๋ฐํ๋ค ์ง์๋ฌธ ๋ฐ ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ. ๋ ์ข ๋ฅ
์ถ๋ ฅ์ ํ์ค ์ถ๋ ฅ ํ์ผ๋ก ์ด๋ํฉ๋๋ค.
N ์ฒ๋ผ D, ๊ทธ๋ฌ๋ ํ์ฅ์ด ์๋ ๋งคํฌ๋ก ์ด๋ฆ๋ง ๋ด๋ณด๋ ๋๋ค.
I ์ฐ์ถ #ํฌํจ ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ์ธ์ ์ง์๋ฌธ.
U ์ฒ๋ผ D ํ์ฅ๋๊ฑฐ๋ ์ ์๊ฐ ํ ์คํธ๋ ๋งคํฌ๋ก๋ง ์ ์ธ
์ ์ฒ๋ฆฌ๊ธฐ ์ง์๋ฌธ์์ ์ถ๋ ฅ๋ฉ๋๋ค. ์ฌ์ฉํ ๋๊น์ง ์ถ๋ ฅ์ด ์ง์ฐ๋๊ฑฐ๋
๋งคํฌ๋ก ํ ์คํธ; ๊ทธ๋ฆฌ๊ณ #์ธ๋ฐํ ์ง์๋ฌธ์ ํ ์คํธ๋ ๋งคํฌ๋ก์ ๋ํด์๋ ์ถ๋ ฅ๋์ง๋ง
๋น์ ์ ์๋์ง ์์.
-P ์ ์ฒ๋ฆฌ๊ธฐ์ ์ถ๋ ฅ์์ โโ๋ผ์ธ๋ง์ปค ์์ฑ์ ๊ธ์งํฉ๋๋ค. ์ด๊ฒ์ ์๋ง๋
C ์ฝ๋๊ฐ ์๋ ๋ฌด์ธ๊ฐ์์ ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์คํํ ๋ ์ ์ฉํ๋ฉฐ ์ ์ก๋ ๊ฒ์ ๋๋ค.
linemarkers์ ์ํด ํผ๋๋ ์ ์๋ ํ๋ก๊ทธ๋จ์.
-C ๋๊ธ์ ๋ฒ๋ฆฌ์ง ๋ง์ธ์. ๋ค์์ ์ ์ธํ ๋ชจ๋ ์ฃผ์์ ์ถ๋ ฅ ํ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
์ง์๋ฌธ๊ณผ ํจ๊ป ์ญ์ ๋๋ ์ฒ๋ฆฌ๋ ์ง์๋ฌธ์ ์๋ ์ฃผ์์ ๊ฒฝ์ฐ.
์ฌ์ฉ ์ ๋ถ์์ฉ์ ๋๋นํด์ผ ํฉ๋๋ค. -C; ๊ทธ๊ฒ์ ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ
๋๊ธ์ ์์ฒด์ ์ผ๋ก ํ ํฐ์ผ๋ก ์ทจ๊ธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฒ์ํ์ ํ์๋๋ ๋๊ธ์
์ง์ ํ์ด ๋ ๊ฒ์ ์์์ ๊ทธ ํ์ ๋ค์์ผ๋ก ๋ฐ๊พธ๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
๋ผ์ธ์ ์ฒซ ๋ฒ์งธ ํ ํฐ์ด ๋ ์ด์ a๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ ์์ค ๋ผ์ธ #.
-CC ๋งคํฌ๋ก ํ์ฅ ์ค์ ํฌํจํ์ฌ ์ฃผ์์ ์ญ์ ํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ ๋ง์น -C์ ์ธ
๋งคํฌ๋ก์ ํฌํจ๋ ์ฃผ์๋ ์ถ๋ ฅ ํ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
๋งคํฌ๋ก๊ฐ ํ์ฅ๋ฉ๋๋ค.
๋ถ์์ฉ ๋ฟ๋ง ์๋๋ผ -C ์ต์ , -CC ์ต์ ์ ๋ชจ๋ C++ ์คํ์ผ์ ์ ๋ฐํฉ๋๋ค.
๋งคํฌ๋ก ๋ด๋ถ์ ์ฃผ์์ C ์คํ์ผ ์ฃผ์์ผ๋ก ๋ณํํฉ๋๋ค. ์ด๊ฒ์ ๋์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด
์ค์๋ก ์์ค ํ์ ๋๋จธ์ง ๋ถ๋ถ์ ์ฃผ์์ผ๋ก ์ฒ๋ฆฌํ์ฌ ํด๋น ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -CC ์ต์ ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฆฐํธ ์ฃผ์์ ์ง์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
-์ ํต์ ์ธ cpp
ISO C์ ๋ฌ๋ฆฌ ๊ตฌ์ C ์ ์ฒ๋ฆฌ๊ธฐ์ ๋์์ ๋ชจ๋ฐฉํ์ญ์์ค.
์ ์ฒ๋ฆฌ๊ธฐ.
-์ผ๊ฐํ
์ผ์ค ๊ทธ๋ํ ์ํ์ค๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ค์ ๋ชจ๋ ๋ก ์์ํ๋ ์ธ ๋ฌธ์ ์ํ์ค์ ๋๋ค.
??, ๋จ์ผ ๋ฌธ์๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ISO C์์ ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ??/ ์
for \๊ทธ๋์ '??/N' ๊ฐํ ๋ฌธ์ ์์์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก GCC๋ ๋ฌด์ํฉ๋๋ค.
trigraphs, ๊ทธ๋ฌ๋ ํ์ค ์ค์ ๋ชจ๋์์๋ ๋ณํํฉ๋๋ค. ์ฐธ์กฐ -ํ์ค and -์์
์ต์ ์ ์ ๊ณตํฉ๋๋ค.
XNUMX๊ฐ์ ์ผ๊ทน์์ ๊ทธ ๋์ฒดํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ผ์ค ๊ทธ๋ํ: ??( ??) ??< ??> ??= ??/ ??' ??! ??-
๋์ฒด: [ ] { } # \ ^ | ~
-๋ค์ ๋งคํ
๋งค์ฐ ์งง์ ํ์ผ๋ง ํ์ฉํ๋ ํ์ผ ์์คํ ์์ ์๋ํ๋ ํน์ ์ฝ๋ ํ์ฑํ
MS-DOS์ ๊ฐ์ ์ด๋ฆ.
--๋์
-ํ๊ฒ ํํ
์๋ฌด ๊ฒ๋ ์ฌ์ ์ฒ๋ฆฌํ๋ ๋์ ๋ชจ๋ ๋ช ๋ น์ค ์ต์ ์ ์ค๋ช ํ๋ ํ ์คํธ๋ฅผ ์ธ์ํฉ๋๋ค.
-v ์์ธ ๋ชจ๋. ์คํ ์์ ์ GNU CPP์ ๋ฒ์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๊ณ ,
ํฌํจ ๊ฒฝ๋ก์ ์ต์ข ํ์์ ๋ณด๊ณ ํฉ๋๋ค.
-H ๋ค๋ฅธ ์ผ๋ฐ ํ๋๊ณผ ํจ๊ป ์ฌ์ฉ๋ ๊ฐ ํค๋ ํ์ผ์ ์ด๋ฆ์ ์ธ์ํ์ญ์์ค. ๊ฐ
์ด๋ฆ์ ๋ค์ฌ ์ฐ๊ธฐ๊ฐ ์ผ๋ง๋ ๊น์์ง ๋ณด์ฌ์ค๋๋ค. #ํฌํจ ์คํ์ ๋๋ค. ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋
์ ํจํ์ง ์์ ๊ฒ์ผ๋ก ํ๋ช ๋ ๊ฒฝ์ฐ์๋ ํ์ผ๋ ์ธ์๋ฉ๋๋ค. ์๋ชป๋ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋
ํค๋ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์ธ์๋ฉ๋๋ค. ...NS ๊ทธ๋ฆฌ๊ณ ์ ํจํ ...! .
-๋ฒ์ญ
--๋ฒ์ญ
GNU CPP์ ๋ฒ์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ์ญ์์ค. ๋์ ํ ๋ฒ์ผ๋ก ํ์์ ๊ฐ์ด ์ ์ฒ๋ฆฌ๋ฅผ ์งํํฉ๋๋ค.
๋ ๊ฐ์ ๋์๋ก ์ฆ์ ์ข ๋ฃํ์ญ์์ค.
ํต๊ณผ ์ต์ ์ ์ ์, ์ด์ ๋ธ๋ฌ
์ด์ ๋ธ๋ฌ์ ์ต์ ์ ์ ๋ฌํ ์ ์์ต๋๋ค.
-์,option
ํจ์ค option ์ด์ ๋ธ๋ฌ์ ๋ํ ์ต์ ์ผ๋ก. ๋ง์ฝ์ option ์ผํ๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ ๋ถํ ๋ฉ๋๋ค.
์ผํ์์ ์ฌ๋ฌ ์ต์ ์ผ๋ก.
-X์ด์ ๋ธ๋ฌ option
ํจ์ค option ์ด์ ๋ธ๋ฌ์ ๋ํ ์ต์ ์ผ๋ก. ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์คํ ๋ณ
GCC๊ฐ ์ธ์ํ์ง ๋ชปํ๋ ์ด์ ๋ธ๋ฌ ์ต์ .
์ธ์๋ฅผ ์ทจํ๋ ์ต์ ์ ์ ๋ฌํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. -X์ด์ ๋ธ๋ฌ ๋๋ฒ,
์ต์ ์ ๋ํด ํ ๋ฒ, ์ธ์์ ๋ํด ํ ๋ฒ.
์ต์ for ์ฐ๊ฒฐ
์ด๋ฌํ ์ต์ ์ ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ์ฒด ํ์ผ์ ์คํ ํ์ผ์ ์ฐ๊ฒฐํ ๋ ์๋ํฉ๋๋ค.
๊ฒฐ๊ณผ๋ฌผ ํ์ผ. ์ปดํ์ผ๋ฌ๊ฐ ๋งํฌ ๋จ๊ณ๋ฅผ ์ํํ์ง ์์ผ๋ฉด ์๋ฏธ๊ฐ ์์ต๋๋ค.
๊ฐ์ฒด ํ์ผ ์ด๋ฆ
ํน์ ์ธ์ ์ ๋ฏธ์ฌ๋ก ๋๋์ง ์๋ ํ์ผ ์ด๋ฆ์ ์ด๋ฆ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
๊ฐ์ฒด ํ์ผ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. (๊ฐ์ฒด ํ์ผ์ ๋ง์ปค์ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌ๋ณ๋ฉ๋๋ค.
ํ์ผ ๋ด์ฉ์ ๋ฐ๋ฆ ๋๋ค.) ๋งํฌ๊ฐ ์๋ฃ๋๋ฉด ์ด๋ฌํ ์ค๋ธ์ ํธ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
๋ง์ปค์ ์ ๋ ฅํฉ๋๋ค.
-c
-S
-E ์ด๋ฌํ ์ต์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ง์ปค๊ฐ ์คํ๋์ง ์๊ณ ๊ฐ์ฒด ํ์ผ ์ด๋ฆ์ด
์ธ์๋ก ์ฌ์ฉํด์๋ ์๋ฉ๋๋ค.
-l๋์๊ด
-l ๋์๊ด
์ด๋ฆ์ด ์ง์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒ์ ๋์๊ด ๋งํฌํ ๋. (๋ ๋ฒ์งธ ๋์์
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณ๋์ ์ธ์๋ก ์ฌ์ฉํ๋ ๊ฒ์ POSIX ์ค์๋ง์ ์ํ ๊ฒ์ด๋ฉฐ ๊ถ์ฅ๋์ง ์์ต๋๋ค.)
๋ช ๋ น์์ ์ด ์ต์ ์ ์์ฑํ๋ ์์น์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๋ง์ปค ๊ฒ์
์ง์ ๋ ์์๋๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ค๋ธ์ ํธ ํ์ผ์ ์ฒ๋ฆฌํฉ๋๋ค. ๋ฐ๋ผ์, ํธ.์ค
-lz ๋ฐ์ค ๊ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ z ํ์ผ ํ ํธ.์ค ํ์ง๋ง ์ ์ ๋ฐ์ค. ๋ฉด ๋ฐ์ค ๋ฅผ ์๋ฏธ
~์์๋ ๊ธฐ๋ฅ๋ค z, ํด๋น ๊ธฐ๋ฅ์ด ๋ก๋๋์ง ์์ ์ ์์ต๋๋ค.
๋ง์ปค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ํ์ค ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ๊ฒ์ํฉ๋๋ค.
์ด๋ฆ์ด ์ง์ ๋ ํ์ผ ๋์๊ด. ๊ทธ๋ฐ ๋ค์ ๋ง์ปค๋ ์ด ํ์ผ์ ์ง์ ๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉํฉ๋๋ค.
์ ํํ๋ ์ด๋ฆ์ผ๋ก.
๊ฒ์๋ ๋๋ ํ ๋ฆฌ์๋ ์ฌ๋ฌ ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ์ ์ฌ์ฉ์๊ฐ ์ง์ ํ ๋ชจ๋ ๋๋ ํ ๋ฆฌ๊ฐ ํฌํจ๋ฉ๋๋ค.
๋ก ์ง์ -L.
์ผ๋ฐ์ ์ผ๋ก ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ฐพ์ ํ์ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ---๊ตฌ์ฑ์์ด ๋ค์๊ณผ ๊ฐ์ ์์นด์ด๋ธ ํ์ผ์ ๋๋ค.
๊ฐ์ฒด ํ์ผ. ๋ง์ปค๋ ์์นด์ด๋ธ ํ์ผ์ ํตํด ๊ตฌ์ฑ์์ ๊ฒ์ํ์ฌ ์ฒ๋ฆฌํฉ๋๋ค.
์ง๊ธ๊น์ง ์ฐธ์กฐ๋์์ง๋ง ์ ์๋์ง ์์ ๊ธฐํธ๋ฅผ ์ ์ํฉ๋๋ค. ํ์ง๋ง ๋ง์ฝ
๋ฐ๊ฒฌ๋ ํ์ผ์ ์ผ๋ฐ ์ค๋ธ์ ํธ ํ์ผ์ด๋ฉฐ ์ผ๋ฐ์ ์ธ ๋ฐฉ์์ผ๋ก ๋งํฌ๋ฉ๋๋ค. NS
์ฌ์ฉ์ ์ ์ผํ ์ฐจ์ด์ -l ์ต์ ์ ์ ํํ๊ณ ํ์ผ ์ด๋ฆ์ ์ง์ ํ๋ ๊ฒ์ -l
์๋ผ์ด๋ ๋์๊ด ๊ณผ lib and .a ์ฌ๋ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฒ์ํฉ๋๋ค.
-lobjc
์ด ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ํ์ํฉ๋๋ค. -l Objective-C ๋๋
์ค๋ธ์ ํฐ๋ธ-C++ ํ๋ก๊ทธ๋จ.
-nostartํ์ผ
์ฐ๊ฒฐํ ๋ ํ์ค ์์คํ ์์ ํ์ผ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ํ์ค ์์คํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. -nostdlib or -nodefaultlibs ์ฌ์ฉ.
-nodefaultlibs
๋งํฌํ ๋ ํ์ค ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์ง์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง
๋ง์ปค์ ์ ๋ฌ๋๊ณ ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐ์ ์ง์ ํ๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"-static-libgcc" ๋๋ "-shared-libgcc"๋ ๋ฌด์๋ฉ๋๋ค. ํ์ค ์์ ํ์ผ์
์ ์ธํ๊ณ ์ ์์ ์ผ๋ก ์ฌ์ฉ -nostartํ์ผ ์ฌ์ฉ.
์ปดํ์ผ๋ฌ๋ "memcmp", "memset", "memcpy" ๋ฐ "memmove"์ ๋ํ ํธ์ถ์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๊ฒ๋ค
ํญ๋ชฉ์ ์ผ๋ฐ์ ์ผ๋ก libc์ ํญ๋ชฉ์ผ๋ก ํด๊ฒฐ๋ฉ๋๋ค. ์ด๋ฌํ ์ง์ ์ ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
์ด ์ต์ ์ด ์ง์ ๋๋ฉด ๋ค๋ฅธ ๋ฉ์ปค๋์ฆ์ ํตํด ์ ๊ณต๋ฉ๋๋ค.
-nostdlib
๋งํฌํ ๋ ํ์ค ์์คํ ์์ ํ์ผ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์์ํ์ง ์์
ํ์ผ๊ณผ ์ง์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ๋ง์ปค์ ์ ๋ฌ๋๊ณ ์ต์
"-static-libgcc" ๋๋
"-shared-libgcc"๋ ๋ฌด์๋ฉ๋๋ค.
์ปดํ์ผ๋ฌ๋ "memcmp", "memset", "memcpy" ๋ฐ "memmove"์ ๋ํ ํธ์ถ์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๊ฒ๋ค
ํญ๋ชฉ์ ์ผ๋ฐ์ ์ผ๋ก libc์ ํญ๋ชฉ์ผ๋ก ํด๊ฒฐ๋ฉ๋๋ค. ์ด๋ฌํ ์ง์ ์ ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
์ด ์ต์ ์ด ์ง์ ๋๋ฉด ๋ค๋ฅธ ๋ฉ์ปค๋์ฆ์ ํตํด ์ ๊ณต๋ฉ๋๋ค.
๋ฐ์ดํจ์ค๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋ -nostdlib and -nodefaultlibs is libgcc.a์
GCC๊ฐ ํน์ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ด๋ถ ์๋ธ๋ฃจํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๊ธฐ๊ณ ๋๋ ์ผ๋ถ ์ธ์ด์ ๋ํ ํน๋ณํ ์๊ตฌ ์ฌํญ.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํ์ํ libgcc.a ๋ค๋ฅธ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์ฆ, ์ง์ ํ ๋ -nostdlib or -nodefaultlibs ๋น์ ์ ์ผ๋ฐ์ ์ผ๋ก
์ง์ ํ๋ค -lgcc ๋ํ. ์ด๋ ๊ฒ ํ๋ฉด ์ ๋ํ ํด๊ฒฐ๋์ง ์์ ์ฐธ์กฐ๊ฐ ์์ต๋๋ค.
๋ด๋ถ GCC ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์๋ธ๋ฃจํด. (์ด๋ฌํ ๋ด๋ถ ์๋ธ๋ฃจํด์ ์๋
__๊ธฐ๋ณธ, C++ ์์ฑ์๊ฐ ํธ์ถ๋๋๋ก ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.)
-ํ์ด
์ง์ํ๋ ๋์์์ ์์น ๋ ๋ฆฝ์ ์ธ ์คํ ํ์ผ์ ์์ฑํฉ๋๋ค. ์์ธก ๊ฐ๋ฅํ
๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ปดํ์ผ์ ์ฌ์ฉ๋ ๊ฒ๊ณผ ๋์ผํ ์ต์ ์ธํธ๋ ์ง์ ํด์ผ ํฉ๋๋ค(-ํ์ด,
-fPIE, ๋๋ ๋ชจ๋ธ ํ์ ์ต์ ) ์ด ๋ง์ปค ์ต์ ์ ์ง์ ํ ๋.
-์ญ๋์
๊น๋ฐ์ ๋๊ธฐ๋ค -์์ถ-๋์ ELF ๋ง์ปค๋ฅผ ์ง์ํ๋ ๋์์์. ์ด๊ฒ
๋ง์ปค์ ์ฌ์ฉ๋ ๊ธฐํธ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ๊ธฐํธ๋ฅผ ๋์ ๊ธฐํธ์ ์ถ๊ฐํ๋๋ก ์ง์ํฉ๋๋ค.
ํ ์ด๋ธ. ์ด ์ต์ ์ "dlopen"์ ์ผ๋ถ ์ฌ์ฉํ๊ฑฐ๋
ํ๋ก๊ทธ๋จ ๋ด์์ ์ญ์ถ์ .
-s ์คํ ํ์ผ์์ ๋ชจ๋ ๊ธฐํธ ํ ์ด๋ธ ๋ฐ ์ฌ๋ฐฐ์น ์ ๋ณด๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
-๊ณต์
๋์ ์ฐ๊ฒฐ์ ์ง์ํ๋ ์์คํ ์์ ์ด๊ฒ์ ๊ณต์ ์ ์ฐ๊ฒฐ์ ๋ฐฉ์งํฉ๋๋ค.
๋์๊ด. ๋ค๋ฅธ ์์คํ ์์๋ ์ด ์ต์ ์ด ์ ์ฉ๋์ง ์์ต๋๋ค.
-๊ณต์
๊ณต์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ค์ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ฐ๊ฒฐํ์ฌ
์คํ ๊ฐ๋ฅ. ๋ชจ๋ ์์คํ ์ด ์ด ์ต์ ์ ์ง์ํ๋ ๊ฒ์ ์๋๋๋ค. ์์ธก ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
๋ํ ์ปดํ์ผ์ ์ฌ์ฉ๋๋ ๋์ผํ ์ต์ ์ธํธ๋ฅผ ์ง์ ํฉ๋๋ค(-fpic, -fPIC, ๋๋ ๋ชจ๋ธ
ํ์ ์ต์ ) ์ด ๋ง์ปค ์ต์ ์ ์ง์ ํ ๋.[1]
-๊ณต์ -libgcc
-์ ์ -libgcc
์ ๊ณตํ๋ ์์คํ ์์ libgcc ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก์ ์ด๋ฌํ ์ต์ ์
๊ฐ๊ฐ ๊ณต์ ๋๋ ์ ์ ๋ฒ์ ์ ๋๋ค. ๊ณต์ ๋ฒ์ ์ด ์๋ ๊ฒฝ์ฐ libgcc ์๋ค
์ปดํ์ผ๋ฌ๊ฐ ๊ตฌ์ฑ๋ ๋ ๋น๋๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ต์ ์ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ณต์ ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๋ช ๊ฐ์ง ์ํฉ์ด ์์ต๋๋ค. libgcc
์ ์ ๋ฒ์ ๋์ . ์ด๋ค ์ค ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ฒ์ ์์ฉ ํ๋ก๊ทธ๋จ์ด
๋ค๋ฅธ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์ธ๋ฅผ throwํ๊ณ catchํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ ๊ฒฝ์ฐ,
๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ฒด๋ ๊ณต์ ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. libgcc.
๋ฐ๋ผ์ G++ ๋ฐ GCJ ๋๋ผ์ด๋ฒ๋ ์๋์ผ๋ก -๊ณต์ -libgcc ๋น๋ํ ๋๋ง๋ค
C++ ๋ฐ Java ํ๋ก๊ทธ๋จ์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ๊ธฐ๋ณธ ์คํ ํ์ผ
์์ธ์ด๋ฏ๋ก ์ด๊ฒ์ด ์ณ์ ์ผ์ ๋๋ค.
๋์ GCC ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ
ํญ์ ๊ณต์ ์ ์ฐ๊ฒฐ๋์ด ์์ง๋ ์์ต๋๋ค. libgcc. GCC๊ฐ ์ฐพ์ผ๋ฉด ํด๋น ๊ตฌ์ฑ์์
์ต์ ์ ์ง์ํ์ง ์๋ ๋น GNU ๋ง์ปค ๋๋ GNU ๋ง์ปค๊ฐ ์๋ ์๊ฐ
--eh-ํ๋ ์-hdr, ๊ณต์ ๋ฒ์ ์ ์ฐ๊ฒฐํฉ๋๋ค. libgcc ์ ์ํด ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก
๊ธฐ๋ณธ. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ง์ปค๋ฅผ ์ด์ฉํ์ฌ ์ฐ๊ฒฐ์ ์ต์ ํํฉ๋๋ค.
๊ณต์ ๋ฒ์ ์ผ๋ก libgcc, libgcc์ ์ ์ ๋ฒ์ ๊ณผ ์ฐ๊ฒฐ
๊ธฐ๋ณธ. ์ด๋ ๊ฒ ํ๋ฉด ์์ธ๊ฐ ์ด๋ฌํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ ํ๋ ์ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ก๋ ์ ์ฌ๋ฐฐ์น ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ๊ธฐ๋ณธ ์คํ ํ์ผ์ด ์์ธ๋ฅผ throwํ๊ฑฐ๋ catchํด์ผ ํ๋ ๊ฒฝ์ฐ
์์ ์ฌ์ฉ๋๋ ์ธ์ด์ ๋ฐ๋ผ G++ ๋๋ GCJ ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ๋งํฌํด์ผ ํฉ๋๋ค.
ํ๋ก๊ทธ๋จ ๋๋ ์ต์ ์ฌ์ฉ -๊ณต์ -libgcc, ๊ณต์ ์ ์ฐ๊ฒฐ๋๋๋ก
libgcc.
-์ ์ -๋ฆฌ๋ฐ์ฐ
๋ -fsanitize=์ฃผ์ ์ต์ ์ GCC ๋๋ผ์ด๋ฒ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์๋์ผ๋ก ๋งํฌ ๋ฆฌ๋ฐ์ฐ. ๋ฉด ๋ฆฌ๋ฐ์ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ
์ ์, -๊ณต์ ์ต์ ์ด ์ฌ์ฉ๋์ง ์์ผ๋ฉด ์ด ๋งํฌ๋ ๊ณต์ ๋ฒ์ ์ ๋ฆฌ๋ฐ์ฐ.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -์ ์ -๋ฆฌ๋ฐ์ฐ ์ต์ ์ GCC ๋๋ผ์ด๋ฒ๊ฐ ๋งํฌํ๋๋ก ์ง์ํฉ๋๋ค. ๋ฆฌ๋ฐ์ฐ ์ ์ ์ผ๋ก, ์์ด
๋ฐ๋์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ ์ผ๋ก ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.
-์ ์ -libtsan
๋ -fsanitize=์ฐ๋ ๋ ์ต์ ์ GCC ๋๋ผ์ด๋ฒ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์๋์ผ๋ก ๋งํฌ ๋ฆฌ๋ธ์ฐ. ๋ฉด ๋ฆฌ๋ธ์ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ
์ ์, -๊ณต์ ์ต์ ์ด ์ฌ์ฉ๋์ง ์์ผ๋ฉด ์ด ๋งํฌ๋ ๊ณต์ ๋ฒ์ ์ ๋ฆฌ๋ธ์ฐ.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -์ ์ -libtsan ์ต์ ์ GCC ๋๋ผ์ด๋ฒ๊ฐ ๋งํฌํ๋๋ก ์ง์ํฉ๋๋ค. ๋ฆฌ๋ธ์ฐ ์ ์ ์ผ๋ก, ์์ด
๋ฐ๋์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ ์ผ๋ก ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.
-์ ์ -libstdc++
๋ g ++ ํ๋ก๊ทธ๋จ์ C++ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์๋์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋ฐ๋ libstdc++. ๋ฉด libstdc++ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ -๊ณต์
์ต์ ์ด ์ฌ์ฉ๋์ง ์์ผ๋ฉด ์ด ๋งํฌ๋ ๊ณต์ ๋ฒ์ ์ libstdc++. ๊ทธ๊ฑด
์ผ๋ฐ์ ์ผ๋ก ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋๋ก ๋ฒ์ ์ ๊ณ ์ ํ๋ ๊ฒ์ด ์ ์ฉํฉ๋๋ค. libstdc++
์์ ํ ์ ์ ๋งํฌ๋ก ์ด๋ํ์ง ์๊ณ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํฉ๋๋ค. NS
-์ ์ -libstdc++ ์ต์ ์ g ++ ์ฐ๊ฒฐํ ๋๋ผ์ด๋ฒ libstdc++ ์ ์ ์ผ๋ก, ์์ด
๋ฐ๋์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ ์ผ๋ก ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.
- ์์ง์
๊ณต์ ๊ฐ์ฒด๋ฅผ ๋น๋ํ ๋ ์ ์ญ ๊ธฐํธ์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ฐ์ธ๋ฉํฉ๋๋ค. ๊ฒฝ๊ณ
ํ์ธ๋์ง ์์ ์ฐธ์กฐ(๋งํฌ ํธ์ง๊ธฐ ์ต์ ์ผ๋ก ์ฌ์ ์๋์ง ์๋ ํ -X๋ง์ปค -z
-X๋ง์ปค ๋ฐํ). ์์์ ์์คํ ๋ง์ด ์ด ์ต์ ์ ์ง์ํฉ๋๋ค.
-T ์คํฌ๋ฆฝํธ
์คํฌ๋ฆฝํธ ๋ง์ปค ์คํฌ๋ฆฝํธ๋ก. ์ด ์ต์ ์ ๋ค์์ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ์์คํ ์์ ์ง์๋ฉ๋๋ค.
GNU ๋ง์ปค. ์ด์ ์ฒด์ ๊ฐ ์๋ ๋ฒ ์ด๋ณด๋ ๋์๊ณผ ๊ฐ์ ์ผ๋ถ ๋์์์๋
์ ์, -T ์ ์๋์ง ์์ ๊ธฐํธ์ ๋ํ ์ฐธ์กฐ๋ฅผ ํผํ๊ธฐ ์ํด ๋งํฌํ ๋ ์ต์ ์ด ํ์ํ ์ ์์ต๋๋ค.
-X๋ง์ปค option
ํจ์ค option ๋ง์ปค์ ๋ํ ์ต์ ์ผ๋ก. ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์คํ ๋ณ
GCC๊ฐ ์ธ์ํ์ง ๋ชปํ๋ ๋ง์ปค ์ต์ .
๋ณ๋์ ์ธ์๋ฅผ ์ทจํ๋ ์ต์ ์ ์ ๋ฌํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. -X๋ง์ปค
๋ ๋ฒ, ์ต์ ์ ๋ํด ํ ๋ฒ, ์ธ์์ ๋ํด ํ ๋ฒ. ์๋ฅผ ๋ค์ด ํต๊ณผํ๋ ค๋ฉด -์ฃผ์ฅํ๋ค
์ ์, ์์ฑํด์ผํฉ๋๋ค -X๋ง์ปค -์ฃผ์ฅํ๋ค -X๋ง์ปค ์ ์. ์๋ํ์ง ์์ต๋๋ค
์์ฑ -X๋ง์ปค "-์ฃผ์ฅํ๋ค ์ ์", ์ด๊ฒ์ ์ ์ฒด ๋ฌธ์์ด์
๋ง์ปค๊ฐ ๊ธฐ๋ํ๋ ๊ฒ๊ณผ ๋ค๋ฅธ ๋จ์ผ ์ธ์.
GNU ๋ง์ปค๋ฅผ ์ฌ์ฉํ ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ง์ปค์ ์ธ์๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ๋ ํธ๋ฆฌํฉ๋๋ค.
์ต์ ์ ์ฌ์ฉํ์ฌ option=๊ฐ์น ๋ณ๋์ ์ธ์๊ฐ ์๋ ๊ตฌ๋ฌธ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋น์ ์
์ง์ ํ ์ ์์ต๋๋ค -X๋ง์ปค -์ง๋=์ถ๋ ฅ.์ง๋ ๋ณด๋ค๋ -X๋ง์ปค -์ง๋ -X๋ง์ปค ์ถ๋ ฅ.๋งต.
๋ค๋ฅธ ๋ง์ปค๋ ๋ช ๋ น์ค ์ต์ ์ ๋ํด ์ด ๊ตฌ๋ฌธ์ ์ง์ํ์ง ์์ ์ ์์ต๋๋ค.
-NS,option
ํจ์ค option ๋ง์ปค์ ๋ํ ์ต์ ์ผ๋ก. ๋ง์ฝ์ option ์ผํ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์ผํ์ ์ฌ๋ฌ ์ต์ ์ด ์์ต๋๋ค. ์ด ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ธ์๋ฅผ
์ ํ๊ถ. ์๋ฅผ ๋ค๋ฉด -Wl,-Map, output.map ํจ์ค -์ง๋ ์ถ๋ ฅ.๋งต ๋ง์ปค์. ์ธ์
GNU ๋ง์ปค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ์ป์ ์๋ ์์ต๋๋ค. -Wl, -Map = output.map.
์ฐธ๊ณ : Ubuntu 8.10 ์ด์ ๋ฒ์ ์์ LDFLAGS์ ๊ฒฝ์ฐ ์ต์ -Wl,-z,relro ์ฌ์ฉ.
๋นํ์ฑํํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค. -Wl,-z,๋ ธ๋ ๋ก.
-u ์์ง
๊ธฐํธ ์ฒ ์์ง ์ ์๋์ง ์์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋์ ๊ฐ์ ๋ก ์ฐ๊ฒฐํ์ฌ ์ ์
๊ทธ๊ฒ. ๋น์ ์ด ์ฌ์ฉํ ์์๋ -u ๋ก๋๋ฅผ ๊ฐ์ ๋ก ๋ค๋ฅธ ๊ธฐํธ๋ก ์ฌ๋ฌ ๋ฒ
์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋.
์ต์ for ๋ช ๋ถ ๋ด๋น ๊ฒ์
์ด ์ต์ ์ ํค๋ ํ์ผ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ถํ์ ๊ฒ์ํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํฉ๋๋ค.
์ปดํ์ผ๋ฌ์:
-IDIR
๋๋ ํ ๋ฆฌ ์ถ๊ฐ DIR ํค๋๋ฅผ ๊ฒ์ํ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ํค๋๋ก
ํ์ผ. ์ด๊ฒ์ ์์คํ ํค๋ ํ์ผ์ ๋ฌด์ํ๊ณ ์์ ์ ํค๋ ํ์ผ์ ๋์ฒดํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฒ์ , ์ด๋ฌํ ๋๋ ํ ๋ฆฌ๋ ์์คํ ํค๋ ํ์ผ๋ณด๋ค ๋จผ์ ๊ฒ์๋๊ธฐ ๋๋ฌธ์
๋๋ ํ ๋ฆฌ. ๊ทธ๋ฌ๋ ๋ค์์ ํฌํจํ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ ๋ฐ ์ด ์ต์ ์ ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค.
๊ณต๊ธ์ ์ฒด ์ ๊ณต ์์คํ ํค๋ ํ์ผ(์ฌ์ฉ -์์ด์์คํ ๊ทธ์ ๋ํ). XNUMX๊ฐ ์ด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
-I ์ต์ ์ ์ ํํ๋ฉด ๋๋ ํ ๋ฆฌ๊ฐ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ค์บ๋ฉ๋๋ค. ํ์ค ์์คํ
๋๋ ํ ๋ฆฌ๊ฐ ๋ค์ ์ต๋๋ค.
ํ์ค ์์คํ ์ ๋๋ ํ ๋ฆฌ๊ฐ ํฌํจ๋๊ฑฐ๋ ๋ค์์ผ๋ก ์ง์ ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ -์์ด์์คํ ์ด๋ค
์๋ ์ง์ -IWalk Through California ํ๋ก๊ทธ๋จ, -I ์ต์ ์ ๋ฌด์๋ฉ๋๋ค. ๋๋ ํ ๋ฆฌ๋ ์ฌ์ ํ ๊ฒ์๋์ง๋ง
์์คํ ์ ์ ์์ ์ธ ์์น์ ์๋ ์์คํ ๋๋ ํ ๋ฆฌ๋ก ์ฒด์ธ์ด ํฌํจ๋ฉ๋๋ค. ์ด๊ฒ์
๋ฒ๊ทธ๊ฐ ์๋ ์์คํ ํค๋๋ฅผ ์์ ํ๋ GCC์ ์ ์ฐจ์
"include_next" ์ง์๋ฌธ์ด ์ค์๋ก ๋ณ๊ฒฝ๋์ง ์์์ต๋๋ค. ์ ๋ง ๋ฐ๊ฟ์ผ ํ๋ค๋ฉด
์์คํ ๋๋ ํ ๋ฆฌ์ ๋ํ ๊ฒ์ ์์๋ ๋ค์์ ์ฌ์ฉํ์ญ์์ค. -Nostdinc ๋ฐ / ๋๋ -์์ด์์คํ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-iplugindir=DIR
์ ์ํด ์ ๋ฌ๋ ํ๋ฌ๊ทธ์ธ์ ๊ฒ์ํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ค์ ํฉ๋๋ค. -fํ๋ฌ๊ทธ์ธ=name ๋์
-fํ๋ฌ๊ทธ์ธ=ํต๋ก/name.๊ทธ๋์. ์ด ์ต์ ์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฒ์ด ์๋๋ผ
์ด์ ์๊ฐ ์ง๋์ณค์ต๋๋ค.
- ์ธ์ฉDIR
๋๋ ํ ๋ฆฌ ์ถ๊ฐ DIR ํค๋๋ฅผ ๊ฒ์ํ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ํค๋๋ก
๊ฒฝ์ฐ์๋ง ํ์ผ #ํฌํจ "ํ์ผ"; ๊ทธ๋ค์ ๊ฒ์๋์ง ์์ต๋๋ค #ํฌํจ <ํ์ผ>,
๊ทธ๋ ์ง ์์ผ๋ฉด ์ฒ๋ผ -I.
-LDIR
๋๋ ํ ๋ฆฌ ์ถ๊ฐ DIR ๊ฒ์ํ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ผ๋ก -l.
-B์ ๋์ฌ
์ด ์ต์ ์ ์คํ ํ์ผ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํฌํจ ํ์ผ ๋ฐ
์ปดํ์ผ๋ฌ ์์ฒด์ ๋ฐ์ดํฐ ํ์ผ.
์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ ํ๋ก๊ทธ๋จ์ ํ๋ ์ด์์ ํ์ ํ๋ก๊ทธ๋จ์ ์คํํฉ๋๋ค. CPP, cc1, as and ld.
๊ทธ๊ฒ์ ์๋ ์ ๋์ฌ ์คํํ๋ ค๋ ๊ฐ ํ๋ก๊ทธ๋จ์ ์ ๋์ฌ๋ก ์ฌ์ฉ ์ฌ๋ถ์ ๊ด๊ณ์์ด
๊ธฐ๊ณ/๋ฒ์ /.
์คํํ ๊ฐ ํ์ ํ๋ก๊ทธ๋จ์ ๋ํด ์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ๋ ๋จผ์ ๋ค์์ ์๋ํฉ๋๋ค. -B ์ ๋์ฌ(์๋ ๊ฒฝ์ฐ).
ํด๋น ์ด๋ฆ์ ์ฐพ์ ์ ์๊ฑฐ๋ -B ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๋๋ผ์ด๋ฒ๋ ๋ ๊ฐ์ง ํ์ค์ ์๋ํฉ๋๋ค.
์ ๋์ฌ, /usr/lib/gcc/ and /usr/local/lib/gcc/. ๋ ๋ค ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด
๋ฐ๊ฒฌ๋ ํ์ผ ์ด๋ฆ, ์์ ๋์ง ์์ ํ๋ก๊ทธ๋จ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ๊ฒ์
๊ทํ์ ๋๋ ํ ๋ฆฌ์ ์ง์ ๋ PATH ํ๊ฒฝ ๋ณ์.
์ปดํ์ผ๋ฌ๋ ๊ฒฝ๋ก๊ฐ ์ ๊ณตํ ๊ฒฝ๋ก์ธ์ง ํ์ธํฉ๋๋ค. -B ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๊ณ ,
ํ์ํ ๊ฒฝ์ฐ ๊ฒฝ๋ก ๋์ ๋๋ ํ ๋ฆฌ ๊ตฌ๋ถ ๋ฌธ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
-B ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ํจ๊ณผ์ ์ผ๋ก ์ง์ ํ๋ ์ ๋์ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ ์ฉ๋ฉ๋๋ค.
์ปดํ์ผ๋ฌ๊ฐ ์ด๋ฌํ ์ต์ ์ -L ๋ง์ปค์ ๋ํ ์ต์ .
์ปดํ์ผ๋ฌ๊ฐ ๋ฒ์ญํ๊ธฐ ๋๋ฌธ์ ์ ์ฒ๋ฆฌ๊ธฐ์ ํฌํจ ํ์ผ์๋ ์ ์ฉ๋ฉ๋๋ค.
์ด๋ฌํ ์ต์ ์ -์์ด์์คํ ์ ์ฒ๋ฆฌ๊ธฐ ์ต์ . ์ด ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๋
์ถ๊ฐ ๋ค ์ ๋์ฌ์.
๋ฐํ์ ์ง์ ํ์ผ libgcc.a ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ํ ์๋ ์์ต๋๋ค. -B ์ ๋์ฌ, ๊ฒฝ์ฐ
ํ์. ๊ฑฐ๊ธฐ์ ์์ผ๋ฉด ์์ ๋ ๊ฐ์ง ํ์ค ์ ๋์ฌ๊ฐ ์๋๋๊ณ
๋ชจ๋์ ๋๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ผ๋ก ํ์ผ์ ์ฐพ์ง ๋ชปํ๋ฉด ํ์ผ์ด ๋งํฌ์์ ์ ์ธ๋ฉ๋๋ค.
์ ๋์ฌ๋ฅผ ์ง์ ํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -B ์ ๋์ฌ๋ ํ๊ฒฝ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค
๋ณ์ GCC_EXEC_PREFIX.
ํน๋ณํ kludge๋ก ๊ฒฝ๋ก๊ฐ ์ ๊ณต๋๋ ๊ฒฝ์ฐ -B is [๋๋ ํฐ๋ฆฌ/]์คํ ์ด์งN/์ด๋๋ก N ์ซ์์ด๋ค
0์์ 9 ์ฌ์ด์ ๋ฒ์์์ ๋ค์์ผ๋ก ๋์ฒด๋ฉ๋๋ค. [๋๋ ํฐ๋ฆฌ/]ํฌํจ. ์ด๊ฒ์ ๋ถํ ์ ๋๊ธฐ ์ํ ๊ฒ์ ๋๋ค-
์ปดํ์ผ๋ฌ๋ฅผ ๋ฌถ์ต๋๋ค.
-์ฌ์=ํ์ผ
๋ฐฉ๋ฒ ํ์ผ ์ปดํ์ผ๋ฌ๊ฐ ํ์ค์ ์ฝ์ ํ ๋ช ์ธ์ ํ์ผ์ ์ฌ์ ์ํ๊ธฐ ์ํด
๊ธฐ๋ณธ๊ฐ์ GCC ๋๋ผ์ด๋ฒ ํ๋ก๊ทธ๋จ์ ์ ๋ฌํ ์ค์์น๋ฅผ ๊ฒฐ์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
์ cc1, ์จ์ํ๋ฌ์ค, as, ld๋ฑ. ํ๋ ์ด์ -์ฌ์=ํ์ผ ์ ์ง์ ํ ์ ์์ต๋๋ค.
๋ช ๋ น์ค์์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์์๋๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
--sysroot=DIR
DIR ํค๋ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋ ผ๋ฆฌ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด,
์ปดํ์ผ๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์์ ํค๋๋ฅผ ๊ฒ์ํฉ๋๋ค. / usr / include ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฅผ / usr / lib์, ๊ทธ
๋์ ๊ฒ์ ๋๋ ํ ๋ฆฌ/usr/ํฌํจ and ๋๋ ํ ๋ฆฌ/usr/lib.
์ด ์ต์ ๊ณผ -isysroot ์ต์ ์ ์ ํํ ๋ค์ --sysroot option
๋์๊ด์ ์ ์ฉ๋์ง๋ง -isysroot ์ต์ ์ ํค๋ ํ์ผ์ ์ ์ฉ๋ฉ๋๋ค.
GNU ๋ง์ปค(๋ฒ์ 2.16๋ถํฐ ์์)์๋ ์ด์ ๋ํ ํ์ํ ์ง์์ด ์์ต๋๋ค.
์ต์ . ๋ง์ปค๊ฐ ์ด ์ต์ ์ ์ง์ํ์ง ์์ผ๋ฉด ํค๋ ํ์ผ ์ธก๋ฉด์์
--sysroot ์ฌ์ ํ ์๋ํ์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธก๋ฉด์ ์๋ํ์ง ์์ต๋๋ค.
--no-sysroot-์ ๋ฏธ์ฌ
์ผ๋ถ ๋์์ ๊ฒฝ์ฐ ๋ค์์ผ๋ก ์ง์ ๋ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์ ๋ฏธ์ฌ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. --sysroot,
์ฌ์ฉ๋ ๋ค๋ฅธ ์ต์ ์ ๋ฐ๋ผ ํค๋๋ ์๋ฅผ ๋ค์ด ๋ค์ ์์น์์ ์ฐพ์ ์ ์์ต๋๋ค.
๋๋ ํ ๋ฆฌ/์ ๋ฏธ์ฌ/usr/ํฌํจ ๋์ ๋๋ ํ ๋ฆฌ/usr/ํฌํจ. ์ด ์ต์ ์ ์ถ๊ฐ๋ฅผ ๋นํ์ฑํํฉ๋๋ค
๊ทธ๋ฐ ์ ๋ฏธ์ฌ์.
-๋๋- ์ด ์ต์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์ด์ฉ ํด์ฃผ์ธ์ - ์ธ์ฉ ๋์ -I ์ด์ ๋๋ ํ ๋ฆฌ
์ ์, -๋๋- ๋ฐ ์ ๊ฑฐ -๋๋-. ์ง์ ํ ๋ชจ๋ ๋๋ ํ ๋ฆฌ -I ์ ์ ์ต์
-๋๋- ์ต์ ์ ๋ค์์ ๊ฒฝ์ฐ์๋ง ๊ฒ์๋ฉ๋๋ค. #ํฌํจ "ํ์ผ"; ๊ทธ๋ค์ ๊ฒ์๋์ง ์์ต๋๋ค
for #ํฌํจ <ํ์ผ>.
์ถ๊ฐ ๋๋ ํ ๋ฆฌ๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ -I ์ดํ์ ์ต์ -๋๋-์ด
๋๋ ํ ๋ฆฌ๋ ๋ชจ๋ ๊ฒ์๋ฉ๋๋ค. #ํฌํจ ์ง์. (๋ณดํต ๋ชจ๋ -I ๋๋ ํ ๋ฆฌ
์ด๋ฐ ์์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.)
๋ํ, -๋๋- ์ด ์ต์ ์ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ฌ์ฉ์ ๊ธ์งํฉ๋๋ค(์ฌ๊ธฐ์
ํ์ฌ ์ ๋ ฅ ํ์ผ์ ์ถ์ฒ)์ ๋ํ ์ฒซ ๋ฒ์งธ ๊ฒ์ ๋๋ ํ ๋ฆฌ #ํฌํจ "ํ์ผ".
์ด ํจ๊ณผ๋ฅผ ๋ฌด์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. -๋๋-. ๊ณผ -๋๋. ๊ฒ์์ ์ง์ ํ ์ ์์ต๋๋ค
์ปดํ์ผ๋ฌ๊ฐ ํธ์ถ๋ ๋ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋๋ค. ์ ํํ๋ ์๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํํ๋ ๊ฒ๊ณผ ๋์ผํ์ง๋ง ์ข ์ข ๋ง์กฑ์ค๋ฝ์ต๋๋ค.
-๋๋- ํค๋ ํ์ผ์ ๋ํ ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ์ ์ฌ์ฉ์ ๊ธ์งํ์ง ์์ต๋๋ค.
๋ฐ๋ผ์, -๋๋- and -Nostdinc ๋ ๋ฆฝ์ ์ ๋๋ค.
์ง์ ๋ชฉํ ๋จธ์ and ์ปดํ์ผ๋ฌ ๋ฒ์
GCC๋ฅผ ์คํํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ GCC๋ฐ ๊ธฐ๊ณ-gcc ๊ต์ฐจํ ๋
์ปดํ์ผํ๊ฑฐ๋ ๊ธฐ๊ณ-gcc-๋ฒ์ ์ค์น๋ ๋ฒ์ ์ด ์๋ ๋ค๋ฅธ ๋ฒ์ ์ ์คํํ๋ ค๋ฉด
๋ง์ง๋ง.
ํ๋์จ์ด ๋ชจ๋ธ and ๊ตฌ์ฑ
๊ฐ ๋์ ๋จธ์ ์ ํ์ ๋ค์๊ณผ ๊ฐ์ด ๊ณ ์ ํ ํน์ ์ต์ ์ ๊ฐ์ง ์ ์์ต๋๋ค. -m, ์ ํ
๋ค์ํ ํ๋์จ์ด ๋ชจ๋ธ ๋๋ ๊ตฌ์ฑ ์ค์์ ---์: 68010 ๋ 68020, ๋ถ๋
๋ณด์กฐ ํ๋ก์ธ์ ๋๋ ์์. ๋จ์ผ ์ค์น๋ ์ปดํ์ผ๋ฌ ๋ฒ์ ์ ๋ชจ๋ ๋ชจ๋ธ์ ๋ํด ์ปดํ์ผํ ์ ์์ต๋๋ค.
๋๋ ์ง์ ๋ ์ต์ ์ ๋ฐ๋ผ ๊ตฌ์ฑํฉ๋๋ค.
์ปดํ์ผ๋ฌ์ ์ผ๋ถ ๊ตฌ์ฑ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ถ๊ฐ ํน์ ์ต์ ๋ ์ง์ํฉ๋๋ค.
๋์ผํ ํ๋ซํผ์ ๋ค๋ฅธ ์ปดํ์ผ๋ฌ์์ ํธํ์ฑ.
AAArch64 ์ต์
์ด๋ฌํ ์ต์ ์ AArch64 ๊ตฌํ์ ๋ํด ์ ์๋ฉ๋๋ค.
-mbig-์๋์
๋น ์๋์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ GCC๊ฐ
aarch64_be-*-* ๋์์ ๋๋ค.
-mgeneral-regs-only.
์ผ๋ฐ ๋ ์ง์คํฐ๋ง ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-๋ฏธ๋ฆฌํ ์๋์
๋ฆฌํ ์๋์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ GCC๊ฐ
์์น64-*-* ํ์ง๋ง aarch64_be-*-* ๋์์ ๋๋ค.
-mcmodel=์์
์์ ์ฝ๋ ๋ชจ๋ธ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ํ๋ก๊ทธ๋จ ๋ฐ ์ ์ ์ผ๋ก ์ ์๋ ๊ธฐํธ
์๋ก 1GB ์ด๋ด์ฌ์ผ ํฉ๋๋ค. ํฌ์ธํฐ๋ 64๋นํธ์ ๋๋ค. ํ๋ก๊ทธ๋จ์ ์ ์ ์ผ๋ก
๋๋ ๋์ ์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด ๋ชจ๋ธ์ ์์ ํ ๊ตฌํ๋์ง ์์์ผ๋ฉฐ ๋๋ถ๋ถ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌ๋ฉ๋๋ค.
์์.
-mcmodel=์์
์์ ์ฝ๋ ๋ชจ๋ธ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ํ๋ก๊ทธ๋จ๊ณผ ์ ์ ์ผ๋ก ์ ์๋ ํ๋ก๊ทธ๋จ
๊ธฐํธ๋ ์๋ก 4GB ์ด๋ด์ฌ์ผ ํฉ๋๋ค. ํฌ์ธํฐ๋ 64๋นํธ์ ๋๋ค. ํ๋ก๊ทธ๋จ ์
์ ์ ์ผ๋ก ๋๋ ๋์ ์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ ์ฝ๋ ๋ชจ๋ธ์ ๋๋ค.
-mcmodel=๋ํ
๋๊ท๋ชจ ์ฝ๋ ๋ชจ๋ธ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ์ฃผ์์
์น์ ์ ํฌ๊ธฐ. ํฌ์ธํฐ๋ 64๋นํธ์ ๋๋ค. ํ๋ก๊ทธ๋จ์ ์ ์ ์ผ๋ก๋ง ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
-mstrict-์ ๋ ฌ
์ ๋ ฌ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ๊ฐ ์์คํ ์์ ์ฒ๋ฆฌ๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ์ง ๋ง์ญ์์ค.
-momit-๋ฆฌํ ํ๋ ์ ํฌ์ธํฐ
-mno-์๋ต-๋ฆฌํ-ํ๋ ์-ํฌ์ธํฐ
๋ฆฌํ ํจ์์์ ํ๋ ์ ํฌ์ธํฐ๋ฅผ ์๋ตํ๊ฑฐ๋ ์ ์งํฉ๋๋ค. ์ด์ ์ ํ๋์
ํ๋ง.
-mtls-dialect=desc
TLS์ ๋์ ์ก์ธ์ค๋ฅผ ์ํ ์ค๋ ๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง ๋ฉ์ปค๋์ฆ์ผ๋ก TLS ์ค๋ช ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ณ์. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mtls-dialect=์ ํต
TLS์ ๋์ ์ก์ธ์ค๋ฅผ ์ํ ์ค๋ ๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง ๋ฉ์ปค๋์ฆ์ผ๋ก ๊ธฐ์กด TLS ์ฌ์ฉ
๋ณ์.
-mfix-cortex-a53-835769
-mno-fix-cortex-a53-835769
ARM Cortex-A53 ์ ์คํ ๋ฒํธ 835769์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋ช ๋ น์ด์ 64๋นํธ ์ฌ์ด์ NOP ๋ช ๋ น์ด ์ฝ์
์ ์ ๊ณฑํ๊ธฐ ๋์ฐ ๋ช ๋ น์ด.
-ํ์ง=name
์ ํ์ ์ผ๋ก ํ๋ ์ด์์ ์ ๋ฏธ์ฌ๊ฐ ๋ถ๋ ๋์ ์ํคํ ์ฒ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
๊ธฐ๋ฅ ์์ ์. ์ด ์ต์ ์ ํ์์ -ํ์ง=์์น{+[์๋]๊ธฐ๋ฅ}*, ์ฌ๊ธฐ์
์ ๋ํ ์ ์ผํ ๊ฐ์น ์์น is armv8-a. ๊ฐ๋ฅํ ๊ฐ ๊ธฐ๋ฅ ์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค
์๋ ํ์ ์น์ .
์ถฉ๋ํ๋ ๊ธฐ๋ฅ ์์ ์๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์๋ ๊ธฐ๋ฅ์ด ์ฌ์ฉ๋ฉ๋๋ค.
GCC๋ ์ด ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์์ฑํ ๋ ์ด๋ค ์ข ๋ฅ์ ๋ช ๋ น์ ๋ด๋ณด๋ผ ์ ์๋์ง ๊ฒฐ์ ํฉ๋๋ค.
์ด์ ๋ธ๋ฆฌ ์ฝ๋. ์ด ์ต์ ์ ๋ค์๊ณผ ํจ๊ป ๋๋ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค. -mcpu =
์ต์ ์ ์ ํํฉ๋๋ค.
-mcpu =name
์ ํ์ ์ผ๋ก ํ๋ ์ด์์ ๊ธฐ๋ฅ์ด ์ ๋ฏธ์ฌ๋ก ๋ถ๋ ๋์ ํ๋ก์ธ์์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
์์ ์. ์ด ์ต์ ์ ํ์์ -mcpu =CPU{+[์๋]๊ธฐ๋ฅ}*, ๊ฐ๋ฅํ ๊ฒฝ์ฐ
๊ฐ CPU are ์ผ๋ฐ์ ์ธ, ๋์. ๊ฐ๋ฅํ ๊ฐ ๊ธฐ๋ฅ ์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค.
์๋์ ํ์ ์น์ .
์ถฉ๋ํ๋ ๊ธฐ๋ฅ ์์ ์๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์๋ ๊ธฐ๋ฅ์ด ์ฌ์ฉ๋ฉ๋๋ค.
GCC๋ ์ด ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์์ฑํ ๋ ์ด๋ค ์ข ๋ฅ์ ๋ช ๋ น์ ๋ด๋ณด๋ผ ์ ์๋์ง ๊ฒฐ์ ํฉ๋๋ค.
์ด์ ๋ธ๋ฆฌ ์ฝ๋.
-mtune=name
์ฑ๋ฅ์ ์กฐ์ ํ ํ๋ก์ธ์์ ์ด๋ฆ์ ์ง์ ํ์ญ์์ค. ์ฝ๋๊ฐ ์กฐ์ ๋ฉ๋๋ค
๋์ ํ๋ก์ธ์๊ฐ ์ด ์ต์ ์ ์ง์ ๋ ์ ํ์ด์ง๋ง ์ฌ์ ํ ์ฌ์ฉ ์ค์ธ ๊ฒ์ฒ๋ผ
a์ ์ํด ์ง์ ๋ ๋์ ํ๋ก์ธ์์ ํธํ๋๋ ๋ช ๋ น์ด -mcpu = ์ ํ๊ถ. ์ด
์ต์ ์๋ ๊ธฐ๋ฅ ์์ ์๊ฐ ๋ถ์ ์ ์์ต๋๋ค.
-XNUMX ์ and -mcpu ๊ธฐ๋ฅ ์์ ์
์ ํจ๊ป ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ ์์ ์ -XNUMX ์ and -mcpu ๋ค์ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
CRM CRC ํ์ฅ์ ํ์ฑํํฉ๋๋ค.
์ํธํ๋
์ํธํ ํ์ฅ์ ํ์ฑํํฉ๋๋ค. ์ด๋ ๊ณ ๊ธ SIMD๊ฐ ํ์ฑํ๋์์์ ์๋ฏธํฉ๋๋ค.
fp ๋ถ๋ ์์์ ๋ช ๋ น์ด๋ฅผ ํ์ฑํํฉ๋๋ค.
SIMD
๊ณ ๊ธ SIMD ์ง์นจ์ ํ์ฑํํฉ๋๋ค. ์ด๊ฒ์ ๋ถ๋ ์์์ ๋ช ๋ น์ด๊ฐ
ํ์ฑํ. ์ด๊ฒ์ ํ์ฌ ๊ฐ๋ฅํ ๋ชจ๋ ์ต์ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. -XNUMX ์ and
-mcpu =.
์๋ตํ ๋ฐ ์ถํ ์ต์
Bowman์ -m ์ต์ ์ Adapteva Epiphany์ ๋ํด ์ ์๋ฉ๋๋ค.
-mhalf-reg-ํ์ผ
"r32"..."r63" ๋ฒ์์ ๋ ์ง์คํฐ๋ฅผ ํ ๋นํ์ง ๋ง์ญ์์ค. ์ฝ๋๋ฅผ ์คํํ ์ ์๋
์ด๋ฌํ ๋ ์ง์คํฐ๊ฐ ์๋ ํ๋์จ์ด ๋ณํ.
-mprefer-์งง์-insn-regs
์งง์ ๋ช ๋ น์ด ์์ฑ์ ํ์ฉํ๋ ๋ ์ง์คํฐ๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ ๋นํฉ๋๋ค. ์ด๊ฒ์ ํ ์ ์์ต๋๋ค
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ช ๋ น์ด ์๊ฐ ์ฆ๊ฐํ๋ฏ๋ก ์ ์ฒด์ ์ผ๋ก ๊ฐ์ํ๊ฑฐ๋ ์ฆ๊ฐํ ์ ์์ต๋๋ค.
์ฝ๋ ํฌ๊ธฐ.
-mbranch ๋น์ฉ=NUM
๋ถ๊ธฐ ๋น์ฉ์ ๋๋ต์ ์ผ๋ก ์ค์ NUM "๊ฐ๋จํ" ์ง์นจ. ์ด ๋น์ฉ์ ๋จ์ง
๋ฐ๊ฒฌ์ ์ด๋ฉฐ ๋ฆด๋ฆฌ์ค ๊ฐ์ ์ผ๊ด๋ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์ง ์์ ์ ์์ต๋๋ค.
-mcmmove
์กฐ๊ฑด๋ถ ์ด๋ ์์ฑ์ ํ์ฑํํฉ๋๋ค.
-mnops=NUM
๋ฐฉ์ถ NUM ์์ฑ๋ ๋ค๋ฅธ ๋ชจ๋ ๋ช ๋ น์ด ์ ์ NOP.
-mno-soft-cmpsf
๋จ์ ๋ฐ๋ ๋ถ๋ ์์์ ๋น๊ต์ ๊ฒฝ์ฐ "fsub" ๋ช ๋ น์ด๋ฅผ ๋ด๋ณด๋ด๊ณ ํ ์คํธํ์ญ์์ค.
ํ๋๊ทธ. ์ด๊ฒ์ ์ํํธ์จ์ด ๋น๊ต๋ณด๋ค ๋น ๋ฅด์ง๋ง ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
NaN์ด ์๊ฑฐ๋ ๋ ๊ฐ์ ๋ค๋ฅธ ์์ ์ซ์๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๋น๊ต๋ ๋
๊ทธ๋ค์ ์ฐจ์ด๋ XNUMX์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -msoft-cmpsf, ์ด๋ค ์ฉ๋
๋๋ฆฌ์ง๋ง IEEE ํธํ ์ํํธ์จ์ด ๋น๊ต.
-mstack ์คํ์ =NUM
์คํ ์๋จ๊ณผ ์คํ ํฌ์ธํฐ ์ฌ์ด์ ์คํ์ ์ ์ค์ ํฉ๋๋ค. ์: 8์ ๊ฐ
"sp+0...sp+7" ๋ฒ์์ XNUMX๋ฐ์ดํธ๋ฅผ ๋ฆฌํ ํจ์์์ ์ฌ์ฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
์คํ ํ ๋น ์์ด ์ด์ธ์ ๊ฐ 8 or 16 ํ ์คํธ๋์ง ์์์ผ๋ฉฐ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์ต๋๋ค.
์ผํ๋ค. ๋ํ ์ด ์ต์ ์ ABI๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ปดํ์ผ๋ ๊ฒ๊ณผ ๋ค๋ฅธ ์คํ ์คํ์ ์ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ ์ง ์์ต๋๋ค.
์ผํ๋ค. ์ด ์ต์ ์ ์คํ ์คํ์ ์ด ๋ค๋ฅธ์ง ํ๊ฐํ๋ ค๋ ๊ฒฝ์ฐ์ ์ ์ฉํ ์ ์์ต๋๋ค.
๋ ๋์ ์ฝ๋๋ฅผ ์ ๊ณตํ์ง๋ง ์ค์ ๋ก ๋ค๋ฅธ ์คํ ์คํ์ ์ ์ฌ์ฉํ์ฌ ๋น๋ํ๋ ค๋ฉด
ํ๋ก๊ทธ๋จ์ด ์๋ํ๋ ๊ฒฝ์ฐ ์ ์ ํ ๋๊ตฌ ์ฒด์ธ์ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
--์คํ ์คํ์ ํฌํจ=NUM ์ต์ ์ ์ ํํฉ๋๋ค.
-mno-round-๊ฐ์ฅ ๊ฐ๊น์ด
์ค์ผ์ค๋ฌ๊ฐ ๋ฐ์ฌ๋ฆผ ๋ชจ๋๊ฐ ์๋ฅด๊ธฐ๋ก ์ค์ ๋์๋ค๊ณ ๊ฐ์ ํ๋๋ก ํฉ๋๋ค. NS
๊ธฐ๋ณธ๊ฐ์ -mround-๊ฐ์ฅ ๊ฐ๊น์ด.
-mlong-ํตํ
์์ฑ์ ์ํด ๋ฌ๋ฆฌ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋ ํธ์ถ์ด
"b" / "bl" ๋ช ๋ น์ด์ ์คํ์ ๋ฒ์, ๋ฐ๋ผ์ ํจ์ ์ฃผ์ ๋ก๋
(๊ทธ๋ ์ง ์์ผ๋ฉด ์ง์ ) ํธ์ถ์ ์ํํ๊ธฐ ์ ์ ๋ ์ง์คํฐ์ ๋ฃ์ต๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-m์งง์ ํตํ
์์ฑ์ ์ํด ๋ฌ๋ฆฌ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋ ์ง์ ํธ์ถ์ด ๋ฒ์์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
"b" / "bl" ๋ช ๋ น์ด ์ค ํ๋์ด๋ฏ๋ก ์ง์ ํธ์ถ์ ์ด ์ง์นจ์ ์ฌ์ฉํ์ญ์์ค. NS
๊ธฐ๋ณธ๊ฐ์ -mlong-ํตํ.
-msmall16
์ฃผ์๊ฐ 16๋นํธ ๋ถํธ ์๋ ๊ฐ์ผ๋ก ๋ก๋๋ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ์ ์ ์ฉ๋์ง ์์ต๋๋ค
๊ธฐ๋ฅ ์ฃผ์ -mlong-ํตํ ์๋ฏธ๋ก ์ด ์ ํจํฉ๋๋ค.
-mfp ๋ชจ๋=๋ชจ๋
๋ถ๋ ์์์ ๋จ์์ ๊ธฐ๋ณธ ๋ชจ๋๋ฅผ ์ค์ ํฉ๋๋ค. ์ด๊ฒ์ ๋ถ๋์ ๊ฒฐ์ ํฉ๋๋ค.
ํจ์ ํธ์ถ ๋ฐ ๋ฐํ ์์ ์ ์ ๊ณต๋๊ณ ์์๋๋ ํฌ์ธํธ ๋ชจ๋์ ๋๋ค. ๋ง๋ค๊ธฐ
์ด ๋ชจ๋๋ ๊ธฐ๋ฅ ์์ ์ ์ฃผ๋ก ํ์ํ ๋ชจ๋์ ์ผ์นํ์ฌ
๋ถํ์ํ ๋ชจ๋ ์ ํ์ ๋ฐฉ์งํ์ฌ ํ๋ก๊ทธ๋จ์ ๋ ์๊ณ ๋น ๋ฅด๊ฒ ๋ง๋ญ๋๋ค.
๋ชจ๋ ๋ค์ ๊ฐ ์ค ํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
๋ฐ์ ์
๊ธฐ๋ฅ ์ง์ ์ ๋ชจ๋ ๋ชจ๋๊ฐ ์ ํจํ๋ฉฐ, ๊ธฐ๋ฅ ์ง์ ์ ์ ์ง ๋๋ ๋ณต์๋ฉ๋๋ค.
๋ฐํํ๊ณ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ ๋. ์ด ๋ชจ๋๋ ์ปดํ์ผ์ ์ ์ฉํฉ๋๋ค.
๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํตํฉํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ๊ธฐํ ์ปดํ์ผ ๋จ์
๋๋ฆฌ ์ฌ์ฉ๋๋ FPU ๋ชจ๋๊ฐ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ ๋ฐ
๋จ์ผ ๊ฐ์ฒด ํ์ผ์ ์ฌ์ฉํ๋ฉด ์ถ๊ฐ ๋ชจ๋์ ๋ํ ํฌ๊ธฐ์ ์๋ ์ค๋ฒํค๋๊ฐ ๋ ํฝ๋๋ค.
ํ์ํ ์ ์๋ ์ ํ,
์ผ๋ฐ์ ์ธ FPU ๋ชจ๋์ ํน์ ์ ํ.
์๋ฅด๋ค
์ด๊ฒ์ ์๋ฆผ(์: ๋ฐ์ฌ๋ฆผ)์ด ์๋ ๋ถ๋ ์์์ ๊ณ์ฐ์ ์ฌ์ฉ๋๋ ๋ชจ๋์ ๋๋ค.
XNUMX์ผ๋ก) ๋ฐ์ฌ๋ฆผ ๋ชจ๋. ์ฌ๊ธฐ์๋ ๋ถ๋ ์์์ ์์
์ ์.
๊ฐ์ฅ ๊ฐ๊น์ด
์ด๊ฒ์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ผ๋ก ๋ฐ์ฌ๋ฆผํ๋ ๋ถ๋ ์์์ ๊ณ์ฐ์ ์ฌ์ฉ๋๋ ๋ชจ๋์ ๋๋ค.
์ง์ ๋ฐ์ฌ๋ฆผ ๋ชจ๋.
INT ์ด๊ฒ์ FPU์์ ์ ์ ๊ณ์ฐ์ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ชจ๋์ ๋๋ค. ์: ์ ์
๊ณฑํ๊ธฐ ๋๋ ์ ์ ๊ณฑํ๊ธฐ ๋ฐ ๋์ฐ.
๋ํดํธ๋ -mfp-mode=ํธ์ถ์
-mnosplit-lohi
-mno-postinc
-mno-์ฌํ ์์
32๋นํธ ๋ก๋ ๋ถํ ์ ๊ฐ๊ฐ ๋นํ์ฑํํ๋ ์ฝ๋ ์์ฑ ์กฐ์ ,
์ฌํ ์ฆ๊ฐ ์ฃผ์ ์์ฑ ๋ฐ ์ฌํ ์์ ์ฃผ์ ์์ฑ. NS
๊ธฐ๋ณธ๊ฐ์ msplit-lohi, -mpost-inc๋ฐ -mpost ์์ .
-mnovect-๋๋ธ
๊ธฐ๋ณธ SIMD ๋ชจ๋๋ฅผ SImode๋ก ๋ณ๊ฒฝํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -mvect-๋๋ธ, ์ด๋ค ์ฉ๋
DImode๋ฅผ ๊ธฐ๋ณธ SIMD ๋ชจ๋๋ก ์ฌ์ฉํฉ๋๋ค.
-์ต๋ ๋ฒกํฐ ์ ๋ ฌ=NUM
SIMD ๋ฒกํฐ ๋ชจ๋ ์ ํ์ ๋ํ ์ต๋ ์ ๋ ฌ์ ๋๋ค. NUM 4 ๋๋ 8์ผ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์
8. ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ ์ธํฐํ์ด์ค๊ฐ
ํฌ๊ธฐ ๋ฐ/๋๋ ํฌ๊ธฐ์ ์ํฅ์ ์ฃผ๋ ์์น์์ SIMD ๋ฒกํฐ ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
๊ด๋ จ ์ ํ์ ์ ๋ ฌ.
-msplit-vecmove-early
๋ถํ ๋ฒกํฐ๋ ๋ค์ ๋ก๋ํ๊ธฐ ์ ์ ๋จ์ผ ๋จ์ด๋ก ์ด๋ํฉ๋๋ค. ์ด๋ก ์ ์ผ๋ก ์ด๊ฒ์ ์ค ์ ์์ต๋๋ค
๋ ๋์ ๋ ์ง์คํฐ ํ ๋น์ด์ง๋ง ์ง๊ธ๊น์ง๋ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ ๋ฐ๋์ธ ๊ฒ ๊ฐ์ต๋๋ค.
-m1reg-๋ฑ๋ก ๋ฒํธ
-1 ์์๋ฅผ ์ ์งํ๋ ๋ ์ง์คํฐ๋ฅผ ์ง์ ํ๋ฉด ๋ก๋ฉ์ด ์์์ง๋๋ค.
์์ ๋ฐ ํน์ ๋นํธ๋ง์คํฌ๊ฐ ๋ ๋น ๋ฆ ๋๋ค. ํ์ฉ๋๋ ๊ฐ ๋ฑ๋ก ๋ฒํธ are r43 and r63,
ํด๋น ๋ ์ง์คํฐ๋ฅผ ๊ณ ์ ๋ ์ง์คํฐ๋ก ์ฌ์ฉํ๋๋ก ์ง์ ํ๊ณ , ์์, ์ด๋ ์์์ ์๋ฏธํฉ๋๋ค
์ด๋ฅผ ์ํด ๋ ์ง์คํฐ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -m1reg-์์.
ARM ์ต์
Bowman์ -m ์ต์ ์ ARM(Advanced RISC Machines) ์ํคํ ์ฒ์ ๋ํด ์ ์๋ฉ๋๋ค.
-๋ง๋น=name
์ง์ ๋ ABI์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ํ์ฉ๋๋ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. apcs-gnu, atpcs, ์์ธ,
aapcs-๋ฆฌ๋ ์ค and ์ผ์ผ์ผ์.
-mapcs-ํ๋ ์
ARM ํ๋ก์์ ํธ์ถ ํ์ค์ ์ค์ํ๋ ์คํ ํ๋ ์ ์์ฑ
์ฝ๋์ ์ฌ๋ฐ๋ฅธ ์คํ์ ์ํด ๊ผญ ํ์ํ ๊ฒ์ ์๋๋๋ผ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ง์ -fomit ํ๋ ์ ํฌ์ธํฐ ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์คํ ํ๋ ์์ด
๋ฆฌํ ํจ์์ ๋ํด ์์ฑ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -mno-apcs-ํ๋ ์.
-๋งต
์ด๊ฒ์ ๋์์ด์ ๋๋ค -mapcs-ํ๋ ์.
-mthumb-์ฐ๋
ARM๊ณผ Thumb ๋ช ๋ น์ด ์ธํธ ๊ฐ์ ํธ์ถ์ ์ง์ํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ด ์ต์ ์ด ์์ผ๋ฉด v5 ์ด์ ์ํคํ ์ฒ์์ ๋ ๊ฐ์ ๋ช ๋ น์ด ์ธํธ๋ฅผ
ํ๋์ ํ๋ก๊ทธ๋จ ๋ด์์ ์์ ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -mno-thumb-์ฐ๋, ์ฝ๊ฐ๋ถํฐ
๋ ํฐ ์ฝ๋๊ฐ ์์ฑ๋ ๋ -mthumb-์ฐ๋ ์ง์ ๋ฉ๋๋ค. AAPCS ๊ตฌ์ฑ์์
์ด ์ต์ ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
-mno-sched-ํ๋กค๋ก๊ทธ
ํจ์ ํ๋กค๋ก๊ทธ์์ ๋ช ๋ น์ด์ ์ฌ์ ๋ ฌ ๋๋ ๋ณํฉ์ ๋ฐฉ์งํฉ๋๋ค.
ํจ์ ๋ณธ๋ฌธ์ ์๋ ์ง์นจ์ด ์๋ ํด๋น ์ง์นจ. ์ด๊ฒ์ ๋ชจ๋
๊ธฐ๋ฅ์ ์ธ์ ๊ฐ๋ฅํ ์ผ๋ จ์ ๋ช ๋ น์ผ๋ก ์์ํฉ๋๋ค(๋๋ ์ค์ ๋ก๋
๋ค๋ฅธ ๊ธฐ๋ฅ ํ๋กค๋ก๊ทธ์ ์์ ์งํฉ์์), ์ด ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ
์คํ ๊ฐ๋ฅํ ์ฝ๋ ๋ด์์ ํจ์์ ์์ ๋ถ๋ถ์ ์ฐพ์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์
-msched-ํ๋กค๋ก๊ทธ.
-mfloat-abi=name
์ฌ์ฉํ ๋ถ๋ ์์์ ABI๋ฅผ ์ง์ ํฉ๋๋ค. ํ์ฉ๋๋ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ถ๋๋ฌ์ด, ์ํํธ FP and
ํ๋.
์ง์ ๋ถ๋๋ฌ์ด GCC๊ฐ ๋ถ๋์ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ์ ํฌํจํ๋ ์ถ๋ ฅ์ ์์ฑํ๋๋ก ํฉ๋๋ค.
ํฌ์ธํธ ์์ . ์ํํธ FP ํ๋์จ์ด ๋ถ๋ ์์์ ์ ์ฌ์ฉํ์ฌ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
๋ช ๋ น์ด์ง๋ง ์ฌ์ ํ ์ํํธ ํ๋กํธ ํธ์ถ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค. ํ๋ ์
๋ถ๋ ์์์ ๋ช ๋ น์ด ์์ฑ ๋ฐ FPU ๊ด๋ จ ํธ์ถ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ ํน์ ๋์ ๊ตฌ์ฑ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ํ๋ ํ๋กํธ
์ํํธ ํ๋กํธ ABI๋ ๋งํฌ์ ํธํ๋์ง ์์ต๋๋ค. ๋ค์์ ์ฌ์ฉํ์ฌ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํด์ผ ํฉ๋๋ค.
๋์ผํ ABI ๋ฐ ํธํ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธํธ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
-๋ฏธ๋ฆฌํ ์๋์
๋ฆฌํ ์๋์ ๋ชจ๋์์ ์คํ๋๋ ํ๋ก์ธ์์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๋ชจ๋ ํ์ค ๊ตฌ์ฑ.
-mbig-์๋์
๋น ์๋์ ๋ชจ๋์์ ์คํ๋๋ ํ๋ก์ธ์์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์ปดํ์ผํ๋ ๊ฒ์ ๋๋ค.
๋ฆฌํ ์๋์ ํ๋ก์ธ์์ฉ ์ฝ๋.
-mwords-๋ฆฌํ์๋์
์ด ์ต์ ์ ๋น ์๋์ ํ๋ก์ธ์์ฉ ์ฝ๋๋ฅผ ์์ฑํ ๋๋ง ์ ์ฉ๋ฉ๋๋ค. ์์ฑํ๋ค
๋ฆฌํ ์๋์ ๋จ์ด ์์๋ฅผ ์ํ ์ฝ๋์ด์ง๋ง ๋น ์๋์ ๋ฐ์ดํธ ์์. ์ฆ, ๋ฐ์ดํธ
ํ์์ ์์ 32107654. ์ฐธ๊ณ : ์ด ์ต์ ์ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ฒ์ ์ ์ํด ์์ฑ๋ ๋น ์๋์ ARM ํ๋ก์ธ์์ฉ ์ฝ๋์์ ํธํ์ฑ
2.8 ์ด์ ์ ์ปดํ์ผ๋ฌ. ์ด ์ต์ ์ ์ด์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
-ํ์ง=name
๋์ ARM ์ํคํ ์ฒ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. GCC๋ ์ด ์ด๋ฆ์ ์ฌ์ฉํ์ฌ
์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ด๋ค ์ข ๋ฅ์ ๋ช ๋ น์ด๋ฅผ ๋ด๋ณด๋ผ ์ ์๋์ง ๊ฒฐ์ ํฉ๋๋ค. ์ด๊ฒ
์ต์ ๊ณผ ํจ๊ป ๋๋ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค. -mcpu = ์ต์ . ํ์ฉ
์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. armv2, armv2a, armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5e,
ARMV5TE, armv6, armv6j, armv6t2, armv6z, armv6zk, armv6-m, armv7, armv7-a, armv7-r,
armv7-m, armv7e-m armv8-a, armv8-a+crc, ์ผ์ผ์ผ์, iwmmxt2, ep9312.
-ํ์ง=armv8-a+crc ARMv8-A ์ํคํ ์ฒ์ฉ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
์ ํ์ CRC32 ํ์ฅ.
-march = ๋ค์ดํฐ๋ธ ์ปดํ์ผ๋ฌ๊ฐ ๋น๋ ์ํคํ ์ฒ๋ฅผ ์๋ ๊ฐ์งํ๋๋ก ํฉ๋๋ค.
์ปดํจํฐ. ํ์ฌ ์ด ๊ธฐ๋ฅ์ GNU/Linux์์๋ง ์ง์๋๋ฉฐ ๋ชจ๋
์ํคํ ์ฒ๋ฅผ ์ธ์ ํฉ๋๋ค. ์๋ ๊ฐ์ง์ ์คํจํ ๊ฒฝ์ฐ ์ต์ ์ด ์์ต๋๋ค.
ํจ๊ณผ.
-mtune=name
์ด ์ต์ ์ GCC๊ฐ ์กฐ์ ํด์ผ ํ๋ ๋์ ARM ํ๋ก์ธ์์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
์ฝ๋์ ์ฑ๋ฅ. ์ผ๋ถ ARM ๊ตฌํ์ ๊ฒฝ์ฐ ๋ ๋์ ์ฑ๋ฅ์ด ๋ ์ ์์ต๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์ป์ต๋๋ค. ํ์ฉ๋๋ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. arm2, arm250, arm3, arm6,
arm60, arm600, arm610, arm620, arm7, ํ7m, ํ7d, arm7dm, ์7๋, arm7dmi, arm70,
arm700, ์700i, arm710, ํ710c, arm7100, arm720, arm7500, arm7500fe, arm7tdmi,
arm7tdmi-s, ํ710t, ํ720t, ํ740t, ๊ฐํ ํ, ์คํธ๋กฑ์110, ์คํธ๋กฑ์1100,
์คํธ๋กฑ์1110, arm8, arm810, arm9, ์9e, arm920, ํ920t, ํ922t, arm946e-s,
arm966e-s, arm968e-s, arm926ej-s, ํ940t, arm9tdmi, arm10tdmi, ํ1020t, arm1026ej-s,
์10e, ์1020e, ์1022e, arm1136j-s, arm1136jf-s, mpcore, mpcorenovfp, arm1156t2-s,
arm1156t2f-s, arm1176jz-s, arm1176jzf-s, ํผ์ง -a5, ํผ์ง -a7, ํผ์ง -a8, ํผ์ง -a9,
ํผ์ง -a15, ํผ์ง -a53, ํผ์ง-r4, ํผ์ง-r4f, ํผ์ง-r5, ํผ์ง-r7, ํผ์ง-m4,
ํผ์ง-m3, ํผ์ง-m1, ํผ์ง-m0, ํผ์ง-m0plus, ๋ง๋ธ-pj4, ์์ค์ค์ผ์ผ, ์ผ์ผ์ผ์, iwmmxt2,
ep9312, fa526, fa626, fa606te, fa626te, fmp626, fa726te.
-mtune=์ผ๋ฐ-์์น GCC๊ฐ ํผํฉ์ ๋ํ ์ฑ๋ฅ์ ์กฐ์ ํด์ผ ํจ์ ์ง์ ํฉ๋๋ค
์ํคํ ์ฒ ๋ด์ ํ๋ก์ธ์ ์์น. ๋ชฉํ๋ ์ ์คํ๋๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋๋ค.
ํ์ฌ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ๋ก์ธ์, ์ผ๋ถ ์ด์ ์ ์ ๊ณตํ๋ ์ต์ ํ ๊ฐ์ ๊ท ํ
๋ฒ์์ CPU๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ CPU์ ์ฑ๋ฅ ํจ์ ์ ๋ฐฉ์งํฉ๋๋ค. ์ ํจ๊ณผ
์ด ์ต์ ์ CPU ๋ชจ๋ธ์ด ์๋ค๊ฐ ์ฌ๋ผ์ง๋ฉด์ ํฅํ GCC ๋ฒ์ ์์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
-mtune=๋ค์ดํฐ๋ธ ์ปดํ์ผ๋ฌ๊ฐ ๋น๋ ์ปดํจํฐ์ CPU๋ฅผ ์๋ ๊ฐ์งํ๋๋ก ํฉ๋๋ค. ~์
ํ์ฌ ์ด ๊ธฐ๋ฅ์ GNU/Linux์์๋ง ์ง์๋๋ฉฐ ๋ชจ๋ ์ํคํ ์ฒ๊ฐ ์ง์๋๋ ๊ฒ์ ์๋๋๋ค.
์ธ์. ์๋ ๊ฐ์ง์ ์คํจํ๋ฉด ์ต์ ์ด ์ ์ฉ๋์ง ์์ต๋๋ค.
-mcpu =name
๋์ ARM ํ๋ก์ธ์์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. GCC๋ ์ด ์ด๋ฆ์ ์ฌ์ฉํ์ฌ
๋์ ARM ์ํคํ ์ฒ์ ์ด๋ฆ( -XNUMX ์) ๋ฐ ARM ํ๋ก์ธ์
์ฑ๋ฅ์ ์ํด ์กฐ์ ํ ์ ํ(์ ์ํด ์ง์ ๋ ๊ฒ์ฒ๋ผ -mtune). ์ด ์ต์ ์ด ์๋ ๊ณณ
์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค -XNUMX ์ or -mtune, ํด๋น ์ต์ ์ด
์ด ์ต์ ์ ์ ์ ํ ๋ถ๋ถ.
์ด ์ต์ ์ ํ์ฉ๋๋ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -mtune.
-mcpu=์ผ๋ฐ-์์น ๋ ํ์ฉ๋๋ฉฐ ๋ค์๊ณผ ๋์ผํฉ๋๋ค. -ํ์ง=์์น
-mtune=์ผ๋ฐ-์์น. ์ฐธ์กฐ -mtune
-mcpu=๋ค์ดํฐ๋ธ ์ปดํ์ผ๋ฌ๊ฐ ๋น๋ ์ปดํจํฐ์ CPU๋ฅผ ์๋ ๊ฐ์งํ๋๋ก ํฉ๋๋ค. ~์
ํ์ฌ ์ด ๊ธฐ๋ฅ์ GNU/Linux์์๋ง ์ง์๋๋ฉฐ ๋ชจ๋ ์ํคํ ์ฒ๊ฐ ์ง์๋๋ ๊ฒ์ ์๋๋๋ค.
์ธ์. ์๋ ๊ฐ์ง์ ์คํจํ๋ฉด ์ต์ ์ด ์ ์ฉ๋์ง ์์ต๋๋ค.
-mfpu=name
์ด๊ฒ์ ์ด๋ค ๋ถ๋ ์์์ ํ๋์จ์ด(๋๋ ํ๋์จ์ด ์๋ฎฌ๋ ์ด์ )๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ์ง์ ํฉ๋๋ค.
๋ชฉํ. ํ์ฉ๋๋ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๊ฐ์ํ์ค, vfpv3, vfpv3-fp16, vfpv3-d16, vfpv3-d16-fp16,
vfpv3xd, vfpv3xd-fp16, ๋ค์จ, ๋ค์จ fp16, vfpv4, vfpv4-d16, fpv4-sp-d16, ๋ค์จ vfpv4,
fp-armv8, ๋ค์จ fp-armv8๋ฐ ์ํธํ-๋ค์จ-fp-armv8.
If -msoft-float ๋ถ๋ ์์์ ๊ฐ์ ํ์์ ์ง์ ํฉ๋๋ค.
์ ํํ ๋ถ๋ ์์์ ํ๋์จ์ด์ NEON ํ์ฅ์ด ํฌํจ๋ ๊ฒฝ์ฐ(์: -mfpu=๋ค์จ),
๋ถ๋ ์์์ ์ฐ์ฐ์ GCC์ ์๋ ๋ฒกํฐํ ํจ์ค์ ์ํด ์์ฑ๋์ง ์์ต๋๋ค.
...์ ์ ์ธํ๋ฉด -์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ ๋ ์ง์ ๋ฉ๋๋ค. NEON ํ๋์จ์ด ๋๋ฌธ์ ๋๋ค.
๋ถ๋ ์์์ ์ฐ์ ์ ๋ํ IEEE 754 ํ์ค์ ์์ ํ ๊ตฌํํ์ง ์์ต๋๋ค(in
ํน์ ๋น์ ๊ท ๊ฐ์ XNUMX์ผ๋ก ์ฒ๋ฆฌ๋จ), ๋ฐ๋ผ์ NEON ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด
์ ๋ฐ๋์ ์์ค๋ก ์ด์ด์ง๋๋ค.
-mfp16 ํ์=name
"__fp16" ๋ฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ ํ์ ํ์์ ์ง์ ํฉ๋๋ค. ํ์ฉ
์ด๋ฆ์ ์์, ์๋ฐ ๋์; ๊ธฐ๋ณธ๊ฐ์ ์์, ์ด ๊ฒฝ์ฐ "__fp16"
์ ํ์ด ์ ์๋์ง ์์์ต๋๋ค.
-m๊ตฌ์กฐ-ํฌ๊ธฐ-๊ฒฝ๊ณ=n
๋ชจ๋ ๊ตฌ์กฐ ๋ฐ ๊ณต์ฉ์ฒด์ ํฌ๊ธฐ๋ ๋ค์ ์์ ๋ฐฐ์๋ก ๋ฐ์ฌ๋ฆผ๋ฉ๋๋ค.
์ด ์ต์ ์ ์ํด ์ค์ ๋๋ ๋นํธ. ํ์ฉ๋๋ ๊ฐ์ 8, 32 ๋ฐ 64์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
๋๊ตฌ ๋ชจ์๋ง๋ค ๋ค๋ฆ ๋๋ค. COFF ๋์ ๋๊ตฌ ์ฒด์ธ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์
8. 64 ๊ฐ์ ๊ธฐ๋ณธ ABI๊ฐ ์ง์ํ๋ ๊ฒฝ์ฐ์๋ง ํ์ฉ๋ฉ๋๋ค.
๋ ํฐ ์๋ฅผ ์ง์ ํ๋ฉด ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ง๋ง
ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฝ๋๋ค. ๋ค๋ฅธ ๊ฐ์ ์ ์ฌ์ ์ผ๋ก ํธํ๋์ง ์์ต๋๋ค.
ํ๋์ ๊ฐ์ผ๋ก ์ปดํ์ผ๋ ์ฝ๋๋ ๋ฐ๋์ ์ฝ๋ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์๋ํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ ์ ์์ต๋๋ค.
๊ตฌ์กฐ์ฒด ๋๋ ๊ณต์ฉ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ณด๋ฅผ ๊ตํํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค.
- mabort-on-noreturn
"noreturn" ํจ์์ ๋์์ "abort" ํจ์์ ๋ํ ํธ์ถ์ ์์ฑํฉ๋๋ค. ๊ทธ๊ฒ์์ด๋ค
ํจ์๊ฐ ๋ฐํ์ ์๋ํ๋ฉด ์คํ๋ฉ๋๋ค.
-mlong-ํตํ
-mno-long-ํตํ
์ปดํ์ผ๋ฌ์๊ฒ ๋จผ์ ์ฃผ์๋ฅผ ๋ก๋ํ์ฌ ํจ์ ํธ์ถ์ ์ํํ๋๋ก ์ง์ํฉ๋๋ค.
ํจ์๋ฅผ ๋ ์ง์คํฐ์ ๋ฃ์ ๋ค์ ์ด ๋ ์ง์คํฐ์์ ์๋ธ๋ฃจํด ํธ์ถ์ ์ํํฉ๋๋ค. ์ด๊ฒ
๋์ ๊ธฐ๋ฅ์ด 64MB ์ฃผ์ ์ง์ ์ธ๋ถ์ ์๋ ๊ฒฝ์ฐ ์ค์์น๊ฐ ํ์ํฉ๋๋ค.
์๋ธ๋ฃจํด ํธ์ถ ๋ช ๋ น์ ์คํ์ ๊ธฐ๋ฐ ๋ฒ์ ๋ฒ์.
์ด ์ค์์น๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ํจ์ ํธ์ถ์ด ๊ธด ํธ์ถ๋ก ๋ฐ๋๋ ๊ฒ์ ์๋๋๋ค.
ํด๋ฆฌ์คํฑ์ ์ ์ ํจ์, ์งง์ ์ ํ ์์ฑ,
๋ฒ์ ๋ด์ ์๋ ํจ์ #ํ๋ผ๊ทธ๋ง no_long_calls ์ง์, ๊ทธ๋ฆฌ๊ณ
ํ์ฌ ์ปดํ์ผ ๋ด์์ ์ ์๊ฐ ์ด๋ฏธ ์ปดํ์ผ๋ ํจ์
๋จ์๋ ๊ธด ํตํ๋ก ๋ฐ๋์ง ์์ต๋๋ค. ์ด ๊ท์น์ ์์ธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํจ์ ์ ์, ํจ์ ๊ธด ์ ํ ์์ฑ ๋๋ ์น์ ์ ์์ด์ผ ํฉ๋๋ค. ์์ฑ,
์ ๋ฒ์ ๋ด์ ์๋ ๊ธฐ๋ฅ #ํ๋ผ๊ทธ๋ง ๊ธด ํตํ ์ง์๋ฌธ์ ํญ์
๊ธด ํตํ๋ก ๋ฐ๋์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค. ์ง์ -mno-long-ํตํ ๋ณต์
์ ๋ฒ์ ๋ด์์ ํจ์ ํธ์ถ์ ๋ฐฐ์นํ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๋ณธ ๋์ #ํ๋ผ๊ทธ๋ง
long_calls_off ์ง๋ น. ์ด๋ฌํ ์ค์์น๋ ์ปดํ์ผ๋ฌ๊ฐ
ํจ์ ํฌ์ธํฐ๋ฅผ ํตํด ํจ์ ํธ์ถ์ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-msingle-pic-base
PIC ์ฃผ์ ์ง์ ์ ์ฌ์ฉ๋๋ ๋ ์ง์คํฐ๋ฅผ ๋ก๋ํ๋ ๋์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ฒ๋ฆฌํ์ญ์์ค.
๊ฐ ๊ธฐ๋ฅ์ ๋ํ ํ๋กค๋ก๊ทธ. ๋ฐํ์ ์์คํ ์ ์ด๊ฒ์ ์ด๊ธฐํํ ์ฑ ์์ด ์์ต๋๋ค.
์คํ์ด ์์๋๊ธฐ ์ ์ ์ ์ ํ ๊ฐ์ผ๋ก ๋ฑ๋กํ์ญ์์ค.
-mpic-๋ ์ง์คํฐ=๋ฑ๋ก ๋ฒํธ
PIC ์ฃผ์ ์ง์ ์ ์ฌ์ฉํ ๋ ์ง์คํฐ๋ฅผ ์ง์ ํฉ๋๋ค. ํ์ค PIC ๊ธฐ๋ณธ ์ผ์ด์ค์ ๊ฒฝ์ฐ
๊ธฐ๋ณธ๊ฐ์ ์ปดํ์ผ๋ฌ๊ฐ ๊ฒฐ์ ํ ์ ์ ํ ๋ ์ง์คํฐ์ ๋๋ค. ๋จ์ผ PIC ๋ฒ ์ด์ค์ฉ
๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ R9 ๋์์ด EABI ๊ธฐ๋ฐ์ด๊ฑฐ๋ ์คํ ๊ฒ์ฌ๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ
๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ R10.
-mpoke ํจ์ ์ด๋ฆ
ํจ์ ๋ฐ๋ก ์์ ์๋ ํ ์คํธ ์น์ ์ ๊ฐ ํจ์์ ์ด๋ฆ์ ์๋๋ค.
ํ๋กค๋ก๊ทธ. ์์ฑ๋ ์ฝ๋๋ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค.
t0
.ascii "arm_poke_function_name", 0
.๋ง์ถ๋ค
t1
.๋จ์ด 0xff000000 + (t1 - t0)
arm_poke_function_name
์ด๋ IP, SP
stmfd sp!, {fp, ip, lr, pc}
์๋ธ FPS, IP, #4
์คํ ์ญ์ถ์ ์ ์ํํ ๋ ์ฝ๋๋ "fp +
0". ์ถ์ ๊ธฐ๋ฅ์ด "pc - 12" ์์น๋ฅผ ์ฐพ๊ณ ์์ 8๋นํธ๋
์ค์ ํ๋ฉด ๋ฐ๋ก ์์ ํจ์ ์ด๋ฆ์ด ํฌํจ๋์ด ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์์น ๋ฐ ๊ธธ์ด๋ "((pc[-3]) & 0xff000000)"์ ๋๋ค.
-์์ง์๊ฐ๋ฝ
-๋ง๋ฆ
ARM ๋ฐ Thumb ์ํ์์ ์คํ๋๋ ์ฝ๋ ์์ฑ ์ค์์ ์ ํํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ
๋๋ถ๋ถ์ ๊ตฌ์ฑ์ ARM ์ํ์์ ์คํ๋๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด์ง๋ง ๊ธฐ๋ณธ๊ฐ์
๋ค์์ผ๋ก GCC๋ฅผ ๊ตฌ์ฑํ์ฌ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. --with-๋ชจ๋=์ํ ์ต์ ์ ๊ตฌ์ฑํฉ๋๋ค.
-mtpcs-ํ๋ ์
Thumb ํ๋ก์์ ํธ์ถ ํ์ค์ ์ค์ํ๋ ์คํ ํ๋ ์ ์์ฑ
๋ฆฌํ๊ฐ ์๋ ๋ชจ๋ ํจ์. (๋ฆฌํ ํจ์๋ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ์ง ์๋ ํจ์์ ๋๋ค.
๊ธฐ๋ฅ.) ๊ธฐ๋ณธ๊ฐ์ -mno-tpcs-ํ๋ ์.
-mtpcs-๋ฆฌํ ํ๋ ์
Thumb ํ๋ก์์ ํธ์ถ ํ์ค์ ์ค์ํ๋ ์คํ ํ๋ ์ ์์ฑ
๋ชจ๋ ์ ๊ธฐ๋ฅ. (๋ฆฌํ ํจ์๋ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ์ง ์๋ ํจ์์ ๋๋ค.)
๋ํดํธ๋ -mno-apcs-๋ฆฌํ ํ๋ ์.
-mcallee-์ํผ ์ธํฐ์ํน
์ปดํ์ผ ์ค์ธ ํ์ผ์์ ์ธ๋ถ์์ ๋ณผ ์ ์๋ ๋ชจ๋ ํจ์์ ARM ๋ช ๋ น์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋๋จธ์ง ๊ธฐ๋ฅ์ ์คํํ๊ธฐ ์ ์ Thumb ๋ชจ๋๋ก ์ ํํ๋ ํค๋๋ฅผ ์ค์ ํ์ญ์์ค.
์ด๋ ๊ฒ ํ๋ฉด ์ด๋ฌํ ํจ์๊ฐ ๋น์ธํฐ์ํน ์ฝ๋์์ ํธ์ถ๋ ์ ์์ต๋๋ค. ์ด ์ต์ ์
์ธํฐ์ํน์ด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์๊ธฐ ๋๋ฌธ์ AAPCS ๊ตฌ์ฑ์์๋ ์ ํจํ์ง ์์ต๋๋ค.
-mcaller-์ํผ ์ธํฐ์ํน
ํจ์ ํฌ์ธํฐ(๊ฐ์ ํจ์ ํฌํจ)๋ฅผ ํตํ ํธ์ถ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์คํ๋๋๋ก ํ์ฉ
๋์ ์ฝ๋๊ฐ ์ธํฐ์ํน์ ์ํด ์ปดํ์ผ๋์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด.
์ด ์ต์ ์ด ์์ผ๋ฉด ํจ์ ํฌ์ธํฐ๋ฅผ ์คํํ๋ ๋น์ฉ์ ์ฝ๊ฐ์ ์ค๋ฒํค๋๊ฐ ์์ต๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅ. ์ด ์ต์ ์ AAPCS ๊ตฌ์ฑ์์ ์ ํจํ์ง ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
-mtp=name
์ค๋ ๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง ํฌ์ธํฐ์ ๋ํ ์ก์ธ์ค ๋ชจ๋ธ์ ์ง์ ํ์ญ์์ค. ์ ํจํ ๋ชจ๋ธ์
๋ถ๋๋ฌ์ด, "__aeabi_read_tp"์ ๋ํ ํธ์ถ์ ์์ฑํฉ๋๋ค. cp15, ์ค๋ ๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
"cp15"์์ ์ง์ ํฌ์ธํฐ(arm6k ์ํคํ ์ฒ์์ ์ง์๋จ) ๋ฐ ์๋, ๊ทธ
์ ํํ ํ๋ก์ธ์์ ๊ฐ์ฅ ์ ํฉํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ ์ค์ ์
์๋.
-mtls-๋ฐฉ์ธ=๋ฐฉ์ธ
์ค๋ ๋ ๋ก์ปฌ ์ ์ฅ์์ ์ก์ธ์คํ๋ ๋ฐ ์ฌ์ฉํ ์ธ์ด๋ฅผ ์ง์ ํฉ๋๋ค. ๋ ๋ฐฉ์ธS๋
์ง์ ---์์ ๋น์ทํ ์ผ์ข ์ ์์ and gnu2. ๊ทธ๋งํผ ์์ ๋น์ทํ ์ผ์ข ์ ์์ ๋ฐฉ์ธ์ ์๋ GNU ์ฒด๊ณ๋ฅผ ์ ํํฉ๋๋ค.
๋ก์ปฌ ๋ฐ ๊ธ๋ก๋ฒ ๋์ TLS ๋ชจ๋ธ์ ์ง์ํฉ๋๋ค. NS gnu2 ๋ฐฉ์ธ์ GNU๋ฅผ ์ ํํฉ๋๋ค
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ ์ค๋ช ์ ์ฒด๊ณ. GNU
์ค๋ช ์ ์ฒด๊ณ๋ ์๋ ์ฒด๊ณ์ ํธํ๋์ง๋ง ์ ์ฒด๊ณ๊ฐ ํ์ํฉ๋๋ค.
์ด์ ๋ธ๋ฌ, ๋ง์ปค ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์. ์ด๊ธฐ ๋ฐ ๋ก์ปฌ ์คํ TLS ๋ชจ๋ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ์ต์ ์ ์ํฅ์ ๋ฐ์ง ์์ผ๋ฉฐ ํญ์ ์๋ ๊ตฌ์ฑํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-mword-์ฌ๋ฐฐ์น
๋จ์ด ํฌ๊ธฐ ๊ฐ(์ฆ, R_ARM_ABS32)์ ๋ํด์๋ง ์ ๋ ์ฌ๋ฐฐ์น๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์
๋ฐํ์ ๋ก๋๊ฐ ๋ถ๊ณผํ๋ ๋์(uClinux, SymbianOS)์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ
์ด ์ ํ, ๊ทธ๋ฆฌ๊ณ ์ธ์ -fpic or -fPIC ์ด ์ง์ ๋ฉ๋๋ค.
-mfix-cortex-m3-ldrd
์ผ๋ถ Cortex-M3 ์ฝ์ด๋ "ldrd" ๋ช ๋ น์ด
์ค๋ณต ๋์ ๋ฐ ๊ธฐ๋ณธ ๋ ์ง์คํฐ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ์ต์ ์ ์์ฑ์ ๋ฐฉ์งํฉ๋๋ค.
์ด ์ง์นจ. ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค. -mcpu=ํผ์ง-m3 is
์ง์ ๋์์ต๋๋ค.
-munaligned ์ก์ธ์ค
-mno-์ ๋ ฌ๋์ง ์์-์ก์ธ์ค
์ฃผ์์์ 16๋นํธ ๋ฐ 32๋นํธ ๊ฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ํ์ฑํ(๋๋ ๋นํ์ฑํ)
16๋นํธ ๋๋ 32๋นํธ๋ก ์ ๋ ฌ๋์ง ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ ฌ๋์ง ์์ ์ก์ธ์ค๋ ๋ชจ๋ ์ฌ์ฉ์์ ๋ํด ๋นํ์ฑํ๋ฉ๋๋ค.
ARMv6 ์ด์ ๋ฐ ๋ชจ๋ ARMv6-M ์ํคํ ์ฒ์์ ์ง์๋๋ฉฐ ๋ค๋ฅธ ๋ชจ๋ ์ํคํ ์ฒ์์ ํ์ฑํ๋ฉ๋๋ค. ๋ง์ฝ์
์ ๋ ฌ๋์ง ์์ ์ก์ธ์ค๊ฐ ํ์ฑํ๋์ง ์์ผ๋ฉด ํจํน๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋จ์ด์ ์ก์ธ์ค๋ฉ๋๋ค.
ํ ๋ฒ์ ๋ฐ์ดํธ.
ARM ์์ฑ "Tag_CPU_unaligned_access"๋ ์์ฑ๋ ๊ฐ์ฒด ํ์ผ์ ์ค์ ๋ฉ๋๋ค.
์ด ์ต์ ์ ์ค์ ์ ๋ฐ๋ผ true ๋๋ false๋ก ์ค์ ๋ฉ๋๋ค. ์ ๋ ฌ๋์ง ์์ ๊ฒฝ์ฐ
์ก์ธ์ค๊ฐ ํ์ฑํ๋๋ฉด ์ ์ฒ๋ฆฌ๊ธฐ ๊ธฐํธ "__ARM_FEATURE_UNALIGNED"๋ ์ฌ์ฉ๋ฉ๋๋ค.
ํ์ ๋.
-64๋นํธ์ฉ mneon
Neon์ ์ฌ์ฉํ์ฌ ์ค์นผ๋ผ 64๋นํธ ์์ ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
์ฝ์ด ๋ ์ง์คํฐ์์ ๋ค์จ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ด๋ํ๋ ๋น์ฉ์ด ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
-mrestrict-it
ARMv8์ ๊ท์น์ ์ค์ํ๋๋ก IT ๋ธ๋ก ์์ฑ์ ์ ํํฉ๋๋ค. IT ๋ธ๋ก์
์ ํ๋ ๋ช ๋ น์ด ์ธํธ์์ ๋จ์ผ 16๋นํธ ๋ช ๋ น์ด๋ง ํฌํจํฉ๋๋ค. ์ด๊ฒ
์ต์ ์ ARMv8 Thumb ๋ชจ๋์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค.
AVR ์ต์
๋ค์ ์ต์ ์ AVR ๊ตฌํ์ ๋ํด ์ ์๋ฉ๋๋ค.
-mmcu=MCU
Atmel AVR ISA(๋ช ๋ น ์ธํธ ์ํคํ ์ฒ) ๋๋ MCU ์ ํ์ ์ง์ ํฉ๋๋ค.
์ด ์ต์ ์ ๊ธฐ๋ณธ๊ฐ์@tie{}"avr2"์ ๋๋ค.
GCC๋ ๋ค์ AVR ์ฅ์น ๋ฐ ISA๋ฅผ ์ง์ํฉ๋๋ค.
"avr2"
์ต๋ 8@tie{}KiB์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ "ํด๋์" ๊ธฐ๊ธฐ. MCU@tie{}= "attiny22",
"attiny26", "at90c8534", "at90s2313", "at90s2323", "at90s2333", "at90s2343",
"at90s4414", "at90s4433", "at90s4434", "at90s8515", "at90s8535".
"avr25"
์ต๋ 8@tie{}KiB์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ์ "MOVW"๊ฐ ์๋ "ํด๋์" ๊ธฐ๊ธฐ
๊ต์. MCU@tie{}= "ata5272", "ata6289", "attiny13", "attiny13a",
"attiny2313", "attiny2313a", "attiny24", "attiny24a", "attiny25", "attiny261",
"attiny261a", "attiny43u", "attiny4313", "attiny44", "attiny44a", "attiny45",
"attiny461", "attiny461a", "attiny48", "attiny84", "attiny84a", "attiny85",
"attiny861", "attiny861a", "attiny87", "attiny88", "at86rf401".
"avr3"
ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๊ฐ 16@tie{}KiB์์ ์ต๋ 64@tie{}KiB์ธ "ํด๋์" ๊ธฐ๊ธฐ.
MCU@tie{}= "at43usb355", "at76c711".
"avr31"
128@tie{}KiB์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ "ํด๋์" ๊ธฐ๊ธฐ. MCU@tie{}= "atmega103",
"at43usb320".
"avr35"
16@tie{}KiB์์ ์ต๋ 64@tie{}KiB์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ์
"MOVW" ๋ช ๋ น. MCU@tie{}= "ata5505", "atmega16u2", "atmega32u2",
"atmega8u2", "attiny1634", "attiny167", "at90usb162", "at90usb82".
"avr4"
์ต๋ 8@tie{}KiB์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ "ํฅ์๋" ๊ธฐ๊ธฐ. MCU@tie{}= "ata6285",
"ata6286", "atmega48", "atmega48a", "atmega48p", "atmega48pa", "atmega8",
"atmega8a", "atmega8hva", "atmega8515", "atmega8535", "atmega88", "atmega88a",
"atmega88p", "atmega88pa", "at90pwm1", "at90pwm2", "at90pwm2b", "at90pwm3",
"at90pwm3b", "at90pwm81".
"avr5"
ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๊ฐ 16@tie{}KiB์์ ์ต๋ 64@tie{}KiB์ธ "ํฅ์๋" ๊ธฐ๊ธฐ.
MCU@tie{}= "ata5790", "ata5790n", "ata5795", "atmega16", "atmega16a",
"atmega16hva", "atmega16hva2", "atmega16hvb", "atmega16hvbrevb", "atmega16m1",
"atmega16u4", "atmega161", "atmega162", "atmega163", "atmega164a", "atmega164p",
"atmega164pa", "atmega165", "atmega165a", "atmega165p", "atmega165pa",
"atmega168", "atmega168a", "atmega168p", "atmega168pa", "atmega169", "atmega169a",
"atmega169p", "atmega169pa", "atmega26hvg", "atmega32", "atmega32a", "atmega32c1",
"atmega32hvb", "atmega32hvbrevb", "atmega32m1", "atmega32u4", "atmega32u6",
"atmega323", "atmega324a", "atmega324p", "atmega324pa", "atmega325", "atmega325a",
"atmega325p", "atmega3250", "atmega3250a", "atmega3250p", "atmega3250pa",
"atmega328", "atmega328p", "atmega329", "atmega329a", "atmega329p", "atmega329pa",
"atmega3290", "atmega3290a", "atmega3290p", "atmega3290pa", "atmega406",
"atmega48hvf", "atmega64", "atmega64a", "atmega64c1", "atmega64hve", "atmega64m1",
"atmega64rfa2", "atmega64rfr2", "atmega640", "atmega644", "atmega644a",
"atmega644p", "atmega644pa", "atmega645", "atmega645a", "atmega645p",
"atmega6450", "atmega6450a", "atmega6450p", "atmega649", "atmega649a",
"atmega649p", "atmega6490", "atmega6490a", "atmega6490p", "at90can32",
"at90can64", "at90pwm161", "at90pwm216", "at90pwm316", "at90scr100", "at90usb646",
"at90usb647", "at94k", "m3000".
"avr51"
128@tie{}KiB์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ "ํฅ์๋" ๊ธฐ๊ธฐ. MCU@tie{}= "atmega128",
"atmega128a", "atmega128rfa1", "atmega1280", "atmega1281", "atmega1284",
"atmega1284p", "at90can128", "at90usb1286", "at90usb1287".
"avr6"
3๋ฐ์ดํธ PC๊ฐ ์๋ "ํฅ์๋" ๊ธฐ๊ธฐ(์: 128@tie{}KiB ์ด์์ ํ๋ก๊ทธ๋จ ํฌํจ)
๋ฉ๋ชจ๋ฆฌ. MCU@tie{}= "atmega2560", "atmega2561".
"avrxmega2"
8@tie{}KiB ์ด์ ๋ฐ ์ต๋ 64@tie{}KiB์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ "XMEGA" ๊ธฐ๊ธฐ.
MCU@tie{}= "atmxt112sl", "atmxt224", "atmxt224e", "atmxt336s", "atxmega16a4",
"atxmega16a4u", "atxmega16c4", "atxmega16d4", "atxmega16x1", "atxmega32a4",
"atxmega32a4u", "atxmega32c4", "atxmega32d4", "atxmega32e5", "atxmega32x1".
"avrxmega4"
64@tie{}KiB ์ด์ ๋ฐ ์ต๋ 128@tie{}KiB ํ๋ก๊ทธ๋จ์ "XMEGA" ๊ธฐ๊ธฐ
๋ฉ๋ชจ๋ฆฌ. MCU@tie{}= "atxmega64a3", "atxmega64a3u", "atxmega64a4u", "atxmega64b1",
"atxmega64b3", "atxmega64c3", "atxmega64d3", "atxmega64d4".
"avrxmega5"
64@tie{}KiB ์ด์ ๋ฐ ์ต๋ 128@tie{}KiB ํ๋ก๊ทธ๋จ์ "XMEGA" ๊ธฐ๊ธฐ
๋ฉ๋ชจ๋ฆฌ ๋ฐ 64@tie{}KiB ์ด์์ RAM. MCU@tie{}= "atxmega64a1",
"atxmega64a1u".
"avrxmega6"
128@tie{}KiB ์ด์์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ "XMEGA" ๊ธฐ๊ธฐ. MCU@ํ์ด{}=
"atmxt540s", "atmxt540sreva", "atxmega128a3", "atxmega128a3u", "atxmega128b1",
"atxmega128b3", "atxmega128c3", "atxmega128d3", "atxmega128d4", "atxmega192a3",
"atxmega192a3u", "atxmega192c3", "atxmega192d3", "atxmega256a3", "atxmega256a3b",
"atxmega256a3bu", "atxmega256a3u", "atxmega256c3", "atxmega256d3", "atxmega384c3",
"atxmega384d3".
"avrxmega7"
128@tie{}KiB ์ด์์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ์ ๊ทธ ์ด์์ "XMEGA" ๊ธฐ๊ธฐ
64@tie{}KiB์ RAM. MCU@tie{}= "atxmega128a1", "atxmega128a1u", "atxmega128a4u".
"avr1"
์ด ISA๋ ์ต์ AVR ์ฝ์ด๋ก ๊ตฌํ๋๋ฉฐ ์ด์ ๋ธ๋ฌ์์๋ง ์ง์๋ฉ๋๋ค.
MCU@tie{}= "attiny11", "attiny12", "attiny15", "attiny28", "at90s1200".
-maccumulate-args
๋๊ฐ๋ ํจ์ ์ธ์๋ฅผ ๋์ ํ๊ณ ํ์ํ ์คํ ๊ณต๊ฐ์ ํ๋/ํด์ ํฉ๋๋ค.
ํจ์ ํ๋กค๋ก๊ทธ/์ํ๋ก๊ทธ์์ ํ ๋ฒ ๋๊ฐ๋ ํจ์ ์ธ์. ์ด ์ต์ ์ด ์์ผ๋ฉด
๋๊ฐ๋ ์ธ์๋ ํจ์๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ํธ์๋๊ณ ๋์ค์ ํ๋ฉ๋๋ค.
ํจ์ ํธ์ถ ํ ์ธ์๋ฅผ ํํ๋ฉด AVR์์ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ผ๋ฏ๋ก
์คํ ๊ณต๊ฐ์ ๋์ ํ๋ฉด ์ธ์๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์คํ ํ์ผ์ด ๋ ์์์ง ์ ์์ต๋๋ค.
์ด๋ฌํ ํจ์ ํธ์ถ ํ์ ์คํ์์ ์ ๊ฑฐ๋์ง ์์ต๋๋ค.
์ด ์ต์ ์ ์ฌ๋ฌ ํธ์ถ์ ์ํํ๋ ํจ์์ ์ฝ๋ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค
printf์ ๊ฐ์ ํจ์์ ๋ํ ํธ์ถ๊ณผ ๊ฐ์ด ์คํ์์ ์ธ์๋ฅผ ๊ฐ์ ธ์ค๋ ํจ์.
-mbranch ๋น์ฉ=๋น์ฉ
์กฐ๊ฑด๋ถ ๋ถ๊ธฐ ๋ช ๋ น์ด์ ๋ถ๊ธฐ ๋น์ฉ์ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. ๋น์ฉ. ํฉ๋ฆฌ์ ์ธ ๊ฐ์น
for ๋น์ฉ ์์ด ์๋ ์์ ์ ์์ ๋๋ค. ๊ธฐ๋ณธ ๋ถ๊ธฐ ๋น์ฉ์ 0์ ๋๋ค.
-mcall-ํ๋กค๋ก๊ทธ
๊ธฐ๋ฅ ํ๋กค๋ก๊ทธ/์ํ๋ก๊ทธ๋ ์ ์ ํ ์๋ธ๋ฃจํด์ ๋ํ ํธ์ถ๋ก ํ์ฅ๋ฉ๋๋ค. ์ํธ
ํฌ๊ธฐ๊ฐ ๋ ์์ต๋๋ค.
-๋ฏผํธ8
"int"๊ฐ 8๋นํธ ์ ์๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ์ ๋ชจ๋ ์ ํ์ ํฌ๊ธฐ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. "char"๋ 1์ ๋๋ค.
byte, "int"๋ 1๋ฐ์ดํธ, "long"์ 2๋ฐ์ดํธ, "long long"์ 4๋ฐ์ดํธ์ ๋๋ค. ์ ๋ฐ
์ด ์ต์ ์ C ํ์ค์ ์ค์ํ์ง ์์ง๋ง ๊ฒฐ๊ณผ์ ์ผ๋ก
์ฝ๋ ํฌ๊ธฐ.
-mno ์ธํฐ๋ฝํธ
์์ฑ๋ ์ฝ๋๋ ํ๋์จ์ด ์ธํฐ๋ฝํธ์ ํธํ๋์ง ์์ต๋๋ค. ์ฝ๋ ํฌ๊ธฐ๊ฐ ๋ ์์ต๋๋ค.
-mrelax
"CALL" resp๋ฅผ ๊ต์ฒดํด ๋ณด์ญ์์ค. ์งง์ "RCALL" resp์ ์ํ "JMP" ๋ช ๋ น. "RJMP"
ํด๋น๋๋ ๊ฒฝ์ฐ ์ง์นจ. "-mrelax"๋ฅผ ์ค์ ํ๋ฉด "--relax" ์ต์ ์ด
๋ง์ปค๊ฐ ํธ์ถ๋ ๋ ๋ง์ปค ๋ช ๋ น์ค.
์ ํ ์คํ์ ์ ์ด์ ์ ์๋ ค์ง์ง ์์๊ธฐ ๋๋ฌธ์ ๋ง์ปค์์ ์ ํ ์ํ๋ฅผ ์ํํฉ๋๋ค.
์ฝ๋๊ฐ ์์นํฉ๋๋ค. ๋ฐ๋ผ์ ์ปดํ์ผ๋ฌ๊ฐ ์์ฑํ ์ด์ ๋ธ๋ฌ ์ฝ๋๋ ๋์ผํ๋ฉฐ,
๊ทธ๋ฌ๋ ์คํ ํ์ผ์ ๋ช ๋ น์ด๋ ์ด์ ๋ธ๋ฌ์ ๋ช ๋ น์ด์ ๋ค๋ฅผ ์ ์์ต๋๋ค.
์ํธ.
๋ง์ปค ์คํ ์ด ํ์ํ ๊ฒฝ์ฐ ์ด์์ ์ผ์ผ ํฉ๋๋ค. "EIND" ์น์ ์ ์ฐธ์กฐํ๊ณ
์๋์ ๋ง์ปค ์คํ .
-msp8
์คํ ํฌ์ธํฐ ๋ ์ง์คํฐ๋ฅผ 8๋นํธ ๋ ์ง์คํฐ๋ก ์ทจ๊ธํฉ๋๋ค. ์ฆ, ์์ ๋ฐ์ดํธ๋ฅผ ๊ฐ์ ํฉ๋๋ค.
์คํ ํฌ์ธํฐ๋ XNUMX์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ์ต์ ์ ์๋์ผ๋ก ์ค์ ํ ํ์๊ฐ ์์ต๋๋ค.
์ด ์ต์ ์ ์ปดํ์ผ๋ฌ์์ ๋ด๋ถ์ ์ผ๋ก ๋ฉํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ๊ณ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ํคํ ์ฒ "avr2" ๋ฐ "avr25". ์ด๋ฌํ ์ํคํ ์ฒ๋ ์ฅ์น๋ฅผ ํฌํจํ๊ฑฐ๋ ํฌํจํ์ง ์๊ณ ํผํฉํฉ๋๋ค.
"SPH". "-mmcu=avr2" ๋๋ "-mmcu=avr25" ์ด์ธ์ ์ค์ ์ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ
์ปดํ์ผ๋ฌ ๊ณ ์ ์ ๋ช ๋ น์ค์์ ์ด ์ต์ ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ปดํ์ผ๋ฌ๋ ์ฅ์น ๋๋ ์ํคํ ์ฒ์ 8๋นํธ ์คํ ํฌ์ธํฐ๊ฐ ์๋์ง ์๊ณ
"SPH" ๋ ์ง์คํฐ๊ฐ ์๋์ง ์ฌ๋ถ.
-mstrict-X
ํ๋์จ์ด์์ ์ ์ํ๋ ๋ฐฉ์์ผ๋ก ์ฃผ์ ๋ ์ง์คํฐ "X"๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ "X"๊ฐ
๊ฐ์ , ์ฌํ ์ฆ๊ฐ ๋๋ ์ฌ์ ๊ฐ์ ์ฃผ์ ์ง์ ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
์ด ์ต์ ์ด ์์ผ๋ฉด "X" ๋ ์ง์คํฐ๋ "Y" ๋๋ "Z"์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ถ๊ฐ ์ง์นจ์ ์ํด ์๋ฎฌ๋ ์ดํธ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด,
๋ ์ง์คํฐ์ ๋ํด ์์ด ์๋ ์์ "const < 64"๋ฅผ ์ฌ์ฉํ์ฌ "X+const" ์ฃผ์ ์ง์ Rn is
๋ก ์ํ
adw r26, const ; X += ์์
ld , NS ; = *X
sbiw r26, const ; X -= ์์
-mtiny ์คํ
์คํ ํฌ์ธํฐ์ ํ์ 8@tie{}๋นํธ๋ง ๋ณ๊ฒฝํ์ธ์.
-Waddr ๊ณต๊ฐ ๋ณํ
๊ฒฐ๊ณผ ์ฃผ์๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ฃผ์ ๊ณต๊ฐ ๊ฐ์ ๋ณํ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
๊ณต๊ฐ์ ๋ค์ด์ค๋ ์ฃผ์ ๊ณต๊ฐ์ ํฌํจ๋์ง ์์ต๋๋ค.
"EIND" ๋ฐ 128Ki ๋ฐ์ดํธ ์ด์์ ํ๋์๊ฐ ์๋ ์ฅ์น
๊ตฌํ์ ํฌ์ธํฐ๋ 16@tie{}๋นํธ ๋๋น์ ๋๋ค. ํจ์ ๋๋ ๋ ์ด๋ธ์ ์ฃผ์
๊ฐ์ ์ ํ ๋ฐ ํธ์ถ์ด ๋ชจ๋ ์ฝ๋๋ฅผ ๋์์ผ๋ก ํ ์ ์๋๋ก ์๋ ์ฃผ์๋ก ํ์๋ฉ๋๋ค.
64@tie{}Ki ๋จ์ด ๋ฒ์์ ์ฃผ์.
128@tie{}Ki ๋ฐ์ดํธ ์ด์์ ๊ธฐ๊ธฐ์์ ๊ฐ์ ์ ํ๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด
ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์๋ "EIND"๋ผ๋ ํน์ ๊ธฐ๋ฅ ๋ ์ง์คํฐ๊ฐ ์์ต๋๋ค.
"EICAL" ๋๋ "EIJMP" ๋ช ๋ น์ด๊ฐ ๋ค์๊ณผ ๊ฐ์ ๋ ๋์ ์ฃผ์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ
์ต์ํ.
์ด๋ฌํ ์ฅ์น์ ๋ํ ๊ฐ์ ์ ํ ๋ฐ ํธ์ถ์ ์ปดํ์ผ๋ฌ์ ์ํด ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌ๋๋ฉฐ
๋ช ๊ฐ์ง ์ ํ ์ฌํญ์ด ์์ต๋๋ค.
ยท ์ปดํ์ผ๋ฌ๋ "EIND"๋ฅผ ์ค์ ํ์ง ์์ต๋๋ค.
ยท ์ปดํ์ผ๋ฌ๋ "EICAL"/"EIJMP" ๋ช ๋ น์ด์์ ์์์ ์ผ๋ก "EIND"๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ค์์ ์ฝ์ ์ ์์ต๋๋ค.
"RET"๋ฅผ ํตํด ๊ฐ์ ํธ์ถ/์ ํ๋ฅผ ์๋ฎฌ๋ ์ดํธํ๊ธฐ ์ํด ์ง์ "EIND"
๊ต์.
ยท ์ปดํ์ผ๋ฌ๋ "EIND"๊ฐ ์์ ์ฝ๋ ๋์ ๋๋ ์คํ ์ค์ ๋ณ๊ฒฝ๋์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ . ํนํ "EIND"๋ ํจ์๋ ์ธํฐ๋ฝํธ์ ์ ์ฅ/๋ณต๊ตฌ๋์ง ์์ต๋๋ค.
์๋น์ค ๋ฃจํด ํ๋กค๋ก๊ทธ/์ํ๋ก๊ทธ.
ยท ํจ์ ๋ฐ ๊ณ์ฐ๋ goto์ ๋ํ ๊ฐ์ ํธ์ถ์ ๊ฒฝ์ฐ ๋ง์ปค๋ ๋ค์์ ์์ฑํฉ๋๋ค. ์คํ . ์คํ
์ ํ ํจ๋๋ผ๊ณ ๋ ํฉ๋๋ค ํธ๋จํด๋ฆฐ. ๋ฐ๋ผ์ ๊ฐ์ ํธ์ถ/์ ํ
๊ทธ๋ฐ ์คํ . ์คํ ์๋ ์ํ๋ ์ฃผ์๋ก์ ์ง์ ์ ํ๊ฐ ํฌํจ๋ฉ๋๋ค.
ยท ๋ง์ปค๊ฐ ์คํ ์ ์์ฑํ๋ ค๋ฉด ๋ง์ปค ์ด์์ ์ผ์ผ ํฉ๋๋ค.
๋ชจ๋ ์ํฉ์ ์ฌ๋ฐ๋ฅด๊ฒ. ์ปดํ์ผ๋ฌ ์ต์ "-mrelax" ๋ฐ linler ์ต์ ์ ์ฐธ์กฐํ์ญ์์ค.
"--์์ฌํ๋ค". ๋ง์ปค๊ฐ ์คํ ์ ์์ฑํด์ผ ํ์ง๋ง
์ด์ ๋ฐ ์ ์ฉํ ์ค๋ฅ ๋ฉ์์ง ์์ด ์ค๋จ๋ฉ๋๋ค.
ยท ๊ธฐ๋ณธ ๋ง์ปค ์คํฌ๋ฆฝํธ๋ "EIND = 0"์ธ ์ฝ๋์ ๋ํด ์ ๋ ฌ๋ฉ๋๋ค. ์ฝ๋๊ฐ ๊ฐ์ ๋๋ ๊ฒฝ์ฐ
"EIND != 0" ์ค์ ์์ ์๋ํ๋ ค๋ฉด ์ฌ์ฉ์ ์ง์ ๋ง์ปค ์คํฌ๋ฆฝํธ๋ฅผ ์์๋๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ด๋ฆ์ด ".trampolines"๋ก ์์ํ๋ ์น์ ์ ์ธ๊ทธ๋จผํธ์ ๋ฐฐ์นํ๋ ค๋ฉด
"EIND"๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
ยท libgcc์ ์์ ์ฝ๋๋ "EIND"๋ฅผ ์ค์ ํ์ง ์์ต๋๋ค. ์์ ์ฝ๋๋ ํผํฉ์ ๋๋ค.
libgcc ๋ฐ AVR-LibC์ ์ฝ๋. "EIND"์ ๋ํ AVR-LibC์ ์ํฅ์ ๋ํด์๋ AVR-
LibC ์ฌ์ฉ์ ๋งค๋ด์ผ("http://nongnu.org/avr-libc/user-manual/").
ยท ์ฌ์ฉ์๋ณ ์์ ์ฝ๋๊ฐ "EIND"๋ฅผ ์กฐ๊ธฐ์ ์ค์ ํ๋ ๊ฒ์ ํฉ๋ฒ์ ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
".init3" ์น์ ์ ์๋ ์ด๊ธฐํ ์ฝ๋ ์๋จ. ์ด๋ฌํ ์ฝ๋๋ ์ด์ ์ ์คํ๋ฉ๋๋ค.
RAM์ ์ด๊ธฐํํ๊ณ ์์ฑ์๋ฅผ ํธ์ถํ๋ ์ผ๋ฐ์ ์ธ ์์ ์ฝ๋
"EIND"๋ฅผ ๋ฒกํฐ ํ ์ด๋ธ์ด ์๋ ์ธ๊ทธ๋จผํธ๋ก ์ค์ ํ๋ AVR-LibC์ ์์ ์ฝ๋
์์นํ๊ณ ์์ต๋๋ค.
#ํฌํจํ๋ค
์ ์ ๊ณต๊ทน
__attribute__((์น์ (".init3"), ์๋ชธ, ์ฌ์ฉ, no_instrument_function))
init3_set_eind(๋ฌดํจ)
{
__asm โโํ๋ฐ์ฑ("ldi r24,pm_hh8(__trampolines_start)\n\t"
"%i0,r24 ์ถ๋ ฅ" :: "n" (&EIND) : "r24","๋ฉ๋ชจ๋ฆฌ");
}
"__trampolines_start" ๊ธฐํธ๋ ๋ง์ปค ์คํฌ๋ฆฝํธ์ ์ ์๋์ด ์์ต๋๋ค.
ยท ๋ค์ ๋ ๊ฐ์ง ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ฉด ๋ง์ปค์ ์ํด ์คํ ์ด ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.
๋ง๋ :
-
( ์์ฑ ์คํ ) ๋ค์๊ณผ ๊ฐ์ด:
LDI r24, lo8(gs( ))
LDI r25, hi8(gs( ))
-
์ธ๋ถ ์คํ ์ด ์๋ ์ธ๊ทธ๋จผํธ์ ๋๋ค.
ยท ์ปดํ์ผ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์์ ์ฝ๋ ๋ ์ด๋ธ์ ๋ํด ์ด๋ฌํ "gs" ์์ ์๋ฅผ ๋ด๋ณด๋ ๋๋ค.
-
-
- -mcall-ํ๋กค๋ก๊ทธ>
๋ช ๋ น์ค ์ต์ .
-
์ง์ ํ ์ ์๋ ํ ์ด๋ธ -fno-์ ํ ํ ์ด๋ธ ๋ช ๋ น์ค ์ต์ .
-
-
ยท ๊ธฐํธ๊ฐ ์๋ ์ฃผ์๋ก ์ ํํ๋ ๊ฒ์ ์ง์ ์ง์ :
์ ์ ๋ฉ์ธ(๋ฌดํจ)
{
/* ์๋ ์ฃผ์ 0x2์์ ํจ์ ํธ์ถ */
๋ฐํ((int(*)(๋ฌดํจ)) 0x2)();
}
๋์ , ์คํ ์ด ์ค์ ๋์ด์ผ ํฉ๋๋ค. ์ฆ, ํจ์๋ ๊ธฐํธ๋ฅผ ํตํด ํธ์ถ๋์ด์ผ ํฉ๋๋ค.
(์์์์ "func_4"):
์ ์ ๋ฉ์ธ(๋ฌดํจ)
{
extern int func_4(๋ฌดํจ);
/* ๋ฐ์ดํธ ์ฃผ์ 0x4์์ ํจ์ ํธ์ถ */
๋ฐํ func_4();
}
์์ฉ ํ๋ก๊ทธ๋จ์ "-Wl,--defsym,func_4=0x4"์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋๋ "func_4"
๋ง์ปค ์คํฌ๋ฆฝํธ์์ ์ ์ํ ์ ์์ต๋๋ค.
"RAMPD", "RAMPX", "RAMPY" ๋ฐ "RAMPZ" ํน์ ๊ธฐ๋ฅ ๋ ์ง์คํฐ ์ฒ๋ฆฌ
์ผ๋ถ AVR ๊ธฐ๊ธฐ๋ ์ก์ธ์คํ ์ ์๋ 64@tie{}KiB ๋ฒ์๋ณด๋ค ํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
16๋นํธ ํฌ์ธํฐ๋ก. ์ด 64@tie{}KiB ๋ฒ์ ๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ก์ธ์คํ๋ ค๋ฉด
"RAMP" ๋ ์ง์คํฐ์ ๋ด์ฉ์ ์ฃผ์์ ์์ ๋ถ๋ถ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. "X", "Y", "Z"
์ฃผ์ ๋ ์ง์คํฐ๋ "RAMPX", "RAMPY", "RAMPZ" ํน์ ๊ธฐ๋ฅ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋์ ์ฃผ์๋ฅผ ์ป์ผ๋ ค๋ฉด ๊ฐ๊ฐ ๋ฑ๋กํ์ญ์์ค. ๋ง์ฐฌ๊ฐ์ง๋ก "RAMPD"๋ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
์ง์ ์ฃผ์ ์ง์ .
ยท ์์ ์ฝ๋๋ "RAMP" ํน์ ๊ธฐ๋ฅ ๋ ์ง์คํฐ๋ฅผ XNUMX์ผ๋ก ์ด๊ธฐํํฉ๋๋ค.
ยท ๋ง์ฝ AVR ์ด๋ฆ ์ฃผ์ ๋ช ๋ช ๋ ๊ณต๊ฐ ์ฃผ์ ๊ณต๊ฐ ์ผ๋ฐ ๋๋ "__flash"๊ฐ ์๋ ๊ฒ์
์ฌ์ฉํ๋ฉด ์์ ์ ์ ํ์์ ๋ฐ๋ผ "RAMPZ"๊ฐ ์ค์ ๋ฉ๋๋ค.
ยท ๊ธฐ๊ธฐ๊ฐ 64@tie{KiB}๋ณด๋ค ํฐ RAM์ ์ง์ํ๊ณ ์ปดํ์ผ๋ฌ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ
"RAMPZ"๋ ์์ ์ ์ํํ๊ณ "RAMPZ"๋ ์์ ํ์ XNUMX์ผ๋ก ์ฌ์ค์ ๋ฉ๋๋ค.
ยท ์ฅ์น๊ฐ ํน์ "RAMP" ๋ ์ง์คํฐ์ ํจ๊ป ์ ๊ณต๋๋ ๊ฒฝ์ฐ ISR ํ๋กค๋ก๊ทธ/์ํ๋ก๊ทธ
ํด๋น SFR์ ์ ์ฅ/๋ณต์ํ๊ณ ISR ์ฝ๋๊ฐ
(์์์ ์ผ๋ก) ์ฌ์ฉํฉ๋๋ค.
ยท 64@tie{KiB}๋ณด๋ค ํฐ RAM์ AVR ๋์์ฉ GCC์์ ์ง์ํ์ง ์์ต๋๋ค. ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
16๋นํธ ์ฃผ์ ๋ฒ์ ๋ฐ์ ์์น์์ ์ฝ๊ณ ๋ณ๊ฒฝํ๋ ์ธ๋ผ์ธ ์ด์ ๋ธ๋ฌ
"RAMP" ๋ ์ง์คํฐ ์ค ํ๋์ ์ก์ธ์คํ ํ ์ด๋ฅผ XNUMX์ผ๋ก ์ฌ์ค์ ํด์ผ ํฉ๋๋ค.
AVR ๋ด์ฅ ๋งคํฌ๋ก
GCC๋ ์ฌ์ฉ์ ์ฝ๋๊ฐ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ ์คํธํ ์ ์๋๋ก ์ฌ๋ฌ ๋ด์ฅ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค.
๊ธฐ๋ฅ์ ๋ถ์ฌ. ๋ค์ ๋ด์ฅ ๋งคํฌ๋ก ์ค ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ด ์ฅ์น์์ ์ถ๋ก ๋ฉ๋๋ค.
๊ธฐ๋ฅ์ ๋ฐ๋ผ "-mmcu=" ๋ช ๋ น์ค ์ต์ ์ ์ํด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.
๋ ๋ง์ AVR ์ ์ฉ ๋ด์ฅ ๋งคํฌ๋ก๋ ๋ค์์ ์ฐธ์กฐํ์ญ์์ค. AVR ์ด๋ฆ ์ฃผ์ ๊ณต๊ฐ and AVR ๋ด์ฅ
๊ธฐ๋ฅ.
"__AVR_ARCH__"
์ํคํ ์ฒ๋ฅผ ์๋ณํ๋ XNUMX์ง์๋ก ํด์๋๋ ๋ด์ฅ ๋งคํฌ๋ก ๋ฐ
"-mmcu=์ ๋ฐ๋ผ ๋ค๋ฆMCU" ์ต์ . ๊ฐ๋ฅํ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
2, 25, 3, 31, 35, 4, 5, 51, 6, 102, 104, 105, 106, 107
for MCU"avr2", "avr25", "avr3", "avr31", "avr35", "avr4", "avr5", "avr51", "avr6",
๊ฐ๊ฐ "avrxmega2", "avrxmega4", "avrxmega5", "avrxmega6", "avrxmega7"์ ๋๋ค. ๋ง์ฝ์ MCU
์ฅ์น๋ฅผ ์ง์ ํ๋ฉด ์ด ๋ด์ฅ ๋งคํฌ๋ก๊ฐ ๊ทธ์ ๋ฐ๋ผ ์ค์ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด,
"-mmcu=atmega8" ๋งคํฌ๋ก๋ 4๋ก ์ ์๋ฉ๋๋ค.
"__AVR_์ฅ์น__"
์ค์ "-mmcu=์ฅ์น" ์ฅ์น์ ์ด๋ฆ์ ๋ฐ์ํ๋ ์ด ๋ด์ฅ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด "-mmcu=atmega8"์ ๋ด์ฅ ๋งคํฌ๋ก "__AVR_ATmega8__"์ ์ ์ํ๊ณ ,
"-mmcu=attiny261a"๋ "__AVR_ATtiny261A__" ๋ฑ์ ์ ์ํฉ๋๋ค.
๋ด์ฅ ๋งคํฌ๋ก์ ์ด๋ฆ์ "__AVR_์ฅ์น__" ์ด๋์ ์ฅ์น ์ด๋ค
AVR ์ฌ์ฉ์ ์ค๋ช ์์์์ ๊ฐ์ด ์ฅ์น ์ด๋ฆ. ์ฐจ์ด์ ์ฅ์น ๋ด์ฅ
๋งคํฌ๋ก ๋ฐ ์ฅ์น "-mmcu =์ฅ์น" ํ์๋ ํญ์ ์๋ฌธ์๋ผ๋ ๊ฒ์ ๋๋ค.
If ์ฅ์น ์ฅ์น๊ฐ ์๋๋ผ "avr51"๊ณผ ๊ฐ์ ํต์ฌ ์ํคํ ์ฒ์ผ ๋ฟ์ด๋ฏ๋ก ์ด ๋งคํฌ๋ก๋
์ ์๋์ง ์์ต๋๋ค.
"__AVR_XMEGA__"
์ฅ์น/์ํคํ ์ฒ๋ XMEGA ์ฅ์น ์ ํ๊ตฐ์ ์ํฉ๋๋ค.
"__AVR_HAVE_ELPM__"
์ฅ์น์๋ "ELPM" ๋ช ๋ น์ด ์์ต๋๋ค.
"__AVR_HAVE_ELPMX__"
์ฅ์น์๋ "ELPM R์,Z" ๊ทธ๋ฆฌ๊ณ "ELPM R์,Z+" ๋์๋ง์ ์ฐธ์กฐํ์ญ์์ค.
"__AVR_HAVE_MOVW__"
์ฅ์น์๋ 16๋นํธ ๋ ์ง์คํฐ ๋ ์ง์คํฐ ์ด๋์ ์ํํ๊ธฐ ์ํ "MOVW" ๋ช ๋ น์ด ์์ต๋๋ค.
"__AVR_HAVE_LPMX__"
์ฅ์น์๋ "LPM R์,Z" ๊ทธ๋ฆฌ๊ณ "LPM R์,Z+" ๋์๋ง์ ์ฐธ์กฐํ์ญ์์ค.
"__AVR_HAVE_MUL__"
์ฅ์น์๋ ํ๋์จ์ด ์น์๊ฐ ์์ต๋๋ค.
"__AVR_HAVE_JMP_CALL__"
์ฅ์น์๋ "JMP" ๋ฐ "CALL" ๋ช ๋ น์ด ์์ต๋๋ค. ๊ฐ ์๋ ์ฅ์น์ ๊ฒฝ์ฐ์ ๋๋ค.
์ต์ 16@tie{}KiB์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ.
"__AVR_HAVE_EIJMP_EICALL__"
"__AVR_3_BYTE_PC__"
์ฅ์น์๋ "EIJMP" ๋ฐ "EICALL" ์ง์นจ์ด ์์ต๋๋ค. ์ด๊ฒ์ ์ฅ์น์ ๊ฒฝ์ฐ์ ๋๋ค.
128@tie{}KiB ์ด์์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ. ์ด๊ฒ์ ๋ํ ํ๋ก๊ทธ๋จ์ด
์นด์ดํฐ(PC)์ ๋๋น๋ 3@tie{}๋ฐ์ดํธ์ ๋๋ค.
"__AVR_2_BYTE_PC__"
ํ๋ก๊ทธ๋จ ์นด์ดํฐ(PC)๋ 2@tie{}๋ฐ์ดํธ ๋๋น์ ๋๋ค. ์ด๊ฒ์ ์ต๋
128@tie{}KiB์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ.
"__AVR_HAVE_8BIT_SP__"
"__AVR_HAVE_16BIT_SP__"
์คํ ํฌ์ธํฐ(SP) ๋ ์ง์คํฐ๋ ๋ค์๊ณผ ๊ฐ์ด 8๋นํธ ๊ฐ๊ฐ 16๋นํธ ๋ ์ง์คํฐ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ปดํ์ผ๋ฌ. ์ด๋ฌํ ๋งคํฌ๋ก์ ์ ์๋ "-mtiny-stack"์ ์ํฅ์ ๋ฐ์ต๋๋ค.
"__AVR_HAVE_SPH__"
"__AVR_SP8__"
์ฅ์น์๋ SPH(์คํ ํฌ์ธํฐ์ ์์ ๋ถ๋ถ) ํน์ ๊ธฐ๋ฅ ๋ ์ง์คํฐ๊ฐ ์๊ฑฐ๋
๊ฐ๊ฐ 8๋นํธ ์คํ ํฌ์ธํฐ. ์ด๋ฌํ ๋งคํฌ๋ก์ ์ ์๋ ๋ค์์ ์ํด ์ํฅ์ ๋ฐ์ต๋๋ค.
"-mmcu=" ๋ฐ "-mmcu=avr2" ๋ฐ "-mmcu=avr25"์ ๊ฒฝ์ฐ์๋ "-msp8"์ ๋๋ค.
"__AVR_HAVE_RAMPD__"
"__AVR_HAVE_RAMPX__"
"__AVR_HAVE_RAMPY__"
"__AVR_HAVE_RAMPZ__"
์ฅ์น์๋ "RAMPD", "RAMPX", "RAMPY", "RAMPZ" ํน์ ๊ธฐ๋ฅ ๋ ์ง์คํฐ๊ฐ ์์ต๋๋ค.
๊ฐ๊ฐ.
"__NO_INTERRUPTS__"
์ด ๋งคํฌ๋ก๋ "-mno-interrupts" ๋ช ๋ น์ค ์ต์ ์ ๋ฐ์ํฉ๋๋ค.
"__AVR_ERRATA_SKIP__"
"__AVR_ERRATA_SKIP_JMP_CALL__"
์ผ๋ถ AVR ์ฅ์น(AT90S8515, ATmega103)๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก 32๋นํธ ๋ช ๋ น์ด๋ฅผ ๊ฑด๋๋ฐ๋ฉด ์ ๋ฉ๋๋ค.
ํ๋์จ์ด ์ค๋ฅ. ๊ฑด๋๋ฐ๊ธฐ ๋ช ๋ น์ด๋ "SBRS", "SBRC", "SBIS", "SBIC" ๋ฐ "CPSE"์ ๋๋ค.
๋ ๋ฒ์งธ ๋งคํฌ๋ก๋ "__AVR_HAVE_JMP_CALL__"๋ ์ค์ ๋ ๊ฒฝ์ฐ์๋ง ์ ์๋ฉ๋๋ค.
"__AVR_SFR_OFFSET__=์คํ์ "
"IN"๊ณผ ๊ฐ์ด I/O ํน์ ๊ธฐ๋ฅ ๋ ์ง์คํฐ์ ์ง์ ์ฃผ์๋ฅผ ์ง์ ํ ์ ์๋ ๋ช ๋ น์ด,
"OUT", "SBI" ๋ฑ์ ๋ช ๋ น์ ์ํด ์ฃผ์๊ฐ ์ง์ ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฅธ ์ฃผ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
"LD" ๋๋ "STS"์ ๊ฐ์ ์ก์ธ์ค RAM. ์ด ์คํ์ ์ ์ฅ์น ์ํคํ ์ฒ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ
๊ฐ๊ฐ์ I/O@tie{}์ฃผ์๋ฅผ ์ป๊ธฐ ์ํด RAM ์ฃผ์์์ ๋นผ์ผ ํฉ๋๋ค.
"__WITH_AVRLIBC__"
์ปดํ์ผ๋ฌ๋ AVR-Libc์ ํจ๊ป ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ฐธ์กฐ
"--with-avrlibc" ๊ตฌ์ฑ ์ต์ .
๋ธ๋ ํ ์ต์
-mcpu =CPU[-ํ๊ฒฌ]
๋์ Blackfin ํ๋ก์ธ์์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ํ์ฌ, CPU ์ค ํ๋๊ฐ ๋ ์ ์์ต๋๋ค
bf512, bf514, bf516, bf518, bf522, bf523, bf524, bf525, bf526, bf527, bf531, bf532,
bf533, bf534, bf536, bf537, bf538, bf539, bf542, bf544, bf547, bf548, bf549, bf542m,
bf544m, bf547m, bf548m, bf549m, bf561, bf592.
์ ํ์ ํ๊ฒฌ ๋์ Blackfin์ ์ค๋ฆฌ์ฝ ๋ฒ์ ์ ์ง์ ํฉ๋๋ค.
ํ๋ก์ธ์. ๋์ ์ค๋ฆฌ์ฝ ๊ฐ์ ์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํ์ฑํ๋ฉ๋๋ค.
If ํ๊ฒฌ is ์์, ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค. ๋ง์ฝ์ ํ๊ฒฌ is ์ด๋ค๋ชจ๋
๋์ ํ๋ก์ธ์์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํ์ฑํ๋ฉ๋๋ค. "__SILICON_REVISION__" ๋งคํฌ๋ก
๋ ์ฃผ์ ๋ฒํธ์ ๋ณด์กฐ ๋ฒํธ๋ฅผ ๋ํ๋ด๋ ๋ ๊ฐ์ XNUMX์ง์๋ก ์ ์๋ฉ๋๋ค.
์ค๋ฆฌ์ฝ ์์ . ๋ง์ฝ์ ํ๊ฒฌ is ์์, "__SILICON_REVISION__"์ด(๊ฐ) ์ ์๋์ง ์์์ต๋๋ค.
If ํ๊ฒฌ is ์ด๋ค, "__SILICON_REVISION__"์ 0xffff๋ก ์ ์๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ
optional ํ๊ฒฌ ์ฌ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ GCC๋ ์ต์ ์๋ ค์ง ์ค๋ฆฌ์ฝ ๊ฐ์ ํ์ ๊ฐ์ ํฉ๋๋ค.
๋์ Blackfin ํ๋ก์ธ์.
GCC๋ ์ง์ ๋ ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. CPU. ์ ๋ํ ๋นํ ์ํ ํด์ฒด์ธ,
์ด ์ต์ ์ libgloss๊ฐ ์ ๊ณตํ๋ ํ๋์จ์ด BSP๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ๋งํฌ๋๋๋ก ํฉ๋๋ค. -msim is
์ฃผ์ด์ง์ง ์์์ต๋๋ค.
์ด ์ต์ ์ด ์์ผ๋ฉด bf532 ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก์ธ์๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ ๋ํ ์ง์์ ์ฐธ๊ณ ํ์ญ์์ค. bf561 ๋ถ์์ ํ๋ค. ์์ํ bf561, ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก๋ง
ํ์ ๋.
-msim
ํ๋ก๊ทธ๋จ์ด ์๋ฎฌ๋ ์ดํฐ์์ ์คํ๋๋๋ก ์ง์ ํฉ๋๋ค. ์ด๋ก ์ธํด ์๋ฎฌ๋ ์ดํฐ
๋งํฌํ libgloss์์ ์ ๊ณตํ๋ BSP. ์ด ์ต์ ์ ๋ค์์๋ง ์ ์ฉ๋ฉ๋๋ค. ๋นํ ์ํ
๋๊ตฌ ์ฒด์ธ. ๋ค์๊ณผ ๊ฐ์ ํน์ ๋ค๋ฅธ ์ต์ -์ค๊ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ and -mfdpic, ์์ํ๋ค
-msim.
-momit-๋ฆฌํ ํ๋ ์ ํฌ์ธํฐ
๋ฆฌํ ํจ์์ ๋ํ ๋ ์ง์คํฐ์ ํ๋ ์ ํฌ์ธํฐ๋ฅผ ์ ์งํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ ํผํ๋ค
ํ๋ ์ ํฌ์ธํฐ๋ฅผ ์ ์ฅ, ์ค์ ๋ฐ ๋ณต์ํ๊ณ ์ถ๊ฐ ๋ ์ง์คํฐ๋ฅผ ๋ง๋๋ ๋ช ๋ น
๋ฆฌํ ํจ์์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ต์ -fomit ํ๋ ์ ํฌ์ธํฐ ํ๋ ์์ ์ ๊ฑฐ
๋๋ฒ๊น ์ ๋ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํ ํฌ์ธํฐ์ ๋๋ค.
-mspecld-์ด์
ํ์ฑํ๋๋ฉด ์ปดํ์ผ๋ฌ๋ ์์ฑ๋ ์ฝ๋์ ๋ค์์ด ํฌํจ๋์ง ์๋๋ก ํฉ๋๋ค.
์ ํ ์ง์ ํ ์ถ์ธก ๋ถํ. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด
"__WORKAROUND_SPECULATIVE_LOADS"๊ฐ ์ ์๋ฉ๋๋ค.
-mno-specld-์ด์
์ถ์ธก ๋ก๋๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ถ๊ฐ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค.
-mcsync-์ด์
ํ์ฑํ๋๋ฉด ์ปดํ์ผ๋ฌ๋ ์์ฑ๋ ์ฝ๋์ CSYNC ๋๋
์กฐ๊ฑด๋ถ ๋ถ๊ธฐ ์ดํ์ SSYNC ๋ช ๋ น์ด ๋๋ฌด ๋นจ๋ฆฌ ์คํ๋ฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด
"__WORKAROUND_SPECULATIVE_SYNCS"๊ฐ ์ ์๋ฉ๋๋ค.
-mno-csync-์ด์
CSYNC ๋๋ SSYNC ๋ช ๋ น์ด๋ ๋ฐ์ํ์ง ์๋๋ก ์ถ๊ฐ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค.
์กฐ๊ฑด๋ถ ๋ถ๊ธฐ ์งํ.
-mlow-64k
ํ์ฑํ๋๋ฉด ์ปดํ์ผ๋ฌ๋ ์ ์ฒด ์ง์์ ์์ ๋กญ๊ฒ ํ์ฉํ ์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฎ์ 64k์ ๋ง์ต๋๋ค.
-mno-low-64k
ํ๋ก๊ทธ๋จ์ด ์์๋ก ํฌ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mstack-check-l1
uClinux์ ์ํด L1 ์คํฌ๋์นํจ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐฐ์น๋ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ์คํ ๊ฒ์ฌ ์ํ
ํต์ฌ.
-์ค๊ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ID ๋ฐฉ์์ ํตํด ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ํ์ฉ
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ํ๊ฒฝ์์ ์ ์๋ฆฌ ์คํ ๋ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฉ
๊ด๋ฆฌ. ์ด ์ต์ ์ ๋ค์์ ์๋ฏธํฉ๋๋ค. -fPIC. ์ ๋นํ ์ํ ๋์, ์ด ์ต์ ์
-msim.
-mno-id-๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ID ๊ธฐ๋ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฌ์ฉ๋๊ณ ์๋ค๊ณ ๊ฐ์ ํ์ง ์๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์
๊ธฐ๋ณธ๊ฐ.
-mleaf-id-๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ID ๋ฐฉ๋ฒ์ ํตํด ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ง๋ง ๋ค์์ ๊ฐ์ ํฉ๋๋ค.
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ์คํ ํ์ผ์ ๋ค๋ฅธ ID ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค.
์ด๋ฅผ ํตํด ์ปดํ์ผ๋ฌ๋ ์ ํ ๋ฐ ํธ์ถ์ ๋ ๋น ๋ฅธ ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-mno-leaf-id-๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ปดํ์ผ ์ค์ธ ์ฝ๋๊ฐ ID ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ๋งํฌ๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ์ง ๋ง์ญ์์ค.
์ ํ ๋ฐ ํธ์ถ insns์ ๋ํด ๋ ๋๋ฆฐ ์ฝ๋๊ฐ ์์ฑ๋ฉ๋๋ค.
-mshared-library-id=n
์ปดํ์ผ ์ค์ธ ID ๊ธฐ๋ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ณ ๋ฒํธ๋ฅผ ์ง์ ํฉ๋๋ค.
๊ฐ์ 0์ผ๋ก ์ง์ ํ๋ฉด ๋ ๊ฐ๊ฒฐํ ์ฝ๋๊ฐ ์์ฑ๋ฉ๋๋ค. ๋ค๋ฅธ ๊ฐ ์ง์ ํ๊ธฐ
ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ทธ ์๋ฅผ ํ ๋นํ์ง๋ง ๋ ์ด์ ๊ณต๊ฐ ๋๋ ์๊ฐ์ด ์๋๋๋ค.
์ด ์ต์ ์ ์๋ตํ๋ ๊ฒ๋ณด๋ค ํจ์จ์ ์ ๋๋ค.
-msep-๋ฐ์ดํฐ
๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ค๋ฅธ ์์ญ์ ์์นํ ์ ์๋๋ก ํ๋ ์ฝ๋ ์์ฑ
ํ ์คํธ ์ธ๊ทธ๋จผํธ์์. ์ด๊ฒ์ ํ๊ฒฝ์์ ์คํ์ ํ์ฉํฉ๋๋ค.
ํ ์คํธ ์น์ ์ ๋ํ ์ฌ๋ฐฐ์น๋ฅผ ์ ๊ฑฐํ์ฌ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ.
-mno-XNUMX์-๋ฐ์ดํฐ
๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ๊ฐ ํ ์คํธ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ๋ฅธ๋ค๊ณ ๊ฐ์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ญ์์ค. ์ด๊ฒ์
๊ธฐ๋ณธ๊ฐ.
-mlong-ํตํ
-mno-long-ํตํ
์ปดํ์ผ๋ฌ์๊ฒ ๋จผ์ ์ฃผ์๋ฅผ ๋ก๋ํ์ฌ ํจ์ ํธ์ถ์ ์ํํ๋๋ก ์ง์ํฉ๋๋ค.
ํจ์๋ฅผ ๋ ์ง์คํฐ์ ๋ฃ์ ๋ค์ ์ด ๋ ์ง์คํฐ์์ ์๋ธ๋ฃจํด ํธ์ถ์ ์ํํฉ๋๋ค. ์ด๊ฒ
๋์ ๊ธฐ๋ฅ์ด 24๋นํธ ์ฃผ์ ์ง์ ๋ฒ์ ๋ฐ์ ์๋ ๊ฒฝ์ฐ ์ค์์น๊ฐ ํ์ํฉ๋๋ค.
์๋ธ๋ฃจํด ํธ์ถ ๋ช ๋ น์ด์ ์คํ์ ๊ธฐ๋ฐ ๋ฒ์ .
์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค. ์ง์ -mno-long-ํตํ ๋ณต์
๊ธฐ๋ณธ ๋์. ์ด๋ฌํ ์ค์์น๋ ์ปดํ์ผ๋ฌ๊ฐ ์์ฑํ๋ ๋ฐฉ์์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
ํจ์ ํฌ์ธํฐ๋ฅผ ํตํด ํจ์ ํธ์ถ์ ์ฒ๋ฆฌํ๋ ์ฝ๋.
-mfast-fp
๋น ๋ฅธ ๋ถ๋ ์์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ IEEE
NAN(Not-a-Number)์ ๋ํ ์ ๋ ฅ์ ํ์ธํ๊ธฐ ์ํ ๋ถ๋ ์์์ ํ์ค ๊ท์น
์ฑ๋ฅ์ ๋ํ ๊ด์ฌ.
-minline-plt
์๋ ค์ง์ง ์์ ํจ์์ ๋ํ ํจ์ ํธ์ถ์์ PLT ํญ๋ชฉ ์ธ๋ผ์ธ ์ฌ์ฉ
๋ก์ปฌ๋ก ๋ฐ์ธ๋ฉํฉ๋๋ค. ์์ด๋ ์๋ฌด๋ฐ ํจ๊ณผ๊ฐ ์์ต๋๋ค. -mfdpic.
-m๋ฉํฐ์ฝ์ด
๋ฉํฐ์ฝ์ด Blackfin ํ๋ก์ธ์์ฉ ๋ ๋ฆฝ ์คํํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ์ญ์์ค. ์ด ์ต์ ์
์ฌ์ฉํ ๋ฉํฐ์ฝ์ด๋ฅผ ์ง์ํ๋ ์ ์ ํ ์์ ํ์ผ ๋ฐ ๋งํฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ํ๊ณ
๋งคํฌ๋ก "__BFIN_MULTICORE". ์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. -mcpu=bf561[-ํ๊ฒฌ].
์ด ์ต์ ์ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. -์ ์ฝ๋ฆฌ์ or -mcoreb, ํ๋์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ํํฉ๋๋ค.
์ฝ์ด๋น ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ. ์์ด -์ ์ฝ๋ฆฌ์ or -mcorebWalk Through California ํ๋ก๊ทธ๋จ,
๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์ /๋์ผ ์ฝ์ด ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ชจ๋ธ์์ ์ฃผ์
Core B์ ๊ธฐ๋ฅ ์ด๋ฆ์ "coreb_main"์ผ๋ก ์ง์ ํด์ผ ํฉ๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋จ์ผ ์ฝ์ด ์์ฉ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ด ์ฌ์ฉ๋ฉ๋๋ค.
-์ ์ฝ๋ฆฌ์
one-application-per-๋ฅผ ์ฌ์ฉํ ๋ BF561์ Core A์ ๋ํ ๋ ๋ฆฝ ์คํํ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋น๋ํฉ๋๋ค.
ํต์ฌ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ. Core๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ ์ ํ ์์ ํ์ผ๊ณผ ๋งํฌ ์คํฌ๋ฆฝํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
A, ๋งคํฌ๋ก "__BFIN_COREA"๊ฐ ์ ์๋ฉ๋๋ค. ์ด ์ต์ ์ ๋ค์์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
~๊ณผ ์ฐ๊ณ๋์ด -m๋ฉํฐ์ฝ์ด.
-mcoreb
one-application-per-
ํต์ฌ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ. Core๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ ์ ํ ์์ ํ์ผ๊ณผ ๋งํฌ ์คํฌ๋ฆฝํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
B, ๋งคํฌ๋ก "__BFIN_COREB"๊ฐ ์ ์๋ฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด "coreb_main"
"main" ๋์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด ์ต์ ์ ๋ค์๊ณผ ํจ๊ป๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
-m๋ฉํฐ์ฝ์ด.
-msdram
SDRAM์ฉ ๋ ๋ฆฝ ์คํํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํฉ๋๋ค. ์ ์ ํ ์์ ํ์ผ๊ณผ ๋งํฌ ์คํฌ๋ฆฝํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ SDRAM์ ๋ฃ๊ณ ๋งคํฌ๋ก "__BFIN_SDRAM"์ด ์ ์๋ฉ๋๋ค. NS
๋ก๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก๋ํ๊ธฐ ์ ์ SDRAM์ ์ด๊ธฐํํด์ผ ํฉ๋๋ค.
-micplb
ICPLB๊ฐ ๋ฐํ์์ ํ์ฑํ๋์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ์ ํน์ ์ด์ ํ์์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ. Linux ๋์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ICPLB๊ฐ ํ์ฑํ๋ ๊ฒ์ผ๋ก ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค. ~์์ํ
๋ ๋ฆฝ ์คํํ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ๊ฐ์ด ๊บผ์ ธ ์์ต๋๋ค.
C6X ์ต์
-ํ์ง=name
๋์ ์ํคํ ์ฒ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. GCC๋ ์ด ์ด๋ฆ์ ์ฌ์ฉํ์ฌ
์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ด๋ค ์ข ๋ฅ์ ๋ช ๋ น์ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค. ํ์ฉ
์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ C62x, ์ C64x, c64x+, ์ C67x, c67x+, ์ C674x.
-mbig-์๋์
๋น ์๋์ ๋์์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-๋ฏธ๋ฆฌํ ์๋์
๋ฆฌํ ์๋์ ๋์์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-msim
์๋ฎฌ๋ ์ดํฐ์ ์ ํฉํ ์์ ํ์ผ๊ณผ ๋ง์ปค ์คํฌ๋ฆฝํธ๋ฅผ ์ ํํ์ญ์์ค.
-msdata=๊ธฐ๋ณธ๊ฐ
์์ ์ ์ญ ๋ฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ .neardata ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ถ๋ถ
"B14"๋ฅผ ๋ฑ๋กํ์ญ์์ค. ์ด๊ธฐํ๋์ง ์์ ์์ ์ ์ญ ๋ฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ .bss ์น์ ,
์ ์ธ์ ํด ์๋ ๊ฒ์ .neardata ๋ถ๋ถ. ์์ ์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ๋ฅผ .rodata
๋ถ๋ถ. ํฐ ๋ฐ์ดํฐ ์กฐ๊ฐ์ ์ฌ์ฉ๋๋ ํด๋น ์น์ ์ .fardata, .๋ฉ๋ฆฌ
and .const.
-msdata=๋ชจ๋
์์ ๊ฐ์ฒด๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ๋ฐ์ดํฐ์ฉ์ผ๋ก ์์ฝ๋ ์น์ ์ ๋ฃ๊ณ ,
์ก์ธ์คํ๋ ค๋ฉด "B14" ๋ ์ง์คํฐ์ ์๋์ ์ธ ์ฃผ์ ์ง์ ์ ์ฌ์ฉํ์ญ์์ค.
-msdata=์์
์์ ๋ฐ์ดํฐ๋ฅผ ์ํด ์์ฝ๋ ์น์ ์ ์ฌ์ฉํ์ง ๋ง๊ณ ์ ๋ ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ
๋ชจ๋ ๋ฐ์ดํฐ์ ์ก์ธ์คํฉ๋๋ค. ์ด๊ธฐํ๋ ๋ชจ๋ ์ ์ญ ๋ฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ .fardata ์น์ ,
๊ทธ๋ฆฌ๊ณ ์ด๊ธฐํ๋์ง ์์ ๋ชจ๋ ๋ฐ์ดํฐ๋ .๋ฉ๋ฆฌ ๋ถ๋ถ. ๋ชจ๋ ์์ ๋ฐ์ดํฐ๋ฅผ .const
์๋ด
CRIS ์ต์
์ด๋ฌํ ์ต์ ์ CRIS ํฌํธ์ ๋ํด ํน๋ณํ ์ ์๋ฉ๋๋ค.
-ํ์ง=๊ฑด์ถํ
-mcpu =๊ฑด์ถํ
์ง์ ๋ ์ํคํ ์ฒ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ ๋ํ ์ ํ ๊ฑด์ถํ are
v3, v8 and v10 ๊ฐ๊ฐ ETAX 4, ETAX 100 ๋ฐ ETAX 100 LX์ฉ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ v0
๊ธฐ๋ณธ๊ฐ์ cris-axis-linux-gnu๋ฅผ ์ ์ธํ๊ณ v10.
-mtune=๊ฑด์ถํ
ํ๋ ๊ฑด์ถํ ๋ค์์ ์ ์ธํ๊ณ ์์ฑ๋ ์ฝ๋์ ๋ํด ์ ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒ
ABI ๋ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ง์นจ ์ธํธ. ์ ๋ํ ์ ํ ๊ฑด์ถํ are
์ ๋์ผ -ํ์ง=๊ฑด์ถํ.
-mmax-์คํ ํ๋ ์=n
ํจ์์ ์คํ ํ๋ ์์ด ์ด๊ณผํ ๋ ๊ฒฝ๊ณ n ๋ฐ์ดํธ.
-๋ฉํธ๋ ์ค4
-๋ฉํธ๋ ์ค100
์ต์ -๋ฉํธ๋ ์ค4 and -๋ฉํธ๋ ์ค100 ์ ๋์์ด์ ๋๋ค -ํ์ง=v3 and -ํ์ง=v8
๊ฐ๊ฐ.
-mmul-bug-ํด๊ฒฐ ๋ฐฉ๋ฒ
-mno-mul-bug-ํด๊ฒฐ ๋ฐฉ๋ฒ
CPU ๋ชจ๋ธ์ ๋ํ "mulu" ๋ฐ "mulu" ๋ช ๋ น์ด์ ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด
์ ์ฉ๋ฉ๋๋ค. ์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
-mp๋๋ฒ๊ทธ
์ด์ ๋ธ๋ฆฌ ์ฝ๋์์ CRIS ๊ด๋ จ ์์ธํ ๋๋ฒ๊ทธ ๊ด๋ จ ์ ๋ณด๋ฅผ ํ์ฑํํฉ๋๋ค. ์ด๊ฒ
์ต์ ์ ๋ํ ๋๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค #NO_APP ํ์ํ๋ ์ฝ๋ ํ์๊ธฐ
์ด์ ๋ธ๋ฆฌ ํ์ผ์ ์์ ๋ถ๋ถ์ ์ด์ ๋ธ๋ฌ.
-mcc-์ด๊ธฐํ
์ด์ ๋ช ๋ น์ด์ ์กฐ๊ฑด ์ฝ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ํญ์ ๋น๊ต๋ฅผ ๋ด๋ณด๋ด๊ณ
์กฐ๊ฑด ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ง์นจ์ ํ ์คํธํ์ญ์์ค.
-mno ๋ถ์์ฉ
์ฌํ ์ด์ธ์ ์ฃผ์ ์ง์ ๋ชจ๋์์ ๋ถ์์ฉ์ด ์๋ ๋ช ๋ น์ ๋ด๋ณด๋ด์ง ๋ง์ญ์์ค.
์ฆ๊ฐ.
-mstack ์ ๋ ฌ
-mno ์คํ ์ ๋ ฌ
-mdata ์ ๋ ฌ
-mno-๋ฐ์ดํฐ-์ ๋ ฌ
-mconst-์ ๋ ฌ
-mno-const-์ ๋ ฌ
์ด๋ฌํ ์ต์ (์๋ - ์ต์ ) ์คํ ํ๋ ์์ ๋ํ ๋ฐฐ์ด(๋ฐฐ์ด ์ ๊ฑฐ),
์ต๋ ๋จ์ผ ๋ฐ์ดํฐ ์ก์ธ์ค ํฌ๊ธฐ์ ๋ํด ์ ๋ ฌํ ๊ฐ๋ณ ๋ฐ์ดํฐ ๋ฐ ์์
์ ํํ CPU ๋ชจ๋ธ์ ๋ํด ๊ธฐ๋ณธ๊ฐ์ 32๋นํธ ์ ๋ ฌ์ ์ ๋ ฌํ๋ ๊ฒ์ ๋๋ค. ์๋น
๊ตฌ์กฐ ๋ ์ด์์๊ณผ ๊ฐ์ ์ธ๋ถ ์ ๋ณด๋ ์ด๋ฌํ ์ต์ ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
-m32๋นํธ
-m16๋นํธ
-m8๋นํธ
์์ stack-data- ๋ฐ const-align ์ต์ ๊ณผ ์ ์ฌํ๊ฒ ์ด๋ฌํ ์ต์ ์ ๋ค์์ ์ ๋ ฌํฉ๋๋ค.
์คํ ํ๋ ์, ์ฐ๊ธฐ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ๋ฐ ์์๋ ๋ชจ๋ 32๋นํธ, 16๋นํธ ๋๋ 8๋นํธ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ 32๋นํธ ์ ๋ ฌ์ ๋๋ค.
-mno-ํ๋กค๋ก๊ทธ-์ํ๋ก๊ทธ
-mprologue-์ํ๋ก๊ทธ
์ -mno-ํ๋กค๋ก๊ทธ-์ํ๋ก๊ทธ, ์ค์ ํ ์ผ๋ฐ ๊ธฐ๋ฅ ํ๋กค๋ก๊ทธ ๋ฐ ์ํ๋ก๊ทธ
์คํ ํ๋ ์์ด ์๋ต๋๊ณ ๋ฐํ ๋ช ๋ น์ด๋ ๋ฐํ ์ํ์ค๊ฐ โโ์์ต๋๋ค.
์ฝ๋์์ ์์ฑ๋ฉ๋๋ค. ์ด ์ต์ ์ ์ก์ ๊ฒ์ฌ์ ํจ๊ป๋ง ์ฌ์ฉํ์ญ์์ค.
์ปดํ์ผ๋ ์ฝ๋: ํธ์ถ ์ ์ฅ ๋ ์ง์คํฐ๊ฐ ๋ฐ๋์ ์์ด์ผ ํ ๋ ๊ฒฝ๊ณ ๋ ์ค๋ฅ๊ฐ ์์ฑ๋์ง ์์ต๋๋ค.
์ ์ฅํ๊ฑฐ๋ ๋ก์ปฌ ๋ณ์์ ๋ํ ์ ์ฅ์๋ฅผ ํ ๋นํด์ผ ํฉ๋๋ค.
-mno-gotplt
-mgotplt
์ -fpic and -fPIC, ๋ก๋ํ๋ ๋ช ๋ น์ด ์ํ์ค๋ฅผ ์์ฑ(์์ฑํ์ง ์์)ํ์ง ๋ง์ญ์์ค.
GOT์ PLT ๋ถ๋ถ์์ ๊ธฐ๋ฅ์ ๋ํ ์ฃผ์ ๋์ (๋ค๋ฅธ
์ํคํ ์ฒ) PLT๋ฅผ ํธ์ถํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -mgotplt.
-๋ฉํ
cris-axis-elf ๋ฐ cris-axis-linux-gnu์์๋ง ์ธ์๋๋ ๋ ๊ฑฐ์ no-op ์ต์
๋ชฉํ.
-mlinux
๋ ๊ฑฐ์ no-op ์ต์ ์ cris-axis-linux-gnu ๋์์์๋ง ์ธ์๋ฉ๋๋ค.
-์ฌ
cris-axis-elf์ ๋ํด ์ธ์๋ ์ด ์ต์ ์ ์ ์ถ๋ ฅ๊ณผ ์ฐ๊ฒฐ๋๋๋ก ์ ๋ ฌํฉ๋๋ค.
์๋ฎฌ๋ ์ดํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ฅ. ์ฝ๋, ์ด๊ธฐํ๋ ๋ฐ์ดํฐ ๋ฐ XNUMX์ผ๋ก ์ด๊ธฐํ๋ ๋ฐ์ดํฐ
์์ฐจ์ ์ผ๋ก ๋ฐฐ์ ๋ฉ๋๋ค.
-sim2
์ฒ๋ผ -์ฌ๊ทธ๋ฌ๋ ๋ง์ปค ์ต์ ์ ์ ๋ฌํ์ฌ 0x40000000 ๋ฐ XNUMX์์ ์ด๊ธฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ต๋๋ค.
์ด๊ธฐํ๋ ๋ฐ์ดํฐ๋ 0x80000000์ ๋๋ค.
CR16 ์ต์
์ด๋ฌํ ์ต์ ์ CR16 ํฌํธ์ ๋ํด ํน๋ณํ ์ ์๋ฉ๋๋ค.
-mmac
๊ณฑํ๊ธฐ ๋์ฐ ๋ช ๋ น์ด ์ฌ์ฉ์ ํ์ฑํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
-mcr16cplus
-mcr16c
CR16C ๋๋ CR16C+ ์ํคํ ์ฒ์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. CR16C+ ์ํคํ ์ฒ๊ฐ ๊ธฐ๋ณธ์ ๋๋ค.
-msim
์๋ฎฌ๋ ์ดํฐ์ ํธํ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ libsim.a๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. ELF์ ์ ์ฉ
์ปดํ์ผ๋ฌ๋ง.
-๋ฏผํธ32
์ ์ ์ ํ์ 32๋นํธ ๋๋น๋ก ์ ํํฉ๋๋ค.
-mbit-ops
๋นํธ ์กฐ์์ ์ํ "sbit"/"cbit" ๋ช ๋ น์ด๋ฅผ ์์ฑํฉ๋๋ค.
-mdata-๋ชจ๋ธ=๋ชจ๋ธ
๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ ํํฉ๋๋ค. ์ ๋ํ ์ ํ ๋ชจ๋ธ are ..., ๋ฉ๋ฆฌ or ๋งค์ง. ๋งค์ง ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๊ทธ๋ฌ๋, ๋ฉ๋ฆฌ ์ ์ ํจํ์ง ์์ต๋๋ค -mcr16c, CR16C ์ํคํ ์ฒ๊ฐ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์
์๊ฑฐ๋ฆฌ ๋ฐ์ดํฐ ๋ชจ๋ธ.
๋ค์ ์ต์
์ด๋ฌํ ์ต์ ์ Darwin ์ด์ ์ฒด์ ๋ฅผ ์คํํ๋ ๋ชจ๋ ์ํคํ ์ฒ์ ๋ํด ์ ์๋ฉ๋๋ค.
Darwin์ FSF GCC๋ "๋ฑ๋ฑํ" ๊ฐ์ฒด ํ์ผ์ ์์ฑํ์ง ์์ต๋๋ค. ์ ๋ํ ๊ฐ์ฒด ํ์ผ์ ์์ฑํฉ๋๋ค.
GCC๊ฐ ๋์์ผ๋ก ๊ตฌ์ถํ ๋จ์ผ ์ํคํ ์ฒ์ ๋๋ค. Darwin์ ๋ํ Apple์ GCC๋ "์ง๋ฐฉ"์ ์์ฑํฉ๋๋ค.
ํ์ผ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ -์์น ์ต์ ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ปดํ์ผ๋ฌ ๋๋ ๋ง์ปค๋ฅผ ์คํํ์ฌ ์ํํฉ๋๋ค.
์ฌ๋ฌ ๋ฒ ๊ฒฐ๊ณผ๋ฅผ ํจ๊ป ๊ฒฐํฉ ์ง๋ฐฉ.
์์ฑ๋ ํ์ผ์ ํ์ ์ ํ(์: ppc7400 or ppc970 or i686)์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
GCC๊ฐ ํ๊ฒํ ํ๋ ISA๋ฅผ ์ง์ ํ๋ ํ๋๊ทธ(์: -mcpu or -XNUMX ์. ๊ทธ๋งํผ
-force_cpusubtype_ALL ์ต์ ์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ๋ฌด์ํ ์ ์์ต๋๋ค.
Darwin ๋๊ตฌ๋ ISA ๋ถ์ผ์น๊ฐ ์์ ๋ ๋์์ด ๋ค๋ฆ ๋๋ค. NS
์ด์ ๋ธ๋ฌ, as, ํ์ ์ ํ์ ์ ํจํ ๋ช ๋ น๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ฑํ๋ ํ์ผ์ด๋ฏ๋ก 64๋นํธ ๋ช ๋ น์ด๋ฅผ ppc750 ๊ฐ์ฒด ํ์ผ. NS
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฉ ๋ง์ปค, /usr/bin/libtool, ์คํจํ๊ณ ์์ฒญํ๋ฉด ์ค๋ฅ๋ฅผ ์ธ์ํฉ๋๋ค.
์ ๋ ฅ ํ์ผ๋ณด๋ค ๋ ์ ํ์ ์ธ ํ์ ์ ํ์ผ๋ก ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค(
์๋ฅผ ๋ค์ด ppc970 ๊ฐ์ฒด ํ์ผ ppc7400 ๋์๊ด). ๋ง์ปค
์คํ ํ์ผ, ld, ์กฐ์ฉํ ์คํ ํ์ผ์ ๊ฐ์ฅ ์ ํ์ ์ธ ํ์ ์ ํ์ ์ ๊ณตํฉ๋๋ค.
์ ๋ ฅ ํ์ผ.
-FDIR
ํ๋ ์์ํฌ ๋๋ ํ ๋ฆฌ ์ถ๊ฐ DIR ๊ฒ์ํ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ๋งจ ์์
ํค๋ ํ์ผ์ ๊ฒฝ์ฐ. ์ด ๋๋ ํ ๋ฆฌ๋ ๋ค์์ ์ํด ์ง์ ๋ ๋๋ ํ ๋ฆฌ์ ์ธํฐ๋ฆฌ๋ธ๋ฉ๋๋ค. -I
์ต์ ์ ์ ํํ๊ณ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ค์บ๋ฉ๋๋ค.
ํ๋ ์์ํฌ ๋๋ ํ ๋ฆฌ๋ ํ๋ ์์ํฌ๊ฐ ์๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค. ํ๋ ์์ํฌ๋
๋๋ ํ ๋ฆฌ ํค๋ ๋ฐ / ๋๋ ๊ฐ์ธ ํค๋ ๊ทธ ์์ ์ง์ ํฌํจ๋ ๋๋ ํ ๋ฆฌ
๋ .๋ผ๋. ํ๋ ์์ํฌ์ ์ด๋ฆ์ ๋ค์์ ์ ์ธํ ์ด ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์ ๋๋ค.
์ ์, .๋ผ๋. ํ๋ ์์ํฌ์ ๊ด๋ จ๋ ํค๋๋ ์ด ๋ ๊ฐ์ง ์ค ํ๋์์ ์ฐพ์ ์ ์์ต๋๋ค.
๋๋ ํ ๋ฆฌ, ํค๋ ๋จผ์ ๊ฒ์๋๊ณ ์์ต๋๋ค. ํ์ ํ๋ ์์ํฌ๋ ํ๋ ์์ํฌ์ ๋๋ค.
ํ๋ ์์ํฌ์ ์๋ ๋๋ ํ ๋ฆฌ ํ๋ ์ ์ํฌ ์๋ฐฐ ๊ท์น์. ์๋ธํ๋ ์์ํฌ ํฌํจ
ํค๋๋ ํ์ ํ๋ ์์ํฌ๋ฅผ ํฌํจํ๋ ํ๋ ์์ํฌ์ ํค๋์๋ง ๋ํ๋ ์ ์์ต๋๋ค.
ํ์ ์๋ธํ๋ ์์ํฌ ํค๋์์. ๋ ๊ฐ์ ํ์ ํ๋ ์์ํฌ๊ฐ ๋ค์์์ ๋ฐ์ํ๋ฉด ํ์ ์ ๋๋ค.
๋์ผํ ํ๋ ์์ํฌ. ์๋ธํ๋ ์์ํฌ๋ ํ๋ ์์ํฌ์ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์ ์์ต๋๋ค. NS
์ด๋ฅผ ์๋ฐํ๋ฉด ๊ฒฝ๊ณ ๊ฐ ๋ฐํ๋ฉ๋๋ค. ํ์ฌ ์๋ธํ๋ ์์ํฌ๋ ๋ค์์ ๊ฐ์ง ์ ์์ต๋๋ค.
์๋ธํ๋ ์์ํฌ; ์์ผ๋ก ์ด๋ฅผ ์ง์ํ๊ธฐ ์ํด ๋ฉ์ปค๋์ฆ์ด ํ์ฅ๋ ์ ์์ต๋๋ค. NS
ํ์ค ํ๋ ์์ํฌ๋ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค. / ์์คํ / ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ํ๋ ์ ์ํฌ and
/ ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ํ๋ ์ ์ํฌ. ์์ ํฌํจ์ "#include์ ๊ฐ์ต๋๋ค. ",
์ด๋์ ๋ผ๋ ํ๋ ์์ํฌ์ ์ด๋ฆ์ ๋ํ๋ด๋ฉฐ ํค๋.h ์์ ๋ฐ๊ฒฌ๋๋ค
๊ฐ์ธ ํค๋ or ํค๋ ๋๋ ํ ๋ฆฌ.
-iframeworkDIR
์ฒ๋ผ -F ๋๋ ํ ๋ฆฌ๊ฐ ์์คํ ๋๋ ํ ๋ฆฌ๋ก ์ทจ๊ธ๋๋ค๋ ์ ์ ์ ์ธํ๊ณ . ์ฃผ์ ์ฐจ์ด์
์ด ์ฌ์ด -iframework and -F ๊ทธ๊ฒ์ผ๋ก -iframework ์ปดํ์ผ๋ฌ๋ ๊ฒฝ๊ณ ํ์ง ์์ต๋๋ค
๋ค์์ ํตํด ์ฐพ์ ํค๋ ํ์ผ์ ํฌํจ๋ ๊ตฌ์ฑ์ ๋ํด DIR. ์ด ์ต์ ์ ์ ํจํฉ๋๋ค
C ์ธ์ด ๊ณ์ด์๋ง ํด๋น๋ฉ๋๋ค.
-๊ฑฐ์ค
์ฌ์ฉ๋๋ ๊ธฐํธ์ ๋ํ ๋๋ฒ๊น ์ ๋ณด๋ฅผ ๋ด๋ณด๋ ๋๋ค. ์ฐ๋ฅด๊ธฐ ๋๋ฒ๊น ํ์์ ๊ฒฝ์ฐ
์ด๊ฒ์ ๊ฐ๋ฅ -feliminate-unused-debug-๊ธฐํธ. ์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ON์ ๋๋ค.
-gfull
๋ชจ๋ ๊ธฐํธ ๋ฐ ์ ํ์ ๋ํ ๋๋ฒ๊น ์ ๋ณด๋ฅผ ๋ด๋ณด๋ ๋๋ค.
-mmacosx-๋ฒ์ -์ต์=๋ฒ์
์ด ์คํ ํ์ผ์ด ์คํ๋ MacOS X์ ์ด๊ธฐ ๋ฒ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ฒ์ . ์ ํ์ ์ธ
~์ ๊ฐ์น ๋ฒ์ 10.1, 10.2 ๋ฐ 10.3.9๋ฅผ ํฌํจํฉ๋๋ค.
์ปดํ์ผ๋ฌ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์คํ ์ ํค๋๋ฅผ ์ฌ์ฉํ๋๋ก ๋น๋๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์
์ด ์ต์ ์ ์ปดํ์ผ๋ฌ๊ฐ ์คํ ์ค์ธ ์์คํ ๋ฒ์ ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด
๊ธฐ๋ณธ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด ๋ง์ ์์คํ ๋ฐ ์ฝ๋ ๊ธฐ๋ฐ๊ณผ ํธํ๋๋ ์ ํ์ ํ๋ ๊ฒ์ ๋๋ค.
์.
-mkernel
์ปค๋ ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ํ์ฑํํฉ๋๋ค. NS -mkernel ์ต์ ์ธํธ -๊ณต์ , -fno-๊ณตํต,
-fno-use-cxa-atexit, -fno-์์ธ, -fno-non-call-exception, -fapple-kext,
-fno-์ฝํ and -fno-rtti ํด๋น๋๋ ๊ฒฝ์ฐ. ์ด ๋ชจ๋๋ ๋ํ -mno-altivec,
-msoft-float, -fno ๋ด์ฅ and -mlong-๋ถ๊ธฐ PowerPC ํ๊ฒ์ฉ.
-mon-byte-bool
์ ๋ํ ๊ธฐ๋ณธ๊ฐ ์ฌ์ ์ ๋ถ๋๋ฐฐ ๊ทธ๋์ ํฌ๊ธฐ(๋ถ์ธ)==1. ๊ธฐ๋ณธ์ ์ผ๋ก sizeof(๋ถ์ธ) is 4
Darwin/PowerPC์ฉ์ผ๋ก ์ปดํ์ผํ ๋ ๋ฐ 1 Darwin/x86์ฉ์ผ๋ก ์ปดํ์ผํ ๋ ์ด ์ต์ ์
x86์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
๊ฒฝ๊ณ : ์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -mon-byte-bool ์ค์์น๋ก ์ธํด GCC๊ฐ ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
ํด๋น ์ค์์น ์์ด ์์ฑ๋ ์ฝ๋์ ํธํ๋ฉ๋๋ค. ์ด ์ค์์น๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์์ด ํ์ํ ์ ์์ต๋๋ค.
์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ์ฌ ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ๋ชจ๋ ๋ชจ๋์ ๋ค์ ์ปดํ์ผํฉ๋๋ค. ์ด๊ฒ์ ์ฌ์ฉ
๊ธฐ๋ณธ์ด ์๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ฐ๋ฅด๋๋ก ์ ํํฉ๋๋ค.
-mfix-and-continu
-๊ณ ์ ๋ฐ ๊ณ์
-findirect-๋ฐ์ดํฐ
GDB๊ฐ
์ด๋ฏธ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ".o" ํ์ผ์ ๋์ ์ผ๋ก ๋ก๋ํฉ๋๋ค. -findirect-๋ฐ์ดํฐ and
-๊ณ ์ ๋ฐ ๊ณ์ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ํด ์ ๊ณต๋ฉ๋๋ค.
-all_load
์ ์ ์์นด์ด๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชจ๋ ๊ตฌ์ฑ์์ ๋ก๋ํฉ๋๋ค. ๋จ์ ์ฐธ์กฐ ld(1) ์์ธํ ๋ด์ฉ์.
-arch_errors_fatal
์๋ชป๋ ์ํคํ ์ฒ๋ฅผ ๊ฐ์ง ํ์ผ๊ณผ ๊ด๋ จ๋ ์ค๋ฅ๊ฐ ์น๋ช ์ ์ ๋๋ค.
-bind_at_load
๋์ ๋ง์ปค๊ฐ ๋ชจ๋ ํ์ผ์ ๋ฐ์ธ๋ฉํ๋๋ก ์ถ๋ ฅ ํ์ผ์ ํ์ํฉ๋๋ค.
ํ์ผ์ด ๋ก๋๋๊ฑฐ๋ ์คํ๋ ๋ ์ ์๋์ง ์์ ์ฐธ์กฐ.
-๋ฌถ์
Mach-o ๋ฒ๋ค ํ์ ํ์ผ์ ์์ฑํฉ๋๋ค. ๋จ์ ์ฐธ์กฐ ld(1) ์์ธํ ๋ด์ฉ์.
-bundle_loader ์คํ ํ์ผ
์ด ์ต์ ์ ๋ค์์ ์ง์ ํฉ๋๋ค. ์คํ ํ์ผ ๋น๋ ์ถ๋ ฅ ํ์ผ์ ๋ก๋ํฉ๋๋ค.
์ฐ๊ฒฐ๋จ. ๋จ์ ์ฐธ์กฐ ld(1) ์์ธํ ๋ด์ฉ์.
-๋ค์ด๋ด๋ฏน ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ด ์ต์ ์ ์ ๋ฌํ๋ฉด GCC๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์คํ ํ์ผ ๋์ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.
์ฐ๊ฒฐ, Darwin์ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๊ตฌ ๋ช ๋ น.
-force_cpusubtype_ALL
์ด๋ก ์ธํด GCC์ ์ถ๋ ฅ ํ์ผ์ด ๊ณตํต ์ ์ํด ์ ์ด๋๋ ํ์ ์ ํ ๋์
์ ์, -mcpu or -XNUMX ์ ์ต์ ์ ์ ํํฉ๋๋ค.
-allowable_client ๊ณ ๊ฐ ์ด๋ฆ
-๊ณ ๊ฐ ์ด๋ฆ
-ํธํ์ฑ_๋ฒ์
-ํ์ฌ_๋ฒ์
-dead_strip
-์ข ์์ฑ ํ์ผ
-dylib_file
-dylinker_install_name
-๋์
-๋ด๋ณด๋ธ_๊ธฐํธ_๋ชฉ๋ก
-ํ์ผ ๋ชฉ๋ก
-ํ๋ซ_๋ค์์คํ์ด์ค
-force_plat_namespace
-headerpad_max_install_names
-์ด๋ฏธ์ง_๋ฒ ์ด์ค
-์ด๊ธฐํ
-์ค์น ์ด๋ฆ
-keep_private_externs
-๋ค์ค ๋ชจ๋
-๊ณฑํ๊ธฐ_์ ์
-multiply_defined_unused
-noall_load
-no_dead_strip_inits_and_terms
-nofix ์ฌ์ ๋ฐ์ธ๋ฉ
-nomultidefs
-๋ ธํ๋ฆฌ๋ฐ์ธ๋
-noseglinkit
-pagezero_size
-์ฌ์ ๋ฐ์ธ๋ฉ
-prebind_all_twolevel_modules
-private_bundle
-read_only_relocs
-๋ถํ ์ ๋ ฌ
-์นํธ๊ฐ์ฒด ๊ธฐํธ
-์ ๋ก๋
-์ธ๊ทธ1์ฃผ์
-์น์ ์์ฑ
-์นํธ๊ฐ์ฒด ๊ธฐํธ
- ๋ถ๋ฌธ๋ณ
-segaddr
-segs_read_only_addr
-segs_read_write_addr
-์ธ๊ทธ_์ฃผ์_ํ ์ด๋ธ
-seg_addr_table_filename
-์ธ๊ทธ๋งํฌ๋์
-์ธ๊ทธํ๋กํธ
-segs_read_only_addr
-segs_read_write_addr
-๋จ์ผ_๋ชจ๋
-๊ณต์
-ํ์_๋ผ์ด๋ธ๋ฌ๋ฆฌ
-sub_umbrella
-twolevel_namespace
-์ฐ์ฐ
-์ฐพ์ผ์๋ ์ฃผ์๊ฐ ์์ต๋๋ค
-๋ด๋ณด๋ด์ง ์์_๊ธฐํธ_๋ชฉ๋ก
-weak_reference_mismatches
-๋ฌด์์ ๋ก๋
์ด๋ฌํ ์ต์ ์ Darwin ๋ง์ปค๋ก ์ ๋ฌ๋ฉ๋๋ค. Darwin ๋ง์ปค ๋งค๋ด์ผ ํ์ด์ง๋ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ํฉ๋๋ค.
์์ธํ.
12์ ์ํ ์ต์
Bowman์ -m ์ต์ ์ DEC Alpha ๊ตฌํ์ ๋ํด ์ ์๋ฉ๋๋ค.
-mno-์ํํธ-ํ๋กํธ
-msoft-float
๋ถ๋ ์์์ ์ ๋ํ ํ๋์จ์ด ๋ถ๋ ์์์ ๋ช ๋ น์ด ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)
์์ . ์ธ์ -msoft-float ๊ฐ ์ง์ ๋๋ฉด ๊ธฐ๋ฅ libgcc.a ์ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค
๋ถ๋ ์์์ ์ฐ์ฐ. ๋ฅผ ์๋ฎฌ๋ ์ดํธํ๋ ๋ฃจํด์ผ๋ก ๋์ฒด๋์ง ์๋ ํ
๋ถ๋ ์์์ ์ฐ์ฐ, ๋๋ ์ด๋ฌํ ์๋ฎฌ๋ ์ด์ ์ ํธ์ถํ๋ ๋ฐฉ์์ผ๋ก ์ปดํ์ผ
๋ฃจํด์์ ์ด๋ฌํ ๋ฃจํด์ ๋ถ๋ ์์์ ์ฐ์ฐ์ ์คํํฉ๋๋ค. ๋ค์์ ์ํด ์ปดํ์ผํ๋ ๊ฒฝ์ฐ
๋ถ๋ ์์์ ์ฐ์ฐ์ด ์๋ Alpha์ ๊ฒฝ์ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋น๋๋์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
๊ทธ๋ค์ ๋ถ๋ฅด์ง ์๋๋ก.
๋ถ๋ ์์์ ์ฐ์ฐ์ด ์๋ Alpha ๊ตฌํ์ ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
๋ถ๋ ์์์ ๋ ์ง์คํฐ.
-mfp-reg
-mno-fp-regs
๋ถ๋ ์์์ ๋ ์ง์คํฐ ์ธํธ๋ฅผ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. -mno-fp-regs
์๋ฏธํ๋ค -msoft-float. ๋ถ๋ ์์์ ๋ ์ง์คํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ถ๋ ์์์
ํผ์ฐ์ฐ์๋ ์ ์ ๋ฐ ๋ถ๋ ์์์ ์ธ ๊ฒ์ฒ๋ผ ์ ์ ๋ ์ง์คํฐ์ ์ ๋ฌ๋ฉ๋๋ค.
๊ฒฐ๊ณผ๋ $f0 ๋์ $0์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค. ์ด๊ฒ์ ๋นํ์ค ํธ์ถ ์ํ์ค์ด๋ฏ๋ก
๋ถ๋ ์์์ ์ธ์ ๋๋ ์ปดํ์ผ๋ ์ฝ๋์ ์ํด ํธ์ถ๋ ๋ฐํ ๊ฐ์ด ์๋ ๋ชจ๋ ํจ์
๊ณผ -mno-fp-regs ๋ํ ํด๋น ์ต์ ์ผ๋ก ์ปดํ์ผํด์ผ ํฉ๋๋ค.
์ด ์ต์ ์ ์ผ๋ฐ์ ์ธ ์ฉ๋๋ ์ฌ์ฉํ์ง ์๋ ์ปค๋์ ๋น๋ํ๋ ๊ฒ์ด๋ฏ๋ก ํ์ํฉ๋๋ค.
๋ถ๋ ์์์ ๋ ์ง์คํฐ๋ฅผ ์ ์ฅ ๋ฐ ๋ณต์ํ์ง ์์ต๋๋ค.
-์ด๋ฐ
Alpha ์ํคํ ์ฒ๋ ์ต๋์ ์ต์ ํ๋ ๋ถ๋ ์์์ ํ๋์จ์ด๋ฅผ ๊ตฌํํฉ๋๋ค.
์ฑ๋ฅ. ๋๋ถ๋ถ IEEE ๋ถ๋ ์์์ ํ์ค์ ์ค์ํฉ๋๋ค. ํ์ง๋ง,
์์ ํ ๊ท์ ์ค์๋ฅผ ์ํด์๋ ์ํํธ์จ์ด ์ง์์ด ํ์ํฉ๋๋ค. ์ด ์ต์ ์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค
์์ ํ IEEE ํธํ ์ฝ๋ ์ธ ๊ทธ ์ ํํ์ง ์์ ํ๋๊ทธ ์ ์ง๋์ง ์์ต๋๋ค(์๋ ์ฐธ์กฐ).
์ด ์ต์ ์ด ์ผ์ ธ ์์ผ๋ฉด ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก "_IEEE_FP"๊ฐ
ํธ์ง. ๊ฒฐ๊ณผ ์ฝ๋๋ ๋ ํจ์จ์ ์ด์ง๋ง ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ํ ์ ์์ต๋๋ค.
๋น์ ๊ทํ๋ ์ซ์ ๋ฐ ๋น์ซ์ ๋ฐ ํ๋ฌ์ค/๋ง์ด๋์ค์ ๊ฐ์ ์์ธ์ ์ธ IEEE ๊ฐ
๋ฌดํ๋. ๋ค๋ฅธ Alpha ์ปดํ์ผ๋ฌ๋ ์ด ์ต์ ์ ํธ์ถํฉ๋๋ค. -ieee_with_no_inexact.
- ๋ถ์ ํํ
์ด๊ฒ์ -์ด๋ฐ ์์ฑ๋ ์ฝ๋๊ฐ IEEE๋ฅผ ์ ์งํ๋ค๋ ์ ์ ์ ์ธํ๊ณ ์ ํํ์ง ์์ ํ๋๊ทธ.
์ด ์ต์ ์ ์ผ๋ฉด ์์ฑ๋ ์ฝ๋๊ฐ ์์ ํ ํธํ๋๋ IEEE๋ฅผ ๊ตฌํํฉ๋๋ค.
์ํ. "_IEEE_FP" ์ธ์ "_IEEE_FP_EXACT"๊ฐ ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก๋ก ์ ์๋ฉ๋๋ค.
์ผ๋ถ Alpha ๊ตฌํ์์ ๊ฒฐ๊ณผ ์ฝ๋๋ ๋ค์๋ณด๋ค ํจ์ฌ ๋๋ฆฌ๊ฒ ์คํ๋ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋ ์ฝ๋. ์์กดํ๋ ์ฝ๋๊ฐ ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์
์ ํํ์ง ์์ ํ๋๊ทธ, ์ผ๋ฐ์ ์ผ๋ก ์ด ์ต์ ์ ์ง์ ํ์ง ์์์ผ ํฉ๋๋ค. ๋ค๋ฅธ ์ํ ์ปดํ์ผ๋ฌ ํธ์ถ
์ด ์ต์ -ieee_with_inexact.
-mfp-ํธ๋ฉ ๋ชจ๋=ํธ๋ฉ ๋ชจ๋
์ด ์ต์ ์ ํ์ฑํ๋ ๋ถ๋ ์์์ ๊ด๋ จ ํธ๋ฉ์ ์ ์ดํฉ๋๋ค. ๊ธฐํ ์ํ
์ปดํ์ผ๋ฌ๋ ์ด ์ต์ ์ ํธ์ถํฉ๋๋ค. -fptm ํธ๋ฉ ๋ชจ๋. ํธ๋ฉ ๋ชจ๋๋ XNUMX๊ฐ์ง ์ค ํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
๊ฐ :
n ์ด๊ฒ์ ๊ธฐ๋ณธ(์ผ๋ฐ) ์ค์ ์ ๋๋ค. ํ์ฑํ๋ ์ ์ผํ ํธ๋ฉ์
์ํํธ์จ์ด์์ ๋นํ์ฑํํ ์ ์๋ ๊ฒ(์: ์ ๋ก ํธ๋ฉ์ผ๋ก ๋๋๊ธฐ).
u ์ ์ํด ํ์ฑํ๋ ํธ๋ฉ ์ธ์๋ n, ์ธ๋ํ๋ก ํธ๋ฉ๋ ํ์ฑํ๋ฉ๋๋ค.
su ์ฒ๋ผ u, ๊ทธ๋ฌ๋ ์ง์นจ์ ์ํํธ์จ์ด ์๋ฃ์ ์์ ํ ๊ฒ์ผ๋ก ํ์๋์ด ์์ต๋๋ค(์ฐธ์กฐ
์์ธํ ๋ด์ฉ์ ์ํ ์ํคํ ์ฒ ๋งค๋ด์ผ ์ฐธ์กฐ).
์์ด ์ฒ๋ผ su, ๊ทธ๋ฌ๋ ์ ํํ์ง ์์ ํธ๋ฉ๋ ํ์ฑํ๋ฉ๋๋ค.
-mfp-๋ฐ์ฌ๋ฆผ ๋ชจ๋=๋ฐ์ฌ๋ฆผ ๋ชจ๋
IEEE ๋ฐ์ฌ๋ฆผ ๋ชจ๋๋ฅผ ์ ํํฉ๋๋ค. ๋ค๋ฅธ Alpha ์ปดํ์ผ๋ฌ๋ ์ด ์ต์ ์ ํธ์ถํฉ๋๋ค. -fprm
๋ฐ์ฌ๋ฆผ ๋ชจ๋. ๊ทธ๋งํผ ๋ฐ์ฌ๋ฆผ ๋ชจ๋ ๋ค์ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
n ์ผ๋ฐ IEEE ๋ฐ์ฌ๋ฆผ ๋ชจ๋. ๋ถ๋ ์์์ ์ซ์๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์ชฝ์ผ๋ก ๋ฐ์ฌ๋ฆผ๋ฉ๋๋ค.
๊ธฐ๊ณ ๋ฒํธ ๋๋ ๋์ ์ ๊ฒฝ์ฐ ์ง์ ๊ธฐ๊ณ ๋ฒํธ์ชฝ์ผ๋ก.
m ๋ง์ด๋์ค ๋ฌดํ๋๋ก ๋ฐ์ฌ๋ฆผํฉ๋๋ค.
c ๋ค์ง ๋ฐ์ฌ๋ฆผ ๋ชจ๋. ๋ถ๋ ์์์ ์ซ์๋ XNUMX์ผ๋ก ๋ฐ์ฌ๋ฆผ๋ฉ๋๋ค.
d ๋์ ๋ฐ์ฌ๋ฆผ ๋ชจ๋. ๋ถ๋ ์์์ ์ ์ด ๋ ์ง์คํฐ์ ํ๋(fpcr์ฐธ์กฐ
์ํ ์ํคํ ์ฒ ์ฐธ์กฐ ์ค๋ช ์)์์ ๋ฐ์ฌ๋ฆผ ๋ชจ๋๋ฅผ ์ ์ดํฉ๋๋ค. ๋ ์จ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ํ๊ธฐ ๋ฌดํ๋๋ก ๋ฐ์ฌ๋ฆผํ๊ธฐ ์ํด ์ด ๋ ์ง์คํฐ๋ฅผ ์ด๊ธฐํํฉ๋๋ค. ๋ฐ๋ผ์,
ํ๋ก๊ทธ๋จ์ด ๋ค์์ ์์ ํ์ง ์๋ ํ fpcr, d ํ๋ฌ์ค์ชฝ์ผ๋ก ๋ฐ์ฌ๋ฆผ์ ํด๋น
๋ฌดํ๋.
-mtrap-์ ๋ฐ๋=ํธ๋ฉ ์ ๋ฐ๋
Alpha ์ํคํ ์ฒ์์ ๋ถ๋ ์์์ ํธ๋ฉ์ ์ ํํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ์์ด ์๋ฏธ
์ํํธ์จ์ด ์ง์ ํ๋กํ ํธ๋ฉ ๋ฐ ํ๋ก๊ทธ๋จ์์ ๋ณต๊ตฌ ๋ถ๊ฐ๋ฅ
์ผ๋ฐ์ ์ผ๋ก ์คํ์ ์ข ๋ฃํด์ผ ํฉ๋๋ค. GCC๋ ๋ค์์ ์ง์ํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ด์ ์ฒด์ ํธ๋ฉ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์์ธ์ด ๋ ์ ํํ ์์น๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
๋ถ๋ ์์์ ํธ๋ฉ. ์์ฉ ํ๋ก๊ทธ๋จ์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ค๋ฅธ
์ ๋ฐ๋ ์์ค์ ์ ํํ ์ ์์ต๋๋ค.
p ํ๋ก๊ทธ๋จ ์ ๋ฐ๋. ์ด ์ต์ ์ ๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ ํธ๋ฉ ํธ๋ค๋ฌ๊ฐ
๋ถ๋ ์์์ ์์ธ๋ฅผ ์ผ์ผํจ ํ๋ก๊ทธ๋จ์ ์๋ณํฉ๋๋ค.
f ๊ธฐ๋ฅ ์ ๋ฐ๋. ํธ๋ฉ ํธ๋ค๋ฌ๋ ์์ธ์ด ๋ ํจ์๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
๋ถ๋ ์์์ ์์ธ.
i ์ง์ ์ ๋ฐ๋. ํธ๋ฉ ํธ๋ค๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ ํํ ๋ช ๋ น์ด๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
๋ถ๋ ์์์ ์์ธ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ค๋ฅธ Alpha ์ปดํ์ผ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋๋ฑํ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. -scope_safe and
-์ฌ๊ฐ_์์ .
-mieee-์ค์
์ด ์ต์ ์ ์์ฑ๋ ์ฝ๋๋ฅผ IEEE ์ค์๋ก ํ์ํฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ ๋ฉ๋๋ค.
๋ํ ์ง์ ํ์ง ์๋ ํ -mtrap-์ ๋ฐ๋=i ๊ทธ๋ฆฌ๊ณ -mfp-ํธ๋ฉ-๋ชจ๋=su or
-mfp-ํธ๋ฉ-๋ชจ๋=sui. ์ ์ผํ ํจ๊ณผ๋ ์ ์ ๋ฐฉ์ถํ๋ ๊ฒ์ ๋๋ค. .flag 48 ๊ธฐ๋ฅ์์
์์ฑ๋ ์ด์ ๋ธ๋ฆฌ ํ์ผ์ ํ๋กค๋ก๊ทธ.
-mbuild-์์
์ผ๋ฐ์ ์ผ๋ก GCC๋ 32๋นํธ ๋๋ 64๋นํธ ์ ์ ์์๋ฅผ ๊ฒ์ฌํ์ฌ ๊ตฌ์ฑํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
XNUMX๊ฐ ๋๋ XNUMX๊ฐ์ ๋ช ๋ น์ด์์ ๋ ์์ ์์์์. ํ ์ ์์ผ๋ฉด ๋ค์์ ์ถ๋ ฅํฉ๋๋ค.
์์๋ฅผ ๋ฆฌํฐ๋ด๋ก ๋ง๋ค๊ณ ๋ฐํ์์ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ์์ ๋ก๋ํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ์ฌ GCC๊ฐ ๊ตฌ์ฑํ๋๋ก ์๊ตฌํฉ๋๋ค. ๋ชจ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ์ ์ ์์
๋ ๋ง์ ์ง์นจ์ด ํ์ํฉ๋๋ค(์ต๋๊ฐ์ XNUMX๊ฐ).
์ผ๋ฐ์ ์ผ๋ก ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ ๋ก๋๋ฅผ ๋น๋ํฉ๋๋ค. ๊ทธ ์์ฒด๋ก
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ณ์๋ฅผ ์ฐพ๊ธฐ ์ ์ ๋ฉ๋ชจ๋ฆฌ์์ ์์ ์ ์ฌ๋ฐฐ์นํด์ผ ํฉ๋๋ค.
์์ฒด ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ์ ์์.
-mbwx
-mno-bwx
-mcix
-mno-cix
-mfix
-mno ์์
-mmax
-mno-์ต๋
GCC๊ฐ ์ ํ์ BWX, CIX, FIX ๋ฐ MAX๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.
๋ช ๋ น์ด ์ธํธ. ๊ธฐ๋ณธ๊ฐ์ CPU์์ ์ง์ํ๋ ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
๋ฅผ ํตํด ์ง์ ๋ ์ ํ -mcpu = ์ต์ ๋๋ GCC๊ฐ ๋น๋๋ CPU์ ์ต์ ์ด ์๋ ๊ฒฝ์ฐ
์ง์ ๋์์ต๋๋ค.
-mfloat-vax
-mfloat-ieee
๋์ VAX F ๋ฐ G ๋ถ๋ ์์์ ์ฐ์ ์ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํ๋ ์ฝ๋ ์์ฑ
IEEE ๋จ์ ๋ฐ๋ ๋ฐ ๋ฐฐ์ ๋ฐ๋.
-mexplicit-relocs
-mno-๋ช ์์ -relocs
์ด์ Alpha ์ด์ ๋ธ๋ฌ๋
์ด์ ๋ธ๋ฌ ๋งคํฌ๋ก. ์ด๋ฌํ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ฉด ์ต์ ์ ๋ช ๋ น ์ค์ผ์ค๋ง์ด ํ์ฉ๋์ง ์์ต๋๋ค.
๋ฒ์ 2.12์ GNU binutils๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ค์์ ์ํํ ์ ์๋๋ก ํ๋ ์๋ก์ด ๊ตฌ๋ฌธ์ ์ง์ํฉ๋๋ค.
์ด๋ค ์ฌ๋ฐฐ์น๊ฐ ์ด๋ค ๋ช ๋ น์ ์ ์ฉ๋์ด์ผ ํ๋์ง ๋ช ์์ ์ผ๋ก ํ์ํ์ญ์์ค. ์ด ์ต์ ์
GCC๊ฐ ์ด์ ๋ธ๋ฌ์ ๊ธฐ๋ฅ์ ๊ฐ์งํ๊ธฐ ๋๋ฌธ์ ๋๋ฒ๊น ์ ๊ฐ์ฅ ์ ์ฉํฉ๋๋ค.
๋น๋๋๊ณ ๊ทธ์ ๋ฐ๋ผ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํฉ๋๋ค.
-msmall-๋ฐ์ดํฐ
-mlarge-๋ฐ์ดํฐ
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -mexplicit-relocs ์ค์ ๋ก ์ ์ ๋ฐ์ดํฐ๋ ๋ค์์ ํตํด ์ก์ธ์ค๋ฉ๋๋ค. gp-์๋์
์ฌ๋ฐฐ์น. ์ธ์ -msmall-๋ฐ์ดํฐ ๊ฐ ์ฌ์ฉ๋๋ฉด ๊ธธ์ด๊ฐ 8๋ฐ์ดํธ ์ดํ์ธ ๊ฐ์ฒด๊ฐ
a ์์ ๋ฐ์ดํฐ ์ง์ญ (".sdata" ๋ฐ ".sbss" ์น์ ) ๋ฐ 16๋นํธ๋ฅผ ํตํด ์ก์ธ์ค
$gp ๋ ์ง์คํฐ์์ ์ฌ๋ฐฐ์น. ์ด๊ฒ์ ์์ ๋ฐ์ดํฐ ์์ญ์ ํฌ๊ธฐ๋ฅผ ๋ค์์ผ๋ก ์ ํํฉ๋๋ค.
64KB์ด์ง๋ง ๋จ์ผ ๋ช ๋ น์ด๋ฅผ ํตํด ๋ณ์์ ์ง์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
๋ํดํธ๋ -mlarge-๋ฐ์ดํฐ. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ์์ญ์ด ๋ฐ๋ก ์๋๋ก ์ ํ๋ฉ๋๋ค.
2GB. 2GB ์ด์์ ๋ฐ์ดํฐ๊ฐ ํ์ํ ํ๋ก๊ทธ๋จ์ "malloc" ๋๋ "mmap"์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํ๋ก๊ทธ๋จ์ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ ๋์ ํ์ ๋ฐ์ดํฐ๋ฅผ ํ ๋นํฉ๋๋ค.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฉ ์ฝ๋๋ฅผ ์์ฑํ ๋, -fpic ์๋ฏธํ๋ค -msmall-๋ฐ์ดํฐ and -fPIC
์๋ฏธํ๋ค -mlarge-๋ฐ์ดํฐ.
-m์์ ํ ์คํธ
-mlarge-ํ ์คํธ
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -m์์ ํ ์คํธ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๋ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ
(๋๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ 4MB์ ๋ง์ผ๋ฏ๋ก ๋ถ๊ธฐ ๋ช ๋ น์ผ๋ก ๋๋ฌํ ์ ์์ต๋๋ค.
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -msmall-๋ฐ์ดํฐ ๊ฐ ์ฌ์ฉ๋๋ฉด ์ปดํ์ผ๋ฌ๋ ๋ชจ๋ ๋ก์ปฌ ๊ธฐํธ๊ฐ
๋์ผํ $gp ๊ฐ, ๋ฐ๋ผ์ ํจ์์ ํ์ํ ๋ช ๋ น์ด ์ ๊ฐ์
4์์ 1๋ก ์ ํ๋ฅผ ๊ฒ๋๋ค.
๋ํดํธ๋ -mlarge-ํ ์คํธ.
-mcpu =CPU_์ ํ
๋จธ์ ์ ํ์ ๋ํ ๋ช ๋ น์ด ์ธํธ ๋ฐ ๋ช ๋ น์ด ์ค์ผ์ค๋ง ๋งค๊ฐ๋ณ์ ์ค์
CPU_์ ํ. ๋ค์ ์ค ํ๋๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. EV ์คํ์ผ ์ด๋ฆ ๋๋ ํด๋น ์นฉ ๋ฒํธ.
GCC๋ EV4, EV5 ๋ฐ EV6 ํ๋ก์ธ์ ์ ํ๊ตฐ์ ๋ํ ์ค์ผ์ค๋ง ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ํ๋ฉฐ
์ง์ ํ ํ๋ก์ธ์์์ ๋ช ๋ น์ด ์ธํธ์ ๊ธฐ๋ณธ๊ฐ์ ์ ํํฉ๋๋ค. ๋ง์ฝ์
ํ๋ก์ธ์ ์ ํ์ ์ง์ ํ์ง ์์ผ๋ฉด GCC๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋น ํ๋ก์ธ์๊ฐ
์ปดํ์ผ๋ฌ๊ฐ ๊ตฌ์ถ๋์์ต๋๋ค.
์ง์๋๋ ๊ฐ CPU_์ ํ are
ev4
ev45
21064
EV4๋ก ์์ฝ๋๋ฉฐ ๋ช ๋ น์ด ์ธํธ ํ์ฅ์ด ์์ต๋๋ค.
ev5
21164
EV5๋ก ์์ฝ๋๋ฉฐ ๋ช ๋ น์ด ์ธํธ ํ์ฅ์ด ์์ต๋๋ค.
ev56
21164a
EV5๋ก ์์ฝํ๊ณ BWX ํ์ฅ์ ์ง์ํฉ๋๋ค.
PCA56
21164pc
21164PC
EV5๋ก ์์ฝํ๊ณ BWX ๋ฐ MAX ํ์ฅ์ ์ง์ํฉ๋๋ค.
ev6
21264
EV6๋ก ์์ฝํ๊ณ BWX, FIX ๋ฐ MAX ํ์ฅ์ ์ง์ํฉ๋๋ค.
ev67
21264a
EV6์ผ๋ก ์์ฝํ๊ณ BWX, CIX, FIX ๋ฐ MAX ํ์ฅ์ ์ง์ํฉ๋๋ค.
๊ธฐ๋ณธ ๋๊ตฌ ์ฒด์ธ๋ ๊ฐ์น๋ฅผ ์ง์ํฉ๋๋ค. ์ถ์ , ์ต๊ณ ์ ์ํคํ ์ฒ๋ฅผ ์ ํํ๋
ํธ์คํธ ํ๋ก์ธ์์ ๋ํ ์ต์ ์ ๋๋ค. -mcpu=๋ค์ดํฐ๋ธ GCC๊ฐ ์ธ์ํ์ง ๋ชปํ๋ฉด ํจ๊ณผ๊ฐ ์์ต๋๋ค.
ํ๋ก์ธ์.
-mtune=CPU_์ ํ
๋จธ์ ์ ํ์ ๋ํ ๋ช ๋ น์ด ์ค์ผ์ค๋ง ๋งค๊ฐ๋ณ์๋ง ์ค์ CPU_์ ํ. ๊ทธ๋งํผ
๋ช ๋ น์ด ์ธํธ๋ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
๊ธฐ๋ณธ ๋๊ตฌ ์ฒด์ธ๋ ๊ฐ์น๋ฅผ ์ง์ํฉ๋๋ค. ์ถ์ , ์ต๊ณ ์ ์ํคํ ์ฒ๋ฅผ ์ ํํ๋
ํธ์คํธ ํ๋ก์ธ์์ ๋ํ ์ต์ ์ ๋๋ค. -mtune=๋ค์ดํฐ๋ธ GCC๊ฐ ์ธ์ํ์ง ๋ชปํ๋ฉด ํจ๊ณผ๊ฐ ์์ต๋๋ค.
ํ๋ก์ธ์.
-๋ฉ๋ชจ๋ฆฌ ๋๊ธฐ ์๊ฐ=์๊ฐ
์ค์ผ์ค๋ฌ๊ฐ ๋ค์์์ ๋ณผ ์ ์๋ ์ผ๋ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ์ ๋ํด ๊ฐ์ ํด์ผ ํ๋ ๋๊ธฐ ์๊ฐ์ ์ค์ ํฉ๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ. ์ด ์ซ์๋ ์ฌ์ฉ๋ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ํจํด์ ํฌ๊ฒ ์์กดํฉ๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ์์คํ ์ ์ธ๋ถ ์บ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ ํจํ ์ต์ ์๊ฐ are
๋ฒํธ
ํด๋ก ์ฃผ๊ธฐ๋ฅผ ๋ํ๋ด๋ XNUMX์ง์์ ๋๋ค.
L1
L2
L3
๋ณธ๊ด
์ปดํ์ผ๋ฌ์๋ "์ ํ์ ์ธ" EV4 ๋ฐ
๋ ๋ฒจ 5, 1 ๋ฐ 2 ์บ์์ฉ EV3 ํ๋์จ์ด(Dcache, Cache ๋ฐ
Bcache) ๋ฟ๋ง ์๋๋ผ ์ฃผ ๋ฉ๋ชจ๋ฆฌ์๋ ์ ์ฉ๋ฉ๋๋ค. L3๋ EV5์๋ง ์ ํจํฉ๋๋ค.
FR30 ์ต์
์ด๋ฌํ ์ต์ ์ FR30 ํฌํธ์ ๋ํด ํน๋ณํ ์ ์๋ฉ๋๋ค.
-m์์ ๋ชจ๋ธ
์์ ์ฃผ์ ๊ณต๊ฐ ๋ชจ๋ธ์ ์ฌ์ฉํ์ญ์์ค. ์ด๊ฒ์ ๋ ์์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ง๋ง
๋ชจ๋ ๊ธฐํธ ๊ฐ๊ณผ ์ฃผ์๋ 20๋นํธ ๋ฒ์์ ๋ง์ต๋๋ค.
-mno-lsim
๋ฐํ์ ์ง์์ด ์ ๊ณต๋์์ผ๋ฏ๋ก ๋ค์์ ํฌํจํ ํ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์๋ฎฌ๋ ์ดํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(libsim.a) ๋ง์ปค ๋ช ๋ น์ค์์.
FRV ์ต์
-mgpr-32
์ฒ์ 32๊ฐ์ ๋ฒ์ฉ ๋ ์ง์คํฐ๋ง ์ฌ์ฉํ์ญ์์ค.
-mgpr-64
64๊ฐ์ ๋ฒ์ฉ ๋ ์ง์คํฐ๋ฅผ ๋ชจ๋ ์ฌ์ฉํฉ๋๋ค.
-mfpr-32
์ฒ์ 32๊ฐ์ ๋ถ๋ ์์์ ๋ ์ง์คํฐ๋ง ์ฌ์ฉํ์ญ์์ค.
-mfpr-64
64๊ฐ์ ๋ถ๋ ์์์ ๋ ์ง์คํฐ๋ฅผ ๋ชจ๋ ์ฌ์ฉํ์ญ์์ค.
-mhard-float
๋ถ๋ ์์์ ์ฐ์ฐ์ ํ๋์จ์ด ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ญ์์ค.
-msoft-float
๋ถ๋ ์์์ ์ฐ์ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฃจํด์ ์ฌ์ฉํ์ญ์์ค.
-malloc-cc
์กฐ๊ฑด ์ฝ๋ ๋ ์ง์คํฐ๋ฅผ ๋์ ์ผ๋ก ํ ๋นํฉ๋๋ค.
-mfixed-cc
์กฐ๊ฑด ์ฝ๋ ๋ ์ง์คํฐ๋ฅผ ๋์ ์ผ๋ก ํ ๋นํ์ง ๋ง๊ณ "icc0"๋ง ์ฌ์ฉํ๊ณ
"fcc0".
-mdword
์ด์ค ๋จ์ด insns๋ฅผ ์ฌ์ฉํ๋๋ก ABI๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
-mno-dword
์ด์ค ๋จ์ด ์ง์นจ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
-m๋๋ธ
๋ถ๋ ์์์ ์ด์ค ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-mno-๋๋ธ
๋ถ๋ ์์์ ์ด์ค ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
-๋ฏธ๋์ด
๋ฏธ๋์ด ์ง์นจ์ ์ฌ์ฉํฉ๋๋ค.
-mno-๋ฏธ๋์ด
๋ฏธ๋์ด ์ง์นจ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
-mmuladd
๊ณฑํ๊ธฐ ๋ฐ ๋ํ๊ธฐ/๋นผ๊ธฐ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-mno-๋ฌผ๋ผ๋
๊ณฑํ๊ธฐ ๋ฐ ๋ํ๊ธฐ/๋นผ๊ธฐ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
-mfdpic
ํจ์ ์ค๋ช ์๋ฅผ ์ฌ์ฉํ์ฌ ํฌ์ธํฐ๋ฅผ ๋ํ๋ด๋ FDPIC ABI๋ฅผ ์ ํํฉ๋๋ค.
๊ธฐ๋ฅ. PIC/PIE ๊ด๋ จ ์ต์ ์ด ์์ผ๋ฉด ๋ค์์ ์๋ฏธํฉ๋๋ค. -fPIE. ๊ณผ -fpic or
-ํ์ด, GOT ํญ๋ชฉ ๋ฐ ์์ ๋ฐ์ดํฐ๊ฐ GOT์์ 12๋นํธ ๋ฒ์ ๋ด์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๊ธฐ๋ณธ ์ฃผ์; ~์ ํจ๊ป -fPIC or -fPIE, GOT ์คํ์ ์ 32๋นํธ๋ก ๊ณ์ฐ๋ฉ๋๋ค. ์
๋นํ ์ํ ๋์, ์ด ์ต์ ์ -msim.
-minline-plt
์๋ ค์ง์ง ์์ ํจ์์ ๋ํ ํจ์ ํธ์ถ์์ PLT ํญ๋ชฉ ์ธ๋ผ์ธ ์ฌ์ฉ
๋ก์ปฌ๋ก ๋ฐ์ธ๋ฉํฉ๋๋ค. ์์ด๋ ์๋ฌด๋ฐ ํจ๊ณผ๊ฐ ์์ต๋๋ค. -mfdpic. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์๋ ๋ฐ ์ปดํ์ผ ์ต์ ํ(์ฆ, -fPIC or -fpic), ๋๋
๋ค์๊ณผ ๊ฐ์ ์ต์ ํ ์ต์ ์ด ์์ ๋ -O3 ๋๋ ์ด์์ด ๋ช ๋ น์ค์ ์์ต๋๋ค.
-mTLS
์ค๋ ๋ ๋ก์ปฌ ์ฝ๋๋ฅผ ์์ฑํ ๋ ํฐ TLS ์ธ๊ทธ๋จผํธ๋ฅผ ๊ฐ์ ํฉ๋๋ค.
-mtls
์ค๋ ๋ ๋ก์ปฌ ์ฝ๋๋ฅผ ์์ฑํ ๋ ํฐ TLS ์ธ๊ทธ๋จผํธ๋ฅผ ๊ฐ์ ํ์ง ๋ง์ญ์์ค.
-mgprel-๋ก
์ ์๋ ๊ฒ์ผ๋ก ์๋ ค์ง ๋ฐ์ดํฐ์ ๋ํด FDPIC ABI์์ "GPREL" ์ฌ๋ฐฐ์น ์ฌ์ฉ์ ํ์ฑํํฉ๋๋ค.
์ฝ๊ธฐ ์ ์ฉ ์น์ . ๋ค์์ ์ ์ธํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -fpic or -ํ์ด: ์ผ์ง๋ผ๋
์ ์ญ ์คํ์ ํ ์ด๋ธ์ ๋ ์๊ฒ ๋ง๋๋ ๋ฐ ๋์์ด ๋ ์ ์์ผ๋ฉฐ 1 ๋ช ๋ น์ด๋ฅผ 4๋ก ๊ตํํฉ๋๋ค.
-fPIC or -fPIE, 3๊ฐ์ ๋ช ๋ น์ ๋ํด 4๊ฐ์ ๋ช ๋ น์ ๊ตํํ๋ฉฐ, ๊ทธ ์ค ํ๋๋ ์ฌ๋ฌ ์ฌ๋์ด ๊ณต์ ํ ์ ์์ต๋๋ค.
๊ธฐํธ์ด๋ฉฐ ์ฐธ์กฐ๋ ๊ธฐํธ์ ๋ํ GOT ํญ๋ชฉ์ด ํ์ํ์ง ์์ผ๋ฏ๋ก
์น๋ฆฌํ ๊ฐ๋ฅ์ฑ์ด ๋ ๋์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ -mno-gprel-ro ๋นํ์ฑํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-multilib-๋ผ์ด๋ธ๋ฌ๋ฆฌ-pic
(FD๊ฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ) ์ฌ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค. ์ ์ํด ์์๋๋ค - ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ง๋ฟ๋ง ์๋๋ผ
~์ ์ํด -fPIC and -fpic ์์ด -mfdpic. ๋ช ์์ ์ผ๋ก ์ฌ์ฉํ ํ์๋ ์์ต๋๋ค.
-Mlinked-FP
์คํ ํ๋ ์์ด ์์ฑ๋ ๋๋ง๋ค ํญ์ ํ๋ ์ ํฌ์ธํฐ๋ฅผ ์์ฑํ๋ EABI ์๊ตฌ ์ฌํญ์ ๋ฐ๋ฆ ๋๋ค.
ํ ๋น๋ฉ๋๋ค. ์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ผ๋ฉฐ ๋ค์์ผ๋ก ๋นํ์ฑํํ ์ ์์ต๋๋ค.
-mno ์ฐ๊ฒฐ fp.
-mlong-ํตํ
๊ฐ์ ์ฃผ์ ์ง์ ์ ์ฌ์ฉํ์ฌ ํ์ฌ ์ปดํ์ผ ๋จ์ ์ธ๋ถ์์ ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. ์ด๊ฒ
ํจ์๋ฅผ 32๋นํธ ์ฃผ์ ๊ณต๊ฐ ๋ด ์ด๋์๋ ๋ฐฐ์นํ ์ ์์ต๋๋ค.
-์ ์ฑ ๋ ์ด๋ธ
์ด์ ํจํท์ NOP๋ฅผ ์ฝ์ ํ์ฌ ๋ ์ด๋ธ์ 8๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถ์ญ์์ค.
์ด ์ต์ ์ VLIW ํจํน์ด ํ์ฑํ๋ ๊ฒฝ์ฐ์๋ง ํจ๊ณผ๊ฐ ์์ต๋๋ค. ์๋ก ๋ง๋ค์ง ์๋๋ค
ํจํท; ๊ธฐ์กด์ NOP๋ฅผ ์ถ๊ฐํ ๋ฟ์ ๋๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ง
์์น ๋ ๋ฆฝ์ ์ธ EABI ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-๋งฅ-4
์ฒ์ XNUMX๊ฐ์ ๋ฏธ๋์ด ๋์ฐ๊ธฐ ๋ ์ง์คํฐ๋ง ์ฌ์ฉํ์ญ์์ค.
-๋งฅ-8
XNUMX๊ฐ์ ๋ฏธ๋์ด ๋์ฐ๊ธฐ ๋ ์ง์คํฐ๋ฅผ ๋ชจ๋ ์ฌ์ฉํฉ๋๋ค.
-mpack
VLIW ์ง์นจ์ ํฌ์ฅํ์ญ์์ค.
-mno-ํฉ
VLIW ์ง์นจ์ ํฌ์ฅํ์ง ๋ง์ญ์์ค.
-mno ํ๋๊ทธ
e_flags์ ABI ์ค์์น๋ฅผ ํ์ํ์ง ๋ง์ญ์์ค.
-mcond-์ด๋
์กฐ๊ฑด๋ถ ์ด๋ ๋ช ๋ น ์ฌ์ฉ์ ํ์ฑํํฉ๋๋ค(๊ธฐ๋ณธ๊ฐ).
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-mno-cond-์ด๋
์กฐ๊ฑด๋ถ ์ด๋ ๋ช ๋ น์ ์ฌ์ฉ์ ๋นํ์ฑํํฉ๋๋ค.
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-mscc
์กฐ๊ฑด๋ถ ์งํฉ ๋ช ๋ น์ด ์ฌ์ฉ์ ํ์ฑํํฉ๋๋ค(๊ธฐ๋ณธ๊ฐ).
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-mno-scc
์กฐ๊ฑด๋ถ ์งํฉ ๋ช ๋ น์ด์ ์ฌ์ฉ์ ๋นํ์ฑํํฉ๋๋ค.
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-mcond-exec
์กฐ๊ฑด๋ถ ์คํ ์ฌ์ฉ์ ํ์ฑํํฉ๋๋ค(๊ธฐ๋ณธ๊ฐ).
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-mno-์กฐ๊ฑด-exec
์กฐ๊ฑด๋ถ ์คํ ์ฌ์ฉ์ ๋นํ์ฑํํฉ๋๋ค.
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-mvliw-๋ถ๊ธฐ
ํจ์ค๋ฅผ ์คํํ์ฌ ๋ถ๊ธฐ๋ฅผ VLIW ๋ช ๋ น์ด(๊ธฐ๋ณธ๊ฐ)๋ก ๋ฌถ์ต๋๋ค.
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-mno-vliw-๋ถ๊ธฐ
๋ถ๊ธฐ๋ฅผ VLIW ๋ช ๋ น์ด๋ก ํจํนํ๋ ํจ์ค๋ฅผ ์คํํ์ง ๋ง์ญ์์ค.
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-m๋ค์ค ์กฐ๊ฑด ์คํ
"&&" ๋ฐ "||" ์ต์ ํ ํ์ฑํ ์กฐ๊ฑด๋ถ ์คํ(๊ธฐ๋ณธ๊ฐ).
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-mno-๋ค์ค ์กฐ๊ฑด-exec
"&&" ๋ฐ "||" ์ต์ ํ ๋นํ์ฑํ ์กฐ๊ฑด๋ถ ์คํ์์.
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-mnested-cond-exec
์ค์ฒฉ ์กฐ๊ฑด๋ถ ์คํ ์ต์ ํ๋ฅผ ํ์ฑํํฉ๋๋ค(๊ธฐ๋ณธ๊ฐ).
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-mno-์ค์ฒฉ-์กฐ๊ฑด-exec
์ค์ฒฉ ์กฐ๊ฑด๋ถ ์คํ ์ต์ ํ๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
์ด ์ค์์น๋ ์ฃผ๋ก ์ปดํ์ผ๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ๋ค์ ๋จ๊ณ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค.
๋ฏธ๋ ๋ฒ์ .
-moptimize-๋ฉค๋ฐ
์ด ์ค์์น๋ ์ปดํ์ผ๋ฌ ์์ฑ ์ฝ๋์์ ์ค๋ณต "๋ฉค๋ฐ" ๋ช ๋ น์ ์ ๊ฑฐํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
-mno-optimize-๋ฉค๋ฐ
์ด ์ค์์น๋ ์ค๋ณต "๋ฉค๋ฐ" ๋ช ๋ น์ ์๋ ์ ๊ฑฐ๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
์์ฑ๋ ์ฝ๋.
-mtomcat-ํต๊ณ
๊ฐ์ค๊ฐ ๋ฐ๋๋ฅ์ด ํต๊ณ๋ฅผ ์ถ๋ ฅํ๋๋ก ํฉ๋๋ค.
-mcpu =CPU
์ฝ๋๋ฅผ ์์ฑํ ํ๋ก์ธ์ ์ ํ์ ์ ํํฉ๋๋ค. ๊ฐ๋ฅํ ๊ฐ์ Frv, fr550,
์ฌ์ ๊ฝ๋ฌด๋๋ฅผ ์ซ์ ๋ค๋๋ค, fr500, fr450, fr405, fr400, fr300 and ๊ฐํธํ ์ค์น.
GNU / ๋ฆฌ๋ ์ค ์ต์
Bowman์ -m ์ต์ ์ GNU/Linux ๋์์ ๋ํด ์ ์๋ฉ๋๋ค.
-mglibc
GNU C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ญ์์ค. ์ด๊ฒ์ ๋ค์์ ์ ์ธํ๊ณ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. *-*-๋ฆฌ๋ ์ค-*ulibc* and
*-*-๋ฆฌ๋ ์ค-*์๋๋ก์ด๋* ๋ชฉํ.
-๋ฎคํด๋ฆฝ
uClibc C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ ์ค์ ์ ๋๋ค. *-*-๋ฆฌ๋ ์ค-*ulibc* ๋ชฉํ.
-์ ๋น์ค๋
Bionic C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ ์ค์ ์ ๋๋ค. *-*-๋ฆฌ๋ ์ค-*์๋๋ก์ด๋* ๋ชฉํ.
-๋งจ๋๋ก์ด๋
Android ํ๋ซํผ๊ณผ ํธํ๋๋ ์ปดํ์ผ ์ฝ๋. ์ด๊ฒ์ ๊ธฐ๋ณธ ์ค์ ์ ๋๋ค.
*-*-๋ฆฌ๋ ์ค-*์๋๋ก์ด๋* ๋ชฉํ.
์ปดํ์ผํ ๋ ์ด ์ต์ ์ -์ ๋น์ค๋, -fPIC, -fno-์์ธ and -fno-rtti by
๊ธฐ๋ณธ. ์ฐ๊ฒฐํ ๋ ์ด ์ต์ ์ GCC ๋๋ผ์ด๋ฒ๊ฐ Android ์ ์ฉ ์ต์ ์ ์ ๋ฌํ๋๋ก ํฉ๋๋ค.
๋ง์ปค์. ๋ง์ง๋ง์ผ๋ก ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก "__ANDROID__"๊ฐ
ํ์ ๋.
-tno-์๋๋ก์ด๋-cc
์ ์ปดํ์ผ ํจ๊ณผ ๋นํ์ฑํ -๋งจ๋๋ก์ด๋, ์ฆ, ํ์ฑํํ์ง ๋ง์ญ์์ค -์ ๋น์ค๋, -fPIC,
-fno-์์ธ and -fno-rtti ๊ธฐ๋ณธ์ ์ผ๋ก
-tno-์๋๋ก์ด๋-ld
์ฐ๊ฒฐ ํจ๊ณผ ๋นํ์ฑํ -๋งจ๋๋ก์ด๋์ฆ, ํ์ค Linux ์ฐ๊ฒฐ ์ต์ ์
๋ง์ปค.
H8 / 300 ์ต์
Bowman์ -m ์ต์ ์ H8/300 ๊ตฌํ์ ๋ํด ์ ์๋ฉ๋๋ค.
-mrelax
๊ฐ๋ฅํ๋ฉด ๋งํฌ ์๊ฐ์ ์ผ๋ถ ์ฃผ์ ์ฐธ์กฐ๋ฅผ ์ค์ด์ญ์์ค. ๋ง์ปค ์ต์ ์ ์ฌ์ฉ
-ํธํ๊ฒ ํ๋ค.
-mh H8/300H์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-ms H8S์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-mn ์ผ๋ฐ ๋ชจ๋์์ H8S ๋ฐ H8/300H์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด ์ค์์น๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค
์ด๋ ์ชฝ์ด๋ -mh or -ms.
-ms2600
H8S/2600์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด ์ค์์น๋ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค. -ms.
-๋ฉ์ค
ํ์ฅ ๋ ์ง์คํฐ๋ ๋ชจ๋ํฐ๋ก ๊ธฐ๋ฅ์ ์คํํ๊ธฐ ์ ์ ์คํ์ ์ ์ฅ๋ฉ๋๋ค.
๊ธฐ์ธํ๋ค. ๊ธฐ๋ณธ ์ต์ ์ -๋ฉ์ค. ์ด ์ต์ ์ H8S ๋์์๋ง ์ ํจํฉ๋๋ค.
-mno-exr
๋ชจ๋ํฐ๋ก ๊ธฐ๋ฅ์ ์คํํ๊ธฐ ์ ์ ํ์ฅ ๋ ์ง์คํฐ๊ฐ ์คํ์ ์ ์ฅ๋์ง ์์ต๋๋ค.
๊ธฐ์ธํ๋ค. ๊ธฐ๋ณธ ์ต์ ์ -mno-exr. ์ด ์ต์ ์ H8S ๋์์๋ง ์ ํจํฉ๋๋ค.
-๋ฏผํธ32
"int" ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก 32๋นํธ๋ก ๋ง๋ญ๋๋ค.
-์ ์ฑ-300
H8/300H ๋ฐ H8S์์๋ H8/300๊ณผ ๋์ผํ ์ ๋ ฌ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ
H8/300H ๋ฐ H8S์ ๊ฒฝ์ฐ 4๋ฐ์ดํธ ๊ฒฝ๊ณ์์ long ๋ฐ float๋ฅผ ์ ๋ ฌํฉ๋๋ค.
-์ ์ฑ-300 2๋ฐ์ดํธ ๊ฒฝ๊ณ๋ก ์ ๋ ฌ๋ฉ๋๋ค. ์ด ์ต์ ์ ํจ๊ณผ๊ฐ ์์ต๋๋ค
H8/300์์.
HPPA ์ต์
Bowman์ -m ์ต์ ์ HPPA ์ปดํจํฐ ์ ํ๊ตฐ์ ๋ํด ์ ์๋ฉ๋๋ค.
-ํ์ง=๊ฑด์ถํ
์ง์ ๋ ์ํคํ ์ฒ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ ๋ํ ์ ํ ๊ฑด์ถํ are
1.0 PA 1.0์ ๊ฒฝ์ฐ, 1.1 PA 1.1์ ๊ฒฝ์ฐ 2.0 PA 2.0 ํ๋ก์ธ์์ฉ. ์ธ์ฉํ๋ค
/usr/lib/sched.models ์ ์ ํ ์ํคํ ์ฒ ์ต์ ์ ๊ฒฐ์ ํ๊ธฐ ์ํด HP-UX ์์คํ ์์
๋น์ ์ ๊ธฐ๊ณ๋ฅผ ์ํด. ๋ ๋ฎ์ ๋ฒํธ์ ์ํคํ ์ฒ์ฉ์ผ๋ก ์ปดํ์ผ๋ ์ฝ๋๋ ๋ ๋์ ์ํคํ ์ฒ์์ ์คํ๋ฉ๋๋ค.
๋ฒํธ๊ฐ ๋งค๊ฒจ์ง ์ํคํ ์ฒ์ด์ง๋ง ๊ทธ ๋ฐ๋๋ ์๋๋๋ค.
-mpa-risc-1-0
-mpa-risc-1-1
-mpa-risc-2-0
๋์์ด -1.0์=XNUMX, -1.1์=XNUMX๋ฐ -2.0์=XNUMX ๊ฐ๊ฐ.
-mbig ์ค์์น
ํฐ ์ค์์น ํ ์ด๋ธ์ ์ ํฉํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ด ์ต์ ์ ์ฌ์ฉํ์ญ์์ค.
์ด์ ๋ธ๋ฌ/๋ง์ปค๊ฐ ์ค์์น ํ ์ด๋ธ ๋ด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๋ถ๊ธฐ์ ๋ํด ๋ถํํฉ๋๋ค.
-m์ ํ-์ธ-์ง์ฐ
์์ ํ์ฌ ๋ฌด์กฐ๊ฑด ์ ํ ๋ช ๋ น์ผ๋ก ํจ์ ํธ์ถ์ ์ง์ฐ ์ฌ๋กฏ ์ฑ์ฐ๊ธฐ
์กฐ๊ฑด๋ถ ์ ํ์ ๋์์ด ๋ ํจ์ ํธ์ถ์ ๋ํ ๋ฐํ ํฌ์ธํฐ.
-mdisable-fpregs
๋ถ๋ ์์์ ๋ ์ง์คํฐ๊ฐ ์ด๋ค ์์ผ๋ก๋ ์ฌ์ฉ๋์ง ์๋๋ก ํฉ๋๋ค. ์ด๊ฒ์ ํ์ํ๋ค
๋ถ๋ ์์์ ๋ ์ง์คํฐ์ ์ง์ฐ ์ปจํ ์คํธ ์ค์์นญ์ ์ํํ๋ ์ปดํ์ผ ์ปค๋. ๋ง์ฝ์
์ด ์ต์ ์ ์ฌ์ฉํ๊ณ ๋ถ๋ ์์์ ์ฐ์ฐ์ ์ํํ๋ ค๊ณ ํ๋ฉด ์ปดํ์ผ๋ฌ
์ค๋จํฉ๋๋ค.
-mdisable-์ธ๋ฑ์ฑ
์ปดํ์ผ๋ฌ๊ฐ ์ธ๋ฑ์ฑ ์ฃผ์ ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ํฉ๋๋ค. ์ด๊ฒ์ ์คํ๋ ค ์ผ๋ถ๋ฅผ ํผํฉ๋๋ค
MACH์์ MIG ์์ฑ ์ฝ๋๋ฅผ ์ปดํ์ผํ ๋ ๋ชจํธํ ๋ฌธ์ .
-mno-๊ณต๊ฐ-regs
๋์์ ๊ณต๊ฐ ๋ ์ง์คํฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ฅผ ํตํด GCC๋
๋ ๋น ๋ฅธ ๊ฐ์ ํธ์ถ์ ์์ฑํ๊ณ ํ์ฅ๋์ง ์์ ์ธ๋ฑ์ค ์ฃผ์ ๋ชจ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋ฌํ ์ฝ๋๋ ๋ ๋ฒจ 0 PA ์์คํ ๋ฐ ์ปค๋์ ์ ํฉํฉ๋๋ค.
-mfast-๊ฐ์ ํธ์ถ
ํธ์ถ์ด ๊ณต๊ฐ ๊ฒฝ๊ณ๋ฅผ ๋์ง ์๋๋ค๊ณ ๊ฐ์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ฅผ ํตํด GCC๋
๋ ๋น ๋ฅธ ๊ฐ์ ํธ์ถ์ ์ํํ๋ ์ฝ๋๋ฅผ ๋ฐฉ์ถํฉ๋๋ค.
์ด ์ต์ ์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ์ค์ฒฉ ํจ์๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ํ์ง ์์ต๋๋ค.
-m๊ณ ์ ๋ฒ์=๋ ์ง์คํฐ ๋ฒ์
์ฃผ์ด์ง ๋ ์ง์คํฐ ๋ฒ์๋ฅผ ๊ณ ์ ๋ ์ง์คํฐ๋ก ์ทจ๊ธํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ณ ์ ๋ ์ง์คํฐ
๋ ์ง์คํฐ ํ ๋น์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ปค๋์ ์ปดํ์ผํ ๋ ์ ์ฉํฉ๋๋ค.
์ํธ. ๋ ์ง์คํฐ ๋ฒ์๋ ๋์๋ก ๊ตฌ๋ถ๋ ๋ ๊ฐ์ ๋ ์ง์คํฐ๋ก ์ง์ ๋ฉ๋๋ค. ๋ค์์
๋ ์ง์คํฐ ๋ฒ์๋ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ์ง์ ํ ์ ์์ต๋๋ค.
-mlong-๋ก๋-์คํ ์ด
HP-UX 3์์ ํ์์ ๋ฐ๋ผ 10๊ฐ ๋ช ๋ น์ด ๋ก๋ ๋ฐ ์ ์ฅ ์ํ์ค ์์ฑ
๋ง์ปค. ์ด๊ฒ์ +k HP ์ปดํ์ผ๋ฌ์ ๋ํ ์ต์ ์ ๋๋ค.
-๊ฐ๋ ๊ฐ๋ฅํ ๋ฐํ์
ELF ์์คํ ์ ๋ํด HP์์ ์ ์ํ ํด๋์ฉ ํธ์ถ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ์ค
GAS๋ง ์ดํดํ๋ ์ด์ ๋ธ๋ฌ ์ง์๋ฌธ ์ฌ์ฉ์ ํ์ฑํํฉ๋๋ค.
-ms์ค์ผ์ค=CPU ์ ํ
๋จธ์ ์ ํ์ ๋ํ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์์ฝํฉ๋๋ค. CPU ์ ํ. ์ ํ
for CPU ์ ํ are 700 7100, 7100LC, 7200, 7300 and 8000. ์ธ์ฉํ๋ค
/usr/lib/sched.models ์ ์ ํ ์์ฝ ์ต์ ์ ๊ฒฐ์ ํ๊ธฐ ์ํด HP-UX ์์คํ ์์
๋น์ ์ ๊ธฐ๊ณ. ๊ธฐ๋ณธ ์ผ์ ์ 8000.
-mlinker-opt
HP-UX ๋ง์ปค์์ ์ต์ ํ ๋จ๊ณ๋ฅผ ํ์ฑํํฉ๋๋ค. ์ด๊ฒ์ ์ฌ๋ณผ๋ฆญ ๋๋ฒ๊น ์ ๋ง๋ญ๋๋ค.
๋ถ๊ฐ๋ฅํ. ๋ํ HP-UX 8 ๋ฐ HP-UX 9 ๋ง์ปค์์ ๋ฒ๊ทธ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
์ผ๋ถ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ ๋ ๊ฐ์ง ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๊ณตํฉ๋๋ค.
-msoft-float
๋ถ๋ ์์์ ์ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ์ด ํฌํจ๋ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ๊ฒฝ๊ณ : ํ์
๋ชจ๋ HPPA ๋์์ ๋ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์ค์
๊ธฐ๊ณ์ ์ผ๋ฐ์ ์ธ C ์ปดํ์ผ๋ฌ๊ฐ ์ฌ์ฉ๋์ง๋ง ์ด๊ฒ์ ๊ต์ฐจ์์ ์ง์ ์ํ๋ ์ ์์ต๋๋ค.
ํธ์ง. ์ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ค์ค๋ก ์ค๋นํด์ผ ํฉ๋๋ค.
ํฌ๋ก์ค ์ปดํ์ผ์ ์ํ ํจ์
-msoft-float ์ถ๋ ฅ ํ์ผ์ ํธ์ถ ๊ท์น์ ๋ณ๊ฒฝํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ทธ๊ฒ์ ๋จ์ง
์ปดํ์ผํ๋ฉด ์ ์ฉํฉ๋๋ค. ๋ชจ๋ ์ด ์ต์ ์ด ์๋ ํ๋ก๊ทธ๋จ์ ํนํ, ๋น์ ์
ํธ์งํ๋ค libgcc.a, GCC์ ํจ๊ป ์ ๊ณต๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, -msoft-float ์ด๋ฅผ ์ํด
์๋ํฉ๋๋ค.
-msio
์๋ฒ IO์ ๋ํ ์ฌ์ ์ ์ "_SIO"๋ฅผ ์์ฑํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -mwsio. ์ด๊ฒ์ ์์ฑ
์ํฌ์คํ ์ด์ IO์ ๋ํด "__hp9000s700", "__hp9000s700__" ๋ฐ "_WSIO"๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํฉ๋๋ค.
์ด๋ฌํ ์ต์ ์ HP-UX ๋ฐ HI-UX์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-mgnu-ld
GNU์ ํน์ ํ ์ต์ ์ฌ์ฉ ld. ์ด๊ฒ์ ํต๊ณผ -๊ณต์ ์ ld ๊ณต์ ๋ฅผ ๊ตฌ์ถํ ๋
๋์๊ด. GCC๊ฐ ๋ช ์์ ๋๋ ์์์ ์ผ๋ก ๊ตฌ์ฑ๋ ๋ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
GNU ๋ง์ปค. ์ด ์ต์ ์ ๋ค์ ํญ๋ชฉ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ld ํธ์ถ๋๋ค; ๊ทธ๊ฒ์ ๋จ์ง ๋ฌด์์ ๋ณ๊ฒฝ
๋งค๊ฐ๋ณ์๊ฐ ์ ๋ฌ๋ฉ๋๋ค. ld. ๊ทธ๋งํผ ld ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
--with-ld ๊ตฌ์ฑ ์ต์ , GCC์ ํ๋ก๊ทธ๋จ ๊ฒ์ ๊ฒฝ๋ก, ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉ์์ PATH.
GCC์์ ์ฌ์ฉํ๋ ๋ง์ปค๋ ๋ค์์ ์ฌ์ฉํ์ฌ ์ธ์ํ ์ ์์ต๋๋ค. ์ด๋ `gcc -์ธ์ ํ๋ก๊ทธ๋จ ์ด๋ฆ=ld`. ์ด
์ต์ ์ 64๋นํธ HP-UX GCC์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
hppa*64*-*-hpux*.
-mhp-ld
HP ์ ์ฉ ์ต์ ์ฌ์ฉ ld. ์ด๊ฒ์ ํต๊ณผ -b ์ ld ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ ๋
๊ทธ๋ฆฌ๊ณ ํจ์ค +์๋ฝ ์ ํ ๋ถ์ผ์น ์ ld ๋ชจ๋ ๋งํฌ์์. GCC์ผ ๋ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๋ช ์์ ์ด๋ ์์์ ์ด๋ HP ๋ง์ปค๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด ์ต์ ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค
์ด๋ ld ํธ์ถ๋๋ค; ์ ๋ฌ๋๋ ๋งค๊ฐ๋ณ์๋ง ๋ณ๊ฒฝํฉ๋๋ค. ld. ๊ทธ๋งํผ ld
์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. --with-ld ๊ตฌ์ฑ ์ต์ , GCC์ ํ๋ก๊ทธ๋จ ๊ฒ์
๊ฒฝ๋ก, ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉ์์ PATH. GCC์์ ์ฌ์ฉํ๋ ๋ง์ปค๋ ๋ค์์ ์ฌ์ฉํ์ฌ ์ธ์ํ ์ ์์ต๋๋ค.
์ด๋ `gcc -์ธ์ ํ๋ก๊ทธ๋จ ์ด๋ฆ=ld`. ์ด ์ต์ ์ 64๋นํธ HP-UX์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
GCC, ์ฆ ๋ค์์ผ๋ก ๊ตฌ์ฑ๋ hppa*64*-*-hpux*.
-mlong-ํตํ
๊ธด ํธ์ถ ์ํ์ค๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํตํ๊ฐ ํญ์ ๊ฐ๋ฅํฉ๋๋ค.
๋ง์ปค ์์ฑ ์คํ ์ ๋๋ฌํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ๋ค์ ๊ฒฝ์ฐ์๋ง ๊ธด ํธ์ถ์ ์์ฑํ๋ ๊ฒ์ ๋๋ค.
ํธ์ถ ์ฌ์ดํธ์์ ํจ์ ๋๋ ๋ฒ์ญ ๋จ์์ ์์ ๋ถ๋ถ๊น์ง์ ๊ฑฐ๋ฆฌ,
์ด ๊ฒฝ์ฐ ์ฌ์ฉ ์ค์ธ ๋ถ๊ธฐ ์ ํ์ ์ํด ์ค์ ๋ ๋ฏธ๋ฆฌ ์ ์๋ ์ ํ์ ์ด๊ณผํ ์ ์์ต๋๋ค. NS
์ผ๋ฐ ํธ์ถ์ ๋ํ ์ ํ์ PA 7,600,000์ ๋ํด ๊ฐ๊ฐ 240,000 ๋ฐ 2.0๋ฐ์ดํธ์ ๋๋ค.
๋ฐ PA 1.X ์ํคํ ์ฒ. Sibcall์ ํญ์ 240,000๋ฐ์ดํธ๋ก ์ ํ๋ฉ๋๋ค.
๊ฑฐ๋ฆฌ๋ ์ฌ์ฉํ ๋ ํจ์์ ์์ ๋ถ๋ถ์์ ์ธก์ ๋ฉ๋๋ค.
-ffunction-์น์ ์ต์ ์ ์ฌ์ฉํ๊ฑฐ๋ - ๊ฐ์ค and -mno-ํด๋์ฉ-๋ฐํ์ ์ต์
HP-UX์์ SOM ๋ง์ปค์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋๋ฏ๋ก ๋ฐ๋์งํ์ง ์์ต๋๋ค. ํ์ง๋ง,
ํนํ ๋ถ๋ถ ์ฐ๊ฒฐ์ ์ฌ์ฉํ์ฌ ๋๊ท๋ชจ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ฉํ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํฉ๋๋ค.
์ฌ์ฉ๋๋ ๊ธด ํธ์ถ์ ์ ํ์ ์ด์ ๋ธ๋ฌ์ ๋ง์ปค์ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์์ฑ๋๋ ์ฝ๋์ ์ ํ. ๊ธด ์๊ฐ์ ์ง์ํ๋ ์์คํ ์ ๋ฏธ์น๋ ์ํฅ
์ ๋ ํธ์ถ ๋ฐ ๊ธด ๊ทธ๋ฆผ ๊ธฐํธ ์ฐจ์ด ๋๋ PC ์๋ ํธ์ถ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
์๋์ ์ผ๋ก ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ ํธ์ถ์ pic ์ฝ๋์ 32๋นํธ ELF ์์คํ ์์ ์ฌ์ฉ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฝค ๊น๋๋ค.
-๋ฎค๋์ค=์ ๋์ค ํ์ค
์ปดํ์ผ๋ฌ ์์ฑ์ ์ง์ ๋ UNIX ํ์ค์ ๋ํ ์์ ํ์ผ์ ๋ฏธ๋ฆฌ ์ ์ํ๊ณ ์ ํํฉ๋๋ค.
์ ๋ํ ์ ํ ์ ๋์ค ํ์ค are 93, 95 and 98. 93 ๋ชจ๋ HP-UX ๋ฒ์ ์์ ์ง์๋ฉ๋๋ค.
95 HP-UX 10.10 ์ด์์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. 98 HP-UX 11.11 ์ด์์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ์ 93 HP-UX 10.00์ ๊ฒฝ์ฐ 95 HP-UX 10.10 ~ 11.00์ ๊ฒฝ์ฐ 98
HP-UX 11.11 ์ด์์ฉ.
-๋ฎค๋์ค=93 GCC 3.3 ๋ฐ 3.4์ ๋์ผํ ์ฌ์ ์ ์๋ฅผ ์ ๊ณตํฉ๋๋ค. -๋ฎค๋์ค=95 ์ ๊ณต
"XOPEN_UNIX" ๋ฐ "_XOPEN_SOURCE_EXTENDED"์ ๋ํ ์ถ๊ฐ ์ฌ์ ์ ์ ๋ฐ ์์ ํ์ผ
์ ๋์ค95.o. -๋ฎค๋์ค=98 "_XOPEN_UNIX"์ ๋ํ ์ถ๊ฐ ์ฌ์ ์ ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
"_XOPEN_SOURCE_EXTENDED", "_INCLUDE__STDC_A1_SOURCE" ๋ฐ "_INCLUDE_XOPEN_SOURCE_500",
๊ทธ๋ฆฌ๊ณ ์์ ํ์ผ ์ ๋์ค98.o.
๊ทธ๊ฒ์ ์ค๋ํ ์ด ์ต์ ์ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ธํฐํ์ด์ค๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
๋ฃจํด. ๋ํ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ ๋์์๋ ์ํฅ์ ์ค๋๋ค. ๋ฐ๋ผ์, ๊ทน๋จ
์ด ์ต์ ์ ์ฌ์ฉํ ๋๋ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
๋ ์ด์์ UNIX ํ์ค์์ ์๋ํ๋๋ก ์๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ ํ ์คํธํด์ผ ํฉ๋๋ค.
๋ณ์ ์ค์ ๋ฐ ๋ณต์ __xpg4_extended_mask ์ ์ ํ. ๋๋ถ๋ถ์ GNU ์ํํธ์จ์ด
์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
-nolibdld
libdld.sl์ ๊ฒ์ํ๊ธฐ ์ํ ๋งํฌ ์ต์ ์ ์์ฑ์ ์ต์ ํฉ๋๋ค. -๊ณต์ ์ต์ ์
HP-UX 10 ์ด์์์ ์ง์ ๋ฉ๋๋ค.
-๊ณต์
libc์์ setlocale์ HP-UX ๊ตฌํ์ libdld.sl์ ์ข ์๋ฉ๋๋ค. ๊ฑฐ๊ธฐ
libdld.sl์ ์์นด์ด๋ธ ๋ฒ์ ์ด ์๋๋๋ค. ๋ฐ๋ผ์, ์ธ์ -๊ณต์ ์ต์ ์ด ์ง์ ๋๊ณ ,
์ด ์ข ์์ฑ์ ํด๊ฒฐํ๋ ค๋ฉด ํน์ ๋งํฌ ์ต์ ์ด ํ์ํฉ๋๋ค.
HP-UX 10 ์ด์์์ GCC ๋๋ผ์ด๋ฒ๋ ๋ค์๊ณผ ์ฐ๊ฒฐํ๋ ๋ฐ ํ์ํ ์ต์ ์ ์ถ๊ฐํฉ๋๋ค.
libdld.sl์ด -๊ณต์ ์ต์ ์ด ์ง์ ๋ฉ๋๋ค. ์ด๋ก ์ธํด ๊ฒฐ๊ณผ ๋ฐ์ด๋๋ฆฌ๊ฐ
์ญ๋์ ์ด๋ค. 64๋นํธ ํฌํธ์์ ๋ง์ปค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.
์ด๋ค ๊ฒฝ์ฐ. NS -nolibdld ์ต์ ์ ์ฌ์ฉํ์ฌ GCC ๋๋ผ์ด๋ฒ๊ฐ ์ถ๊ฐํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋งํฌ ์ต์ .
- ์ค๋ ๋
๋ฉํฐ์ค๋ ๋ฉ ์ง์ ์ถ๊ฐ ๋์ ์ค HP-UX์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ์ด ์ต์
์ ์ฒ๋ฆฌ๊ธฐ์ ๋ง์ปค ๋ชจ๋์ ๋ํ ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
์ธํ 386 and AMD x86-64 ์ต์
Bowman์ -m ์ต์ ์ i386 ๋ฐ x86-64 ์ปดํจํฐ ์ ํ๊ตฐ์ ๋ํด ์ ์๋ฉ๋๋ค.
-ํ์ง=CPU ์ ํ
๋จธ์ ์ ํ์ ๋ํ ์ง์นจ ์์ฑ CPU ์ ํ. ๋์กฐ์ ์ผ๋ก -mtune=CPU ์ ํ,
์์ฑ๋ ์ฝ๋๋ฅผ ์ง์ ๋ CPU ์ ํ, -ํ์ง=CPU ์ ํ
GCC๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์์์ ์ ํ ์คํ๋์ง ์์ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ํฉ๋๋ค.
๊ฐ๋ฆฌํค๋. ์ง์ -ํ์ง=CPU ์ ํ ์๋ฏธํ๋ค -mtune=CPU ์ ํ.
์ ๋ํ ์ ํ CPU ์ ํ ์์น :
์ถ์
์ด๊ฒ์ ๋ค์์ ๊ฒฐ์ ํ์ฌ ์ปดํ์ผ ์๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ CPU๋ฅผ ์ ํํฉ๋๋ค.
์ปดํ์ผ ๋จธ์ ์ ํ๋ก์ธ์ ์ ํ. ์ฌ์ฉ -march = ๋ค์ดํฐ๋ธ ๋ชจ๋ ํ์ฑํ
๋ก์ปฌ ๋จธ์ ์์ ์ง์ํ๋ ๋ช ๋ น์ด ํ์ ์งํฉ(๋ฐ๋ผ์ ๊ฒฐ๊ณผ๊ฐ ์คํ๋์ง ์์ ์ ์์)
๋ค๋ฅธ ๊ธฐ๊ณ์์). ์ฌ์ฉ -mtune=๋ค์ดํฐ๋ธ ๋ก์ปฌ์ ์ต์ ํ๋ ์ฝ๋ ์์ฑ
์ ํ๋ ๋ช ๋ น์ด ์ธํธ์ ์ ์ฝ ํ์์ ๊ธฐ๊ณ.
i386
์ค๋ฆฌ์ง๋ ์ธํ i386 CPU.
i486
์ธํ i486 CPU. (์ด ์นฉ์๋ ์ค์ผ์ค๋ง์ด ๊ตฌํ๋์ด ์์ง ์์ต๋๋ค.)
i586
ํํฐ์
MMX๋ฅผ ์ง์ํ์ง ์๋ Intel Pentium CPU.
ํํฐ์-mmx
Intel Pentium MMX CPU, MMX ๋ช ๋ น์ด ์ธํธ ์ง์์ด ์๋ Pentium ์ฝ์ด ๊ธฐ๋ฐ.
ํํฐ์ํ๋ก
์ธํ ํํฐ์ ํ๋ก CPU.
i686
ํจ๊ป ์ฌ์ฉํ ๋ -XNUMX ์, Pentium Pro ๋ช ๋ น์ด ์ธํธ๊ฐ ์ฌ์ฉ๋๋ฏ๋ก ์ฝ๋๊ฐ ์คํ๋ฉ๋๋ค.
๋ชจ๋ i686 ์ ํ๊ตฐ ์นฉ์์. ์ ํจ๊ป ์ฌ์ฉํ ๋ -mtune, ์ ๊ฐ์ ์๋ฏธ์ ๋๋ค.
์ผ๋ฐ์ ์ธ.
ํํฐ์
Intel Pentium II CPU, MMX ๋ช ๋ น์ด ์ธํธ ์ง์์ด ์๋ Pentium Pro ์ฝ์ด ๊ธฐ๋ฐ.
ํํฐ์
ํํฐ์3m
Intel Pentium III CPU, MMX ๋ฐ SSE ๋ช ๋ น์ด ์ธํธ๊ฐ ์๋ Pentium Pro ์ฝ์ด ๊ธฐ๋ฐ
์ง์ํฉ๋๋ค.
ํํฐ์-m
์ธํ ํํฐ์ M; MMX, SSE ๋ฐ SSE2๊ฐ ํฌํจ๋ Intel Pentium III CPU์ ์ ์ ๋ ฅ ๋ฒ์
๋ช ๋ น์ด ์ธํธ ์ง์. Centrino ๋ ธํธ๋ถ์์ ์ฌ์ฉํฉ๋๋ค.
ํํฐ์
ํํฐ์4m
MMX, SSE ๋ฐ SSE4 ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ง์ํ๋ Intel Pentium 2 CPU.
ํ๋ ์ค์ฝง
MMX, SSE, SSE4 ๋ฐ SSE2 ๋ช ๋ น์ด๊ฐ ํฌํจ๋ Intel Pentium 3 CPU์ ํฅ์๋ ๋ฒ์
์ง์์ ์ค์ ํฉ๋๋ค.
๋ ธ์ฝ๋
4๋นํธ ํ์ฅ, MMX, SSE, SSE64 ๋ฐ
SSE3 ๋ช ๋ น์ด ์ธํธ ์ง์.
core2
2๋นํธ ํ์ฅ์ด ์๋ Intel Core 64 CPU, MMX, SSE, SSE2, SSE3 ๋ฐ SSSE3
๋ช ๋ น์ด ์ธํธ ์ง์.
์ฝ์ด๋ฆฌ7
7๋นํธ ํ์ฅ์ด ์๋ Intel Core i64 CPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 ๋ฐ
SSE4.2 ๋ช ๋ น์ด ์ธํธ ์ง์.
corei7-avx
7๋นํธ ํ์ฅ ๊ธฐ๋ฅ์ด ์๋ Intel Core i64 CPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, AVX, AES ๋ฐ PCLMUL ๋ช ๋ น์ด ์ธํธ ์ง์.
์ฝ์ด AVX
64๋นํธ ํ์ฅ์ด ์๋ Intel Core CPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND ๋ฐ F16C ๋ช ๋ น์ด ์ธํธ ์ง์.
์ฝ์ด-avx2
64๋นํธ ํ์ฅ์ด ์๋ Intel Core CPU, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2 ๋ฐ F16C
๋ช ๋ น์ด ์ธํธ ์ง์.
์์
64๋นํธ ํ์ฅ์ด ์๋ Intel Atom CPU, MOVBE, MMX, SSE, SSE2, SSE3 ๋ฐ SSSE3
๋ช ๋ น์ด ์ธํธ ์ง์.
k6 MMX ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ง์ํ๋ AMD K6 CPU.
k6-2
k6-3
MMX ๋ฐ 6DNow!๊ฐ ํฌํจ๋ AMD K3 CPU์ ํฅ์๋ ๋ฒ์ ! ๋ช ๋ น์ด ์ธํธ ์ง์.
์ ์๋ก
์ ์ฌ๋ก ํธ๋ฒ๋
MMX๊ฐ ํ์ฌ๋ AMD Athlon CPU, 3dNOW!, ํฅ์๋ 3DNow! ๋ฐ SSE ํ๋ฆฌํ์น ๋ช ๋ น์ด
์ง์ํฉ๋๋ค.
์ ์ฌ๋ก -4
์ ์ฌ๋ก -xp
์ ์ฌ๋ก -mp
MMX, 3DNow!, ํฅ์๋ 3DNow!๊ฐ ํฌํจ๋ ํฅ์๋ AMD Athlon CPU ๋ฐ ์ ์ฒด SSE ๋ช ๋ น
์ง์์ ์ค์ ํฉ๋๋ค.
k8
์ตํ ๋ก
์ ์ฌ๋ก 64
์ ์ฌ๋ก -FX
๋ค์์ ํฌํจํ์ฌ x8-86 ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ง์ํ๋ AMD K64 ์ฝ์ด ๊ธฐ๋ฐ ํ๋ก์ธ์
AMD Opteron, Athlon 64 ๋ฐ Athlon 64 FX ํ๋ก์ธ์. (์ด๊ฒ์ MMX๋ฅผ ๋์ฒดํฉ๋๋ค.
SSE, SSE2, 3DNow!, ํฅ์๋ 3DNow! ๋ฐ 64๋นํธ ๋ช ๋ น์ด ์ธํธ ํ์ฅ.)
k8-sse3
์ตํ ๋ก -sse3
์ ์ฌ๋ก 64-sse3
SSE8 ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ง์ํ๋ ํฅ์๋ ๋ฒ์ ์ AMD K3 ์ฝ์ด.
์๋ํ10
๋ฐ๋ฅด์ ๋ก๋
x10-86 ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ง์ํ๋ AMD ์ ํ๊ตฐ 64h ์ฝ์ด ๊ธฐ๋ฐ CPU. (์ด๊ฒ
MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, ํฅ์๋ 3DNow!, ABM ๋ฐ 64๋นํธ ์ํผ์ธํธ
๋ช ๋ น์ด ์ธํธ ํ์ฅ)
bdver1
x15-86 ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ง์ํ๋ AMD ์ ํ๊ตฐ 64h ์ฝ์ด ๊ธฐ๋ฐ CPU. (์ด๊ฒ
์์ ์งํฉ FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A,
SSSE3, SSE4.1, SSE4.2, ABM ๋ฐ 64๋นํธ ๋ช ๋ น์ด ์ธํธ ํ์ฅ)
bdver2
x15-86 ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ง์ํ๋ AMD ์ ํ๊ตฐ 64h ์ฝ์ด ๊ธฐ๋ฐ CPU. (์ด๊ฒ
์ํผ์ธํธ BMI, TBM, F16C, FMA, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2,
SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM ๋ฐ 64๋นํธ ๋ช ๋ น์ด ์ธํธ ํ์ฅ)
bdver3
x15-86 ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ง์ํ๋ AMD ์ ํ๊ตฐ 64h ์ฝ์ด ๊ธฐ๋ฐ CPU. (์ด๊ฒ
์ํผ์ธํธ BMI, TBM, F16C, FMA, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2,
SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM ๋ฐ 64๋นํธ ๋ช ๋ น์ด ์ธํธ ํ์ฅ.
btver1
x14-86 ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ง์ํ๋ AMD ์ ํ๊ตฐ 64h ์ฝ์ด ๊ธฐ๋ฐ CPU. (์ด๊ฒ
์์ ์งํฉ MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM ๋ฐ 64๋นํธ ๋ช ๋ น์ด ์ธํธ
ํ์ฅ์.)
btver2
x16-86 ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ง์ํ๋ AMD ์ ํ๊ตฐ 64h ์ฝ์ด ๊ธฐ๋ฐ CPU. ์ด๊ฒ
MOVBE, F16C, BMI, AVX, PCL_MUL, AES, SSE4.2, SSE4.1, CX16, ABM, SSE4A,
SSSE3, SSE3, SSE2, SSE, MMX ๋ฐ 64๋นํธ ๋ช ๋ น์ด ์ธํธ ํ์ฅ.
์์นฉ-c6
IDT WinChip C6 CPU, ์ถ๊ฐ MMX ๋ช ๋ น์ด ์ธํธ๋ก i486๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ
์ง์ํฉ๋๋ค.
์์นฉ2
IDT WinChip 2 CPU, ์ถ๊ฐ MMX ๋ฐ 486DNow!
๋ช ๋ น์ด ์ธํธ ์ง์.
c3 MMX ๋ฐ 3DNow๊ฐ ์๋ VIA C3 CPU! ๋ช ๋ น์ด ์ธํธ ์ง์. (์ผ์ ์ด ์์ต๋๋ค.
์ด ์นฉ์ ๋ํด ๊ตฌํ๋์์ต๋๋ค.)
c3 - 2
VIA C3-2(Nehemiah/C5XL) CPU์ MMX ๋ฐ SSE ๋ช ๋ น์ด ์ธํธ ์ง์. (์๋์
์ค์ผ์ค๋ง์ ์ด ์นฉ์ ๋ํด ๊ตฌํ๋ฉ๋๋ค.)
์ง ์ค๋
MMX ๋ฐ 3DNow!๊ฐ ํ์ฌ๋ AMD Geode ์๋ฒ ๋๋ ํ๋ก์ธ์! ๋ช ๋ น์ด ์ธํธ ์ง์.
-mtune=CPU ์ ํ
ํ๋ CPU ์ ํ ABI๋ฅผ ์ ์ธํ๊ณ ์์ฑ๋ ์ฝ๋์ ์ ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒ
์ฌ์ฉ ๊ฐ๋ฅํ ์ง์นจ ์ธํธ. ํน์ ํญ๋ชฉ์ ์ ํํ๋ฉด์ CPU ์ ํ ์ผ์
ํน์ ์นฉ์ ์ ์ ํ๊ฒ ์ ์ฉ๋๋ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๋ ์ฝ๋๋ฅผ ์์ฑํ์ง ์์ต๋๋ค.
๋ค์์ ์ฌ์ฉํ์ง ์๋ ํ ๊ธฐ๋ณธ ๋จธ์ ์ ํ์์ ์คํํ ์ ์์ต๋๋ค. -ํ์ง=CPU ์ ํ ์ต์ ์ ์ ํํฉ๋๋ค.
์๋ฅผ ๋ค์ด, GCC๊ฐ i686-pc-linux-gnu์ ๋ํด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ -mtune=ํํฐ์4 ์์ฑ
Pentium 4์ ๋ง๊ฒ ์กฐ์ ๋์์ง๋ง ์ฌ์ ํ i686 ์์คํ ์์ ์คํ๋๋ ์ฝ๋์ ๋๋ค.
์ ๋ํ ์ ํ CPU ์ ํ ์ ๋์ผํ๋ค -XNUMX ์. ๊ฒ๋ค๊ฐ, -mtune ์ง์ํฉ๋๋ค
์ถ๊ฐ ์ ํ CPU ์ ํ:
์ผ๋ฐ์ ์ธ
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ IA32/AMD64/EM64T ํ๋ก์ธ์์ ์ต์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๋ง์ฝ ๋๋ผ๋ฉด
์ฝ๋๊ฐ ์คํ๋ CPU๋ฅผ ์๊ณ ์์ผ๋ฉด ํด๋นํ๋
-mtune or -XNUMX ์ ์ต์ ๋์ -mtune=์ผ๋ฐ. ํ์ง๋ง ํน์ ๋ชจ๋ฅด๋
์ ํ๋ฆฌ์ผ์ด์ ์ CPU ์ฌ์ฉ์๊ฐ ๊ฐ๊ฒ ๋ CPU๊ฐ ์ ํํ ๋ฌด์์ธ์ง ํ์ธํ๋ ค๋ฉด ์ด๊ฒ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ต์ ์ ์ ํํฉ๋๋ค.
์๋ก์ด ํ๋ก์ธ์๊ฐ ์์ฅ์ ๋ฐฐํฌ๋จ์ ๋ฐ๋ผ ์ด ์ต์ ์ ๋์์
๋ฐ๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ต์ ๋ฒ์ ์ GCC๋ก ์ ๊ทธ๋ ์ด๋ํ๋ฉด ์ฝ๋ ์์ฑ
์ด ์ต์ ์ผ๋ก ์ ์ด๋๋ ํ๋ก์ธ์๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํ๋ก์ธ์๋ฅผ ๋ฐ์ํ๋๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
ํด๋น ๋ฒ์ ์ GCC๊ฐ ๋ฆด๋ฆฌ์ค๋ ๋ ์ผ๋ฐ์ ์ ๋๋ค.
์๋ค. -march=์ผ๋ฐ ์ต์ ๋๋ฌธ์ -XNUMX ์ ๋ช ๋ น์ด ์ธํธ๋ฅผ ๋ํ๋ ๋๋ค.
์ปดํ์ผ๋ฌ๊ฐ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ชจ๋ ํญ๋ชฉ์ ์ ์ฉํ ์ ์๋ ์ผ๋ฐ ๋ช ๋ น ์งํฉ์ด ์์ต๋๋ค.
ํ๋ก์ธ์. ๋์กฐ์ ์ผ๋ก, -mtune ํ๋ก์ธ์๋ฅผ ๋ํ๋ ๋๋ค(๋๋ ์ด ๊ฒฝ์ฐ
์ฝ๋๊ฐ ์ต์ ํ๋ ํ๋ก์ธ์ ๋ชจ์).
-mcpu =CPU ์ ํ
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋์์ด -mtune.
-mfpmath=๋จ์
์ ํํ ๋จ์์ ๋ํ ๋ถ๋ ์์์ ์ฐ์ ์์ฑ ๋จ์. ์ ๋ํ ์ ํ ๋จ์ ์์น :
387 ๋๋ถ๋ถ์ ์นฉ์ ์๋ ํ์ค 387 ๋ถ๋ ์์์ ๋ณด์กฐ ํ๋ก์ธ์ ์ฌ์ฉ
๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ฎฌ๋ ์ดํธ๋ฉ๋๋ค. ์ด ์ต์ ์ผ๋ก ์ปดํ์ผ๋ ์ฝ๋๋ ๊ฑฐ์ ๋ชจ๋ ๊ณณ์์ ์คํ๋ฉ๋๋ค.
์์ ๊ฒฐ๊ณผ๋ ์ ๋ฐ๋ ๋์ 80๋นํธ ์ ๋ฐ๋๋ก ๊ณ์ฐ๋ฉ๋๋ค.
์ ํ๋ณ๋ก ์ง์ ๋์ด ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ ์ฝ๊ฐ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ฉ๋๋ค.
๋ค๋ฅธ ์นฉ. ๋ณด๋ค -fffloat-store ๋ ์์ธํ ์ค๋ช ์ ์ํด.
์ด๊ฒ์ i386 ์ปดํ์ผ๋ฌ์ ๊ธฐ๋ณธ ์ ํ์ ๋๋ค.
ESS SSE ๋ช ๋ น์ด ์ธํธ์ ์๋ ์ค์นผ๋ผ ๋ถ๋ ์์์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ
๋ช ๋ น ์ธํธ๋ Pentium III ๋ฐ ์ต์ ์นฉ๊ณผ AMD ๋ผ์ธ์์ ์ง์๋ฉ๋๋ค.
Athlon-4, Athlon XP ๋ฐ Athlon MP ์นฉ์ ์ํด. SSE์ ์ด์ ๋ฒ์
๋ช ๋ น์ด ์ธํธ๋ ๋จ์ ๋ฐ๋ ์ฐ์ ๋ง ์ง์ํ๋ฏ๋ก ์ด์ค ๋ฐ
ํ์ฅ ์ ๋ฐ๋ ์ฐ์ ์ ์ฌ์ ํ โโ387์ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. ์ดํ ๋ฒ์ , ํ์ฌ
Pentium 4 ๋ฐ AMD x86-64 ์นฉ์์๋ง ๋ฐฐ์ ๋ฐ๋ ์ฐ์ ๋ ์ง์ํฉ๋๋ค.
i386 ์ปดํ์ผ๋ฌ์ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. -ํ์ง=CPU ์ ํ, -msse or -msse2. ๋ก ์ ํ
SSE ํ์ฅ์ ํ์ฑํํ๊ณ ์ด ์ต์ ์ ์ ํจํ๊ฒ ๋ง๋์ญ์์ค. x86-64 ์ปดํ์ผ๋ฌ์ ๊ฒฝ์ฐ,
์ด๋ฌํ ํ์ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
๊ฒฐ๊ณผ ์ฝ๋๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์๋นํ ๋นจ๋ผ์ผ ํ๋ฉฐ
387 ์ฝ๋์ ์์น์ ๋ถ์์ ์ฑ ๋ฌธ์ ๋ฅผ ํผํ์ง๋ง ์ผ๋ถ ๊ธฐ์กด ์ฝ๋๋ฅผ ๊นจ๋จ๋ฆด ์ ์์ต๋๋ค.
์์๊ฐ 80๋นํธ์ผ ๊ฒ์ผ๋ก ์์ํ๋ ์ฝ๋์ ๋๋ค.
์ด๊ฒ์ x86-64 ์ปดํ์ผ๋ฌ์ ๊ธฐ๋ณธ ์ ํ์ ๋๋ค.
์,387
์+387
๋
ํ ๋ฒ์ ๋ ๋ช ๋ น์ด ์ธํธ๋ฅผ ๋ชจ๋ ํ์ฉํ์ญ์์ค. ์ด๊ฒ์ ํจ๊ณผ์ ์ผ๋ก ๋ ๋ฐฐ
์ฌ์ฉ ๊ฐ๋ฅํ ๋ ์ง์คํฐ์ ์ ๋ฐ 387์ ์ํ ๋ณ๋์ ์คํ ๋จ์๊ฐ ์๋ ์นฉ
์คํ ์์๋ SSEํฉ๋๋ค. ์ด ์ต์ ์ ์์ง ์ฌ์ฉ ์ค์ด๋ฏ๋ก ์ฃผ์ํด์ ์ฌ์ฉํ์ญ์์ค.
GCC ๋ ์ง์คํฐ ํ ๋น์๊ฐ ๋ณ๋๋ก ๋ชจ๋ธ๋งํ์ง ์๊ธฐ ๋๋ฌธ์ ์คํ์
๊ธฐ๋ฅ ๋จ์๊ฐ ์ ์๋ํ์ง ์์ ์ฑ๋ฅ์ด ๋ถ์์ ํฉ๋๋ค.
-๋งค์ฆ=๋ฐฉ์ธ
์ ํ ํญ๋ชฉ์ ์ฌ์ฉํ์ฌ ์กฐ๋ฆฝ ์ง์นจ ์ถ๋ ฅ ๋ฐฉ์ธ. ์ง์๋๋ ์ ํ ์ฌํญ์ ์ ๋ณด or
์ (๊ธฐ๋ณธ๊ฐ). ๋ค์์ ์ง์ํ์ง ์์ต๋๋ค ์ ๋ณด.
-mieee-fp
-mno-ieee-fp
์ปดํ์ผ๋ฌ๊ฐ IEEE ๋ถ๋ ์์์ ๋น๊ต๋ฅผ ์ฌ์ฉํ๋์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค. ์ด๊ฒ๋ค
๋น๊ต ๊ฒฐ๊ณผ๊ฐ ์ ๋ ฌ๋์ง ์์ ๊ฒฝ์ฐ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ญ์์ค.
-msoft-float
๋ถ๋ ์์์ ์ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ์ด ํฌํจ๋ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค.
๊ฒฝ๊ณ : ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ GCC์ ์ผ๋ถ๊ฐ ์๋๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์ค์
๋จธ์ ์ ์ผ๋ฐ์ ์ธ C ์ปดํ์ผ๋ฌ๊ฐ ์ฌ์ฉ๋์ง๋ง ์ด๊ฒ์ ํฌ๋ก์ค ํฌ๋ก์ค์์ ์ง์ ์ํ๋ ์ ์์ต๋๋ค.
ํธ์ง. ์ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ค์ค๋ก ์ค๋นํด์ผ ํฉ๋๋ค.
ํฌ๋ก์ค ์ปดํ์ผ์ ์ํ ํจ์
ํจ์๊ฐ 80387 ๋ ์ง์คํฐ์์ ๋ถ๋ ์์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ์์คํ ์์
์คํ, ๊ฒฝ์ฐ์๋ ์ผ๋ถ ๋ถ๋ ์์์ ์ฐ์ฐ ์ฝ๋๊ฐ ๋ฐฉ์ถ๋ ์ ์์ต๋๋ค. -msoft-float ์ฌ์ฉ.
-mno-fp-ret-in-387
ํจ์์ ๋ฐํ ๊ฐ์ FPU ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
์ผ๋ฐ์ ์ธ ํธ์ถ ๊ท์น์๋ "float" ๋ฐ "double" ์ ํ์ ๊ฐ์ ๋ฐํํ๋ ํจ์๊ฐ ์์ต๋๋ค.
FPU๊ฐ ์๋๋ผ๋ FPU ๋ ์ง์คํฐ์ ์์ต๋๋ค. ์์ด๋์ด๋ ์ด์ ์ฒด์
FPU๋ฅผ ์๋ฎฌ๋ ์ดํธํด์ผ ํฉ๋๋ค.
์ต์ -mno-fp-ret-in-387 ์ด๋ฌํ ๊ฐ์ด ์ผ๋ฐ CPU์์ ๋ฐํ๋๋๋ก ํฉ๋๋ค.
๋์ ๋ฑ๋กํฉ๋๋ค.
-mno-ํฌ์-์ํ-387
์ผ๋ถ 387 ์๋ฎฌ๋ ์ดํฐ๋ "sin", "cos" ๋ฐ "sqrt" ๋ช ๋ น์ด๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
387. ์ด๋ฌํ ๋ช ๋ น์ ์์ฑํ์ง ์์ผ๋ ค๋ฉด ์ด ์ต์ ์ ์ง์ ํ์ญ์์ค. ์ด ์ต์ ์
FreeBSD, OpenBSD ๋ฐ NetBSD์์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ฌด์๋ฉ๋๋ค. -XNUMX ์
๋์ CPU์๋ ํญ์ FPU๊ฐ ์์ผ๋ฏ๋ก ๋ช ๋ น์ด ํ์ํ์ง ์์์ ๋ํ๋ ๋๋ค.
์๋ฎฌ๋ ์ด์ . ์ด ์ง์นจ์ ๋ํ ์ฌ์ฉํ์ง ์๋ ํ ์์ฑ๋์ง ์์ต๋๋ค.
-์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ ์ค์์น.
-์ ์ฑ-๋๋ธ
-mno-์ ๋ ฌ-๋๋ธ
GCC๊ฐ "double", "long double" ๋ฐ "long long" ๋ณ์๋ฅผ ์ ๋ ฌํ ์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค.
๋ ๋จ์ด ๊ฒฝ๊ณ ๋๋ ํ ๋จ์ด ๊ฒฝ๊ณ. ๋ ๋จ์ด๋ก ๋ "์ด์ค" ๋ณ์ ์ ๋ ฌ
๊ฒฝ๊ณ๋ ๋ ๋ง์ ๋น์ฉ์ ๋ค์ด๊ณ Pentium์์ ๋ค์ ๋น ๋ฅด๊ฒ ์คํ๋๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ.
x86-64์์, -์ ์ฑ-๋๋ธ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
๊ฒฝ๊ณ : ๋น์ ์ด -์ ์ฑ-๋๋ธ ์ค์์น, ์์ ์ ํ์ ํฌํจํ๋ ๊ตฌ์กฐ
๊ฒ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ด๋๋ฆฌ ์ธํฐํ์ด์ค ์ฌ์๊ณผ ๋ค๋ฅด๊ฒ ์ ๋ ฌ๋จ
386์ ๊ฒฝ์ฐ ์ด์ง๋ฒ ์์ด ์ปดํ์ผ๋ ์ฝ๋์ ๊ตฌ์กฐ์ ํธํ๋์ง ์์ต๋๋ค.
๊ทธ ์ค์์น.
-m96bit-๋กฑ-๋๋ธ
-m128bit-๋กฑ-๋๋ธ
์ด ์ค์์น๋ "๋กฑ ๋๋ธ" ์ ํ์ ํฌ๊ธฐ๋ฅผ ์ ์ดํฉ๋๋ค. i386 ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ด๋๋ฆฌ
์ธํฐํ์ด์ค๋ ํฌ๊ธฐ๋ฅผ 96๋นํธ๋ก ์ง์ ํ๋ฏ๋ก -m96bit-๋กฑ-๋๋ธ ์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
32๋นํธ ๋ชจ๋.
ํ๋ ์ํคํ ์ฒ(ํํฐ์ ์ด์)๋ 8-์ ๋ง์ถฐ "๊ธด ์ด์ค"์ ์ ํธํฉ๋๋ค.
๋๋ 16๋ฐ์ดํธ ๊ฒฝ๊ณ. ABI๋ฅผ ์ค์ํ๋ ๋ฐฐ์ด์ด๋ ๊ตฌ์กฐ์์ ์ด๊ฒ์
๊ฐ๋ฅํ. ๊ทธ๋์ ์ง์ -m128bit-๋กฑ-๋๋ธ "long double"์ 16๋ฐ์ดํธ๋ก ์ ๋ ฌํฉ๋๋ค.
์ถ๊ฐ 32๋นํธ XNUMX์ผ๋ก "long double"์ ํจ๋ฉํ์ฌ ๊ฒฝ๊ณ.
x86-64 ์ปดํ์ผ๋ฌ์์, -m128bit-๋กฑ-๋๋ธ ABI๋ก ๊ธฐ๋ณธ ์ ํ ์ฌํญ์ ๋๋ค.
"long double"์ด 16๋ฐ์ดํธ ๊ฒฝ๊ณ์ ์ ๋ ฌ๋๋๋ก ์ง์ ํฉ๋๋ค.
์ด๋ฌํ ์ต์ ์ค ์ด๋ ๊ฒ๋ x87 ํ์ค๋ณด๋ค ๋ ๋์ ์ ๋ฐ๋๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ง ์์ต๋๋ค.
"long double"์ ๊ฒฝ์ฐ 80๋นํธ์ ๋๋ค.
๊ฒฝ๊ณ : ๋์ ABI์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ๋ฉด ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค.
"long double" ๋ณ์๋ฅผ ํฌํจํ๋ ๊ตฌ์กฐ ๋ฐ ๋ฐฐ์ด ๋ฐ ์์
"long double"์ ์ทจํ๋ ํจ์์ ๋ํ ํจ์ ํธ์ถ ๊ท์น. ๊ทธ๋ฌ๋ฏ๋ก ๊ทธ๋ค์ ์๋๋ค
ํด๋น ์ค์์น ์์ด ์ปดํ์ผ๋ ์ฝ๋์ ๋ฐ์ด๋๋ฆฌ ํธํ ๊ฐ๋ฅํฉ๋๋ค.
-mlong-๋๋ธ-64
-mlong-๋๋ธ-80
์ด ์ค์์น๋ "๋กฑ ๋๋ธ" ์ ํ์ ํฌ๊ธฐ๋ฅผ ์ ์ดํฉ๋๋ค. 64๋นํธ์ ํฌ๊ธฐ๋
"long double" ์ ํ์ "double" ์ ํ์ ํด๋นํฉ๋๋ค. ์ด๊ฒ์ Bionic C์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๋์๊ด.
๊ฒฝ๊ณ : ๋์ ABI์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ๋ฉด ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค.
"long double" ๋ณ์๋ฅผ ํฌํจํ๋ ๊ตฌ์กฐ ๋ฐ ๋ฐฐ์ด ๋ฐ ์์
"long double"์ ์ทจํ๋ ํจ์์ ๋ํ ํจ์ ํธ์ถ ๊ท์น. ๊ทธ๋ฌ๋ฏ๋ก ๊ทธ๋ค์ ์๋๋ค
ํด๋น ์ค์์น ์์ด ์ปดํ์ผ๋ ์ฝ๋์ ๋ฐ์ด๋๋ฆฌ ํธํ ๊ฐ๋ฅํฉ๋๋ค.
-mlarge-๋ฐ์ดํฐ-์๊ณ๊ฐ=์๊ณ๊ฐ
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -mcmodel=์ค๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ ๋ณด๋ค ํฐ ๋ฐ์ดํฐ ๊ฐ์ฒด ์๊ณ๊ฐ ๋ฐฐ์น๋๋ค
ํฐ ๋ฐ์ดํฐ ์น์ . ์ด ๊ฐ์ ์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๊ฐ์ฒด์์ ๋์ผํด์ผ ํฉ๋๋ค.
๋ฐ์ด๋๋ฆฌ์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 65535์ ๋๋ค.
-mrtd
๊ณ ์ ๋ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํจ์ ํธ์ถ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค.
"ret"์ ํจ๊ป ๋ฐํ๋๋ ์ธ์์ ์ ์ซ์" ๊ทธ๋ค์ ์ธ์๋ฅผ ํํ๋ ๋ช ๋ น
๋์์ค๋ ๋์. ์ด๊ฒ์ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ํธ์ถ์์๊ฒ ํ๋์ ๋ช ๋ น์ ์ ์ฅํฉ๋๋ค.
๊ฑฐ๊ธฐ์ ์ธ์๋ฅผ ํ๋๋ค.
๋ค์์ ์ฌ์ฉํ์ฌ ์ด ํธ์ถ ์ํ์ค๋ก ๊ฐ๋ณ ํจ์๊ฐ ํธ์ถ๋๋๋ก ์ง์ ํ ์ ์์ต๋๋ค.
ํจ์ ์์ฑ stdcall. ์ฌ์ ์ํ ์๋ ์์ต๋๋ค. -mrtd ์ต์ ์ ์ฌ์ฉํ์ฌ
๊ธฐ๋ฅ ์์ฑ cdecl.
๊ฒฝ๊ณ : ์ด ํธ์ถ ๊ท์น์ Unix์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ํธํ๋์ง ์์ต๋๋ค.
๋ฐ๋ผ์ Unix ์ปดํ์ผ๋ฌ๋ก ์ปดํ์ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ํ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ํจ์์ ๋ํด ํจ์ ํ๋กํ ํ์ ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
์ธ์์ ์("printf" ํฌํจ); ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ชป๋ ์ฝ๋๊ฐ ์์ฑ๋ฉ๋๋ค.
ํด๋น ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
๋ํ ๋๋ฌด ๋ง์ ํจ์๋ฅผ ํธ์ถํ๋ฉด ์ฌ๊ฐํ๊ฒ ์๋ชป๋ ์ฝ๋๊ฐ ๋ฐ์ํฉ๋๋ค.
์ธ์. (์ผ๋ฐ์ ์ผ๋ก ์ถ๊ฐ ์ธ์๋ ๋ฌดํดํ๊ฒ ๋ฌด์๋ฉ๋๋ค.)
-mregparm=NUM
์ ์ ์ธ์๋ฅผ ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ ์ง์คํฐ ์๋ฅผ ์ ์ดํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก
๋ ์ง์คํฐ๋ ์ธ์๋ฅผ ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ ์ต๋ 3๊ฐ์ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋น์ ์ ํ ์ ์์ต๋๋ค
function ์์ฑ์ ์ฌ์ฉํ์ฌ ํน์ ๊ธฐ๋ฅ์ ๋ํ ์ด ๋์์ ์ ์ดํฉ๋๋ค. ๋ ๊ทธํ.
๊ฒฝ๊ณ : ์ด ์ค์์น๋ฅผ ์ฌ์ฉํ๋ฉด NUM XNUMX์ด ์๋๋ฉด ๋ชจ๋ ๋ชจ๋์ ๋น๋ํด์ผ ํฉ๋๋ค.
๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ์ฌ ๋์ผํ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ
์์ ๋ชจ๋.
-msseregparm
float ๋ฐ double ์ธ์ ๋ฐ ๋ฐํ ๊ฐ์ ๋ํด SSE ๋ ์ง์คํฐ ์ ๋ฌ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค.
function ์์ฑ์ ์ฌ์ฉํ์ฌ ํน์ ํจ์์ ๋ํ ์ด ๋์์ ์ ์ดํ ์ ์์ต๋๋ค.
์ธ๋ ๊ทธํ.
๊ฒฝ๊ณ : ์ด ์ค์์น๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋ชจ๋์ ๋์ผํ ๊ฐ์ผ๋ก ๋น๋ํด์ผ ํฉ๋๋ค.
๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ ๋ชจ๋์ด ํฌํจ๋ฉ๋๋ค.
-mvect8-ret-in-mem
MMX ๋ ์ง์คํฐ ๋์ ๋ฉ๋ชจ๋ฆฌ์ 8๋ฐ์ดํธ ๋ฒกํฐ๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ ์ค์ ์ ๋๋ค.
Solaris@tie{}8, 9 ๋ฐ VxWorks๊ฐ Sun Studio ์ปดํ์ผ๋ฌ์ ABI์ ์ผ์นํ ๋๊น์ง
๋ฒ์ 12. ์ดํ ์ปดํ์ผ๋ฌ ๋ฒ์ (Studio 12 Update@tie{}1๋ถํฐ ์์)์ ๋ค์์ ๋ฐ๋ฆ ๋๋ค.
Solaris@tie{}86 โโ์ด์์์ ๊ธฐ๋ณธ๊ฐ์ธ ๋ค๋ฅธ x10 ๋์์์ ์ฌ์ฉํ๋ ABI.
๋ง ์์ ์์ฑํ ๊ธฐ์กด ์ฝ๋์ ํธํ์ฑ์ ์ ์งํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ฌ์ฉํ์ญ์์ค.
์ด์ ์ปดํ์ผ๋ฌ ๋ฒ์ ๋๋ ์ด์ ๋ฒ์ ์ GCC.
-mpc32
-mpc64
-mpc80
80387 ๋ถ๋ ์์์ ์ ๋ฐ๋๋ฅผ 32, 64 ๋๋ 80๋นํธ๋ก ์ค์ ํฉ๋๋ค. ์ธ์ -mpc32 ์ง์ ๋๊ณ ,
๋ถ๋ ์์์ ์ฐ์ฐ ๊ฒฐ๊ณผ์ ์ ํจ ์ซ์๋ 24๋นํธ๋ก ๋ฐ์ฌ๋ฆผ๋ฉ๋๋ค.
(๋จ์ ๋ฐ๋); -mpc64 ๋ถ๋ ์์์ ๊ฒฐ๊ณผ์ ์ ํจ์ซ์๋ฅผ ๋ฐ์ฌ๋ฆผํฉ๋๋ค.
53๋นํธ๋ก ์ฐ์ฐ(๋ฐฐ์ ๋ฐ๋) ๋ฐ -mpc80 ๊ฒฐ๊ณผ์ ์ ํจ์ซ์๋ฅผ ๋ฐ์ฌ๋ฆผํฉ๋๋ค.
๋ถ๋ ์์์ ์ฐ์ฐ์ 64๋นํธ(ํ์ฅ ๋ฐฐ์ ๋ฐ๋)๋ก ๋ณํํฉ๋๋ค.
๊ธฐ๋ณธ. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ ๋์ ์ ๋ฐ๋์ ๋ถ๋ ์์์ ์ฐ์ฐ์ด
FPU ์ ์ด ๋จ์ด๋ฅผ ๋ช ์์ ์ผ๋ก ์ค์ ํ์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ถ๋ ์์์ ์ฐ์ฐ์ ๋ฐ์ฌ๋ฆผ์ ๊ธฐ๋ณธ 80๋นํธ ๋ฏธ๋ง์ผ๋ก ์ค์ ํ๋ฉด
์ผ๋ถ ํ๋ก๊ทธ๋จ์ ์๋๋ฅผ 2% ์ด์ ๋์ ๋๋ค. ์ผ๋ถ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ํฉ๋๋ค.
ํ์ฅ ์ ๋ฐ๋(80๋นํธ) ๋ถ๋ ์์์ ์ฐ์ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. ๋ฃจํด
์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ํตํด ์ ํ๋๊ฐ ํฌ๊ฒ ์์ค๋ ์ ์์ต๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์ ๋ฐ๋๋ฅผ
ํ์ฅ ์ ๋ฐ๋๋ณด๋ค ์์ต๋๋ค.
-mstack์ฌ์ ๋ ฌ
์ ๋ ฅ ์ ์คํ์ ๋ค์ ์ ๋ ฌํฉ๋๋ค. ์ธํ x86์์ -mstack์ฌ์ ๋ ฌ ์ต์ ์์ฑ
ํ์ํ ๊ฒฝ์ฐ ๋ฐํ์ ์คํ์ ์ฌ์ ๋ ฌํ๋ ๋์ฒด ํ๋กค๋ก๊ทธ ๋ฐ ์ํ๋ก๊ทธ. ์ด๊ฒ
์ต์ ์ฝ๋์ 4๋ฐ์ดํธ ์คํ ์ ๋ ฌ์ ์ ์งํ๋ ๋ ๊ฑฐ์ ์ฝ๋ ํผํฉ ์ง์
SSE ํธํ์ฑ์ ์ํด 16๋ฐ์ดํธ ์คํ ์ ๋ ฌ์ ์ ์งํฉ๋๋ค. ์์ฑ ์ฐธ์กฐ
"force_align_arg_pointer", ๊ฐ๋ณ ๊ธฐ๋ฅ์ ์ ์ฉ ๊ฐ๋ฅ.
-mpreferred-์คํ-๊ฒฝ๊ณ=NUM
์คํ ๊ฒฝ๊ณ๋ฅผ 2๋ก ์ฌ๋ฆฐ ์ํ๋ก ์ ์งํ๋ ค๊ณ ์๋ํฉ๋๋ค. NUM ๋ฐ์ดํธ ๊ฒฝ๊ณ. ๋ง์ฝ์
-์ฐ์ ์์-์คํ-๊ฒฝ๊ณ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ 4(16๋ฐ์ดํธ ๋๋ 128๋นํธ)์ ๋๋ค.
๊ฒฝ๊ณ : SSE ํ์ฅ์ ์ฌ์ฉํ์ฌ x86-64 ์ํคํ ์ฒ์ฉ ์ฝ๋๋ฅผ ์์ฑํ ๋
์ฅ์ ์ธ, -mpreferred-์คํ-๊ฒฝ๊ณ=3 ์คํ ๊ฒฝ๊ณ๋ฅผ ์ ๋ ฌ๋ ์ํ๋ก ์ ์งํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
8๋ฐ์ดํธ ๊ฒฝ๊ณ๊น์ง. x86-64 ABI๋ 16๋ฐ์ดํธ ์คํ ์ ๋ ฌ์ด ํ์ํ๋ฏ๋ก ์ด๊ฒ์ด ABI์ ๋๋ค.
ํธํ๋์ง ์์ผ๋ฉฐ ์คํ ๊ณต๊ฐ์ด ์ ํ๋ ์ ์ด๋ ํ๊ฒฝ์์ ์ฌ์ฉํ๋๋ก ๋์ด ์์ต๋๋ค.
์ค์ํ ์ ํ. ์ด ์ต์ ์ ํจ์๊ฐ ์ปดํ์ผ๋ ๋ ์๋ชป๋ ์ฝ๋๋ก ์ด์ด์ง๋๋ค.
16๋ฐ์ดํธ ์คํ ์ ๋ ฌ(์: ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ์)์ด ํธ์ถ๋ฉ๋๋ค.
์ ๋ ฌ๋์ง ์์ ์คํ์ผ๋ก ์ด ๊ฒฝ์ฐ SSE ๋ช ๋ น์ด๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ชป ์ ๋ ฌ๋ ์ ์์ต๋๋ค.
์ก์ธ์ค ํธ๋ฉ. ๋ํ ๋ณ์ ์ธ์๋ 16๋ฐ์ดํธ์ ๋ํด ์๋ชป ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ ๋ ฌ๋ ๊ฐ์ฒด(x87 long double ๋ฐ __int128 ํฌํจ)๋ก ์ธํด ์๋ชป๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ค์์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ชจ๋์ ๋น๋ํด์ผ ํฉ๋๋ค. -mpreferred-์คํ-๊ฒฝ๊ณ=3, ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํฉ๋๋ค.
์ฌ๊ธฐ์๋ ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ ๋ชจ๋์ด ํฌํจ๋ฉ๋๋ค.
-์ต์ํ ์คํ ๊ฒฝ๊ณ=NUM
๋ค์ด์ค๋ ์คํ์ด 2๋ก ์ ๋ ฌ๋์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. NUM ๋ฐ์ดํธ ๊ฒฝ๊ณ. ๋ง์ฝ์
-์ต์ ์คํ ๊ฒฝ๊ณ ๊ฐ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ
-์ฐ์ ์์-์คํ-๊ฒฝ๊ณ ์ฌ์ฉ.
Pentium ๋ฐ Pentium Pro์์ "double" ๋ฐ "long double" ๊ฐ์
8๋ฐ์ดํธ ๊ฒฝ๊ณ(์ฐธ์กฐ -์ ์ฑ-๋๋ธ) ๋๋ ์๋นํ ๋ฐํ์ ์ฑ๋ฅ ์ ํ
์ฒ๋ฒ. Pentium III์์ SSE(Streaming SIMD Extension) ๋ฐ์ดํฐ ์ ํ "__m128"์
16๋ฐ์ดํธ๋ก ์ ๋ ฌ๋์ง ์์ผ๋ฉด ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค.
์คํ์์ ์ด ๊ฐ์ ์ ์ ํ ์ ๋ ฌ์ ๋ณด์ฅํ๋ ค๋ฉด ์คํ ๊ฒฝ๊ณ๊ฐ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
์คํ์ ์ ์ฅ๋ ๊ฐ์ ํ์ํ ๋๋ก ์ ๋ ฌ๋ฉ๋๋ค. ๋ํ ๋ชจ๋ ๊ธฐ๋ฅ
์คํ์ ์ ๋ ฌ๋ ์ํ๋ก ์ ์งํ๋๋ก ์์ฑ๋์ด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ํจ์๋ฅผ ํธ์ถ
๋ ๋ฎ์ ๊ฐ์ผ๋ก ์ปดํ์ผ๋ ํจ์์์ ๋ ๋์ ์ ํธ ์คํ ๊ฒฝ๊ณ๋ก ์ปดํ์ผ
๊ธฐ๋ณธ ์คํ ๊ฒฝ๊ณ๋ ์คํ์ ์๋ชป ์ ๋ ฌํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๋ค์์ ์ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฝ๋ฐฑ์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํญ์ ๊ธฐ๋ณธ ์ค์ ์ ์ฌ์ฉํฉ๋๋ค.
์ด ์ถ๊ฐ ์ ๋ ฌ์ ์ถ๊ฐ ์คํ ๊ณต๊ฐ์ ์๋นํ๊ณ ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
ํฌ๊ธฐ. ์๋ฒ ๋๋ ์์คํ ๊ณผ ๊ฐ์ ์คํ ๊ณต๊ฐ ์ฌ์ฉ์ ๋ฏผ๊ฐํ ์ฝ๋
์ด์ ์ฒด์ ์ปค๋์์ ์ ํธํ๋ ์ ๋ ฌ์
-mpreferred-์คํ-๊ฒฝ๊ณ=2.
-mmmx.
-mno-mmx
-msse
-mno-sse
-msse2.
-mno-sse2
-msse3.
-mno-sse3
-mssse3
-mno-sse3
-msse4.1.
-mno-sse4.1
-msse4.2.
-mno-sse4.2
-msse4.
-mno-sse4
-mavx
-mno-avx
-mavx2
-mno-avx2
-๋ฉ์ค
-mno-aes.
-mpclmul
-mno-pclmul
-mfsgsbase
-mno-fsgsbase
-mrdrnd
-mno-rdrnd
-mf16c.
-mno-f16c
-mfma
-mno-fma
-msse4a
-mno-sse4a
-mfma4
-mno-fma4
-mxop
-mno-xop
-mlwp
-mno-lwp
-m3dnow
-mno-3dnow
-mpopcnt
-mno-popcnt
-๋ง๋ง
-mno-abm
-mbmi
-mbmi2
-mno-bmi
-mno-bmi2
-mlzcnt
-mno-lzcnt
-mrtm
-mtbm
-mno-tbm
์ด ์ค์์น๋ MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, F16C, FMA, SSE4A, FMA4, XOP,
LWP, ABM, BMI, BMI2, LZCNT, RTM ๋๋ 3DNow! ํ์ฅ๋ ๋ช ๋ น์ด ์ธํธ. ์ด๊ฒ๋ค
ํ์ฅ ๊ธฐ๋ฅ์ ๋ด์ฅ ํจ์๋ก๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. X86 ๋ด์ฅ ๊ธฐ๋ฅ์ ๋ํ
์ด ์ค์์น์ ์ํด ํ์ฑํ ๋ฐ ๋นํ์ฑํ๋ ๊ธฐ๋ฅ์ ๋ํ ์ธ๋ถ ์ ๋ณด.
๋ถ๋ ์์์ ์ฝ๋์์ ์๋์ผ๋ก SSE/SSE2 ๋ช ๋ น์ด๋ฅผ ์์ฑํ๋ ค๋ฉด(๋ฐ๋๋ก
387 ์ง์นจ๊น์ง), ์ฐธ์กฐ -mfpmath=sse.
GCC๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ SSEx ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. -mavx ์ฌ์ฉ. ๋์ ์๋ก์ด AVX๋ฅผ ์์ฑํฉ๋๋ค.
ํ์ํ ๊ฒฝ์ฐ ๋ชจ๋ SSEx ๋ช ๋ น์ด์ ๋ํ ๋ช ๋ น์ด ๋๋ AVX ๋ฑ๊ฐ๋ฌผ.
์ด๋ฌํ ์ต์ ์ ์ฌ์ฉํ๋ฉด GCC๊ฐ ์์ฑ๋ ์ฝ๋์์ ์ด๋ฌํ ํ์ฅ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ด -mfpmath=sse. ๋ฐํ์ CPU ๊ฐ์ง๋ฅผ ์ํํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํด์ผ ํฉ๋๋ค.
์ ์ ํ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ง์๋๋ ๊ฐ ์ํคํ ์ฒ์ ๋ํด ๋ณ๋์ ํ์ผ์ ์์ฑํฉ๋๋ค. ์
ํนํ CPU ๊ฐ์ง ์ฝ๋๊ฐ ํฌํจ๋ ํ์ผ์
์ด๋ฌํ ์ต์ .
-mcld
์ด ์ต์ ์ ํจ์์ ํ๋กค๋ก๊ทธ์์ "cld" ๋ช ๋ น์ ๋ด๋ณด๋ด๋๋ก GCC์ ์ง์ํฉ๋๋ค.
๋ฌธ์์ด ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค. ๋ฌธ์์ด ๋ช ๋ น์ด๋ ์ ํํ DF ํ๋๊ทธ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์๋ ์ฆ๊ฐ ๋๋ ์๋ ๊ฐ์ ๋ชจ๋ ์ฌ์ด. ABI๊ฐ DF ํ๋๊ทธ๋ฅผ ์ง์ ํ๋ ๋์
๊ธฐ๋ฅ ์ ๋ ฅ ์ ์ง์์ง๋ฏ๋ก ์ผ๋ถ ์ด์ ์ฒด์ ๋ ์ด ์ฌ์์ ์๋ฐํ์ง ์์ต๋๋ค.
์์ธ ๋์คํจ์ฒ์์ DF ํ๋๊ทธ๋ฅผ ์ง์๋๋ค. ์์ธ ์ฒ๋ฆฌ๊ธฐ๋
DF ํ๋๊ทธ๊ฐ ์ค์ ๋ ์ํ์์ ํธ์ถ๋์ด ๋ฌธ์์ด์ด
์ง์นจ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ด ์ต์ ์ 32๋นํธ x86 ๋์์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํํ ์ ์์ต๋๋ค.
๋ค์์ ์ฌ์ฉํ์ฌ GCC ๊ตฌ์ฑ --ํ์ฑํ-cld ์ต์ ์ ๊ตฌ์ฑํฉ๋๋ค. "cld"์ ์์ฑ
๋ช ๋ น์ ๋ค์์ผ๋ก ์ต์ ํ ์ ์์ต๋๋ค. -mno-cld ์ด ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ ์ต์ .
-mvzeroupper
์ด ์ต์ ์ "vzeroupper" ๋ช ๋ น์ ์ ์กํ๊ธฐ ์ ์ GCC์ ์ง์ํฉ๋๋ค.
AVX์์ SSE๋ก์ ์ ํ ํจ๋ํฐ๋ ์ต์ํํ๊ธฐ ์ํด ๊ธฐ๋ฅ ์ธ๋ถ๋ก์ ์ ์ด ํ๋ฆ
๋ถํ์ํ "zeroupper" ๋ด์ฅ ํจ์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
-mprefer-avx128
์ด ์ต์ ์ GCC๊ฐ 128๋นํธ AVX ๋์ 256๋นํธ AVX ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋๋ก ์ง์ํฉ๋๋ค.
์๋ ๋ฒกํฐ๋ผ์ด์ ์ ์ง์นจ.
-mcx16
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด GCC๊ฐ "CMPXCHG16B" ๋ช ๋ น์ด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. "CMPXCHG16B"๋
128๋นํธ ์ด์ค ์ฟผ๋์๋(๋๋ oword) ๋ฐ์ดํฐ ์ ํ์ ๋ํ ์์์ ์ฐ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๊ฒ์
์ฌ๋ฌ ํ๋ก์ธ์์์ ์ ๋ฐ์ดํธํ ์ ์๋ ๊ณ ํด์๋ ์นด์ดํฐ(๋๋
์ฝ์ด). ์ด ๋ช ๋ น์ด๋ ์์ ๋ด์ฅ ํจ์์ ์ผ๋ถ๋ก ์์ฑ๋ฉ๋๋ค.
__๋์กฐ ๋นํธ์ธ or __์์ ๋นํธ์ธ ์์ธํ ๋ด์ฉ์.
-msahf
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด 64๋นํธ ์ฝ๋์์ "SAHF" ๋ช ๋ น์ด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๊ธฐ ์ธํ
Intel 4๋ฅผ ์ง์ํ๋ Pentium 64 CPU, Pentium 4 G1 ๋จ๊ณ ๋์ ์ด์
2005๋ XNUMX์, "LAHF" ๋ฐ "SAHF" ์ง์นจ์ด ๋ถ์กฑํ์ฌ
AMD64. ์ด๋ค์ ๊ฐ๊ฐ ํน์ ์ํ ํ๋๊ทธ์ ๋ํ ๋ก๋ ๋ฐ ์ ์ฅ ๋ช ๋ น์ ๋๋ค.
64๋นํธ ๋ชจ๋์์ "SAHF" ๋ช ๋ น์ด๋ "fmod", "drem" ๋ฐ
"๋๋จธ์ง" ๋ด์ฅ ํจ์; ๋ณด๋ค ๊ธฐํ ๋นํธ์ธ ์์ธํ ๋ด์ฉ์.
-mmovbe
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด "movbe" ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ "__builtin_bswap32"๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
๋ฐ "__builtin_bswap64".
-mcrc32
์ด ์ต์ ์ ๋ด์ฅ ํจ์ "__builtin_ia32_crc32qi"๋ฅผ ํ์ฑํํฉ๋๋ค.
"__builtin_ia32_crc32hi", "__builtin_ia32_crc32si" ๋ฐ "__builtin_ia32_crc32di"
"crc32" ๊ธฐ๊ณ ๋ช ๋ น์ด๋ฅผ ์์ฑํฉ๋๋ค.
-mrecip
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด "RCPSS" ๋ฐ "RSQRTSS" ๋ช ๋ น์ด(๋ฐ ๋ฒกํฐํ๋
"RCPPS" ๋ฐ "RSQRTPS" ๋ณํ) ์ถ๊ฐ Newton-Raphson ๋จ๊ณ๋ก ์ฆ๊ฐ
๋จ์ผ์ ๋ํ "DIVSS" ๋ฐ "SQRTSS"(๋ฐ ๋ฒกํฐํ๋ ๋ณํ) ๋์ ์ ๋ฐ๋
์ ๋ฐ ๋ถ๋ ์์์ ์ธ์. ์ด ์ง์นจ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์์ฑ๋ฉ๋๋ค.
-์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ ์ ํจ๊ป ํ์ฑํ๋ฉ๋๋ค. - ์ ํ ์ํ ์ ์ฉ and
-fno ํธ๋ํ ์ํ. ์ํ์ค์ ์ฒ๋ฆฌ๋์
non-reciprocal ๋ช ๋ น์ด์ ์ฒ๋ฆฌ๋, ์ํ์ค์ ์ ๋ฐ๋๋
์ต๋ 2ulp๊น์ง ๊ฐ์ํฉ๋๋ค(์ฆ, 1.0์ ์ญ์๋ 0.99999994์ ๊ฐ์ต๋๋ค).
GCC๋ "1.0f/sqrtf(NS)" "RSQRTSS"(๋๋ "RSQRTPS") ์ธก๋ฉด์์ ์ด๋ฏธ
๊ณผ -๋น ๋ฅธ ์ํ (๋๋ ์์ ์ต์ ์กฐํฉ), ํ์ํ์ง ์์ -mrecip.
๋ํ GCC๋ ์ถ๊ฐ Newton-Raphson ๋จ๊ณ์ ํจ๊ป ์์ ์ํ์ค๋ฅผ ๋ฐฉ์ถํฉ๋๋ค.
๋ฒกํฐํ๋ ๋จ์ผ ๋ถ๋ ์์์ ๋๋๊ธฐ ๋ฐ ๋ฒกํฐํ๋ "sqrtf(NS)" ์ด๋ฏธ -๋น ๋ฅธ ์ํ
(๋๋ ์์ ์ต์ ์กฐํฉ), ํ์ํ์ง ์์ -mrecip.
-mrecip=๊ณ ๋ฅด๋ค
์ด ์ต์ ์ ์ฌ์ฉํ ์ ์๋ ์ํธ ์ถ์ ์ง์นจ์ ์ ์ดํฉ๋๋ค. ๊ณ ๋ฅด๋ค ํ๋
์์ ์ฌ ์ ์๋ ์ผํ๋ก ๊ตฌ๋ถ๋ ์ต์ ๋ชฉ๋ก ! ์ต์ ์ ๋ฐ์ ์ํค๋ ค๋ฉด:
๋ชจ๋ ๋ชจ๋ ๊ฒฌ์ ์ง์นจ์ ํ์ฑํํฉ๋๋ค.
๋ํดํธ ๊ฐ
์ ํด๋นํ๋ ๊ธฐ๋ณธ ์ง์นจ์ ํ์ฑํํฉ๋๋ค. -mrecip.
์์
์ ํด๋นํ๋ ๋ชจ๋ ์ถ์ ์ง์นจ์ ๋นํ์ฑํํฉ๋๋ค. -mno-recipe.
DIV ์ค์นผ๋ผ ๋๋์ ์ ๋ํ ๊ทผ์ฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
vec-div
๋ฒกํฐํ๋ ๋๋์ ์ ๋ํ ๊ทผ์ฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
sqrt
์ค์นผ๋ผ ์ ๊ณฑ๊ทผ์ ๋ํ ๊ทผ์ฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
vec-sqrt
๋ฒกํฐํ๋ ์ ๊ณฑ๊ทผ์ ๋ํ ๊ทผ์ฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
์๋ฅผ ๋ค์ด -mrecip=๋ชจ๋,!sqrt ๋ชจ๋ ์ญ ๊ทผ์ฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์ ๊ณฑ๊ทผ์ ์ ์ธํ๊ณ .
-mveclibabi=์ ํ
์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ด์ฅ ํจ์๋ฅผ ๋ฒกํฐํํ๋ ๋ฐ ์ฌ์ฉํ ABI ์ ํ์ ์ง์ ํฉ๋๋ค.
์ง์๋๋ ๊ฐ ์ ํ are svml ์ธํ ์งง์ ๋ฒกํฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ACML
AMD ์ํ ์ฝ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฉ. ์ด ์ต์ ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ ๋ค -ftree ๋ฒกํฐํ and
-์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ ํ์ฑํํด์ผ ํ๋ฉฐ SVML ๋๋ ACML ABI ํธํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋งํฌ ์๊ฐ์ ์ง์ ๋์ด์ผ ํฉ๋๋ค.
GCC๋ ํ์ฌ "vmldExp2", "vmldLn2", "vmldLog102", "vmldLog102"์ ๋ํ ํธ์ถ์ ๋ด๋ณด๋ ๋๋ค.
"vmldPow2", "vmldTanh2", "vmldTan2", "vmldAtan2", "vmldAtanh2", "vmldCbrt2",
"vmldSinh2", "vmldSin2", "vmldAsinh2", "vmldAsin2", "vmldCosh2", "vmldCos2",
"vmldAcosh2", "vmldAcos2", "vmlsExp4", "vmlsLn4", "vmlsLog104", "vmlsLog104",
"vmlsPow4", "vmlsTanh4", "vmlsTan4", "vmlsAtan4", "vmlsAtanh4", "vmlsCbrt4",
"vmlsSinh4", "vmlsSin4", "vmlsAsinh4", "vmlsAsin4", "vmlsCosh4", "vmlsCos4",
ํด๋น ๊ธฐ๋ฅ ์ ํ์ ๋ํ "vmlsAcosh4" ๋ฐ "vmlsAcos4" -mveclibabi=svml is
์ฌ์ฉ ๋ฐ "__vrd2_sin", "__vrd2_cos", "__vrd2_exp", "__vrd2_log", "__vrd2_log2",
"__vrd2_log10", "__vrs4_sinf", "__vrs4_cosf", "__vrs4_expf", "__vrs4_logf",
ํด๋น ๊ธฐ๋ฅ ์ ํ์ ๋ํ "__vrs4_log2f", "__vrs4_log10f" ๋ฐ "__vrs4_powf"
์ธ์ -mveclibabi=acml ์ฌ์ฉ.
-๋ง๋น=name
์ง์ ๋ ํธ์ถ ๊ท์น์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ํ์ฉ๋๋ ๊ฐ์ ์์คํ for
GNU/Linux ๋ฐ ๊ธฐํ ์์คํ ์์ ์ฌ์ฉ๋๋ ABI, ms ๋ง์ดํฌ๋ก์ํํธ ABI์ฉ. NS
๊ธฐ๋ณธ๊ฐ์ Microsoft Windows ๋ฐ SysV ABI๋ฅผ ๋์์ผ๋ก ํ ๋ Microsoft ABI๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
๋ค๋ฅธ ๋ชจ๋ ์์คํ ์์. ๋ค์์ ์ฌ์ฉํ์ฌ ํน์ ๊ธฐ๋ฅ์ ๋ํ ์ด ๋์์ ์ ์ดํ ์ ์์ต๋๋ค.
ํจ์ ์์ฑ ms_abi/sysv_abi.
-mtls-๋ฐฉ์ธ=์ ํ
๋ค์์ ์ฌ์ฉํ์ฌ ์ค๋ ๋ ๋ก์ปฌ ์ ์ฅ์์ ์ก์ธ์คํ๋ ์ฝ๋ ์์ฑ ์์ ๋น์ทํ ์ผ์ข ์ ์์ or gnu2 ๊ด๋ก. ์์ ๋น์ทํ ์ผ์ข ์ ์์
๋ณด์์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. gnu2 ๋ ํจ์จ์ ์ด์ง๋ง ์ปดํ์ผ ๋ฐ ์คํ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋ชจ๋ ์์คํ ์์ ์ถฉ์กฑ๋ ์ ์๋ ์๊ฐ ์๊ตฌ ์ฌํญ.
-mpush-์ธ์
-mno-ํธ์ ์ธ์
PUSH ์์ ์ ์ฌ์ฉํ์ฌ ๋๊ฐ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ ์งง๊ณ ์ผ๋ฐ์ ์ผ๋ก
SUB/MOV ์์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๊ฒ ๋น ๋ฅด๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. ์ผ๋ถ์์๋
์ด ๊ธฐ๋ฅ์ ๋นํ์ฑํํ๋ฉด ์ผ์ ์ด ๊ฐ์ ๋๊ณ
์ข ์์ฑ.
-maccumulate-outgoing-args
ํ์ฑํํ๋ฉด ๋๊ฐ๋ ์ธ์์ ํ์ํ ์ต๋ ๊ณต๊ฐ์ด ๋ค์์์ ๊ณ์ฐ๋ฉ๋๋ค.
๊ธฐ๋ฅ ํ๋กค๋ก๊ทธ. ์ด๊ฒ์ ๊ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ์ต์ CPU์์ ๋ ๋น ๋ฆ ๋๋ค.
์ข ์์ฑ, ํฅ์๋ ์ค์ผ์ค๋ง ๋ฐ ์คํ ์ฌ์ฉ ๊ฐ์
๊ฒฝ๊ณ๋ 2์ ๊ฐ์ง ์์ต๋๋ค. ๋จ์ ์ ์ฝ๋ ํฌ๊ธฐ๊ฐ ๋์ ๋๊ฒ ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ
์ค์์น ์๋ฏธ -mno-ํธ์ ์ธ์.
-m์ค๋ ๋
MinGW์์ ์ค๋ ๋๋ก๋ถํฐ ์์ ํ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. ์ค๋ ๋ ์์ ์ ์์กดํ๋ ํ๋ก๊ทธ๋จ
์์ธ ์ฒ๋ฆฌ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ณ ๋งํฌํด์ผ ํฉ๋๋ค. -m์ค๋ ๋ ์ต์ . ์ธ์
์ปดํ์ผ, -m์ค๋ ๋ "-D_MT"๋ฅผ ์ ์ํฉ๋๋ค. ์ฐ๊ฒฐํ ๋ ํน์ ์ค๋ ๋์์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋์ฐ๋ฏธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ -lmingwthrd ์ค๋ ๋๋ณ ์์ธ ์ฒ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํฉ๋๋ค.
-mno-align-stringops
์ธ๋ผ์ธ๋ ๋ฌธ์์ด ์์ ์ ๋์์ ์ ๋ ฌํ์ง ๋ง์ญ์์ค. ์ด ์ค์์น๋ ์ฝ๋๋ฅผ ์ค์ ๋๋ค
๋์์ด ์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒฝ์ฐ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ณ ์ฑ๋ฅ์ด ํฅ์๋์ง๋ง GCC๋
๊ทธ๊ฒ์ ๋ํด ๋ชจ๋ฆ ๋๋ค.
-minline-all-stringops
๊ธฐ๋ณธ์ ์ผ๋ก GCC๋ ๋์์ด ๋ค์๊ณผ ๊ฐ์ด ์๋ ค์ง ๊ฒฝ์ฐ์๋ง ๋ฌธ์์ด ์์ ์ ์ธ๋ผ์ธํฉ๋๋ค.
์ต์ 4๋ฐ์ดํธ ๊ฒฝ๊ณ๋ก ์ ๋ ฌ๋ฉ๋๋ค. ์ด๊ฒ์ ๋ ๋ง์ ์ธ๋ผ์ธ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ ์ฝ๋๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
ํฌ๊ธฐ๋ ์์ง๋ง ๋น ๋ฅธ "memcpy", "strlen" ๋ฐ
์งง์ ๊ธธ์ด์ ๊ฒฝ์ฐ "memset".
-minline-stringops-๋์ ์ผ๋ก
ํฌ๊ธฐ๋ฅผ ์ ์ ์๋ ๋ฌธ์์ด ์์ ์ ๊ฒฝ์ฐ ์์ ํฌ๊ธฐ์ ๋ํด ์ธ๋ผ์ธ ์ฝ๋์ ํจ๊ป ๋ฐํ์ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ธ๋ก ๋ฐ ํฐ ๋ธ๋ก์ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ.
-mstringop-์ ๋ต=ALG
ํน์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ๋ด๋ถ ๊ฒฐ์ ํด๋ฆฌ์คํฑ์ ์ฌ์ ์ํฉ๋๋ค.
์ธ๋ผ์ธ ๋ฌธ์์ด ์ฐ์ฐ. ํ์ฉ๋๋ ๊ฐ ALG ์์น :
๋ด๋น์_๋ฐ์ดํธ
๋ด๋น์_4๋ฐ์ดํธ
๋ด๋น์_8๋ฐ์ดํธ
์ง์ ๋ ํฌ๊ธฐ์ i386 "rep" ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฅํฉ๋๋ค.
๋ฐ์ดํธ ๋ฃจํ
๊ณ ๋ฆฌ
unrolled_loop
์ธ๋ผ์ธ ๋ฃจํ๋ก ํ์ฅํฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ
ํญ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ์ ์ฌ์ฉํ์ญ์์ค.
-momit-๋ฆฌํ ํ๋ ์ ํฌ์ธํฐ
๋ฆฌํ ํจ์์ ๋ํ ๋ ์ง์คํฐ์ ํ๋ ์ ํฌ์ธํฐ๋ฅผ ์ ์งํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ ํผํ๋ค
ํ๋ ์ ํฌ์ธํฐ๋ฅผ ์ ์ฅ, ์ค์ ๋ฐ ๋ณต์ํ๊ณ ์ถ๊ฐ ๋ ์ง์คํฐ๋ฅผ ๋ง๋๋ ๋ช ๋ น
๋ฆฌํ ํจ์์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ต์ -fomit-๋ฆฌํ-ํ๋ ์-ํฌ์ธํฐ ํ๋ ์์ ์ ๊ฑฐ
๋๋ฒ๊น ์ ๋ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์๋ ๋ฆฌํ ํจ์์ ๋ํ ํฌ์ธํฐ์ ๋๋ค.
-mtls-์ง์ -์ธ๊ทธ-refs
-mno-tls-direct-seg-refs
TLS ์ธ๊ทธ๋จผํธ์ ์คํ์ ์ ์ฌ์ฉํ์ฌ TLS ๋ณ์์ ์ก์ธ์คํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค.
๋ ์ง์คํฐ(32๋นํธ์ ๊ฒฝ์ฐ %gs, 64๋นํธ์ ๊ฒฝ์ฐ %fs) ๋๋ ์ค๋ ๋ ๊ธฐ๋ฐ ํฌ์ธํฐ๊ฐ ๋ค์๊ณผ ๊ฐ์์ผ ํ๋์ง ์ฌ๋ถ
์ถ๊ฐํ์ต๋๋ค. ์ด๊ฒ์ด ์ ํจํ์ง ์ฌ๋ถ๋ ์ด์ ์ฒด์ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ ์ฒด TLS ์์ญ์ ํฌํจํ๋๋ก ์ธ๊ทธ๋จผํธ๋ฅผ ๋งคํํฉ๋๋ค.
GNU C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์์คํ ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ์ผ์ง์ ๋๋ค.
-msse2avx
-mno-sse2avx
์ด์ ๋ธ๋ฌ๊ฐ VEX ์ ๋์ฌ๋ก SSE ๋ช ๋ น์ด๋ฅผ ์ธ์ฝ๋ฉํด์ผ ํจ์ ์ง์ ํฉ๋๋ค. ์ต์
-mavx ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๊ธฐ๋ฅ์ ์ผญ๋๋ค.
-์ ํํธ๋ฆฌ
-mno-ํํธ๋ฆฌ
ํ๋กํ์ผ๋ง์ด ํ์ฑํ๋ ๊ฒฝ์ฐ(-ํ์ด์ง), ํ๋กค๋ก๊ทธ ์์ ํ๋กํ์ผ๋ง ์นด์ดํฐ ํธ์ถ์ ๋ฃ์ต๋๋ค.
์ฐธ๊ณ : x86 ์ํคํ ์ฒ์์ "ms_hook_prologue" ์์ฑ์
์๊ฐ -์ ํํธ๋ฆฌ and -ํ์ด์ง.
-m8bit-idiv
-mno-8bit-idiv
Intel Atom๊ณผ ๊ฐ์ ์ผ๋ถ ํ๋ก์ธ์์์๋ 8๋นํธ ๋ถํธ ์๋ ์ ์ ๋๋๊ธฐ๊ฐ ๋ค์๋ณด๋ค ํจ์ฌ ๋น ๋ฆ ๋๋ค.
32๋นํธ/64๋นํธ ์ ์ ๋๋๊ธฐ. ์ด ์ต์ ์ ๋ฐํ์ ๊ฒ์ฌ๋ฅผ ์์ฑํฉ๋๋ค. ๋ง์ฝ ๋ ๋ค
ํผ์ ์์ ์ ์๊ฐ 0์์ 255 ์ฌ์ด์ ๋ฒ์์ ์๊ณ 8๋นํธ ๋ถํธ ์๋ ์ ์ ๋๋๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
32๋นํธ/64๋นํธ ์ ์ ๋๋๊ธฐ ๋์ ์ฌ์ฉ๋ฉ๋๋ค.
-mavx256-๋ถํ -์ ๋ ฌ๋์ง ์์-๋ก๋
-mavx256-๋ถํ -์ ๋ ฌ๋์ง ์์-์ ์ฅ
32๋ฐ์ดํธ AVX ์ ๋ ฌ๋์ง ์์ ๋ก๋ ๋ฐ ์ ์ฅ์ ๋ถํ ํฉ๋๋ค.
Bowman์ -m ์ค์์น๋ 86๋นํธ์ x64-64 ํ๋ก์ธ์์์ ์์ ํญ๋ชฉ์ ์ถ๊ฐ๋ก ์ง์๋ฉ๋๋ค.
ํ๊ฒฝ.
-m32
-m64
-mx32
32๋นํธ ๋๋ 64๋นํธ ํ๊ฒฝ์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. NS -m32 ์ต์ ์ "int", "long"์ ์ค์ ํฉ๋๋ค.
๋ฐ ํฌ์ธํฐ ์ ํ์ 32๋นํธ๋ก ์ง์ ํ๊ณ ๋ชจ๋ i386 ์์คํ ์์ ์คํ๋๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -m64 ์ต์ ์ "int"๋ฅผ 32๋นํธ๋ก ์ค์ ํ๊ณ "long"์ 64๋นํธ๋ก ํฌ์ธํฐ ์ ํ์ ์ค์ ํฉ๋๋ค.
x86-64 ์ํคํ ์ฒ์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๋ค์์๊ฒ๋ง -m64 ์ต์ ๋
๋๋ค -fno-pic and -mdynamic-no-pic ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -mx32 ์ต์ ์ "int", "long" ๋ฐ ํฌ์ธํฐ ์ ํ์ 32๋นํธ๋ก ์ค์ ํ๊ณ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
x86-64 ์ํคํ ์ฒ์ฉ.
-mno-๋ ๋-์กด
x86-64 ์ฝ๋์ ๋ํด ์์ "๋ ๋์กด"์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ๋ ๋์กด์
x86-64 ABI; ์คํ ํฌ์ธํฐ์ ์์น๋ฅผ โโ๋ฒ์ด๋ 128๋ฐ์ดํธ ์์ญ์ ๋๋ค.
์ ํธ ๋๋ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ์ ์ํด ์์ ๋๋ฏ๋ก ์์ ๋ฐ์ดํฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์คํ ํฌ์ธํฐ๋ฅผ ์กฐ์ ํ์ง ์๊ณ ๊น๋ฐ -mno-๋ ๋-์กด ์ด ๋นจ๊ฐ์ ์์ญ์ ๋นํ์ฑํํฉ๋๋ค.
-mcmodel=์์
์์ ์ฝ๋ ๋ชจ๋ธ์ ์ํ ์ฝ๋ ์์ฑ: ํ๋ก๊ทธ๋จ๊ณผ ํด๋น ๊ธฐํธ๋ ๋ค์ ์์น์ ์ฐ๊ฒฐ๋์ด์ผ ํฉ๋๋ค.
์ฃผ์ ๊ณต๊ฐ์ ํ์ 2GB. ํฌ์ธํฐ๋ 64๋นํธ์ ๋๋ค. ํ๋ก๊ทธ๋จ ์
์ ์ ์ผ๋ก ๋๋ ๋์ ์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ ์ฝ๋ ๋ชจ๋ธ์ ๋๋ค.
-mcmodel=์ปค๋
์ปค๋ ์ฝ๋ ๋ชจ๋ธ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ปค๋์ ์์ 2GB์์ ์คํ๋ฉ๋๋ค.
์ฃผ์ ๊ณต๊ฐ. ์ด ๋ชจ๋ธ์ Linux ์ปค๋ ์ฝ๋์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
-mcmodel=์ค๊ฐ
์คํ ๋ชจ๋ธ์ฉ ์ฝ๋ ์์ฑ: ํ๋ก๊ทธ๋จ์ ํ์ 2GB์ ๋งํฌ๋ฉ๋๋ค.
์ฃผ์ ๊ณต๊ฐ. ์์ ๊ธฐํธ๋ ๊ฑฐ๊ธฐ์ ๋ฐฐ์น๋ฉ๋๋ค. ๋ค์๋ณด๋ค ํฐ ํฌ๊ธฐ์ ๊ธฐํธ
-mlarge-๋ฐ์ดํฐ-์๊ณ๊ฐ ๋์ฉ๋ ๋ฐ์ดํฐ ๋๋ BSS ์น์ ์ ๋ฐฐ์น๋๊ณ ์์น๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
2GB ์ด์. ํ๋ก๊ทธ๋จ์ ์ ์ ์ผ๋ก ๋๋ ๋์ ์ผ๋ก ๋งํฌ๋ ์ ์์ต๋๋ค.
-mcmodel=๋ํ
๋ํ ๋ชจ๋ธ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด ๋ชจ๋ธ์ ์ฃผ์์ ๋ํด ๊ฐ์ ํ์ง ์์ต๋๋ค.
์น์ ์ ํฌ๊ธฐ.
-maddress ๋ชจ๋=๊ธด
๊ธด ์ฃผ์ ๋ชจ๋์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. 64๋นํธ ๋ฐ x32์์๋ง ์ง์๋ฉ๋๋ค.
ํ๊ฒฝ. 64๋นํธ ํ๊ฒฝ์ ๊ธฐ๋ณธ ์ฃผ์ ๋ชจ๋์ ๋๋ค.
-maddress-mode=์งง์
์งง์ ์ฃผ์ ๋ชจ๋์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ 32๋นํธ ๋ฐ x32์์๋ง ์ง์๋ฉ๋๋ค.
ํ๊ฒฝ. 32๋นํธ ๋ฐ x32 ํ๊ฒฝ์ ๊ธฐ๋ณธ ์ฃผ์ ๋ชจ๋์ ๋๋ค.
i386 and x86-64 Windows ์ต์
๋ค์ ์ถ๊ฐ ์ต์ ์ Microsoft Windows ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-mconsole
์ด ์ต์ ์ ์ฝ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ฑ๋๋๋ก ์ง์ ํฉ๋๋ค.
์ฝ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ํ PE ํค๋ ํ์ ์์คํ ์ ํ์ ์ค์ ํ๋ ๋ง์ปค.
์ด ์ต์ ์ Cygwin ๋ฐ MinGW ๋์์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์์์ ํ์ฑํ๋ฉ๋๋ค.
๊ทธ ๋ชฉํ.
-mdll
์ด ์ต์ ์ Cygwin ๋ฐ MinGW ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. DLL---a
๋์ ๋งํฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ฑ๋์ด ํ์ํ ํญ๋ชฉ์ ์ ํํ ์ ์์ต๋๋ค.
๋ฐํ์ ์์ ๊ฐ์ฒด ๋ฐ ์ง์ ์ .
-mnop-์ฌ๋ฏธ-dllimport
์ด ์ต์ ์ Cygwin ๋ฐ MinGW ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค์์ ์ง์ ํฉ๋๋ค.
"dllimport" ์์ฑ์ ๋ฌด์ํด์ผ ํฉ๋๋ค.
--mthread.
์ด ์ต์ ์ MinGW ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. MinGW ํน์ ์ค๋ ๋๋ฅผ ์ง์ ํฉ๋๋ค.
์ง์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
-๋ฎค๋์ฝ๋
์ด ์ต์ ์ MinGW-w64 ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. "UNICODE" ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋งคํฌ๋ก๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ๊ณ ์ ๋์ฝ๋ ์ง์ ๋ฐํ์ ์์ ์ฝ๋๋ฅผ ์ ํํฉ๋๋ค.
-mwin32
์ด ์ต์ ์ Cygwin ๋ฐ MinGW ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ์ ํ์ ์ธ
Microsoft Windows ์ฌ์ ์ ์ ๋งคํฌ๋ก๋ ์ ์ฒ๋ฆฌ๊ธฐ์์ ์ค์ ํด์ผ ํ์ง๋ง ์ค์ ํ์ง ์์ต๋๋ค.
๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ/์์ ์ฝ๋ ์ ํ์ ์ํฅ์ ์ค๋๋ค.
-mwindows
์ด ์ต์ ์ Cygwin ๋ฐ MinGW ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. GUI๋ฅผ ์ง์ ํฉ๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง์ปค์ PE ํค๋๋ฅผ ์ค์ ํ๋๋ก ์ง์ํ์ฌ ์์ฑ๋ฉ๋๋ค.
์ ์ ํ๊ฒ ํ์ ์์คํ ์ ํ์ ์ง์ ํฉ๋๋ค.
-fno-set-stack-์คํ ๊ฐ๋ฅ
์ด ์ต์ ์ MinGW ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์คํ ๊ฐ๋ฅํ ํ๋๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค.
์ค์ฒฉ ํจ์์์ ์ฌ์ฉํ๋ ์คํ์ด ์ค์ ๋์ง ์์์ต๋๋ค. ์ด๊ฒ์ ์คํ ์ค์ธ ๋ฐ์ด๋๋ฆฌ์ ํ์ํฉ๋๋ค.
Microsoft Windows์ ์ปค๋ ๋ชจ๋์์ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ User32 API๊ฐ ์์ต๋๋ค.
์คํ ๊ถํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-fwritable-์ฌ๋ฐฐ์น-rdata
์ด ์ต์ ์ MinGW ๋ฐ Cygwin ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฌ๋ฐฐ์น๋จ์ ์ง์ ํฉ๋๋ค.
์ฝ๊ธฐ ์ ์ฉ ์น์ ์ ๋ฐ์ดํฐ๋ .data ์น์ ์ ๋ฃ์ต๋๋ค. ์ด๊ฒ์ ๋ ธ์ธ์๊ฒ ํ์ํฉ๋๋ค.
์์ฌ ์ฌ๋ฐฐ์น์ ๋ํ .rdata ์น์ ์์ ์ ์ง์ํ์ง ์๋ ๋ฐํ์.
-mpe-์ ๋ ฌ-๊ณตํต
์ด ์ต์ ์ Cygwin ๋ฐ MinGW ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ GNU๊ฐ
COMMON ๋ณ์์ ์ฌ๋ฐ๋ฅธ ์ ๋ ฌ์ ํ์ฉํ๋ PE ํ์ผ ํ์์ ํ์ฅ์
์ฝ๋๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํด์ผ ํฉ๋๋ค. GCC๊ฐ ๋ค์์ ๊ฐ์งํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
๊ตฌ์ฑ ์ค์ ๋ฐ๊ฒฌ๋ ๋์ ์ด์ ๋ธ๋ฌ๊ฐ ์ด ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
์๋๋ ์ฐธ์กฐ i386 and x86-64 ์ต์ ํ์ค ์ต์ ์ ๊ฒฝ์ฐ.
IA-64 ์ต์
์ด๋ค์ ์์ต๋๋ค -m Intel IA-64 ์ํคํ ์ฒ์ ๋ํด ์ ์๋ ์ต์ .
-mbig-์๋์
๋น ์๋์ ๋์์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ HP-UX์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-๋ฏธ๋ฆฌํ ์๋์
๋ฆฌํ ์๋์ ๋์์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ AIX5 ๋ฐ GNU/Linux์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mgnu-as
-mno-gnu-as
GNU ์ด์ ๋ธ๋ฌ์ฉ ์ฝ๋๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ฑํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mgnu-ld
-mno-gnu-ld
GNU ๋ง์ปค์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ฑํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mno-๊ทธ๋ฆผ
์ ์ญ ํฌ์ธํฐ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ฒฐ๊ณผ๋ ์์น๊ฐ ์๋๋๋ค.
๋ ๋ฆฝ ์ฝ๋์ด๋ฉฐ IA-64 ABI๋ฅผ ์๋ฐํฉ๋๋ค.
-mvolatile-asm-์ค์ง
-mno-ํ๋ฐ์ฑ-asm-stop
ํ๋ฐ์ฑ asm ๋ฌธ ์ง์ ๊ณผ ์งํ์ ์ ์ง ๋นํธ๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ฑํ์ง ๋ง์ญ์์ค.
-m ๋ ์ง์คํฐ ์ด๋ฆ
-mno ๋ ์ง์คํฐ ์ด๋ฆ
์์ฑ(๋๋ ํ์ง ์์) in, LOC๋ฐ ์์ ์คํ ๋ ์ง์คํฐ์ ๋ ์ง์คํฐ ์ด๋ฆ. ์ด๊ฒ
์ด์ ๋ธ๋ฌ ์ถ๋ ฅ์ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
-mno-sdata
-msdata
์์ ๋ฐ์ดํฐ ์น์ ์ ์ฌ์ฉํ๋ ์ต์ ํ๋ฅผ ๋นํ์ฑํ(๋๋ ํ์ฑํ)ํฉ๋๋ค. ์ด๊ฒ์ ์ ์ฉ ํ ์ ์์ต๋๋ค
์ตํฐ๋ง์ด์ ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด.
-m์์-gp
๋จ์ผ ์์ ์ ์ญ ํฌ์ธํฐ ๊ฐ์ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
์ปค๋ ์ฝ๋ ์ปดํ์ผ
-์๋ ์ฌ์ง
์์ฒด ์ฌ๋ฐฐ์น ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ์๋ฏธํฉ๋๋ค -m์์-gp. ์ด๊ฒ์ ์ ์ฉํ๋ค
ํ์จ์ด ์ฝ๋๋ฅผ ์ปดํ์ผํ ๋.
-minline-float-divide-min-latency
์ต์ ๋๊ธฐ ์๊ฐ์ ์ฌ์ฉํ์ฌ ๋ถ๋ ์์์ ๊ฐ์ ์ธ๋ผ์ธ ๋ถํ ์ ์ํ ์ฝ๋ ์์ฑ
์ฐ์ฐ.
-minline-float-divide-max-์ฒ๋ฆฌ๋
์ต๋ ์ฒ๋ฆฌ๋์ ์ฌ์ฉํ์ฌ ๋ถ๋ ์์์ ๊ฐ์ ์ธ๋ผ์ธ ๋ถํ ์ ์ํ ์ฝ๋ ์์ฑ
์ฐ์ฐ.
-mno-inline-float-divide
๋ถ๋ ์์์ ๊ฐ์ ๋๋๊ธฐ ์ํด ์ธ๋ผ์ธ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค.
-minline-int-divide-min-latency
์ต์ ๋๊ธฐ ์๊ฐ์ ์ฌ์ฉํ์ฌ ์ ์ ๊ฐ์ ์ธ๋ผ์ธ ๋ถํ ์ ์ํ ์ฝ๋ ์์ฑ
์ฐ์ฐ.
-minline-int-divide-max-์ฒ๋ฆฌ๋
์ต๋ ์ฒ๋ฆฌ๋์ ์ฌ์ฉํ์ฌ ์ ์ ๊ฐ์ ์ธ๋ผ์ธ ๋ถํ ์ ์ํ ์ฝ๋ ์์ฑ
์ฐ์ฐ.
-mno-์ธ๋ผ์ธ-int-๋๋๊ธฐ
์ ์ ๊ฐ์ ๋๋๊ธฐ ์ํด ์ธ๋ผ์ธ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค.
-minline-sqrt-์ต์ ๋๊ธฐ ์๊ฐ
์ต์ ๋๊ธฐ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ธ๋ผ์ธ ์ ๊ณฑ๊ทผ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-minline-sqrt-max-์ฒ๋ฆฌ๋
์ต๋ ์ฒ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ธ๋ผ์ธ ์ ๊ณฑ๊ทผ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-mno-์ธ๋ผ์ธ-sqrt
"sqrt"์ ๋ํ ์ธ๋ผ์ธ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค.
-๋จธํจ์ฆ๋-๋งค๋
-mno-์ตํฉ-๋งค๋
์ตํฉ๋ ๊ณฑํ๊ธฐ/๋ํ๊ธฐ ๋๋ ๊ณฑํ๊ธฐ/๋นผ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค.
์ง์นจ. ๊ธฐ๋ณธ๊ฐ์ ์ด ์ง์นจ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
-mno-dwarf2-asm
-mdwarf2-asm
DWARF 2 ํ ๋ฒํธ ๋๋ฒ๊น ์ ๋ณด์ ๋ํ ์ด์ ๋ธ๋ฌ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค.
์ด๊ฒ์ GNU ์ด์ ๋ธ๋ฌ๋ฅผ ์ฌ์ฉํ์ง ์์ ๋ ์ ์ฉํ ์ ์์ต๋๋ค.
-๊ฑฐ์ ์คํฑ ๋นํธ
-mno-์ด๊ธฐ ์ ์ง ๋นํธ
์ ์ง ๋นํธ๊ฐ ๋ช ๋ น ๋ฐ๋ก ์ด์ ๋ณด๋ค ๋จผ์ ๋ฐฐ์น๋๋๋ก ํ์ฉํฉ๋๋ค.
์ ์ง ๋นํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ต๋๋ค. ์ด๊ฒ์ ๋ช ๋ น ์ค์ผ์ค๋ง์ ํฅ์์ํฌ ์ ์์ง๋ง ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค.
๊ทธ๋ ๊ฒ.
-m๊ณ ์ ๋ฒ์=๋ ์ง์คํฐ ๋ฒ์
์ฃผ์ด์ง ๋ ์ง์คํฐ ๋ฒ์๋ฅผ ๊ณ ์ ๋ ์ง์คํฐ๋ก ์ทจ๊ธํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ณ ์ ๋ ์ง์คํฐ
๋ ์ง์คํฐ ํ ๋น์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ปค๋์ ์ปดํ์ผํ ๋ ์ ์ฉํฉ๋๋ค.
์ํธ. ๋ ์ง์คํฐ ๋ฒ์๋ ๋์๋ก ๊ตฌ๋ถ๋ ๋ ๊ฐ์ ๋ ์ง์คํฐ๋ก ์ง์ ๋ฉ๋๋ค. ๋ค์์
๋ ์ง์คํฐ ๋ฒ์๋ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ์ง์ ํ ์ ์์ต๋๋ค.
-mtls-ํฌ๊ธฐ=tls ํฌ๊ธฐ
์ฆ์ TLS ์คํ์ ์ ๋นํธ ํฌ๊ธฐ๋ฅผ ์ง์ ํฉ๋๋ค. ์ ํจํ ๊ฐ์ 14, 22 ๋ฐ 64์ ๋๋ค.
-mtune=CPU ์ ํ
ํน์ CPU์ ๋ํ ๋ช ๋ น ์ค์ผ์ค๋ง์ ์กฐ์ ํฉ๋๋ค. ์ ํจํ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. Itanium,
์์ดํ ๋์1, ํฉ๋ณ, ์์ดํ ๋์2๋ฐ ๋งฅํจ๋ฆฌ.
-milp32.
-mlp64
32๋นํธ ๋๋ 64๋นํธ ํ๊ฒฝ์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. 32๋นํธ ํ๊ฒฝ์ int,
long ๋ฐ 32๋นํธ์ ๋ํ ํฌ์ธํฐ์ ๋๋ค. 64๋นํธ ํ๊ฒฝ์ int๋ฅผ 32๋นํธ๋ก ์ค์ ํ๊ณ long ๋ฐ
64๋นํธ์ ๋ํ ํฌ์ธํฐ. ์ด๋ HP-UX ํน์ ํ๋๊ทธ์ ๋๋ค.
-mno-sched-br-data-spec
-msched-br-๋ฐ์ดํฐ-์ฌ์
๋ค์ ๋ก๋ํ๊ธฐ ์ ์ ๋ฐ์ดํฐ ์ถ์ธก ์ค์ผ์ค๋ง์ (๋นํ์ฑํ/ํ์ฑํ) ํ์ฑํํฉ๋๋ค. ์ด๋ก ์ธํด ๋ค์์ด ์์ฑ๋ฉ๋๋ค.
"ld.a" ์ง์นจ ๋ฐ ํด๋น ๊ฒ์ฌ ์ง์นจ("ld.c" / "chk.a"). NS
๊ธฐ๋ณธ๊ฐ์ '๋นํ์ฑํ'์ ๋๋ค.
-msched-ar-๋ฐ์ดํฐ-์ฌ์
-mno-sched-ar-data-spec
(En/Dis) ์ฌ๋ก๋ ํ ๋ฐ์ดํฐ ์ถ์ธก ์ค์ผ์ค๋ง์ ํ์ฑํํฉ๋๋ค. ์ด๋ก ์ธํด ๋ค์์ด ์์ฑ๋ฉ๋๋ค.
"ld.a" ์ง์นจ ๋ฐ ํด๋น ๊ฒ์ฌ ์ง์นจ("ld.c" / "chk.a"). NS
๊ธฐ๋ณธ๊ฐ์ 'ํ์ฑํ'์ ๋๋ค.
-mno-sched-control-spec
-msched-์ ์ด-์ฌ์
(Dis/En) ์ ์ด ์ถ์ธก ์ค์ผ์ค๋ง. ์ด ๊ธฐ๋ฅ์ ๋์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ง์ญ ์ค์ผ์ค๋ง(์ฆ, ๋ค์ ๋ก๋ํ๊ธฐ ์ ). ๊ทธ ๊ฒฐ๊ณผ "ld."๊ฐ ์์ฑ๋ฉ๋๋ค.
์ง์นจ ๋ฐ ํด๋น ๊ฒ์ฌ ์ง์นจ "chk.s". ๊ธฐ๋ณธ๊ฐ์
'์ฅ์ ๋ฅผ ์ ํ๋ค'.
-msched-br-in-data-spec
-mno-sched-br-in-data-spec
(En/Dis) ๋ฐ์ดํฐ์ ์์กดํ๋ ๋ช ๋ น์ด์ ์ถ์ธก ์ค์ผ์ค๋ง ๊ฐ๋ฅ
์ฌ์ฅ์ ์ ์ถ์ธก ๋ถํ. ์ด ์์ด์ผ๋ง ํจ๊ณผ์ ์ ๋๋ค. -msched-br-๋ฐ์ดํฐ-์ฌ์
ํ์ฑํ. ๊ธฐ๋ณธ๊ฐ์ 'ํ์ฑํ'์ ๋๋ค.
-msched-ar-in-data-spec
-mno-sched-ar-in-data-spec
(En/Dis) ๋ฐ์ดํฐ์ ์์กดํ๋ ๋ช ๋ น์ด์ ์ถ์ธก ์ค์ผ์ค๋ง ๊ฐ๋ฅ
์ฌ์ฅ์ ํ ์ถ์ธก ๋ถํ. ์ด ์์ด์ผ๋ง ํจ๊ณผ์ ์ ๋๋ค. -msched-ar-๋ฐ์ดํฐ-์ฌ์
ํ์ฑํ. ๊ธฐ๋ณธ๊ฐ์ 'ํ์ฑํ'์ ๋๋ค.
-msched-in-control-spec
-mno-sched-in-control-spec
(En/Dis)
ํฌ๊ธฐ ๋ถํ๋ฅผ ์ ์ดํฉ๋๋ค. ์ด ์์ด์ผ๋ง ํจ๊ณผ์ ์ ๋๋ค. -msched-์ ์ด-์ฌ์ ์ฌ์ฉํ๋๋ก ์ค์ ๋์์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ์ 'ํ์ฑํ'์ ๋๋ค.
-mno-sched prefer-non-data-spec-insns
-msched-prefer-๋น-๋ฐ์ดํฐ-์ฌ์-insns
ํ์ฑํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ถ์ธก ์ง์นจ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ผ์ ์ ๋ํด ์ ํ๋ฉ๋๋ค.
ํ์ฌ ๋ค๋ฅธ ์ ํ. ์ด๊ฒ์ ๋ฐ์ดํฐ ์ถ์ธก์ ํจ์ฌ ๋ ๋ง์ด ์ฌ์ฉํฉ๋๋ค.
๋ณด์์ ์ธ. ๊ธฐ๋ณธ๊ฐ์ '๋นํ์ฑํ'์ ๋๋ค.
-mno-sched-prefer-non-control-spec-insns
-msched-prefer-non-control-spec-insns
ํ์ฑํ๋ ๊ฒฝ์ฐ ์ ์ด-ํฌ๊ธฐ์ ์ง์นจ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ผ์ ์ ๋ํด ์ ํ๋ฉ๋๋ค.
ํ์ฌ๋ก์๋ ๋ค๋ฅธ ์ ํ์ด ์์ต๋๋ค. ์ด๊ฒ์ ์ ์ด ์ถ์ธก์ ๋ง์ด ์ฌ์ฉํฉ๋๋ค.
๋ ๋ณด์์ ์ด๋ค. ๊ธฐ๋ณธ๊ฐ์ '๋นํ์ฑํ'์ ๋๋ค.
-mno-sched-count-spec-in-์ค์ ๊ฒฝ๋ก
-msched-count-spec-in-์ค์-๊ฒฝ๋ก
ํ์ฑํ๋ ๊ฒฝ์ฐ ์์ธก ์ข ์์ฑ์ด ๊ณ์ฐ ์ค์ ๊ณ ๋ ค๋ฉ๋๋ค.
์ง์ ์ฐ์ ์์. ์ด๊ฒ์ ์ถ์ธก์ ์ฌ์ฉ์ ์กฐ๊ธ ๋ ๋ง๋ญ๋๋ค
๋ณด์์ ์ธ. ๊ธฐ๋ณธ๊ฐ์ '๋นํ์ฑํ'์ ๋๋ค.
-msched-spec-ldc
๊ฐ๋จํ ๋ฐ์ดํฐ ์ถ์ธก ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค.
-msched-์ ์ด-์ฌ์-ldc
์ ์ด ์ถ์ธก์ ๋ํ ๊ฐ๋จํ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค.
-๋งค ์ฃผ๊ธฐ ํ msched-stop-bits
์ค์ผ์ค๋งํ ๋ ๋ชจ๋ ์ฃผ๊ธฐ ํ์ ์ ์ง ๋นํธ๋ฅผ ๋ฐฐ์นํ์ญ์์ค. ์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค.
-msched-fp-mem-deps-์ ๋ก ๋น์ฉ
๋ถ๋ ์์์ ์ ์ฅ ๋ฐ ๋ก๋๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ถฉ๋์ ์ผ์ผํค์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๊ฐ์ ๋ช ๋ น ๊ทธ๋ฃน์ ๋ฐฐ์น๋ฉ๋๋ค. ์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
-msel-sched-dont-check-control-spec
์ ํ์ ์ค์ผ์ค๋ง์์ ์ ์ด ์ถ์ธก์ ๋ํ ๊ฒ์ฌ๋ฅผ ์์ฑํฉ๋๋ค. ์ด ๊น๋ฐ์
๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
-msched-์ต๋-๋ฉ๋ชจ๋ฆฌ-insns=์ต๋-์ธ์ค
๋ช ๋ น ๊ทธ๋ฃน๋น ๋ฉ๋ชจ๋ฆฌ ์ธ์ค์ ์๋ฅผ ์ ํํ์ฌ ๋ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌ
๋์ผํ ๋ช ๋ น ๊ทธ๋ฃน์์ ์์ฝ์ ์๋ํ๋ ํ์ ๋ฉ๋ชจ๋ฆฌ ์์ค.
์บ์ ๋ฑ ํฌ ์ถฉ๋์ ๋ฐฉ์งํ๋ ๋ฐ ์์ฃผ ์ ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
-msched-์ต๋-๋ฉ๋ชจ๋ฆฌ-insns-ํ๋ ์ ํ
์ ์ํด ์ง์ ๋ ํ๊ณ๋ฅผ ๋ง๋ญ๋๋ค. msched-์ต๋-๋ฉ๋ชจ๋ฆฌ-insns ์๊ฒฉํ ์ ํ, ๋ ๋ง์ ๊ฒ์ ํ์ฉํ์ง ์์
๋ช ๋ น ๊ทธ๋ฃน์ ํด๋น ์ซ์๋ณด๋ค ๊ทธ๋ ์ง ์์ผ๋ฉด ํ๊ณ๊ฐ "์ํํธ"์ ๋๋ค.
ํ๊ณ์ ๋๋ฌํ๋ฉด ๋น๋ฉ๋ชจ๋ฆฌ ์์ ์ด ์ ํธ๋์ง๋ง ๋ฉ๋ชจ๋ฆฌ
์์ ์ ์ฌ์ ํ โโ์์ฝ๋ ์ ์์ต๋๋ค.
LM32 ์ต์
Bowman์ -m ์ต์ ์ LatticeMico32 ์ํคํ ์ฒ์ ๋ํด ์ ์๋ฉ๋๋ค.
-mbarrel-shift ์ฌ์ฉ ๊ฐ๋ฅ
๋ฐฐ๋ด ์ํํธ ๋ช ๋ น์ ํ์ฑํํฉ๋๋ค.
-mdivide ์ฌ์ฉ
๋๋๊ธฐ ๋ฐ ๋ชจ๋๋ฌ์ค ๋ช ๋ น์ด๋ฅผ ํ์ฑํํฉ๋๋ค.
-m๊ณฑํ๊ธฐ ๊ฐ๋ฅ
๊ณฑํ๊ธฐ ๋ช ๋ น์ด๋ฅผ ํ์ฑํํฉ๋๋ค.
-msign ํ์ฅ ๊ฐ๋ฅ
๋ถํธ ํ์ฅ ์ง์นจ์ ํ์ฑํํฉ๋๋ค.
-muser ์ฌ์ฉ ๊ฐ๋ฅ
์ฌ์ฉ์ ์ ์ ์ง์นจ์ ํ์ฑํํฉ๋๋ค.
M32C ์ต์
-mcpu =name
์ฝ๋๊ฐ ์์ฑ๋๋ CPU๋ฅผ ์ ํํฉ๋๋ค. name ์ค ํ๋ ์ผ ์ ์์ต๋๋ค r8c R8C/Tiny์ฉ
์ฐ์, m16c M16C(์ต๋ /60) ์๋ฆฌ์ฆ์ ๊ฒฝ์ฐ, m32cm M16C/80 ์๋ฆฌ์ฆ ๋๋ m32c
M32C/80 ์๋ฆฌ์ฆ์ฉ.
-msim
ํ๋ก๊ทธ๋จ์ด ์๋ฎฌ๋ ์ดํฐ์์ ์คํ๋๋๋ก ์ง์ ํฉ๋๋ค. ์ด๋ก ์ธํด ๋์ฒด
์๋ฅผ ๋ค์ด ํ์ผ I/O๋ฅผ ์ง์ํ๋ ๋งํฌ๋ ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ๋น์ ์ํ์ง ์์์ผ
์ค์ ํ๋์จ์ด์์ ์คํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋ ์ด ์ต์ ์ ์ฌ์ฉํ์ญ์์ค. ๋น์ ์ํด์ผํฉ๋๋ค
ํ์ํ I/O ๊ธฐ๋ฅ์ ๋ํด ์์ฒด ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
-memregs=๋ฒํธ
์ฝ๋ ์์ฑ ์ค์ GCC๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์์ฌ ๋ ์ง์คํฐ์ ์๋ฅผ ์ง์ ํฉ๋๋ค.
์ด๋ฌํ ์์ฌ ๋ ์ง์คํฐ๋ ์ค์ ๋ ์ง์คํฐ์ฒ๋ผ ์ฌ์ฉ๋๋ฏ๋ก
์ฝ๋๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ ์ง์คํฐ์ ๋ง์ถ๋ GCC์ ๋ฅ๋ ฅ๊ณผ ์ฑ๋ฅ ์ ํ
๋ ์ง์คํฐ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ๋ชจ๋์
์ด ์ต์ ์ ๋ํด ๋์ผํ ๊ฐ์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. ๋๋ฌธ์ ์ด๊ฒ์ ์ฌ์ฉํ๋ฉด ์ ๋๋ค.
GCC์ ๊ธฐ๋ณธ ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ต์ .
M32R/D ์ต์
Bowman์ -m ์ต์ ์ Renesas M32R/D ์ํคํ ์ฒ์ ๋ํด ์ ์๋ฉ๋๋ค.
-m32r2
M32R/2์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m32rx
M32R/X์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m32r
M32R์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mmodel=์์
๋ชจ๋ ๊ฐ์ฒด๊ฐ ํ์ 16MB ๋ฉ๋ชจ๋ฆฌ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
"ld24" ๋ช ๋ น์ด๋ก ๋ก๋๋จ), ๋ชจ๋ ์๋ธ๋ฃจํด์ด
"bl"์ง์. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
ํน์ ๊ฐ์ฒด์ ์ฃผ์ ์ง์ ๊ฐ๋ฅ์ฑ์ "๋ชจ๋ธ" ์์ฑ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค.
-mmodel=์ค๊ฐ
๊ฐ์ฒด๊ฐ 32๋นํธ ์ฃผ์ ๊ณต๊ฐ์ ์๋ฌด ๊ณณ์๋ ์์ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค(์ปดํ์ผ๋ฌ๊ฐ ์์ฑ
์ฃผ์๋ฅผ ๋ก๋ํ๊ธฐ ์ํ "seth/add3" ๋ช ๋ น์ด), ๋ชจ๋ ์๋ธ๋ฃจํด์ด ๋ค์๊ณผ ๊ฐ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
"bl" ๋ช ๋ น์ผ๋ก ๋๋ฌํ ์ ์์ต๋๋ค.
-mmodel=๋ํ
๊ฐ์ฒด๊ฐ 32๋นํธ ์ฃผ์ ๊ณต๊ฐ์ ์๋ฌด ๊ณณ์๋ ์์ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค(์ปดํ์ผ๋ฌ๊ฐ ์์ฑ
์ฃผ์๋ฅผ ๋ก๋ํ๊ธฐ ์ํ "seth/add3" ๋ช ๋ น์ด), ์๋ธ๋ฃจํด์ด
"bl" ๋ช ๋ น์ด๋ก ๋๋ฌ ๊ฐ๋ฅ(์ปดํ์ผ๋ฌ๋ ํจ์ฌ ๋๋ฆฐ
"seth/add3/jl" ๋ช ๋ น ์ํ์ค).
-msdata=์์
์์ ๋ฐ์ดํฐ ์์ญ์ ์ฌ์ฉ์ ๋นํ์ฑํํฉ๋๋ค. ๋ณ์๋ ๋ค์ ์ค ํ๋์ ์ ๋ ฅ๋ฉ๋๋ค. .data, .bss๋ฐ
.rodata ("์น์ " ์์ฑ์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ). ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
์์ ๋ฐ์ดํฐ ์์ญ์ ์น์ ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. .sdata. and .sbss. ๊ฐ์ฒด๋ ๋ช ์์ ์ผ๋ก
์ด ์น์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ "์น์ " ์์ฑ์ด ์๋ ์์ ๋ฐ์ดํฐ ์์ญ์ ๋ฃ์ต๋๋ค.
-msdata=sdata
์์ ์ ์ญ ๋ฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์์ ๋ฐ์ดํฐ ์์ญ์ ๋ฃ๋ ํน๋ณํ ์์ฑ์ ํ์ง ๋ง์ญ์์ค.
์ฐธ์กฐํ๋ ์ฝ๋์ ๋๋ค.
-msdata=์ฌ์ฉ
์์ ๋ฐ์ดํฐ ์์ญ์ ์์ ์ ์ญ ๋ฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ํน์ ์์ฑ
์ฐธ์กฐํ๋๋ก ์ง์ํฉ๋๋ค.
-G NUM
์ ์ญ ๋ฐ ์ ์ ๊ฐ์ฒด๋ฅผ ๋ค์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ NUM ์์ ๋ฐ์ดํฐ๋ก ๋ฐ์ดํธ ๋๋
์ผ๋ฐ ๋ฐ์ดํฐ ๋๋ BSS ์น์ ๋์ BSS ์น์ . ๊ธฐ๋ณธ๊ฐ NUM is
8. ๊ทธ๋งํผ -msdata ์ต์ ์ ๋ค์ ์ค ํ๋๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ๋ฐ์ดํฐ or ์ฌ์ฉ ์ด ์ต์ ์
ํจ๊ณผ.
๋ชจ๋ ๋ชจ๋์ ๋์ผํ ํ์ผ๋ก ์ปดํ์ผํด์ผ ํฉ๋๋ค. -G NUM ๊ฐ. ๋ค๋ฅธ ๊ฒ์ผ๋ก ์ปดํ์ผ
~์ ๊ฐ์น NUM ์๋ํ๊ฑฐ๋ ์๋ํ์ง ์์ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ง์ปค์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ฉ์์ง---์๋ชป๋ ์ฝ๋๊ฐ ์์ฑ๋์ง ์์ต๋๋ค.
-m๋๋ฒ๊ทธ
์ปดํ์ผ๋ฌ์ M32R ๊ด๋ จ ์ฝ๋๊ฐ ๋์์ด ๋ ์ ์๋ ์ผ๋ถ ํต๊ณ๋ฅผ ํ์ํ๋๋ก ํฉ๋๋ค.
๋๋ฒ๊น ํ๋ก๊ทธ๋จ์์.
-์ ์ฑ ๋ฃจํ
๋ชจ๋ ๋ฃจํ๋ฅผ 32๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถฅ๋๋ค.
-mno-align ๋ฃจํ
๋ฃจํ์ ๋ํด 32๋ฐ์ดํธ ์ ๋ ฌ์ ์ ์ฉํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-์ค๋ฅ์จ=๋ฒํธ
๋ฐํ๋ฌผ ๋ฒํธ ์ฌ์ดํด๋น ์ง์นจ. ๋ฒํธ 1 ๋๋ 2๋ง ๊ฐ๋ฅํฉ๋๋ค.
-mbranch ๋น์ฉ=๋ฒํธ
๋ฒํธ 1 ๋๋ 2๋ง ๊ฐ๋ฅํฉ๋๋ค. 1์ด๋ฉด ์กฐ๊ฑด๋ถ๋ณด๋ค ๋ถ๊ธฐ๊ฐ ์ ํธ๋ฉ๋๋ค.
์ฝ๋๊ฐ 2์ด๋ฉด ๋ฐ๋๊ฐ ์ ์ฉ๋ฉ๋๋ค.
-mflush-ํธ๋ฉ=๋ฒํธ
์บ์๋ฅผ ํ๋ฌ์ํ๋ ๋ฐ ์ฌ์ฉํ ํธ๋ฉ ๋ฒํธ๋ฅผ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 12์ ๋๋ค. ์ ํจ
์ซ์๋ 0์์ 15 ์ฌ์ด์ ๋๋ค.
-mno-ํ๋ฌ์-ํธ๋ฉ
ํธ๋ฉ์ ์ฌ์ฉํ์ฌ ์บ์๋ฅผ ํ๋ฌ์ํ ์ ์๋๋ก ์ง์ ํฉ๋๋ค.
-mflush-func=name
์บ์๋ฅผ ํ๋ฌ์ํ๊ธฐ ์ํด ํธ์ถํ ์ด์ ์ฒด์ ํจ์์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. NS
๊ธฐ๋ณธ๊ฐ์ _ํ๋ฌ์_์บ์ํ์ง๋ง ํจ์ ํธ์ถ์ ํธ๋ฉ์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
-mno-ํ๋ฌ์-ํํฌ
์บ์ ํ๋ฌ์๋ฅผ ์ํ OS ๊ธฐ๋ฅ์ด ์์์ ๋ํ๋ ๋๋ค.
M680x0 ์ต์
์ด๋ค์ ์์ต๋๋ค -m M680x0 ๋ฐ ColdFire ํ๋ก์ธ์์ ๋ํด ์ ์๋ ์ต์ . ๊ธฐ๋ณธ ์ค์
์ปดํ์ผ๋ฌ๋ฅผ ๊ตฌ์ฑํ ๋ ์ ํํ ์ํคํ ์ฒ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๊ธฐ๋ณธ๊ฐ
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ํ ์ฌํญ์ ์๋์ ๋์ ์์ต๋๋ค.
-ํ์ง=์์น
ํน์ M680x0 ๋๋ ColdFire ๋ช ๋ น์ด ์ธํธ ์ํคํ ์ฒ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
ํ์ฉ ๊ฐ ์์น M680x0 ์ํคํ ์ฒ์ ๊ฒฝ์ฐ: 68000, 68010, 68020, 68030,
68040, 68060 and CPU32. ColdFire ์ํคํ ์ฒ๋ Freescale์
ISA ๋ถ๋ฅ ๋ฐ ํ์ฉ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด์ฌ์ผ, ์ด์ฌ ํ๋ฌ์ค, ์ด์ฌ ๋ธ and ์ด์ญ.
GCC๋ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. __mcf์์น__ ColdFire ๋์์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํ ๋๋ง๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ์์น ์ด ๋งคํฌ๋ก์์ -XNUMX ์ ์์ ์ฃผ์ด์ง ์ธ์.
ํจ๊ป ์ฌ์ฉํ๋ฉด, -XNUMX ์ and -mtune ์ ์ฌํ ์ ํ๊ตฐ์์ ์คํ๋๋ ์ฝ๋ ์ ํ
ํ๋ก์ธ์์ด์ง๋ง ํน์ ๋ง์ดํฌ๋ก์ํคํ ์ฒ์ ์ต์ ํ๋์ด ์์ต๋๋ค.
-mcpu =CPU
ํน์ M680x0 ๋๋ ColdFire ํ๋ก์ธ์์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. M680x0 CPUs๋:
68000, 68010, 68020, 68030, 68040, 68060, 68302, 68332 and CPU32. ์ฝ๋ํ์ด์ด CPUs
CPU๋ฅผ ์ ํ๊ตฐ์ผ๋ก ๋ถ๋ฅํ๋ ์๋ ํ์ ๋์ ์์ต๋๋ค.
๊ฐ์กฑ : -mcpu ์ธ์
51 : 51 51ac 51ag 51์ผํธ 51em 51je 51jf 51jg 51jm 51mm 51qe 51qm
5206 : 5202 5204 5206
5206e : 5206e
5208 : 5207 5208
5211a : 5210a 5211a
5213 : 5211 5212 5213
5216 : 5214 5216
52235 : 52230 52231 52232 52233 52234 52235
5225 : 5224 5225
52259 : 52252 52254 52255 52256 52258 52259
5235 : 5232 5233 5234 5235 SR 523x
5249 : 5249
5250 : 5250
5271 : 5270 5271
5272 : 5272
5275 : 5274 5275
5282 : 5280 5281 5282 SR 528x
53017 : 53011 53012 53013 53014 53015 53016 53017
5307 : 5307
5329 : 5327 5328 5329 SR 532x
5373 : 5372 5373 SR 537x
5407 : 5407
5475 : 5470 5471 5472 5473 5474 5475 SR 547x 5480 5481 5482 5483 5484 5485
-mcpu =CPU ์ฌ์ ์ -ํ์ง=์์น if ์์น ์ ํธํ CPU. ๋ค๋ฅธ ์กฐํฉ
-mcpu and -XNUMX ์ ๊ฑฐ๋ถ๋ฉ๋๋ค.
GCC๋ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. __mcf_cpu_CPU ColdFire ๋์์ด ๋ ๋ CPU ์ ํ๋ฉ๋๋ค. ๋ํ
์ ์ __mcf_ํจ๋ฐ๋ฆฌ_๊ฐ์กฑ, ์ฌ๊ธฐ์ ๊ฐ ๊ฐ์กฑ ์์ ํ์ ์ํด ์ฃผ์ด์ง๋ค.
-mtune=๊ณก์กฐ
์ ์ํด ์ค์ ๋ ์ ์ฝ ์กฐ๊ฑด ๋ด์์ ํน์ ๋ง์ดํฌ๋ก์ํคํ ์ฒ์ ๋ํ ์ฝ๋๋ฅผ ์กฐ์ ํฉ๋๋ค. -XNUMX ์
and -mcpu. M680x0 ๋ง์ดํฌ๋ก์ํคํ ์ฒ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 68000, 68010, 68020, 68030, 68040,
68060 and CPU32. ColdFire ๋ง์ดํฌ๋ก์ํคํ ์ฒ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. cfv1, cfv2, cfv3, cfv4 and
cfv4e.
VOUS pouvez์ aussi ์ฌ์ฉ -mtune = 68020-40 68020์์ ๋น๊ต์ ์ ์คํ๋์ด์ผ ํ๋ ์ฝ๋์ ๊ฒฝ์ฐ,
68030 ๋ฐ 68040 ๋์. -mtune = 68020-60 ์ ์ฌํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด 68060๊ฐ์ ๋์์ ํฌํจํฉ๋๋ค.
์. ์ด ๋ ์ต์ ์ ๋ค์๊ณผ ๋์ผํ ์กฐ์ ๊ฒฐ์ ์ ์ ํํฉ๋๋ค. -m68020-40 and -m68020-60
๊ฐ๊ฐ.
GCC๋ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. __mc์์น and __mc์์น__ 680x0 ์ํคํ ์ฒ์ ๋ง๊ฒ ์กฐ์ ํ ๋
์์น. ๊ทธ๊ฒ์ ๋ํ ์ ์ mc์์น ๋ ์ค ํ๋๊ฐ ์๋๋ผ๋ฉด -์์ ๋๋ ๋น GNU -ํ์ค ์ต์ ์ด ์ฌ์ฉ๋ฉ๋๋ค.
GCC๊ฐ ๋ค์์์ ์ ํํ ์ํคํ ์ฒ ๋ฒ์์ ๋ํด ์กฐ์ ์ค์ธ ๊ฒฝ์ฐ -mtune = 68020-40 or
-mtune = 68020-60, ๋ฒ์์ ๋ชจ๋ ์ํคํ ์ฒ์ ๋ํ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค.
GCC๋ ๋ํ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. __๋ฏธ๋์์ผ์ฐ__ ColdFire ๋ง์ดํฌ๋ก์ํคํ ์ฒ๋ฅผ ํ๋ํ ๋
์ผ์ฐ์ด๋๋ก ์ผ์ฐ ์์ ์ฃผ์ด์ง ์ธ์ ์ค ํ๋์ ๋๋ค.
-m68000
-mc68000
68000์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ์ปดํ์ผ๋ฌ๊ฐ ๋ค์์ ์ํด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
68000 ๊ธฐ๋ฐ ์์คํ . ๊ทธ๊ฒ์ ๋๋ฑํ๋ค -68000์=XNUMX.
68000์ ํฌํจํ์ฌ 000 ๋๋ EC68008 ์ฝ์ด๊ฐ ์๋ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ์ ์ด ์ต์ ์ ์ฌ์ฉํฉ๋๋ค.
68302, 68306, 68307, 68322, 68328 ๋ฐ 68356.
-m68010
68010์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ์ปดํ์ผ๋ฌ๊ฐ ๋ค์์ ์ํด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
68010 ๊ธฐ๋ฐ ์์คํ . ๊ทธ๊ฒ์ ๋๋ฑํ๋ค -68010์=XNUMX.
-m68020
-mc68020
68020์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ์ปดํ์ผ๋ฌ๊ฐ ๋ค์์ ์ํด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
68020 ๊ธฐ๋ฐ ์์คํ . ๊ทธ๊ฒ์ ๋๋ฑํ๋ค -68020์=XNUMX.
-m68030
68030์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ์ปดํ์ผ๋ฌ๊ฐ ๋ค์์ ์ํด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
68030 ๊ธฐ๋ฐ ์์คํ . ๊ทธ๊ฒ์ ๋๋ฑํ๋ค -68030์=XNUMX.
-m68040
68040์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ์ปดํ์ผ๋ฌ๊ฐ ๋ค์์ ์ํด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
68040 ๊ธฐ๋ฐ ์์คํ . ๊ทธ๊ฒ์ ๋๋ฑํ๋ค -68040์=XNUMX.
์ด ์ต์ ์ ๋ค์์ ์ํด ์๋ฎฌ๋ ์ดํธ๋์ด์ผ ํ๋ 68881/68882 ๋ช ๋ น์ด์ ์ฌ์ฉ์ ๊ธ์งํฉ๋๋ค.
68040์ ์ํํธ์จ์ด์ ๋๋ค. 68040์ ์๋ฎฌ๋ ์ดํธํ ์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ฌ์ฉํ์ญ์์ค.
๊ทธ ์ง์.
-m68060
68060์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ์ปดํ์ผ๋ฌ๊ฐ ๋ค์์ ์ํด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
68060 ๊ธฐ๋ฐ ์์คํ . ๊ทธ๊ฒ์ ๋๋ฑํ๋ค -68060์=XNUMX.
์ด ์ต์ ์ 68020 ๋ฐ 68881/68882 ๋ช ๋ น์ด์ ์ฌ์ฉ์ ๊ธ์งํฉ๋๋ค.
68060์ ์ํํธ์จ์ด์ ์ํด ์๋ฎฌ๋ ์ดํธ๋ฉ๋๋ค. 68060์ ์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ฌ์ฉํ์ญ์์ค.
์ด๋ฌํ ์ง์นจ์ ๋ชจ๋ฐฉํฉ๋๋ค.
-mcpu32
CPU32์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ ๋ค์์ ์ํด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
CPU32 ๊ธฐ๋ฐ ์์คํ . ๊ทธ๊ฒ์ ๋๋ฑํ๋ค -32์=cpuXNUMX.
32์ ํฌํจํ์ฌ CPU32 ๋๋ CPU68330+ ์ฝ์ด๊ฐ ์๋ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ์ ์ด ์ต์ ์ ์ฌ์ฉํฉ๋๋ค.
68331, 68332, 68333, 68334, 68336, 68340, 68341, 68349 ๋ฐ 68360
-m5200
520X ColdFire CPU์ฉ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
520X ๊ธฐ๋ฐ ์์คํ ์ฉ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ทธ๊ฒ์ ๋๋ฑํ๋ค -mcpu=5206, ํ์ฌ
ํด๋น ์ต์ ์ ์ํด ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
MCF5200, MCF5202,
MCF5204 ๋ฐ MCF5206.
-m5206e
5206e ColdFire CPU์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด ์ต์ ์ ์ด์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
๋๋ฑํ -mcpu=5206e.
-m528x
ColdFire 528X ์ ํ๊ตฐ์ ๊ตฌ์ฑ์์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ต์ ์ ์ง๊ธ
๋๋ฑํ ๊ฒ์ ์ ํธํ์ฌ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ -mcpu=528x.
-m5307
ColdFire 5307 CPU์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด ์ต์ ์ ์ด์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
๋๋ฑํ -mcpu=5307.
-m5407
ColdFire 5407 CPU์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด ์ต์ ์ ์ด์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
๋๋ฑํ -mcpu=5407.
-mcfv4e
ColdFire V4e ์ ํ๊ตฐ CPU์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค(์: 547x/548x). ์ฌ๊ธฐ์๋ ์ฌ์ฉ์ด ํฌํจ๋ฉ๋๋ค.
ํ๋์จ์ด ๋ถ๋ ์์์ ๋ช ๋ น์ด. ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -mcpu=547xํ๊ณ ๋
์ด์ ๊ทธ ์ต์ ์ ์ํด ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
-m68020-40
์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ง ์๊ณ 68040์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด ๊ฒฐ๊ณผ
68020/68881 ๋๋ 68030 ๋๋
68040. ์์ฑ๋ ์ฝ๋๋ ์๋ฎฌ๋ ์ดํธ๋ 68881 ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
68040.
์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -68020์=XNUMX -mtune = 68020-40.
-m68020-60
์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ง ์๊ณ 68060์ ๋ํ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด ๊ฒฐ๊ณผ
68020/68881 ๋๋ 68030 ๋๋
68040. ์์ฑ๋ ์ฝ๋๋ ์๋ฎฌ๋ ์ดํธ๋ 68881 ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
68060.
์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -68020์=XNUMX -mtune = 68020-60.
-mhard-float
-m68881
๋ถ๋ ์์์ ๋ช ๋ น์ด๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ 68020 ์ด์์ ๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ,
FPU๊ฐ ์๋ ColdFire ์ฅ์น์ ๊ฒฝ์ฐ. ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. __HAVE_68881__ M680x0์์
๋ชฉํ์ __mcffpu__ ColdFire ๋์์.
-msoft-float
๋ถ๋ ์์์ ๋ช ๋ น์ด๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค. ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ์ ์ฌ์ฉํ์ญ์์ค. ์ด๊ฒ์ด
68000, 68010 ๋ฐ 68832 ๋์์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ColdFire์ ๊ธฐ๋ณธ๊ฐ์ด๊ธฐ๋ ํฉ๋๋ค.
FPU๊ฐ ์๋ ์ฅ์น.
-mdiv
-mno-div
ColdFire ํ๋์จ์ด ๋๋๊ธฐ ๋ฐ ๋๋จธ์ง ๋ช ๋ น์ด๋ฅผ ์์ฑํฉ๋๋ค(์์ฑํ์ง ์์). ๋ง์ฝ์
-XNUMX ์ ์์ด ์ฌ์ฉ๋ฉ๋๋ค -mcpu, ๊ธฐ๋ณธ๊ฐ์ ColdFire ์ํคํ ์ฒ์ ๊ฒฝ์ฐ "on"์ด๊ณ "off"์ ๋๋ค.
M680x0 ์ํคํ ์ฒ์ฉ. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๋์ CPU์์ ๊ฐ์ ธ์ต๋๋ค(
๊ธฐ๋ณธ CPU ๋๋ ๋ค์์ผ๋ก ์ง์ ๋ CPU -mcpu). ์๋ฅผ ๋ค์ด ๊ธฐ๋ณธ๊ฐ์ "๊บผ์ง"์ ๋๋ค.
for -mcpu=5206 ๋ฐ "์ผ๊ธฐ"์ ๋ํ -mcpu=5206e.
GCC๋ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. __mcfhwdiv__ ์ด ์ต์ ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ.
-m์งง์
"int" ์ ํ์ "short int"์ ๊ฐ์ด 16๋นํธ ๋๋น๋ก ๊ฐ์ฃผํฉ๋๋ค. ๋ํ ๋งค๊ฐ๋ณ์
์คํ์ ์ ๋ฌ๋ API๋ API๊ฐ ์๋ ๋์์์๋ 16๋นํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ๋ ฌ๋ฉ๋๋ค.
32๋นํธ๋ก ์น๊ฒฉ์ ์๊ตฌํฉ๋๋ค.
-mno-์งง์
"int" ์ ํ์ 16๋นํธ ๋๋น๋ก ๊ฐ์ฃผํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mnobitํ๋
-mno ๋นํธ ํ๋
๋นํธ ํ๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. NS -m68000, -mcpu32 and -m5200 ์ต์ ์์
-mnobitํ๋.
-mbitํ๋
๋นํธ ํ๋ ๋ช ๋ น์ ์ฌ์ฉํ์ญ์์ค. NS -m68020 ์ต์ ์๋ฏธ -mbitํ๋. ์ด๊ฒ์
68020์ฉ์ผ๋ก ์ค๊ณ๋ ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mrtd
๊ณ ์ ๋ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํจ์ ํธ์ถ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค.
์ธ์๋ฅผ ํํ๋ "rtd" ๋ช ๋ น๊ณผ ํจ๊ป ๋ฐํ๋๋ ์ธ์์ ์
๋์์ค๋ ๋์. ์ด๊ฒ์ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ํธ์ถ์์๊ฒ ํ๋์ ๋ช ๋ น์ ์ ์ฅํฉ๋๋ค.
๊ฑฐ๊ธฐ์ ์ธ์๋ฅผ ํ๋๋ค.
์ด ํธ์ถ ๊ท์น์ Unix์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ํธํ๋์ง ์์ผ๋ฏ๋ก
Unix ์ปดํ์ผ๋ฌ๋ก ์ปดํ์ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ํ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ํจ์์ ๋ํด ํจ์ ํ๋กํ ํ์ ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
์ธ์์ ์("printf" ํฌํจ); ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ชป๋ ์ฝ๋๊ฐ ์์ฑ๋ฉ๋๋ค.
ํด๋น ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
๋ํ ๋๋ฌด ๋ง์ ํจ์๋ฅผ ํธ์ถํ๋ฉด ์ฌ๊ฐํ๊ฒ ์๋ชป๋ ์ฝ๋๊ฐ ๋ฐ์ํฉ๋๋ค.
์ธ์. (์ผ๋ฐ์ ์ผ๋ก ์ถ๊ฐ ์ธ์๋ ๋ฌดํดํ๊ฒ ๋ฌด์๋ฉ๋๋ค.)
"rtd" ๋ช ๋ น์ด๋ 68010, 68020, 68030, 68040, 68060 ๋ฐ CPU32์์ ์ง์๋ฉ๋๋ค.
ํ๋ก์ธ์, ๊ทธ๋ฌ๋ 68000 ๋๋ 5200์ ์๋๋๋ค.
-mno-rtd
์์ ์ ํํ ํธ์ถ ๊ท์น์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. -mrtd. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-์ ์ฑ-int
-mno-์ ๋ ฌ-int
GCC๊ฐ "int", "long", "long long", "float", "double" ๋ฐ "long"์ ์ ๋ ฌํ ์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค.
32๋นํธ ๊ฒฝ๊ณ์ "๋๋ธ" ๋ณ์(-์ ์ฑ-int) ๋๋ 16๋นํธ ๊ฒฝ๊ณ
(-mno-์ ๋ ฌ-int). 32๋นํธ ๊ฒฝ๊ณ์ ๋ณ์๋ฅผ ์ ๋ ฌํ๋ฉด ์คํ๋๋ ์ฝ๋๊ฐ ์์ฑ๋ฉ๋๋ค.
๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํฌ์ํ๋ฉด์ 32๋นํธ ๋ฒ์ค๊ฐ ์๋ ํ๋ก์ธ์์์ ๋ค์ ๋ ๋น ๋ฆ ๋๋ค.
๊ฒฝ๊ณ : ๋น์ ์ด -์ ์ฑ-int ์ค์์น, GCC๋ ์์ ๋ด์ฉ์ ํฌํจํ๋ ๊ตฌ์กฐ๋ฅผ ์ ๋ ฌํฉ๋๋ค.
๋๋ถ๋ถ์ ๊ฒ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ด๋๋ฆฌ ์ธํฐํ์ด์ค ์ฌ์๊ณผ ๋ค๋ฅธ ์ ํ
m68k.
-mprel
์ ์ญ์ ์ฌ์ฉํ๋ ๋์ 68000์ PC ์๋ ์ฃผ์ ์ง์ ๋ชจ๋๋ฅผ ์ง์ ์ฌ์ฉํ์ญ์์ค.
์คํ์ ํ ์ด๋ธ. ํ์ฌ ์ด ์ต์ ์ ๋ค์์ ์๋ฏธํฉ๋๋ค. -fpic, ์ต๋ 16๋นํธ ์คํ์ ํ์ฉ
PC ์๋ ์ฃผ์ ์ง์ ์ฉ. -fPIC ํ์ฌ ์ง์๋์ง ์์ต๋๋ค -mprelํ์ง๋ง
์ด๊ฒ์ 68020 ์ด์ ํ๋ก์ธ์์์ ์ง์๋ ์ ์์ต๋๋ค.
-mno-์๊ฒฉํ ์ ๋ ฌ
-mstrict-์ ๋ ฌ
์ ๋ ฌ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ๊ฐ ์์คํ ์์ ์ฒ๋ฆฌ๋๋ค๊ณ ๊ฐ์ ํ์ง ๋ง์ญ์์ค.
-msep-๋ฐ์ดํฐ
๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ค๋ฅธ ์์ญ์ ์์นํ ์ ์๋๋ก ํ๋ ์ฝ๋ ์์ฑ
ํ ์คํธ ์ธ๊ทธ๋จผํธ์์. ์ด๋ฅผ ํตํด
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ. ์ด ์ต์ ์ ๋ค์์ ์๋ฏธํฉ๋๋ค. -fPIC.
-mno-XNUMX์-๋ฐ์ดํฐ
๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ๊ฐ ํ ์คํธ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ๋ฅธ๋ค๊ณ ๊ฐ์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ญ์์ค. ์ด๊ฒ์
๊ธฐ๋ณธ๊ฐ.
-์ค๊ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ID ๋ฐฉ์์ ํตํด ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ํ์ฉ
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ํ๊ฒฝ์์ ์ ์๋ฆฌ ์คํ ๋ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฉ
๊ด๋ฆฌ. ์ด ์ต์ ์ ๋ค์์ ์๋ฏธํฉ๋๋ค. -fPIC.
-mno-id-๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ID ๊ธฐ๋ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฌ์ฉ๋๊ณ ์๋ค๊ณ ๊ฐ์ ํ์ง ์๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์
๊ธฐ๋ณธ๊ฐ.
-mshared-library-id=n
์ปดํ์ผ ์ค์ธ ID ๊ธฐ๋ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ณ ๋ฒํธ๋ฅผ ์ง์ ํฉ๋๋ค.
๊ฐ์ 0์ผ๋ก ์ง์ ํ๋ฉด ๋ ๊ฐ๊ฒฐํ ์ฝ๋๊ฐ ์์ฑ๋ฉ๋๋ค. ๋ค๋ฅธ ๊ฐ ์ง์ ํ๊ธฐ
๊ทธ ์ซ์๋ฅผ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ ๋นํ์ง๋ง ๋ ์ด์ ๊ณต๊ฐ ๋๋ ์๊ฐ์ด ์๋๋๋ค.
์ด ์ต์ ์ ์๋ตํ๋ ๊ฒ๋ณด๋ค ํจ์จ์ ์ ๋๋ค.
-mxgot
-mno-xgot
ColdFire์ฉ ์์น ๋ ๋ฆฝ์ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์๋ํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ญ์์ค.
GOT์๋ 8192๊ฐ ์ด์์ ํญ๋ชฉ์ด ์์ต๋๋ค. ์ด ์ฝ๋๋ ์ฝ๋๋ณด๋ค ํฌ๊ณ ๋๋ฆฝ๋๋ค.
์ด ์ต์ ์์ด ์์ฑ๋ฉ๋๋ค. M680x0 ํ๋ก์ธ์์์๋ ์ด ์ต์ ์ด ํ์ํ์ง ์์ต๋๋ค. -fPIC
์ถฉ๋ถํฉ๋๋ค.
GCC๋ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ผ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ GOT์์ ๊ฐ์ ๋ก๋ํฉ๋๋ค. ์ด ๋์
์๋์ ์ผ๋ก ํจ์จ์ ์ด๋ฉฐ GOT๊ฐ ์ฝ 64k๋ณด๋ค ์์ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. ์๋ฌด๊ฒ
ํฌ๋ฉด ๋ง์ปค๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ๋๋ก ํฉ๋๋ค.
๋ง๊ฒ ์๋ฆฐ ์ฌ๋ฐฐ์น: R_68K_GOT16O foobar
์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ฉด ๋ค์์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ค์ ์ปดํ์ผํด์ผ ํฉ๋๋ค. -mxgot. ๊ทธ๊ฒ์ ๋ค์๊ณผ ํจ๊ป ์๋ํด์ผํฉ๋๋ค
๋งค์ฐ ํฐ GOT. ๊ทธ๋ฌ๋ ๋ค์์ผ๋ก ์์ฑ๋ ์ฝ๋ -mxgot ํ๊ธฐ ๋๋ฌธ์ ํจ์จ์ฑ์ด ๋จ์ด์ง๋๋ค.
์ ์ญ ๊ธฐํธ์ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด 4๊ฐ์ ๋ช ๋ น์ด ํ์ํฉ๋๋ค.
์ต์ ๋ฒ์ ์ GNU ๋ง์ปค๋ฅผ ํฌํจํ ์ผ๋ถ ๋ง์ปค๋ ๋ค์์ ์์ฑํ ์ ์์ต๋๋ค.
์ฌ๋ฌ GOT ๋ฐ ์ ๋ ฌ GOT ํญ๋ชฉ. ๊ทธ๋ฌํ ๋ง์ปค๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ํ์ํฉ๋๋ค.
์ฌ์ฉ -mxgot 8192๊ฐ ์ด์์ GOT์ ์ ๊ทผํ๋ ๋จ์ผ ์ค๋ธ์ ํธ ํ์ผ์ ์ปดํ์ผํ ๋
ํญ๋ชฉ. ์์ฃผ ์์๋ง์ด ํ ์ ์์ต๋๋ค.
์ด ์ต์ ์ GCC๊ฐ ์์น ๋ ๋ฆฝ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋ ํ ์๋ฌด๋ฐ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์ ์ฝ์ด ์ต์
์ด๋ค์ ์์ต๋๋ค -m Motorola M*Core ํ๋ก์ธ์์ ๋ํด ์ ์๋ ์ต์ ์ ๋๋ค.
-mhardlit
-mno-hardlit
XNUMX๊ฐ ์ดํ์ ๋ช ๋ น์ด๋ก ์ํํ ์ ์๋ ๊ฒฝ์ฐ ์์๋ฅผ ์ฝ๋ ์คํธ๋ฆผ์ ์ธ๋ผ์ธํ์ญ์์ค.
-mdiv
-mno-div
๋๋๊ธฐ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค. (๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ).
-mrelax-์ฆ์
-mno-relax-์ฆ์
๋นํธ ์ฐ์ฐ์์ ์์ ํฌ๊ธฐ์ ์ฆ์๋ฅผ ํ์ฉํฉ๋๋ค.
-mwide-๋นํธ ํ๋
-mno ์์ด๋ ๋นํธ ํ๋
ํญ์ ๋นํธ ํ๋๋ฅผ "int" ํฌ๊ธฐ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
-m4byte-ํจ์
-mno-4byte-ํจ์
๋ชจ๋ ๊ธฐ๋ฅ์ 4๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ๋ ฌํฉ๋๋ค.
-mcallgraph-๋ฐ์ดํฐ
-mno-callgraph-๋ฐ์ดํฐ
callgraph ์ ๋ณด๋ฅผ ๋ด๋ณด๋ ๋๋ค.
-mslow-๋ฐ์ดํธ
-mno-๋๋ฆฐ ๋ฐ์ดํธ
๋ฐ์ดํธ ์๋์ ์ฝ์ ๋ ์๋ ์ก์ธ์ค๋ฅผ ์ ํธํฉ๋๋ค.
-๋ฏธ๋ฆฌํ ์๋์
-mbig-์๋์
๋ฆฌํ ์๋์ ๋์์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m210
-m340
210 ํ๋ก์ธ์์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-mno-lsim
๋ฐํ์ ์ง์์ด ์ ๊ณต๋์๋ค๊ณ ๊ฐ์ ํ๊ณ ์๋ฎฌ๋ ์ดํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ตํ์ญ์์ค.
(libsim.a) ๋ง์ปค ๋ช ๋ น์ค์์.
-mstack ์ฆ๊ฐ=ํฌ๊ธฐ
๋จ์ผ ์คํ ์ฆ๋ถ ์์ ์ ์ต๋๋์ ์ค์ ํฉ๋๋ค. ํฐ ๊ฐ์
๋ง์ ์์ ํ์๋ก ํ๋ ๊ธฐ๋ฅ์ ํฌํจํ๋ ํ๋ก๊ทธ๋จ์ ์๋๋ฅผ ๋์ ๋๋ค.
์คํ ๊ณต๊ฐ์ด์ง๋ง ์คํ์ด ํ์ฅ๋๋ฉด ๋ถํ ์ค๋ฅ๋ฅผ ์ ๋ฐํ ์๋ ์์ต๋๋ค.
๋๋ฌด ๋ง์. ๊ธฐ๋ณธ๊ฐ์ 0x1000์ ๋๋ค.
MeP ์ต์
-๋ง์ค๋ํ
๋ ๋ ์ง์คํฐ ๊ฐ์ ์ ๋ ์ฐจ์ด์ธ "abs" ๋ช ๋ น์ ํ์ฑํํฉ๋๋ค.
-๋ชฐ ์ต์
๋ชจ๋ ์ ํ์ ๋ช ๋ น์ด๋ฅผ ํ์ฑํํฉ๋๋ค---ํ๊ท , ๊ณฑํ๊ธฐ, ๋๋๊ธฐ, ๋นํธ ์ฐ์ฐ,
์ ํ XNUMX, ์ ๋ ์ฐจ์ด, ์ต์/์ต๋, ํด๋ฆฝ ๋ฐ ์ฑ๋.
-ํ๊ท
๋ ๋ ์ง์คํฐ์ ํ๊ท ์ ๊ณ์ฐํ๋ "ave" ๋ช ๋ น์ ํ์ฑํํฉ๋๋ค.
-m ๊ธฐ๋ฐ=n
ํฌ๊ธฐ ๋ณ์ n ๋ฐ์ดํธ ์ดํ์ ๋ฐ์ดํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ".based" ์น์ ์ ๋ฐฐ์น๋ฉ๋๋ค.
๊ธฐ๋ฐ ๋ณ์๋ $tp ๋ ์ง์คํฐ๋ฅผ ๊ธฐ๋ณธ ๋ ์ง์คํฐ๋ก ์ฌ์ฉํ๋ฉฐ 128๋ฐ์ดํธ ์ ํ์ด ์์ต๋๋ค.
".based" ์น์ ์ผ๋ก ์ด๋ํฉ๋๋ค.
-์ ๋นํ์ค
๋นํธ ์์ ๋ช ๋ น ํ์ฑํ---๋นํธ ํ ์คํธ("btstm"), ์ค์ ("bsetm"), ์ง์ฐ๊ธฐ
("bclrm"), ๋ฐ์ ("bnotm") ๋ฐ ํ ์คํธ ๋ฐ ์ค์ ("tas").
-MC=name
์ด๋ค ์น์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์นํ ์ง ์ ํํฉ๋๋ค. name "์์", "๊ฐ๊น์ด" ๋๋
"๋ฉ๋ฆฌ".
-mclip
"ํด๋ฆฝ" ๋ช ๋ น์ ํ์ฑํํฉ๋๋ค. "-mclip"์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ์ ์ฉํ์ง ์์ต๋๋ค.
"-mminmax"๋ฅผ ์ ๊ณตํฉ๋๋ค.
-mconfig=name
๊ธฐ๋ณธ ์ ๊ณต ์ฝ์ด ๊ตฌ์ฑ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค. ๊ฐ MeP ์นฉ์๋ ํ๋ ์ด์์
๊ทธ ์์ ๋ชจ๋; ๊ฐ ๋ชจ๋์๋ ์ฝ์ด CPU์ ๋ค์ํ ๋ณด์กฐ ํ๋ก์ธ์๊ฐ ์์ต๋๋ค.
์ง์นจ ๋ฐ ์ฃผ๋ณ ์ฅ์น. GCC์ ์ผ๋ถ๊ฐ ์๋ "MeP-Integrator" ๋๊ตฌ๋ ๋ค์์ ์ ๊ณตํฉ๋๋ค.
์ด ์ต์ ์ ํตํด ์ด๋ฌํ ๊ตฌ์ฑ; ์ด ์ต์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ชจ๋
ํด๋น ๋ช ๋ น์ค ์ต์ . ๊ธฐ๋ณธ ๊ตฌ์ฑ์ "๊ธฐ๋ณธ"์ ๋๋ค.
-์ ์บ
๋ณด์กฐ ํ๋ก์ธ์ ๋ช ๋ น์ ํ์ฑํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๊ฒ์ 32๋นํธ ๋ณด์กฐ ํ๋ก์ธ์์ ๋๋ค. ๋ฉ๋ชจ
๋ณด์กฐ ํ๋ก์ธ์๋ ์ผ๋ฐ์ ์ผ๋ก "-mconfig=" ์ต์ ์ ํตํด ํ์ฑํ๋ฉ๋๋ค.
-mcop32
32๋นํธ ๋ณด์กฐ ํ๋ก์ธ์์ ๋ช ๋ น์ ํ์ฑํํฉ๋๋ค.
-mcop64
64๋นํธ ๋ณด์กฐ ํ๋ก์ธ์์ ๋ช ๋ น์ ํ์ฑํํฉ๋๋ค.
-mivc2
IVC2 ์ค์ผ์ค๋ง์ ํ์ฑํํฉ๋๋ค. IVC2๋ 64๋นํธ VLIW ๋ณด์กฐ ํ๋ก์ธ์์ ๋๋ค.
-MDC
์์ ๋ณ์๊ฐ ".near" ์น์ ์ ๋ฐฐ์น๋๋๋ก ํฉ๋๋ค.
-mdiv
"div" ๋ฐ "divu" ๋ช ๋ น์ด๋ฅผ ํ์ฑํํฉ๋๋ค.
-๋ฉ๋ธ
๋น ์๋์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-๋ฉ
๋ฆฌํ ์๋์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-mio-ํ๋ฐ์ฑ
"io" ์์ฑ์ผ๋ก ํ์๋ ๋ชจ๋ ๋ณ์๊ฐ
ํ๋ฐ์ฑ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
-ml ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณ์๊ฐ ".far" ์น์ ์ ํ ๋น๋๋๋ก ํฉ๋๋ค.
-mleadz
"leadz"(์ ํ XNUMX) ๋ช ๋ น์ ํ์ฑํํฉ๋๋ค.
-mm ๋ณ์๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ".near" ์น์ ์ ํ ๋น๋๋๋ก ํฉ๋๋ค.
-mminmax
"์ต์" ๋ฐ "์ต๋" ๋ช ๋ น์ ํ์ฑํํฉ๋๋ค.
-๋ฉํฐ
๊ณฑํ๊ธฐ ๋ฐ ๊ณฑํ๊ธฐ ๋์ฐ ๋ช ๋ น์ด๋ฅผ ํ์ฑํํฉ๋๋ค.
-mno ์ต์
"-mall-opts"์ ์ํด ํ์ฑํ๋ ๋ชจ๋ ์ ํ์ ์ง์นจ์ ๋นํ์ฑํํฉ๋๋ค.
-mrepeat
๋ฎ์ ์ค๋ฒํค๋ ๋ฃจํ์ ์ฌ์ฉ๋๋ "๋ฐ๋ณต" ๋ฐ "erepeat" ๋ช ๋ น์ ํ์ฑํํฉ๋๋ค.
-ms ๋ชจ๋ ๋ณ์๊ฐ ".tiny" ์น์ ์ผ๋ก ๊ธฐ๋ณธ ์ค์ ๋๋๋ก ํฉ๋๋ค. ์์์ ์ฐธ๊ณ ํ์ธ์
์ด ์น์ ์ ๋ํ 65536๋ฐ์ดํธ ์ ํ์ ๋๋ค. ์ด๋ฌํ ๋ณ์์ ๋ํ ์ก์ธ์ค๋ %gp ๊ธฐ๋ฐ์ ์ฌ์ฉํฉ๋๋ค.
๋ฑ๋กํ์ญ์์ค.
-msatur
ํฌํ ์ง์นจ์ ํ์ฑํํฉ๋๋ค. ์ปดํ์ผ๋ฌ๋ ํ์ฌ
์์ฒด์ ์ผ๋ก ์์ฑํ์ง๋ง ์ด ์ต์ ์ ๋ค๋ฅธ ๋๊ตฌ์์ ํธํ์ฑ์ ์ํด ํฌํจ๋์ด ์์ต๋๋ค.
"์ฒ๋ผ"์ฒ๋ผ.
-msdram
๊ธฐ๋ณธ ROM ๊ธฐ๋ฐ ๋ฐํ์ ๋์ SDRAM ๊ธฐ๋ฐ ๋ฐํ์์ ์ฐ๊ฒฐํฉ๋๋ค.
-msim
์๋ฎฌ๋ ์ดํฐ ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.
-msimnovec
์ฌ์ค์ ์ ์ํ ๋ด์ฅ ์ง์์ ์ ์ธํ๊ณ ์๋ฎฌ๋ ์ดํฐ ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ๊ณ
์์ธ ๋ฒกํฐ ๋ฐ ํ ์ด๋ธ.
-MTF
๋ชจ๋ ํจ์๊ฐ ".far" ์น์ ์ผ๋ก ๊ธฐ๋ณธ ์ค์ ๋๋๋ก ํฉ๋๋ค. ์ด ์ต์ ์ด ์์ผ๋ฉด ๊ธฐ๋ฅ
๊ธฐ๋ณธ๊ฐ์ ".near" ์น์ ์ ๋๋ค.
-์ต์ =n
๋ณ์ n ๋ฐ์ดํธ ์ดํ๊ฐ ".tiny" ์น์ ์ ํ ๋น๋ฉ๋๋ค. ์ด๊ฒ๋ค
๋ณ์๋ $gp ๊ธฐ๋ณธ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ์ต์ ์ ๊ธฐ๋ณธ๊ฐ์ 4์ด์ง๋ง ์ฃผ์ํ์ญ์์ค.
".tiny" ์น์ ์๋ 65536๋ฐ์ดํธ ์ ํ์ด ์์ต๋๋ค.
๋ง์ดํฌ๋ก๋ธ๋ ์ด์ฆ ์ต์
-msoft-float
๋ถ๋ ์์์ ์ ์ํํธ์จ์ด ์๋ฎฌ๋ ์ด์ ์ ์ฌ์ฉํฉ๋๋ค(๊ธฐ๋ณธ๊ฐ).
-mhard-float
ํ๋์จ์ด ๋ถ๋ ์์์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-mmemcpy
๋ธ๋ก ์ด๋์ ์ต์ ํํ์ง ๋ง๊ณ "memcpy"๋ฅผ ์ฌ์ฉํ์ญ์์ค.
-mno-clearbss
์ด ์ต์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์ฌ์ฉํ๋ค -fno-zero-initialized-in-bss ๋์ .
-mcpu =CPU ์ ํ
์ฃผ์ด์ง CPU์ ๊ธฐ๋ฅ๊ณผ ์ผ์ ์ฝ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ง์๋๋ ๊ฐ์
์ฒด์ฌ vX.YY.Z์ด๋๋ก X ๋ฉ์ด์ ๋ฒ์ ์ด๋ฉฐ, YY ๋ ๋ถ ๋ฒ์ ์ด๊ณ Z is
ํธํ์ฑ ์ฝ๋. ์์ ๊ฐ์ v3.00.a, v4.00.b, v5.00.a, v5.00.b, v5.00.b,
v6.00.a.
-mxl-์ํํธ-๋ฎฌ
์ํํธ์จ์ด ๊ณฑํ๊ธฐ ์๋ฎฌ๋ ์ด์ ์ ์ฌ์ฉํฉ๋๋ค(๊ธฐ๋ณธ๊ฐ).
-mxl-์ํํธ-div
๋ถํ ์ ์ํํธ์จ์ด ์๋ฎฌ๋ ์ด์ ์ ์ฌ์ฉํฉ๋๋ค(๊ธฐ๋ณธ๊ฐ).
-mxl-๋ฐฐ๋ด ์ํํธ
ํ๋์จ์ด ๋ฐฐ๋ด ์ํํฐ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
-mxl-ํจํด-๋น๊ต
ํจํด ๋น๊ต ์ง์นจ์ ์ฌ์ฉํ์ญ์์ค.
-m์์ ๋๋๊ธฐ
์์ ๋ถํธ ์๋ ์ ์ ๋๋๊ธฐ์ ๋ํด ํ ์ด๋ธ โโ์กฐํ ์ต์ ํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-mxl-์คํ ๊ฒ์ฌ
์ด ์ต์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์ฌ์ฉํ๋ค -fstack-์ฒดํฌ ๋์ .
-mxl-gp-opt
GP ๊ธฐ์ค ".sdata"/".sbss" ์น์ ์ ์ฌ์ฉํฉ๋๋ค.
-mxl-๊ณฑํ๊ธฐ-๋์
32x32 ๊ณฑ์ ์ ๋์ ๋ถ๋ถ์ ๋์ ๊ณฑ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-mxl-ํ๋กํธ ๋ณํ
ํ๋์จ์ด ๋ถ๋ ์์์ ๋ณํ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ญ์์ค.
-mxl-ํ๋กํธ-sqrt
ํ๋์จ์ด ๋ถ๋ ์์์ ์ ๊ณฑ๊ทผ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-mbig-์๋์
๋น ์๋์ ๋์์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-๋ฏธ๋ฆฌํ ์๋์
๋ฆฌํ ์๋์ ๋์์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-mxl-์ฌ์ฃผ๋ฌธ
์ฌ์ ๋ ฌ ์ง์นจ์ ์ฌ์ฉํ์ญ์์ค(์ค์ ๋ฐ ๋ฐ์ดํธ ์ญ ๋ก๋/์ ์ฅ).
-mxl-๋ชจ๋-์ฑ ๋ชจ๋ธ
์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ธ ์ ํ ์ฑ ๋ชจ๋ธ. ์ ํจํ ๋ชจ๋ธ์
์คํ ํ์ผ
์ผ๋ฐ ์คํ ํ์ผ(๊ธฐ๋ณธ๊ฐ), ์์ ์ฝ๋ ์ฌ์ฉ crt0.o.
xmdstub
Xilinx XMD(Microprocessor Debugger) ๊ธฐ๋ฐ ์ํํธ์จ์ด ์นจ์ ๋๋ฒ๊ทธ์ ํจ๊ป ์ฌ์ฉ
xmdstub๋ผ๋ ์์ด์ ํธ. ์ด๊ฒ์ ์์ ํ์ผ์ ์ฌ์ฉํฉ๋๋ค crt1.o ์์ ์ฃผ์๋ฅผ ์ค์ ํฉ๋๋ค.
ํ๋ก๊ทธ๋จ์ 0x800์ผ๋ก ์ค์ ํฉ๋๋ค.
๋ถํธ ์คํธ๋ฉ
๋ถํธ๋ก๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๋๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ. ์ด ๋ชจ๋ธ์ ์์ ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
crt2.o ํ๋ก์ธ์ ๋ฆฌ์ ๋ฒกํฐ ํธ๋ค๋ฌ๋ฅผ ํฌํจํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ์ ํฉํ๋ค
ํ๋ก์ธ์ ๋ฆฌ์ ์ ๋ํ ์ ์ด๋ฅผ ๋ถํธ๋ก๋๊ฐ ์๋ ๋ถํธ๋ก๋๋ก ์ด์ ํ๊ธฐ ์ํด
์์ฉ ํ๋ก๊ทธ๋จ.
๋ ธ๋ฒกํฐ
MicroBlaze ๋ฒกํฐ๊ฐ ํ์ํ์ง ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ. ์ด ์ต์
๋ชจ๋ํฐ๋ง ์์ฉ ํ๋ก๊ทธ๋จ ๋ด์์ ์คํ๋๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด ๋ชจ๋ธ
์ฌ์ฉ crt3.o ์์ ํ์ผ๋ก.
์ ํ๊ถ -xl-๋ชจ๋-์ฑ ๋ชจ๋ธ ์ ๋ํ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ณ์นญ์ ๋๋ค. -mxl-๋ชจ๋-์ฑ ๋ชจ๋ธ.
MIPS ์ต์
-EB ๋น ์๋์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-์์ ๋ฆฌํ ์๋์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ๋ฐ์ค*์-*-* ๊ตฌ์ฑ.
-ํ์ง=์์น
์์ ์คํ๋๋ ์ฝ๋ ์์ฑ ์์น, ์ผ๋ฐ MIPS ISA์ ์ด๋ฆ์ด๊ฑฐ๋
ํน์ ํ๋ก์ธ์์ ์ด๋ฆ. ISA ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ฐ์ค1, ๋ฐ์ค2, ๋ฐ์ค3, ๋ฐ์ค4,
๋ฐ์ค32, ๋ฐ์ค32r2, ๋ฐ์ค64 and ๋ฐ์ค64r2. ํ๋ก์ธ์ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 4kc, 4km, 4kp, 4ksc,
4kec, 4์ผ, 4ํต, 4ksd, 5kc, 5 ๋ , 20kc, 24kc, 24kf2_1, 24kf1_1, 24kec, 24kef2_1,
24kef1_1, 34kc, 34kf2_1, 34kf1_1, 34kn, 74kc, 74kf2_1, 74kf1_1, 74kf3_2, 1004kc,
1004kf2_1, 1004kf1_1, ๋ฃฝ์2e, ๋ฃฝ์2f, ๋ฃฝ์3a, m4k, ์ฅํ ์จ, ์ฅํ ์จ+,
์ฅํ ์จ2, ์ค๋ฆฌ์จ, r2000, r3000, r3900, r4000, r4400, r4600, r4650, r4700, r6000, r8000,
rm7000, rm9000, r10000, r12000, r14000, r16000, sb1, sr71000, vr4100, vr4111, vr4120,
vr4130, vr4300, vr5000, vr5400, vr5500, xlr and xlp. ํน๋ณํ ๊ฐ์น ํ๋กฌ์๋น
์ ํํ ABI์ ๋ํด ๊ฐ์ฅ ํธํ๋๋ ์ํคํ ์ฒ๋ฅผ ์ ํํฉ๋๋ค(์ฆ, ๋ฐ์ค1 for
32๋นํธ ABI ๋ฐ ๋ฐ์ค3 64๋นํธ ABI์ฉ).
๊ธฐ๋ณธ Linux/GNU ๋๊ตฌ ์ฒด์ธ๋ ๊ฐ์ ์ง์ํฉ๋๋ค. ์ถ์ , ์ต๊ณ ์ ์ ํ
ํธ์คํธ ํ๋ก์ธ์์ ๋ํ ์ํคํ ์ฒ ์ต์ . -march = ๋ค์ดํฐ๋ธ GCC๊ฐ ์ํํ๋ ๊ฒฝ์ฐ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
ํ๋ก์ธ์๋ฅผ ์ธ์ํ์ง ๋ชปํฉ๋๋ค.
ํ๋ก์ธ์ ์ด๋ฆ์์ ์ต์ข 000 ๋ค์๊ณผ ๊ฐ์ด ์ถ์ฝ ๋ ์ ์์ต๋๋ค. k (์ : -ํ์ง=r2k).
์ ๋์ฌ๋ ์ ํ ์ฌํญ์ด๋ฉฐ vr ์ฐ์ฌ์ง ์ ์์ต๋๋ค r.
์์์ ์ด๋ฆ nf2_1 FPU๊ฐ ํด๋ญ์ ์ ๋ฐ์ผ๋ก ํด๋ญ๋ ํ๋ก์ธ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
ํต์ฌ, ์์์ ์ด๋ฆ nf1_1 ๋์ผํ ์๋๋ก ํด๋ญ๋ FPU๊ฐ ์๋ ํ๋ก์ธ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
ํต์ฌ์ผ๋ก, ํ์์ ์ด๋ฆ nf3_2 ๋น์จ๋ก ํด๋ญ๋ FPU๊ฐ ์๋ ํ๋ก์ธ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ฝ์ด์ ๋ํด 3:2์ ๋น์จ์ ๋๋ค. ํธํ์ฑ์ ์ํด, nf ๋ก ๋ฐ์๋ค์ฌ์ง๋ค.
๋์์ด nf2_1 ๋์ nx and bfx ์ ๋์์ด๋ก ๋ฐ์๋ค์ฌ์ง๋๋ค. nf1_1.
GCC๋ ์ด ์ต์ ์ ๊ฐ์ ๋ฐ๋ผ ๋ ๊ฐ์ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ๋ _MIPS_ARCH,
๋์ ์ํคํ ์ฒ์ ์ด๋ฆ์ ๋ฌธ์์ด๋ก ์ ๊ณตํฉ๋๋ค. ๋ ๋ฒ์งธ๋ ํ์์ด ์์ต๋๋ค.
_MIPS_ARCH_ํธ์ด๋๋ก ํธ ์ ๋๋ฌธ์ ๊ฐ์ ๋๋ค. _MIPS_ARCH. ์๋ฅผ ๋ค์ด,
-2000์=rXNUMX ์ธํธ _MIPS_ARCH ์ "r2000" ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. _MIPS_ARCH_R2000.
์ฐธ๊ณ ๋ก _MIPS_ARCH ๋งคํฌ๋ก๋ ์์ ์ฃผ์ด์ง ํ๋ก์ธ์ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ๋ค์ ๋งํด,
์ ์ฒด ์ ๋์ด๊ฐ ์๊ณ ์ฝ์ด๊ฐ ์์ต๋๋ค. 000 as k. ์ ๊ฒฝ์ฐ ํ๋กฌ์๋นWalk Through California ํ๋ก๊ทธ๋จ,
๋งคํฌ๋ก๋ ํ์ธ๋ ์ํคํ ์ฒ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค( "๋ฐ์ค1" or "๋ฐ์ค3"). ๊ทธ๊ฒ์ ์ด๋ฆ์
๊ธฐ๋ณธ ์ํคํ ์ฒ -XNUMX ์ ์ต์ ์ด ์ฃผ์ด์ง๋๋ค.
-mtune=์์น
์ต์ ํ ์์น. ๋ฌด์๋ณด๋ค๋ ์ด ์ต์ ์ ๋ช ๋ น์ด ์คํ๋๋ ๋ฐฉ์์ ์ ์ดํฉ๋๋ค.
์์ ๋ ์ฐ์ ์ฐ์ฐ์ ์ธ์ง๋ ๋น์ฉ. ๋ชฉ๋ก ์์น ๊ฐ
์ ๋์ผํ๋ค -XNUMX ์.
์ด ์ต์ ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด GCC๋ ๋ค์์์ ์ง์ ํ ํ๋ก์ธ์์ ๋ํด ์ต์ ํํฉ๋๋ค. -XNUMX ์. ๋ก
์ฌ์ฉ -XNUMX ์ and -mtune ํจ๊ป ์คํ๋๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
ํ๋ก์ธ์ ์ ํ๊ตฐ์ด์ง๋ง ํด๋น ์ ํ๊ตฐ์ ํน์ ๊ตฌ์ฑ์์ ๋ํ ์ฝ๋๋ฅผ ์ต์ ํํฉ๋๋ค.
-mtune ๋งคํฌ๋ก ์ ์ _MIPS_TUNE and _MIPS_TUNE_ํธ, ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค.
์ ์, -XNUMX ์ ์์์ ์ค๋ช ํ ๊ฒ๋ค.
-๋ฐ์ค1
์ ํด๋น -march=๋ฐ์ค1.
-๋ฐ์ค2
์ ํด๋น -march=๋ฐ์ค2.
-๋ฐ์ค3
์ ํด๋น -march=๋ฐ์ค3.
-๋ฐ์ค4
์ ํด๋น -march=๋ฐ์ค4.
-๋ฐ์ค32
์ ํด๋น -march=๋ฐ์ค32.
-mips32r2
์ ํด๋น -ํ์ง=mips32r2.
-๋ฐ์ค64
์ ํด๋น -march=๋ฐ์ค64.
-mips64r2
์ ํด๋น -ํ์ง=mips64r2.
-๋ฐ์ค16
-mno-mips16
MIPS16 ์ฝ๋๋ฅผ ์์ฑ(์์ฑํ์ง ์์)ํฉ๋๋ค. GCC๊ฐ MIPS32 ๋๋ MIPS64๋ฅผ ๋์์ผ๋ก ํ๋ ๊ฒฝ์ฐ
์ํคํ ์ฒ์์ MIPS16e ASE๋ฅผ ์ฌ์ฉํฉ๋๋ค.
MIPS16 ์ฝ๋ ์์ฑ์ ๋ค์์ ํตํด ๊ธฐ๋ฅ๋ณ๋ก ์ ์ดํ ์๋ ์์ต๋๋ค.
"mips16" ๋ฐ "nomips16" ์์ฑ.
-mflip-mips16
๊ต๋ ๊ธฐ๋ฅ์์ MIPS16 ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด ์ต์ ์ ํ๊ท์ฉ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค.
ํผํฉ MIPS16/๋น MIPS16 ์ฝ๋ ์์ฑ ํ ์คํธ, ์ผ๋ฐ์ฉ์ด ์๋๋๋ค.
์ฌ์ฉ์ ์ฝ๋๋ฅผ ์ปดํ์ผํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
-minterlink-mips16
-mno-interlink-mips16
MIPS16์ด ์๋ ์ฝ๋๊ฐ MIPS16 ์ฝ๋์ ๋งํฌ ํธํ๋์ด์ผ ํจ์ ์๊ตฌํฉ๋๋ค(์๊ตฌํ์ง ์์).
์๋ฅผ ๋ค์ด, ๋น MIPS16 ์ฝ๋๋ MIPS16 ์ฝ๋๋ก ์ง์ ์ ํํ ์ ์์ต๋๋ค. ๋ค์ ์ค ํ๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํธ์ถ ๋๋ ๊ฐ์ ์ ํ. -minterlink-mips16 ๋ฐ๋ผ์ ์ง์ ์ ํ๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
GCC๋ ์ ํ์ ๋์์ด MIPS16์ด ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
-๋ง๋น=32
-๋ง๋น=o64
-๋ง๋น=n32
-๋ง๋น=64
-๋ง๋น=์๋น
์ฃผ์ด์ง ABI์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
EABI์๋ 32๋นํธ ๋ฐ 64๋นํธ ๋ณํ์ด ์์ต๋๋ค. GCC๋ ์ผ๋ฐ์ ์ผ๋ก 64๋นํธ๋ฅผ ์์ฑํฉ๋๋ค.
64๋นํธ ์ํคํ ์ฒ๋ฅผ ์ ํํ ๋ ์ฝ๋๋ฅผ -mgp32 32๋นํธ ์ฝ๋๋ฅผ ์ป์ผ๋ ค๋ฉด
๋์ .
O64 ABI์ ๋ํ ์ ๋ณด๋ ๋ค์์ ์ฐธ์กฐํ์ญ์์ค.http://gcc.gnu.org/projects/mipso64-abi.html>.
GCC๋ ๋ถ๋ ์์์ ๋ ์ง์คํฐ๊ฐ 32๊ฐ ์๋ o64 ABI์ ๋ณํ์ ์ง์ํฉ๋๋ค.
32๋นํธ๋ณด๋ค ๋์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์ด ์กฐํฉ์ ์ ํํ ์ ์์ต๋๋ค. -๋ง๋น=32 -mfp64. ์ด ABI
"mthc1" ๋ฐ "mfhc1" ๋ช ๋ น์ด์ ์์กดํ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ง์๋ฉ๋๋ค.
MIPS32R2 ํ๋ก์ธ์.
์ธ์ ๋ฐ ๋ฐํ ๊ฐ์ ๋ํ ๋ ์ง์คํฐ ํ ๋น์ ๋์ผํ๊ฒ ์ ์ง๋์ง๋ง ๊ฐ๊ฐ
์ค์นผ๋ผ ๊ฐ์ ํ ์์ 64๋นํธ๊ฐ ์๋ ๋จ์ผ 32๋นํธ ๋ ์ง์คํฐ๋ก ์ ๋ฌ๋ฉ๋๋ค.
๋ ์ง์คํฐ. ์๋ฅผ ๋ค์ด ์ค์นผ๋ผ ๋ถ๋ ์์์ ๊ฐ์ $f0 ๋ง์ด ์๋๋ผ
$f0/$f1 ์. ํธ์ถ ์ ์ฅ ๋ ์ง์คํฐ ์ธํธ๋ ๋์ผํ๊ฒ ์ ์ง๋์ง๋ง ๋ชจ๋ 64๋นํธ
์ ์ฅ๋ฉ๋๋ค.
-๋ง๋น์ฝ
-mno-abicals
SVR4 ์คํ์ผ์ ๋์ ๊ฐ์ฒด์ ์ ํฉํ ์ฝ๋๋ฅผ ์์ฑ(์์ฑํ์ง ์์)ํฉ๋๋ค.
-๋ง๋น์ฝ SVR4 ๊ธฐ๋ฐ ์์คํ ์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-m๊ณต์
-mno ๊ณต์
์์ ํ ์์น ๋ ๋ฆฝ์ ์ธ ์ฝ๋๋ฅผ ์์ฑ(์์ฑํ์ง ์์)ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด ์ต์ ์ ๋ค์์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค. -๋ง๋น์ฝ.
All -๋ง๋น์ฝ ์ฝ๋๋ ์ ํต์ ์ผ๋ก ์ต์ ์ ๊ด๊ณ์์ด ์์น ๋ ๋ฆฝ์ ์ด์์ต๋๋ค.
์ฒ๋ผ -fPIC and -fpic. ๊ทธ๋ฌ๋ ํ์ฅ์ผ๋ก์ GNU ํด์ฒด์ธ์ ์คํ ํ์ผ์ ํ์ฉํฉ๋๋ค.
๋ก์ปฌ ๋ฐ์ธ๋ฉ ๊ธฐํธ์ ๋ํ ์ ๋ ์ก์ธ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ ์งง์ GP๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
์ด๊ธฐํ ์ํ์ค๋ฅผ ์์ฑํ๊ณ ๋ก์ปฌ๋ก ์ ์๋ ํจ์์ ๋ํ ์ง์ ํธ์ถ์ ์์ฑํฉ๋๋ค. ์ด๊ฒ
๋ชจ๋๋ ์ ์ํด ์ ํ๋ฉ๋๋ค. -mno ๊ณต์ .
-mno ๊ณต์ binutils 2.16 ์ด์์ ์์กดํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ฒด๋ง ์์ฑํฉ๋๋ค.
GNU ๋ง์ปค์ ์ํด ์ฐ๊ฒฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ต์ ์ ์ต์ข ABI์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
์คํ ๊ฐ๋ฅ; ์ฌ๋ฐฐ์น ๊ฐ๋ฅํ ๊ฐ์ฒด์ ABI์๋ง ์ํฅ์ ์ค๋๋ค. ์ฌ์ฉ -mno ๊ณต์
์ผ๋ฐ์ ์ผ๋ก ์คํ ํ์ผ์ ๋ ์๊ณ ๋น ๋ฅด๊ฒ ๋ง๋ญ๋๋ค.
-m๊ณต์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-MPLT
-mno-plt
์ ์ ๋ฐ ๋์ ๋ง์ปค๊ฐ PLT ๋ฐ ๋ณต์ฌ๋ฅผ ์ง์ํ๋ค๊ณ ๊ฐ์ (๊ฐ์ ํ์ง ์์)
์ฌ๋ฐฐ์น. ์ด ์ต์ ์ ๋ค์์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค. -mno ๊ณต์ -๋ง๋น์ฝ. n64 ABI์ ๊ฒฝ์ฐ ์ด
์ต์ ์ด ์์ผ๋ฉด ํจ๊ณผ๊ฐ ์์ต๋๋ค. -msym32.
๋น์ ์ ํ ์ ์์ต๋๋ค -MPLT GCC๋ฅผ ๊ตฌ์ฑํ์ฌ ๊ธฐ๋ณธ๊ฐ --mips-plt ํฌํจ. ๊ธฐ๋ณธ๊ฐ
is -mno-plt ๊ทธ๋ ์ง ์์ผ๋ฉด.
-mxgot
-mno-xgot
์ ์ญ ์คํ์ ํ ์ด๋ธ์ ํฌ๊ธฐ์ ๋ํ ์ผ๋ฐ์ ์ธ ์ ํ์ ๋ค์ด ์ฌ๋ฆฝ๋๋ค(๋ค์ด ์ฌ๋ฆฌ์ง ์์).
GCC๋ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ผ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ GOT์์ ๊ฐ์ ๋ก๋ํฉ๋๋ค. ์ด ๋์
์๋์ ์ผ๋ก ํจ์จ์ ์ด๋ฉฐ GOT๊ฐ ์ฝ 64k๋ณด๋ค ์์ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. ์๋ฌด๊ฒ
ํฌ๋ฉด ๋ง์ปค๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ๋๋ก ํฉ๋๋ค.
๋ง๊ฒ ์๋ฆฐ ์ฌ๋ฐฐ์น: R_MIPS_GOT16 foobar
์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ฉด ๋ค์์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ค์ ์ปดํ์ผํด์ผ ํฉ๋๋ค. -mxgot. ์ด๊ฒ์ ๋งค์ฐ
์ฝ๋๊ฐ ๋ ํจ์จ์ ์ด์ง๋ง ํฐ GOT๋ ์ธ
์ ์ญ ๊ธฐํธ์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ช ๋ น.
์ผ๋ถ ๋ง์ปค๋ ์ฌ๋ฌ GOT๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ง์ปค๊ฐ ์๋ ๊ฒฝ์ฐ
๋ง ์ฌ์ฉํด์ผํฉ๋๋ค -mxgot ๋จ์ผ ๊ฐ์ฒด ํ์ผ์ด 64k ์ด์์ ํ์ผ์ ์ก์ธ์คํ ๋
GOT ํญ๋ชฉ์ ๊ฐ์น. ์์ฃผ ์์๋ง์ด ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ต์ ์ GCC๊ฐ ์์น ๋ ๋ฆฝ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋ ํ ์๋ฌด ํจ๊ณผ๊ฐ ์์ต๋๋ค.
-mgp32
๋ฒ์ฉ ๋ ์ง์คํฐ์ ๋๋น๊ฐ 32๋นํธ๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
-mgp64
๋ฒ์ฉ ๋ ์ง์คํฐ์ ๋๋น๊ฐ 64๋นํธ๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
-mfp32
๋ถ๋ ์์์ ๋ ์ง์คํฐ์ ๋๋น๊ฐ 32๋นํธ๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
-mfp64
๋ถ๋ ์์์ ๋ ์ง์คํฐ์ ๋๋น๊ฐ 64๋นํธ๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
-mhard-float
๋ถ๋ ์์์ ๋ณด์กฐ ํ๋ก์ธ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-msoft-float
๋ถ๋ ์์์ ๋ณด์กฐ ํ๋ก์ธ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ๋ถ๋ ์์์ ๊ตฌํ
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ์ ์ฌ์ฉํ์ฌ ๊ณ์ฐํฉ๋๋ค.
-mno-float
์ ํด๋น -msoft-float, ๊ทธ๋ฌ๋ ์ถ๊ฐ๋ก ์ปดํ์ผ ์ค์ธ ํ๋ก๊ทธ๋จ์ด
๋ถ๋ ์์์ ์ฐ์ฐ์ ์ํํ์ง ์์ต๋๋ค. ์ด ์ต์ ์ ํ์ฌ ์ง์๋ฉ๋๋ค
ํน๋ณํ ์ธํธ๋ฅผ ์ ํํ ์ ์๋ ์ผ๋ถ ๋ฒ ์ด๋ฉํ MIPS ๊ตฌ์ฑ์ ์ํด์๋ง
๋ชจ๋ ๋ถ๋ ์์์ ์ง์์ด ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: ๋ถ๋ ์์์
ํฌ์ธํธ "printf" ํ์). "-mno-float"๋ก ์ปดํ์ผ๋ ์ฝ๋๊ฐ ์ค์๋ก ๋ค์์ ํฌํจํ๋ ๊ฒฝ์ฐ
๋ถ๋ ์์์ ์ฐ์ฐ์ ๊ฒฝ์ฐ ๋งํฌ ํ์ ๋๋ ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
-msingle-float
๋ถ๋ ์์์ ๋ณด์กฐ ํ๋ก์ธ์๊ฐ ๋จ์ ๋ฐ๋ ์ฐ์ฐ๋ง ์ง์ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
-m๋๋ธ ํ๋กํธ
๋ถ๋ ์์์ ๋ณด์กฐ ํ๋ก์ธ์๊ฐ ๋ฐฐ์ ๋ฐ๋ ์ฐ์ฐ์ ์ง์ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ
๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mllsc
-mno-llsc
์ฌ์ฉ(์ฌ์ฉํ์ง ์์) ll, sc๋ฐ ๋๊ธฐํ ์์ ๋ฉ๋ชจ๋ฆฌ ๋ด์ฅ ๊ตฌํ ์ง์นจ
๊ธฐ๋ฅ. ๋ ์ต์ ์ด ๋ชจ๋ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ GCC๋ ๋์์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ง์นจ์ ์ฌ์ฉํฉ๋๋ค.
์ํคํ ์ฒ๊ฐ ๊ทธ๋ค์ ์ง์ํฉ๋๋ค.
-mllsc ๋ฐํ์ ํ๊ฒฝ์ด ์ง์นจ์ ์๋ฎฌ๋ ์ดํธํ ์ ์๊ณ -mno-llsc
๋นํ์ค ISA์ฉ์ผ๋ก ์ปดํ์ผํ ๋ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ ์ต์ ์ค ํ๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก GCC๋ฅผ ๊ตฌ์ฑํ์ฌ ---llsc ํฌํจ and --llsc ์์ด ๊ฐ๊ฐ.
---llsc ํฌํจ ์ผ๋ถ ๊ตฌ์ฑ์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ์ค์น ๋ฌธ์ ์ฐธ์กฐ
์์ธํ ๋ด์ฉ์.
-mdsp
-mno-dsp
MIPS DSP ASE์ ๊ฐ์ ํ 1์ ์ฌ์ฉ(์ฌ์ฉํ์ง ๋ง์ญ์์ค).
์ด ์ต์ ์ ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. __mips_dsp. ๊ทธ๊ฒ์ ๋ํ ์ ์
__mips_dsp_rev 1ํฉ๋๋ค.
-MDSPR2
-mno-dspr2
MIPS DSP ASE์ ๊ฐ์ ํ 2์ ์ฌ์ฉ(์ฌ์ฉํ์ง ๋ง์ญ์์ค).
์ด ์ต์ ์ ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. __mips_dsp and __mips_dspr2. ๊ทธ๊ฒ์ ๋ํ
์ ์ __mips_dsp_rev 2ํฉ๋๋ค.
-msmartmips
-mno-smartmips
MIPS SmartMIPS ASE๋ฅผ ์ฌ์ฉ(์ฌ์ฉํ์ง ๋ง์ญ์์ค).
-mpaired-๋จ์ผ
-mno ์ ๋จ์ผ
์์ ์ด๋ฃจ๋ ๋จ์ผ ๋ถ๋ ์์์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค(์ฌ์ฉํ์ง ์์).
์ด ์ต์ ์ ์ฌ์ฉํ๋ ค๋ฉด ํ๋์จ์ด ๋ถ๋ ์์์ ์ง์์ด ํ์ฑํ๋์ด์ผ ํฉ๋๋ค.
-mdmx
-mno-mdmx
MIPS ๋์งํธ ๋ฏธ๋์ด ํ์ฅ ์ง์นจ์ ์ฌ์ฉํฉ๋๋ค(์ฌ์ฉํ์ง ์์). ์ด ์ต์ ์
64๋นํธ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ๋๋ฉฐ ํ๋์จ์ด ๋ถ๋ ์์์ ์ง์์ด ํ์ํฉ๋๋ค.
์ฌ์ฉํ๋๋ก ์ค์ ๋์์ต๋๋ค.
-mips3d
-mno-mips3d
MIPS-3D ASE๋ฅผ ์ฌ์ฉํ์ญ์์ค(์ฌ์ฉํ์ง ๋ง์ญ์์ค). ์ต์ -mips3d ์๋ฏธํ๋ค -mpaired-๋จ์ผ.
-mmt
-mno-mt
MT ๋ฉํฐ์ค๋ ๋ฉ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค(์ฌ์ฉํ์ง ์์).
-mmcu
-mno-mcu
MIPS MCU ASE ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉ(์ฌ์ฉํ์ง ๋ง์ญ์์ค).
-mlong64
"๊ธด" ์ ํ์ 64๋นํธ ๋๋น๋ก ๊ฐ์ ์ค์ ํฉ๋๋ค. ๋ณด๋ค -mlong32 ๊ธฐ๋ณธ๊ฐ์ ๋ํ ์ค๋ช
ํฌ์ธํฐ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ ๋ฐฉ์.
-mlong32
"long", "int" ๋ฐ ํฌ์ธํฐ ์ ํ์ 32๋นํธ ๋๋น๋ก ๊ฐ์ ์ค์ ํฉ๋๋ค.
"int", "long" ๋ฐ ํฌ์ธํฐ์ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ ABI์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋ชจ๋
์ง์๋๋ ABI๋ 32๋นํธ "int"๋ฅผ ์ฌ์ฉํฉ๋๋ค. n64 ABI๋ 64๋นํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก 64๋นํธ "long"์ ์ฌ์ฉํฉ๋๋ค.
์๋น; ๋๋จธ์ง๋ 32๋นํธ "long"์ ์ฌ์ฉํฉ๋๋ค. ํฌ์ธํฐ๋ "long"๊ณผ ํฌ๊ธฐ๊ฐ ๊ฐ๊ฑฐ๋
์ ์ ๋ ์ง์คํฐ์ ๊ฐ์ ํฌ๊ธฐ ์ค ๋ ์์ ๊ฒ.
-msym32
-mno-sym32
์ ํํ ๊ธฐํธ์ ๊ด๊ณ์์ด ๋ชจ๋ ๊ธฐํธ์ 32๋นํธ ๊ฐ์ด ์๋ค๊ณ ๊ฐ์ (๊ฐ์ ํ์ง ์์)
์๋น. ์ด ์ต์ ์ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ ์ฉํฉ๋๋ค. -๋ง๋น=64 and -mno-abicals ๋๋ฌธ์
GCC๋ ๊ธฐํธ ์ฃผ์์ ๋ํ ๋ ์งง๊ณ ๋น ๋ฅธ ์ฐธ์กฐ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
-G NUM
๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์ธ๋ถ์์ ๋ณผ ์ ์๋ ๋ฐ์ดํฐ์ ์ ์๋ฅผ ์์ ๋ฐ์ดํฐ ์น์ ์ ๋ฃ์ต๋๋ค.
๋ณด๋ค ํฐ NUM ๋ฐ์ดํธ. ๊ทธ๋ฌ๋ฉด GCC๋ ๋ฐ์ดํฐ์ ๋ํ ๋ณด๋ค ํจ์จ์ ์ธ ์ก์ธ์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ณด๋ค
-mgpopt ์์ธํ ๋ด์ฉ์.
๊ธฐ๋ณธ๊ฐ์ -G ์ต์ ์ ๊ตฌ์ฑ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
-mlocal-sdata
-mno-๋ก์ปฌ-sdata
์ฐ์ฅ(์ฐ์ฅํ์ง ์์) -G ์ ์ ๋ณ์์ ๊ฐ์ ๋ก์ปฌ ๋ฐ์ดํฐ์๋ ๋์
C. -mlocal-sdata ๋ชจ๋ ๊ตฌ์ฑ์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๋ง์ปค๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋๋ฌด ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๋ถํํ๋ ๊ฒฝ์ฐ
์ฑ๋ฅ์ ๋ ์ค์ํ ๋ถํ์ -mno-๋ก์ปฌ-sdata. ๋น์
๋ก ํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ ์๋ ์์ต๋๋ค. -mno-๋ก์ปฌ-sdata, ๊ทธ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋
๋ฉ์ธ ํ๋ก๊ทธ๋จ์ ์ํ ๋ ๋ง์ ๊ณต๊ฐ์ ๋จ๊ฒจ๋์ญ์์ค.
-mextern-sdata
-mno-์ธ๋ถ-sdata
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ธ๋ถ ์ ์ ๋ฐ์ดํฐ๊ฐ ์์ ๋ฐ์ดํฐ ์น์ ์ ์๋ค๊ณ ๊ฐ์ (๊ฐ์ ํ์ง ์์)
ํด๋น ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ -G ํ๋. -mextern-sdata ๋ชจ๋์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค
๊ตฌ์ฑ.
๋ชจ๋์ ์ปดํ์ผํ๋ฉด ๋ฐฉ๋ฒ ๊ณผ -mextern-sdata -G NUM -mgpopt๋ฐ ๋ฐฉ๋ฒ ์ฐธ์กฐ
๋ณ์ ๋ฐ๋ฅด ๊ทธ๋ณด๋ค ํฌ์ง ์๋ค NUM ๋ค์์ ํ์ธํด์ผ ํฉ๋๋ค. ๋ฐ๋ฅด ๋ฐฐ์น๋๋ค
์์ ๋ฐ์ดํฐ ์น์ ์์. ๋ง์ฝ์ ๋ฐ๋ฅด ๋ค๋ฅธ ๋ชจ๋์ ์ํด ์ ์๋ ๊ฒฝ์ฐ ๋ค์ ์ค ํ๋๋ฅผ ์ปดํ์ผํด์ผ ํฉ๋๋ค.
์ถฉ๋ถํ ๋์ ๋ชจ๋ -G "์น์ " ์์ฑ ์ค์ ๋๋ ์ฒจ๋ถ ๋ฐ๋ฅด's
์ ์. ๋ง์ฝ์ ๋ฐ๋ฅด ์ผ๋ฐ์ ์ด๋ฏ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์ถฉ๋ถํ ๋์ -G
ํ๊ฒฝ.
์ด๋ฌํ ์ ํ ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋ชจ๋ ๋ชจ๋์ ์ปดํ์ผํ๊ณ ์ฐ๊ฒฐํ๋ ๊ฒ์ ๋๋ค.
๊ฐ์๊ณผ -G ์ต์ . ๊ทธ๋ฌ๋ ๋ค์์ ์ง์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
์ฌ๋ฌ ๋ค๋ฅธ ์์ ๋ฐ์ดํฐ ์ ํ. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ปดํ์ผํ์ฌ ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ๋์ ์ง์ -G ์ค์ ๋ฐ ์ถ๊ฐ ์ฌ์ฉ -mno-์ธ๋ถ-sdata ์ค์งํ๋ ค๋ฉด
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ธ๋ถ ์ ์ ๋ฐ์ดํฐ์ ๋ํด ๊ฐ์ ํ์ง ์์ต๋๋ค.
-mgpopt
-mno-gpopt
์์ ๋ฐ์ดํฐ์ ์๋ ๊ฒ์ผ๋ก ์๋ ค์ง ๊ธฐํธ์ ๋ํด GP ๊ด๋ จ ์ก์ธ์ค ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)
๋ถ๋ถ; ๋ณด๋ค -G, -mlocal-sdata and -mextern-sdata. -mgpopt ๋ชจ๋์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค
๊ตฌ์ฑ.
-mno-gpopt $gp ๋ ์ง์คํฐ๊ฐ ๋ค์ ๊ฐ์ ๋ณด์ ํ์ง ์์ ์ ์๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
"_gp". ์๋ฅผ ๋ค์ด ์ฝ๋๊ฐ ๋ถํ ์ ์ฌ์ฉ๋ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ผ๋ถ์ธ ๊ฒฝ์ฐ
๋ชจ๋ํฐ์์ ๋ถํธ ๋ชจ๋ํฐ ๋ฃจํด์ ํธ์ถํ๋ ํ๋ก๊ทธ๋จ์ $gp์์ ์ ์ ์๋ ๊ฐ์ ์ ๋ฌํฉ๋๋ค. (์
์ด๋ฌํ ์ํฉ์์ ๋ถํธ ๋ชจ๋ํฐ ์์ฒด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ปดํ์ผ๋ฉ๋๋ค. -G0.)
-mno-gpopt ์๋ฏธํ๋ค -mno-๋ก์ปฌ-sdata and -mno-์ธ๋ถ-sdata.
-ํฌํจ๋ ๋ฐ์ดํฐ
-mno-embedded-๋ฐ์ดํฐ
๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋จผ์ ์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ ์น์ ์ ๋ณ์๋ฅผ ํ ๋นํ ๋ค์
๊ฐ๋ฅํ๋ฉด ์์ ๋ฐ์ดํฐ ์น์ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ์์. ์ด๊ฒ์ ์ฝ๊ฐ ๋๋ฆฐ ์ฝ๋๋ฅผ ์ ๊ณตํฉ๋๋ค
๊ธฐ๋ณธ๊ฐ๋ณด๋ค ํฌ์ง๋ง ์คํํ ๋ ํ์ํ RAM์ ์์ด ์ค์ด๋ค๋ฏ๋ก
์ผ๋ถ ์๋ฒ ๋๋ ์์คํ ์์ ์ ํธ๋ฉ๋๋ค.
-muninit-const-in-rodata
-mno-unit-const-in-rodata
์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ ์น์ ์ ์ด๊ธฐํ๋์ง ์์ "const" ๋ณ์๋ฅผ ๋ฃ์ต๋๋ค. ์ด ์ต์ ์
์ ํจ๊ป๋ง ์๋ฏธ ์๋ -ํฌํจ๋ ๋ฐ์ดํฐ.
-mcode ํ๋ ๊ฐ๋ฅ=์ค์
GCC๊ฐ ์คํ ๊ฐ๋ฅํ ์น์ ์์ ์ฝ๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค. ์๋ค
์ธ ๊ฐ์ง ๊ฐ๋ฅํ ์ค์ :
-mcode-readable=์
์ง์นจ์ ์คํ ๊ฐ๋ฅํ ์น์ ์ ์์ ๋กญ๊ฒ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ ์ค์ ์ ๋๋ค.
-mcode-ํ๋ ๊ฐ๋ฅ=pcrel
MIPS16 PC ๊ธฐ์ค ๋ก๋ ๋ช ๋ น์ ์คํ ๊ฐ๋ฅํ ์น์ ์ ์ก์ธ์คํ ์ ์์ง๋ง ๋ค๋ฅธ
์ง์๋ ๊ทธ๋ ๊ฒ ํด์๋ ์ ๋ฉ๋๋ค. ์ด ์ต์ ์ 4KSc ๋ฐ 4KSd ํ๋ก์ธ์์์ ์ ์ฉํฉ๋๋ค.
์ฝ๋ TLB์ ์ฝ๊ธฐ ๊ธ์ง ๋นํธ๊ฐ ์ค์ ๋์ด ์์ ๋. ํ๋ก์ธ์์์๋ ์ ์ฉํฉ๋๋ค.
์ด์ค ๋ช ๋ น/๋ฐ์ดํฐ SRAM ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋๋ก ๊ตฌ์ฑํ ์ ์์ผ๋ฉฐ,
M4K์ ๋ง์ฐฌ๊ฐ์ง๋ก PC ๊ด๋ จ ๋ก๋๋ฅผ ๋ช ๋ น RAM์ผ๋ก ์๋ ๋ฆฌ๋๋ ์ ํฉ๋๋ค.
-mcode ํ๋ ๊ฐ๋ฅ=์๋์
์ง์นจ์ ์คํ ๊ฐ๋ฅํ ์น์ ์ ์ก์ธ์คํด์๋ ์ ๋ฉ๋๋ค. ์ด ์ต์ ์ ๋ค์์์ ์ ์ฉํ ์ ์์ต๋๋ค.
์ด์ค ๋ช ๋ น/๋ฐ์ดํฐ SRAM ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋๋ก ๊ตฌ์ฑ๋ ๋์์ด์ง๋ง
(M4K์ ๋ฌ๋ฆฌ) PC ๊ด๋ จ ๋ถํ๋ฅผ ์๋์ผ๋ก ๋ฆฌ๋๋ ์ ํ์ง ์์ต๋๋ค.
๋ช ๋ น์ด ๋จ.
-msplit ์ฃผ์
-mno-๋ถํ ์ฃผ์
"%hi()" ๋ฐ "%lo()" ์ด์ ๋ธ๋ฌ ์ฌ๋ฐฐ์น ์ฐ์ฐ์์ ์ฌ์ฉ์ ํ์ฑํ(๋นํ์ฑํ)ํฉ๋๋ค. ์ด๊ฒ
์ต์ ์ด ๋ค์์ผ๋ก ๋์ฒด๋์์ต๋๋ค. -mexplicit-relocs ๊ทธ๋ฌ๋ ๋ค๋ก ์ ์ง๋ฉ๋๋ค.
ํธํ์ฑ.
-mexplicit-relocs
-mno-๋ช ์์ -relocs
๊ธฐํธ ์ฃผ์๋ฅผ ์ฒ๋ฆฌํ ๋ ์ด์ ๋ธ๋ฌ ์ฌ๋ฐฐ์น ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํฉ๋๋ค(์ฌ์ฉํ์ง ์์).
์์ ์ ํํ ๋์ -mno-๋ช ์์ -relocs, ๋์ ์ด์ ๋ธ๋ฌ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
-mexplicit-relocs GCC๊ฐ ๋ค์์ ์ํํ๋ ์ด์ ๋ธ๋ฌ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
์ฌ๋ฐฐ์น ์ฐ์ฐ์๋ฅผ ์ง์ํฉ๋๋ค.
-mcheck-XNUMX ๋๋์
-mno-check-zero-division
XNUMX์ผ๋ก ์ ์ ๋๋๊ธฐ๋ฅผ ํธ๋ฉ(ํธ๋ฉํ์ง ์์)ํฉ๋๋ค.
๋ํดํธ๋ -mcheck-XNUMX ๋๋์ .
-mdivide-ํธ๋ฉ
-mdivide-break
MIPS ์์คํ ์ ์กฐ๊ฑด๋ถ ํธ๋ฉ ๋๋
ํด์ ์ง์. ํธ๋ฉ์ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ์์์ง์ง๋ง MIPS์์๋ง ์ง์๋ฉ๋๋ค.
II ์ดํ. ๋ํ ์ผ๋ถ Linux ์ปค๋ ๋ฒ์ ์๋ ํธ๋ฉ์ ๋ฐฉ์งํ๋ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค.
์ ์ ํ ์ ํธ("SIGFPE")๋ฅผ ์์ฑํ์ง ์์ต๋๋ค. ์ฌ์ฉํ๋ค -mdivide-ํธ๋ฉ ์กฐ๊ฑด๋ถ ํ์ฉ
์ด๋ฅผ ์ง์ํ๋ ์ํคํ ์ฒ์ ํจ์ ๊ณผ -mdivide-break ๊ฐ์ ๋ก ์ฌ์ฉ
ํด์.
๊ธฐ๋ณธ๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก -mdivide-ํธ๋ฉ, ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๊ตฌ์ฑํ ๋ ์ฌ์ ์๋ ์ ์์ต๋๋ค.
์ฌ์ฉ --with-divide=๋๋๊ธฐ. ๋ค์์ ์ฌ์ฉํ์ฌ XNUMX์ผ๋ก ๋๋๊ธฐ ๊ฒ์ฌ๋ฅผ ์์ ํ ๋นํ์ฑํํ ์ ์์ต๋๋ค.
-mno-check-zero-division.
-mmemcpy
-mno-memcpy
์ค์ํ์ง ์์ ๋ธ๋ก ์ด๋์ "memcpy()"๋ฅผ ๊ฐ์ ๋ก ์ฌ์ฉํฉ๋๋ค(๊ฐ์ ํ์ง ์์). ๊ธฐ๋ณธ๊ฐ
is -mno-memcpy, ์ด๋ฅผ ํตํด GCC๋ ๋๋ถ๋ถ์ ์ผ์ ํ ํฌ๊ธฐ์ ๋ณต์ฌ๋ณธ์ ์ธ๋ผ์ธํ ์ ์์ต๋๋ค.
-mlong-ํตํ
-mno-long-ํตํ
"jal" ๋ช ๋ น์ด ์ฌ์ฉ์ ๋นํ์ฑํ(๋นํ์ฑํํ์ง ์์)ํฉ๋๋ค. "jal"์ ์ฌ์ฉํ์ฌ ํจ์ ํธ์ถ
๋ ํจ์จ์ ์ด์ง๋ง ํธ์ถ์์ ์์ ์๊ฐ ๋์ผํ 256MB์ ์์ด์ผ ํฉ๋๋ค.
์ธ๊ทธ๋จผํธ.
์ด ์ต์ ์ abcalls ์ฝ๋์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -mno-long-ํตํ.
-mmad
-mno-mad
"mad", "madu" ๋ฐ "mul" ๋ช ๋ น์ด์ ์ฌ์ฉ์ ํ์ฑํ(๋นํ์ฑํ)ํฉ๋๋ค.
R4650 ์ด์ฌ.
-๋จธํจ์ฆ๋-๋งค๋
-mno-์ตํฉ-๋งค๋
๋ถ๋ ์์์ ๊ณฑํ๊ธฐ ๋์ฐ ๋ช ๋ น์ด์ ์ฌ์ฉ์ ํ์ฑํ(๋นํ์ฑํ)ํฉ๋๋ค.
์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -๋จธํจ์ฆ๋-๋งค๋.
R8000 CPU์์ ๊ณฑ์ ๋์ฐ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ๋ ์ค๊ฐ
์ ํ์ ๋ฌดํ์ ์ ๋ฐ๋๋ก ๊ณ์ฐ๋๋ฉฐ FCSR ํ๋ฌ์ ๋์์ด ์๋๋๋ค.
์ ๋ก ๋นํธ. ์ด๊ฒ์ ์ด๋ค ์ํฉ์์๋ ๋ฐ๋์งํ์ง ์์ ์ ์์ต๋๋ค. ๋ค๋ฅธ ํ๋ก์ธ์์์
๊ฒฐ๊ณผ๋ ๋ณ๋์ ๊ณฑ์ ์ ์ฌ์ฉํ๋ ๋ฑ๊ฐ ๊ณ์ฐ๊ณผ ์์น์ ์ผ๋ก ๋์ผํ๋ฉฐ,
๋ช ๋ น์ ๋ํ๊ณ , ๋นผ๊ณ , ๋ถ์ ํฉ๋๋ค.
-nocpp
์ฌ์ฉ์ ์ด์ ๋ธ๋ฌ ํ์ผ์ ๋ํด ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์คํํ์ง ์๋๋ก MIPS ์ด์ ๋ธ๋ฌ์ ์ง์ํฉ๋๋ค(
.s ์ ๋ฏธ์ฌ) ์กฐ๋ฆฝํ ๋.
-mfix-24k
-mno-fix-24k
24K E48(์ถฉ์ ์ค ๋งค์ฅ ๋ฐ์ดํฐ ์์ค) ์ค๋ฅ๋ฅผ ํด๊ฒฐํ์ญ์์ค. ํด๊ฒฐ ๋ฐฉ๋ฒ
GCC๊ฐ ์๋ ์ด์ ๋ธ๋ฌ์ ์ํด ๊ตฌํ๋ฉ๋๋ค.
-mfix-r4000
-mno-fix-r4000
ํน์ R4000 CPU ์๋ผํ ํด๊ฒฐ:
- ๋๋ธ ์๋ ๋๋ ๋ณ์ ์ํํธ๋ฅผ ์คํํ๋ฉด ์๋ชป๋ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ ์ ์์ต๋๋ค.
์ ์ ๋๋๊ธฐ๋ฅผ ์์ํ ์งํ.
- ๋๋ธ ์๋ ๋๋ ๋ณ์ ์ํํธ๋ ์คํํ๋ ๋์ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ์ค ์ ์์ต๋๋ค.
์ ์ ๊ณฑ์ ์ด ์งํ ์ค์ ๋๋ค.
- ์ ์ ๋๋๊ธฐ๋ ์ ์ง์ฐ ์ฌ๋กฏ์์ ์์ํ๋ฉด ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ์ค ์ ์์ต๋๋ค.
์ทจํ ์ง์ ๋๋ ์ ํ.
-mfix-r4400
-mno-fix-r4400
ํน์ R4400 CPU ์๋ผํ ํด๊ฒฐ:
- ๋๋ธ ์๋ ๋๋ ๋ณ์ ์ํํธ๋ฅผ ์คํํ๋ฉด ์๋ชป๋ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ ์ ์์ต๋๋ค.
์ ์ ๋๋๊ธฐ๋ฅผ ์์ํ ์งํ.
-mfix-r10000
-mno-fix-r10000
ํน์ R10000 ์๋ผํ ํด๊ฒฐ:
- "ll"/"sc" ์ํ์ค๋ 3.0 ์ด์ ๋ฒ์ ์์ ์์์ ์ผ๋ก ์๋ํ์ง ์์ ์ ์์ต๋๋ค. ๊ทธ๋ค์ ์๋ง๋
๊ฐ์ ํ 2.6 ๋ฐ ์ด์ ๋ฒ์ ์์ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ด ์ต์ ์ ๋์ ์ํคํ ์ฒ๊ฐ ๋ถ๊ธฐ ๊ฐ๋ฅ์ฑ์ ์ง์ํ๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋์๋ง์ ์ฐธ์กฐํ์ญ์์ค. -mfix-r10000 ๊ธฐ๋ณธ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -10000์=rXNUMX ์ฌ์ฉ; -mno-fix-r10000
๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mfix-vr4120
-mno-fix-vr4120
ํน์ VR4120 ์ ์คํ ํด๊ฒฐ:
- "dmultu"๊ฐ ํญ์ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์๋๋๋ค.
- "div" ๋ฐ "ddiv"๋ ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ
๋ถ์ ์ ์ด๋ค.
๋ถํ ์ ์คํ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์์ ํน์ ๊ธฐ๋ฅ์ ์์กดํฉ๋๋ค. libgcc.a. ์
ํ์ฌ ์ด๋ฌํ ๊ธฐ๋ฅ์ "mips64vr*-elf" ๊ตฌ์ฑ์์๋ง ์ ๊ณต๋ฉ๋๋ค.
๋ค๋ฅธ VR4120 ์ ์คํ๋ ํน์ ์ ์ฌ์ด์ NOP๋ฅผ ์ฝ์ ํด์ผ ํฉ๋๋ค.
์ง์นจ. ์ด๋ฌํ ์ ์คํ๋ GCC ์์ฒด๊ฐ ์๋๋ผ ์ด์ ๋ธ๋ฌ์์ ์ฒ๋ฆฌํฉ๋๋ค.
-mfix-vr4130
VR4130 "mflo"/"mfhi" ์ค๋ฅ๋ฅผ ํด๊ฒฐํ์ญ์์ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์
GCC๊ฐ ์๋ ์ด์ ๋ธ๋ฌ์ด์ง๋ง GCC๊ฐ "mflo" ๋ฐ "mfhi"๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ
VR4130 "macc", "macchi", "dmacc" ๋ฐ "dmacchi" ๋ช ๋ น์ด๋ฅผ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-mfix-sb1
-mno-fix-sb1
ํน์ SB-1 CPU ์ฝ์ด ์ค๋ฅ๋ฅผ ํด๊ฒฐํ์ญ์์ค. (์ด ํ๋๊ทธ๋ ํ์ฌ SB-1 ์ฃผ๋ณ์์ ์๋ํฉ๋๋ค.
๊ฐ์ 2 "F1" ๋ฐ "F2" ๋ถ๋ ์์์ ์ ์คํ.)
-mr10k-์บ์-๋ฐฐ๋ฆฌ์ด=์ค์
GCC๊ฐ ๋ค์์ ๋ถ์์ฉ์ ํผํ๊ธฐ ์ํด ์บ์ ์ฅ๋ฒฝ์ ์ฝ์ ํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค.
R10K ํ๋ก์ธ์์ ๋ํ ์ถ์ธก.
๋ง์ ํ๋ก์ธ์์ ๋ง์ฐฌ๊ฐ์ง๋ก R10K๋ ์กฐ๊ฑด๋ถ ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ๋ ค๊ณ ์๋ํฉ๋๋ค.
๋ถ๊ธฐํ๊ณ ์ถ์ธก์ ์ผ๋ก "์ทจํ" ๋ถ๊ธฐ์ ๋ช ๋ น์ ์คํํฉ๋๋ค. ๋์ค์
์์ธก๋ ๊ฒฐ๊ณผ๊ฐ ์๋ชป๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ช ๋ น์ ์ค๋จํฉ๋๋ค. ๊ทธ๋ฌ๋ R10K์์๋
์ค๋จ๋ ๋ช ๋ น์๋ ๋ถ์์ฉ์ด ์์ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ ์ปค๋ ์ ์ฅ์์๋ง ์ํฅ์ ๋ฏธ์น๋ฉฐ ์์คํ ์ ๋ฐ๋ผ ์ปค๋ ๋ก๋์ ์ํฅ์ ์ค๋๋ค.
์๋ฅผ ๋ค์ด, ํฌ๊ธฐ์ ์ผ๋ก ์คํ๋ ์ ์ฅ์๋ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์บ์์ ๋ก๋ํ ์ ์์ต๋๋ค.
์ ์ฅ์ ์์ฒด๊ฐ ๋์ค์ ์ค๋จ๋๋๋ผ๋ ์บ์ ๋ผ์ธ์ ๋ํฐ๋ก ํ์ํฉ๋๋ค. DMA๋ผ๋ฉด
์์ ์ "๋ํฐ" ๋ผ์ธ์ด ํ๋ฌ์๋๊ธฐ ์ ์ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ธฐ๋กํฉ๋๋ค.
์บ์๋ ๋ฐ์ดํฐ๋ DMA ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์๋๋ค. ์ ์ฒด ๋ด์ฉ์ R10K ํ๋ก์ธ์ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
๋ค๋ฅธ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ํฌํจํ ์ค๋ช .
ํ ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ์ ์ ์บ์ ๋ฐฐ๋ฆฌ์ด ๋ช ๋ น์ ์ฝ์ ํ๋ ๊ฒ์ ๋๋ค.
ํฌ๊ธฐ์ ์ผ๋ก ์คํ๋ ์ ์์ผ๋ฉฐ ์ค๋จ๋๋๋ผ๋ ๋ถ์์ฉ์ด ์์ ์ ์์ต๋๋ค.
-mr10k-์บ์-๋ฐฐ๋ฆฌ์ด=์ค์ ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ GCC ๊ตฌํ์ ์ ์ดํฉ๋๋ค. ๊ทธ๊ฒ
๋ค์ ์์ญ์ ๋ฐ์ดํธ์ ๋ํ ์ค๋จ๋ ์ก์ธ์ค์๋ ์ธก๋ฉด์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
ํจ๊ณผ :
1. ํ์ฌ ํจ์์ ์คํ ํ๋ ์์ด ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ
2. ๋ค์ด์ค๋ ์คํ ์ธ์๊ฐ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ;
3. ๋งํฌ ์๊ฐ ์์ ์ฃผ์๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๊ฐ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ.
์ด๋ฌํ ์์ญ์ ๋ํ ์ถ์ธก์ ์ก์ธ์ค๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ ์ปค๋์ ์ฑ ์์ ๋๋ค.
์ค์ ๋ก ์์ ํฉ๋๋ค.
์ ๋ ฅ ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ ํจ์ ์ ์ธ์ด ํฌํจ๋ ๊ฒฝ์ฐ:
๋ฌดํจ foo(๋ฌดํจ);
๊ทธ๋ฐ ๋ค์ "foo"์ ๊ตฌํ์ "j foo" ๋ฐ "jal foo"๊ฐ ์คํ๋๋๋ก ํ์ฉํด์ผ ํฉ๋๋ค.
์ถ์ธก์ผ๋ก. GCC๋ ์์ฒด ์ปดํ์ผํ๋ ํจ์์ ๋ํด ์ด ์ ํ์ ์ค์ํฉ๋๋ค. ๊ทธ๊ฒ
GCC๊ฐ ์๋ ํจ์(์: ์์ผ๋ก ์์ฑํ ์ด์ ๋ธ๋ฆฌ ์ฝ๋)๋ ๋์ผํ ์์ ์ ์ํํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
์ต์ ์๋ ์ธ ๊ฐ์ง ํ์์ด ์์ต๋๋ค.
-mr10k-cache-barrier=๋ก๋-์คํ ์ด
์ถ์ธก์ ๋ฐ๋ผ ์คํ๋ ์ ์๋ ๋ก๋ ๋๋ ์ ์ฅ ์์ ์บ์ ์ฅ๋ฒฝ์ ์ฝ์ ํฉ๋๋ค.
์ค๋จํ๋๋ผ๋ ๋ถ์์ฉ์ด ์์ ์ ์์ต๋๋ค.
-mr10k-cache-barrier=์ ์ฅ
ํฌ๊ธฐ์ ์ผ๋ก ์คํ๋ ์ ์๋ ์ ์ฅ์ ์์ ์บ์ ์ฅ๋ฒฝ์ ์ฝ์ ํ๊ณ
์ค๋จํ๋๋ผ๋ ๋ถ์์ฉ์ด ์์ ์ ์์ต๋๋ค.
-mr10k-cache-barrier=์์
์บ์ ๋ฐฐ๋ฆฌ์ด ์ฝ์ ์ ๋นํ์ฑํํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ ์ค์ ์ ๋๋ค.
-mflush-func=ํํฌ
-mno-ํ๋ฌ์-ํํฌ
I ๋ฐ D ์บ์๋ฅผ ํ๋ฌ์ํ๊ฑฐ๋ ์ด๋ฌํ ์บ์๋ฅผ ํธ์ถํ์ง ์๋๋ก ํธ์ถํ ํจ์๋ฅผ ์ง์ ํฉ๋๋ค.
๊ธฐ๋ฅ. ํธ์ถ๋๋ ๊ฒฝ์ฐ ํจ์๋ ๊ณตํต ์ธ์์ ๋์ผํ ์ธ์๋ฅผ ์ทจํด์ผ ํฉ๋๋ค.
"_flush_func()", ์ฆ ์บ์๊ฐ ์ ์ฅ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์์ ์ฃผ์์ ๋๋ค.
flushed, ๋ฉ๋ชจ๋ฆฌ ๋ฒ์์ ํฌ๊ธฐ, ์ซ์ 3(๋ ์บ์๋ฅผ ๋ชจ๋ ํ๋ฌ์ํ๊ธฐ ์ํด). NS
๊ธฐ๋ณธ๊ฐ์ ๋์ GCC๊ฐ ๊ตฌ์ฑ๋ ๋์์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ์ค ํ๋์ ๋๋ค.
_ํ๋ฌ์_ํํฌ or __cpu_ํ๋ฌ์.
mbranch ๋น์ฉ =NUM
๋ถ๊ธฐ ๋น์ฉ์ ๋๋ต์ ์ผ๋ก ์ค์ NUM "๊ฐ๋จํ" ์ง์นจ. ์ด ๋น์ฉ์ ๋จ์ง
๋ฐ๊ฒฌ์ ์ด๋ฉฐ ๋ฆด๋ฆฌ์ค ๊ฐ์ ์ผ๊ด๋ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ค๊ณ ๋ณด์ฅ๋์ง ์์ต๋๋ค. ์ ๋ก
๋น์ฉ์ ์ค๋ณต์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ ์ ํํฉ๋๋ค. -mtune ํ๊ฒฝ.
-mbranch ๊ฐ๋ฅ์ฑ์ด ์๋
-mno-branch-like
๊ธฐ๋ณธ๊ฐ์ ๊ด๊ณ์์ด ๋ถ๊ธฐ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ช ๋ น์ด์ ์ฌ์ฉ์ ํ์ฑํ ๋๋ ๋นํ์ฑํํฉ๋๋ค.
์ ํํ ์ํคํ ์ฒ. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ถ๊ธฐ ๊ฐ๋ฅ์ฑ ์ง์นจ์ด ์์ฑ๋ ์ ์์ต๋๋ค.
์ ํํ ์ํคํ ์ฒ์์ ์ง์๋ฉ๋๋ค. MIPS32 ๋ฐ
MIPS64 ์ํคํ ์ฒ ๋ฐ ์ด๋ฌํ ์ํคํ ์ฒ๋ฅผ ๊ตฌํํ๋ ํ๋ก์ธ์ ๊ทธ๋ค์ ์ํด,
๋ถ๊ธฐ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ช ๋ น์ด๋ MIPS32 ๋ฐ
MIPS64 ์ํคํ ์ฒ๋ ํนํ ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์์ต๋๋ค.
-mfp-์์ธ
-mno-fp-์์ธ
FP ์์ธ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค. ์ด๊ฒ์ FP ๋ช ๋ น์ด๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ผ๋ถ ํ๋ก์ธ์์ ๋ํด ์์ ๋์ด ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ FP ์์ธ๊ฐ ํ์ฑํ๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด, SB-1์์ FP ์์ธ๊ฐ ๋นํ์ฑํ๋๊ณ 64๋นํธ
์ฝ๋๋ฅผ ์ ๋ ฅํ๋ฉด ๋ FP ํ์ดํ๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋์ FP ํ์ดํ๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
-mvr4130-์ ๋ ฌ
-mno-vr4130-์ ๋ ฌ
VR4130 ํ์ดํ๋ผ์ธ์ ์๋ฐฉํฅ ์ํผ์ค์นผ๋ผ์ด์ง๋ง ๋ ๊ฐ์ ๋ช ๋ น์ด๋ง ๋ฐํํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ๊ฒ์ด 8๋ฐ์ดํธ๋ก ์ ๋ ฌ๋ ๊ฒฝ์ฐ ํจ๊ป. ์ด ์ต์ ์ด ํ์ฑํ๋๋ฉด GCC๋
๋ณ๋ ฌ๋ก ์คํ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋ ๋ช ๋ น์ด ์.
์ด ์ต์ ์ VR4130์ ์ต์ ํํ ๋๋ง ํจ๊ณผ๊ฐ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๋ฅผ ๋ง๋ญ๋๋ค.
๋ ๋น ๋ฅด์ง๋ง ๋ ํฌ๊ฒ ๋ง๋๋ ๋๊ฐ๋ฅผ ์น๋ฌ์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
์ต์ ํ ์์ค -O3.
-msynci
-mno-synci
์ง์ํ๋ ์ํคํ ์ฒ์์ "synci" ๋ช ๋ น์ด ์์ฑ์ ํ์ฑํ(๋นํ์ฑํ)ํฉ๋๋ค.
"__builtin__clear_cache()"๊ฐ ์คํ๋๋ฉด "synci" ๋ช ๋ น์ด(ํ์ฑํ๋ ๊ฒฝ์ฐ)๊ฐ ์์ฑ๋ฉ๋๋ค.
์ปดํ์ผ๋ฉ๋๋ค.
์ด ์ต์ ์ ๊ธฐ๋ณธ๊ฐ์ "-mno-synci"์ด์ง๋ง ๊ธฐ๋ณธ๊ฐ์ ๋ค์์ ๊ตฌ์ฑํ์ฌ ๋ฌด์ํ ์ ์์ต๋๋ค.
"--with-synci"๋ก.
๋จ์ผ ํ๋ก์ธ์ ์์คํ ์ฉ ์ฝ๋๋ฅผ ์ปดํ์ผํ ๋ ์ผ๋ฐ์ ์ผ๋ก "synci"๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ง์ ๋ค์ค ์ฝ์ด(SMP) ์์คํ ์์ ๋ช ๋ น์ ๋ฌดํจํํ์ง ์์ต๋๋ค.
๋ชจ๋ ์ฝ์ด์ ์บ์๋์ด ์ ์๋์ง ์์ ๋์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
-mrelax-ํฝ-์ฝ
-mno-relax-pic-calls
์ผ๋ฐ์ ์ผ๋ก $25 ๋ ์ง์คํฐ๋ฅผ ํตํด ์ ๋ฌ๋๋ PIC ํธ์ถ์ ์ง์ ํธ์ถ๋ก ์ ํํ์ญ์์ค.
์ด๋ ๋ง์ปค๊ฐ ๋งํฌ ํ์์ ๋์์ ํ์ธํ ์ ์๊ณ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅํฉ๋๋ค.
๋์์ด ์ง์ ํธ์ถ ๋ฒ์ ๋ด์ ์์ต๋๋ค.
-mrelax-ํฝ-์ฝ GCC๊ฐ ์ด์ ๋ธ๋ฌ์
".reloc" ์ด์ ๋ธ๋ฆฌ ์ง์๋ฌธ๊ณผ "-mexplicit-relocs"๋ฅผ ์ง์ํ๋ ๋ง์ปค๋
ํจ๊ณผ. "-mno-explicit-relocs"๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์ต์ ํ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
์ปดํ์ผ๋ฌ์ ๋์ ์์ด ์ด์ ๋ธ๋ฌ์ ๋ง์ปค๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
-mmcount-ra-์ฃผ์
-mno-mcount-ra-์ฃผ์
"_mcount"๊ฐ ํธ์ถ ํจ์์ ๋ฐํ์ ์์ ํ ์ ์๋๋ก ํ๋ ์ฝ๋๋ฅผ ๋ด๋ณด๋ ๋๋ค(๋ด๋ณด๋ด์ง ์์).
์ฃผ์. ํ์ฑํ๋๋ฉด ์ด ์ต์ ์ ์ ์ธํฐํ์ด์ค๋ก ์ผ๋ฐ์ ์ธ "_mcount" ์ธํฐํ์ด์ค๋ฅผ ํ์ฅํฉ๋๋ค.
์ฃผ์ "intptr_t *" ์ ํ์ด ์๊ณ ๋ ์ง์คํฐ $12์ ์ ๋ฌ๋๋ ๋งค๊ฐ๋ณ์์ ๋๋ค.
"_mcount"๋ ๋ค์์ ๋ชจ๋ ์ํํ์ฌ ๋ฐํ ์ฃผ์๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
ยท ๋ ์ง์คํฐ $31์ ์ ์ฃผ์ ๋ฐํ.
ยท ์ ์ฃผ์๋ฅผ "*์ ์ ์ฅ์ฃผ์"๋ง์ฝ ์ฃผ์ null์ด ์๋๋๋ค.
๋ํดํธ๋ -mno-mcount-ra-์ฃผ์.
์ ๋ฏน์ค ์ต์
์ด๋ฌํ ์ต์ ์ MMIX์ ๋ํด ์ ์๋ฉ๋๋ค.
-mlibfuncs
-mno-libfuncs
๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๊ฐ ์ปดํ์ผ ์ค์์ ์ง์ ํ๊ณ ๋ชจ๋ ๊ฐ์
ํฌ๊ธฐ์ ๊ด๊ณ์์ด ๋ ์ง์คํฐ.
-๋ฉค์ค๋ก
-mno-์ก์ค๋ก
"rE"์ ๊ด๋ จํ์ฌ ๋น๊ตํ๋ ๋ถ๋ ์์์ ๋น๊ต ๋ช ๋ น์ด ์์ฑ
์ก์ค๋ก ๋ ์ง์คํฐ.
-๋ง๋น=mmixware
-๋ง๋น=๋
ํจ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ (ํธ์ถ๋
ํจ์)๋ ์ ์ญ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ๋ GNU ABI์ ๋ฌ๋ฆฌ $0 ์ด์์ ๋ ์ง์คํฐ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
$231 ์ด์์ ๋ฑ๋กํฉ๋๋ค.
-mzero ํ์ฅ
-mno-์ ๋ก ํ์ฅ
64๋นํธ๋ณด๋ค ์งง์ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ XNUMX์ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)
๋ถํธ ํ์ฅ์ด ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก๋ ๋ช ๋ น์ ํ์ฅํฉ๋๋ค.
-mknuthdiv
-mno-knuthdiv
๋๋จธ์ง๋ฅผ ์ฐ์ถํ๋ ๋๋์ ์ ๊ฒฐ๊ณผ๊ฐ ์ ์์ ๊ฐ์ ๋ถํธ๋ฅผ ๊ฐ๋๋ก ํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ผ๋ก, -mno-knuthdiv, ๋๋จธ์ง ๊ธฐํธ๋ ๋ค์ ๊ธฐํธ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
ํผ์ ์. ๋ ๋ฐฉ๋ฒ ๋ชจ๋ ์ฐ์ ์ ์ผ๋ก ์ ํจํ๋ฉฐ ํ์๋ ๊ฑฐ์ ๋ ์ ์ ์ ๋๋ค.
์ต์ํ.
-mtoplevel-์ฌ๋ณผ
-mno-toplevel-๊ธฐํธ
์์ ์ถ๊ฐ(์์ ์ถ๊ฐํ์ง ์์) : ์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ชจ๋ ์ ์ญ ๊ธฐํธ์
"PREFIX" ์ด์ ๋ธ๋ฆฌ ์ง์๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
-๋ฉํ
๊ธฐ๋ณธ๊ฐ์ด ์๋ ELF ํ์์ผ๋ก ์คํ ํ์ผ ์์ฑ mmo ์์ ์ฌ์ฉํ๋ ํ์
์ ์, ๋ฏน์ค ๋ชจ์ ์คํ ์ฅ์น.
-mbranch ์์ธก
-mno-๋ถ๊ธฐ-์์ธก
์ ์ ๋ถ๊ธฐ ์์ธก ์ ๊ฐ๋ฅํ ๋ถ๊ธฐ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)
๊ฐ๋ฅํ ๋ถ๊ธฐ๋ฅผ ๋ํ๋ ๋๋ค.
-mbase ์ฃผ์
-mno-base-์ฃผ์
๋ค์์ ์ฌ์ฉํ๋ ์ฝ๋ ์์ฑ(์์ฑํ์ง ์์) ๊ธฐ์ง ๊ตฌ์ . ๊ธฐ๋ณธ ์ฃผ์ ์ฌ์ฉ
์๋์ผ๋ก ์์ฒญ(์ด์ ๋ธ๋ฌ์ ๋ง์ปค์์ ์ฒ๋ฆฌ)์ ์์ฑํฉ๋๋ค.
์ ์ญ ๋ ์ง์คํฐ์ ์ค์ ํ ์์์ ๋๋ค. ๋ ์ง์คํฐ๋ ํ๋ ์ด์์ ๋ฒ ์ด์ค์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ ์ง์คํฐ์ ์๋ ๊ฐ์์ 0์์ 255 ์ฌ์ด์ ์ฃผ์ ์์ฒญ. NS
์ผ๋ฐ์ ์ผ๋ก ์งง๊ณ ๋น ๋ฅธ ์ฝ๋๋ก ์ด์ด์ง์ง๋ง,
์ ํ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ง์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ์๋ฏธํฉ๋๋ค.
ํ์ํ ์ ์์ต๋๋ค -mno-base-์ฃผ์.
-ms๋จ์ผ ์ข ๋ฃ
-mno-๋จ์ผ ์ข ๋ฃ
์์ฑ๋ ์ฝ๋๊ฐ ๊ฐ ํจ์์ ๋จ์ผ ์ข ๋ฃ ์ง์ ์ ๊ฐ๋๋ก ๊ฐ์ (๊ฐ์ ํ์ง ์์)ํฉ๋๋ค.
MN10300 ์ต์
Bowman์ -m ์ต์ ์ Matsushita MN10300 ์ํคํ ์ฒ์ ๋ํด ์ ์๋ฉ๋๋ค.
- ๋ณตํฉ ๋ฒ๊ทธ
MN10300 ํ๋ก์ธ์์ ๋ํ ๊ณฑ์ ๋ช ๋ น์ด์ ๋ฒ๊ทธ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mno-multi-bug
MN10300์ ๋ํ ๊ณฑํ๊ธฐ ๋ช ๋ น์ด์ ๋ฒ๊ทธ๋ฅผ ํผํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค.
ํ๋ก์ธ์.
-mam33
AM33 ํ๋ก์ธ์์ ํน์ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-mno-am33
AM33 ํ๋ก์ธ์์ ํน์ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ด
ํ๋ง.
-mam33-2
AM33/2.0 ํ๋ก์ธ์์ ํน์ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-mam34
AM34 ํ๋ก์ธ์์ ํน์ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-mtune=CPU ์ ํ
๋ช ๋ น์ ์ค์ผ์ค๋งํ ๋ ํ์๋ CPU ์ ํ์ ํ์ด๋ฐ ํน์ฑ์ ์ฌ์ฉํ์ญ์์ค.
๋์ ํ๋ก์ธ์ ์ ํ์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. CPU ์ ํ์ ๋ค์ ์ค ํ๋์ฌ์ผ ํฉ๋๋ค.
mn10300, am33, ์ค์ 33-2 or am34.
-mreturn-ํฌ์ธํฐ-on-d0
ํฌ์ธํฐ๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํ ๋ "a0"๊ณผ "aXNUMX" ๋ชจ๋์ ํฌ์ธํฐ๋ฅผ ๋ฐํํฉ๋๋ค.
"d0". ๊ทธ๋ ์ง ์์ผ๋ฉด ํฌ์ธํฐ๋ "a0"์์๋ง ๋ฐํ๋๊ณ ์ด๋ฌํ ํธ์ถ์ ์๋ํฉ๋๋ค.
ํ๋กํ ํ์ ์ด ์๋ ํจ์๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค. ์ด ์ต์ ์
๊ธฐ๋ณธ; ์ฌ์ฉํ๋ค -mno-return-pointer-on-d0 ๊ทธ๊ฒ์ ํด์ ํ์ญ์์ค.
-mno-crt0
C ๋ฐํ์ ์ด๊ธฐํ ๊ฐ์ฒด ํ์ผ์ ์ฐ๊ฒฐํ์ง ๋ง์ญ์์ค.
-mrelax
์ด์ ์ต์ ํ ์ ๋ฌ์ ์ํํด์ผ ํจ์ ๋ง์ปค์ ํ์ํฉ๋๋ค.
๋ถ๊ธฐ, ํธ์ถ ๋ฐ ์ ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ค์ ๋๋ค. ์ด ์ต์ ์ ํจ๊ณผ๋ง ์์ต๋๋ค
์ต์ข ๋งํฌ ๋จ๊ณ์ ๋ช ๋ น์ค์์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ.
์ด ์ต์ ์ ์ฌ๋ณผ๋ฆญ ๋๋ฒ๊น ์ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.
-๋ฐ๋ฆฌ
์ปดํ์ผ๋ฌ๊ฐ ์์ฑํ๋๋ก ํ์ฉ ๊ธด ๊ต์ ์๋ ๋์์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ง์นจ
AM33 ๋๋ ๋์ค์. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ์ด ์ต์ ์ ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค.
__LIW__.
-mnoliw
์ปดํ์ผ๋ฌ๊ฐ ์์ฑํ๋๋ก ํ์ฉํ์ง ์์ ๊ธด ๊ต์ ์๋ ์ง์นจ. ์ด ์ต์
์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก ์ ์ __NO_LIW__.
-msetlb
์ปดํ์ผ๋ฌ๊ฐ SETLB and LCC ๋์์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ง์นจ
AM33 ๋๋ ๋์ค์. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ์ด ์ต์ ์ ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค.
__SETLB__.
-mnosetlb
์ปดํ์ผ๋ฌ๊ฐ ์์ฑํ๋๋ก ํ์ฉํ์ง ์์ SETLB or LCC ์ง์นจ. ์ด ์ต์ ์ ๋ค์์ ์ ์ํฉ๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก __NO_SETLB__.
์ฉ๊ฐ ์ต์
-๋ฉ๋ธ
๋น ์๋์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ๋ชฉ์-*-* ๊ตฌ์ฑ.
-๋ฉ
๋ฆฌํ ์๋์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-mno-crt0
C ๋ฐํ์ ์ด๊ธฐํ ๊ฐ์ฒด ํ์ผ์ ์ฐ๊ฒฐํ์ง ๋ง์ญ์์ค.
PDP-11 ์ต์
๋ค์ ์ต์ ์ PDP-11์ ๋ํด ์ ์๋ฉ๋๋ค.
-mfpu
ํ๋์จ์ด FPP ๋ถ๋ ์์์ ์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. (FIS ๋ถ๋ ์์์
PDP-11/40์ ์ง์ํ์ง ์์ต๋๋ค.)
-msoft-float
ํ๋์จ์ด ๋ถ๋ ์์์ ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
-mac0
๋ถ๋ ์์์ ๊ฒฐ๊ณผ๋ฅผ ac0(Unix ์ด์ ๋ธ๋ฌ ๊ตฌ๋ฌธ์ fr0)์ผ๋ก ๋ฐํํฉ๋๋ค.
-mno-ac0
๋ฉ๋ชจ๋ฆฌ์ ๋ถ๋ ์์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-m40
PDP-11/40์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m45
PDP-11/45์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-m10
PDP-11/10์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-mbcopy ๋ด์ฅ
๋ฉ๋ชจ๋ฆฌ ๋ณต์ฌ์ ์ธ๋ผ์ธ "movmemhi" ํจํด์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mbcopy
๋ฉ๋ชจ๋ฆฌ ๋ณต์ฌ์ ์ธ๋ผ์ธ "movmemhi" ํจํด์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
-๋ฏผํธ16
-mno-int32
16๋นํธ "int"๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-๋ฏผํธ32
-mno-int16
32๋นํธ "int"๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-mfloat64
-mno-float32
64๋นํธ "๋ถ๋"์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mfloat32
-mno-float64
32๋นํธ "๋ถ๋"์ ์ฌ์ฉํฉ๋๋ค.
-๋ง์
"abshi2" ํจํด์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mno-abshi
"abshi2" ํจํด์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
-mbranch-๋น์ผ
๊ฐ์ง๊ฐ ๋น์ผ ์ฒํ์ญ์์ค. ์ด๊ฒ์ ์ฝ๋ ์์ฑ์ ์คํํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
๋ก ์์ฑ๋์ด์ผ ํฉ๋๋ค.
-mbranch-์ ๋ ดํ
๊ฐ์ง๊ฐ ๋น์ผ ์ฒํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-munix-asm
Unix ์ด์ ๋ธ๋ฌ ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. ์ ๋ํด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. pdp11-*-bsd.
-mdec-asm
DEC ์ด์ ๋ธ๋ฌ ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ ๋ชจ๋ PDP-11 ๋์์ ๋ํด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
์ด์ธ์ pdp11-*-bsd.
ํผ์ฝ์นฉ ์ต์
Bowman์ -m ์ต์ ์ PicoChip ๊ตฌํ์ ๋ํด ์ ์๋ฉ๋๋ค.
-๋งค=ae_type
์ด๋ ์ด์ ๋ํ ๋ช ๋ น์ด ์ธํธ, ๋ ์ง์คํฐ ์ธํธ ๋ฐ ๋ช ๋ น์ด ์ค์ผ์ค๋ง ๋งค๊ฐ๋ณ์ ์ค์
์์ ์ ํ ae_type. ์ง์๋๋ ๊ฐ ae_type are ์ด ์ค ํ๋๋ฅผ ์ด์ฉํ์ธ์, MUL๋ฐ ๋งฅ.
-๋งค=ANY ์์ ํ ์ผ๋ฐ์ ์ธ AE ์ ํ์ ์ ํํฉ๋๋ค. ์ด ์ต์ ์ผ๋ก ์์ฑ๋ ์ฝ๋ ์คํ
๋ค๋ฅธ AE ์ ํ ์ค ํ๋์์. ์ฝ๋๋ ์ปดํ์ผ๋ ๊ฒฝ์ฐ๋งํผ ํจ์จ์ ์ด์ง ์์ต๋๋ค.
ํน์ AE ์ ํ์ ๋ํด ์ผ๋ถ ์ ํ์ ์ฐ์ฐ(์: ๊ณฑ์ )์ด ์๋ํ์ง ์์
๋ชจ๋ ์ ํ์ AE์์ ์ ๋๋ก ์๋ํฉ๋๋ค.
-๋งค=MUL MUL AE ์ ํ์ ์ ํํฉ๋๋ค. ์ด๊ฒ์ ์ปดํ์ผ๋ ์ฝ๋์ ๊ฐ์ฅ ์ ์ฉํ AE ์ ํ์ ๋๋ค.
๋ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-๋งค=๋งฅ DSP ์คํ์ผ์ MAC AE๋ฅผ ์ ํํฉ๋๋ค. ์ด ์ต์ ์ผ๋ก ์ปดํ์ผ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์ ์ ์์ต๋๋ค.
DSP AE๊ฐ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํธ(char) ์กฐ์์ ์ด์ ํ ์ฑ๋ฅ
๋ฐ์ดํธ ๋ก๋/์ ์ฅ์ ๋ํ ํ๋์จ์ด ์ง์.
-msymbol-์ฃผ์
์ปดํ์ผ๋ฌ๊ฐ ๋ก๋/์ ์ฅ์์ ์ฃผ์๋ก ๊ธฐํธ ์ด๋ฆ์ ์ง์ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
๋ ์ง์คํฐ์ ๋จผ์ ๋ก๋ํ์ง ์๊ณ ๋ช ๋ น. ์ผ๋ฐ์ ์ผ๋ก ์ด ์ฌ์ฉ
์ต์ ์ ์ต์ ์ ์ฌ์ฉํ์ง ์์ ๋๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์คํ๋๋ ๋ ํฐ ํ๋ก๊ทธ๋จ์ ์์ฑํฉ๋๋ค.
๋จ, ํ๋ก๊ทธ๋จ๋ง๋ค ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ ํ์ฌํญ์ผ๋ก ๋จ๊ฒจ๋๊ณ ,
์๊ตฌ์ ์ผ๋ก ํ์ฑํ๋๋ ๊ฒ์ด ์๋๋ผ
-mno-inefficiency-warnings
๋นํจ์จ์ ์ธ ์ฝ๋ ์์ฑ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ๊ณ ๋
์๋ฅผ ๋ค์ด ๋ฐ์ดํธ ์์ค ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ํํ๋ ์ฝ๋๋ฅผ ์ปดํ์ผํ ๋ ์์ฑ๋ฉ๋๋ค.
MAC AE ์ ํ์์. MAC AE๋ ๋ฐ์ดํธ ์์ค ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ํ๋์จ์ด ์ง์์ด ์์ต๋๋ค.
๋ชจ๋ ๋ฐ์ดํธ ๋ก๋/์ ์ฅ์ ์๋ ๋ก๋/์ ์ฅ์์ ํฉ์ฑ๋์ด์ผ ํฉ๋๋ค.
์์ . ์ด๋ ๋นํจ์จ์ ์ด๋ฉฐ ๋ค์์ ๋ํ๋ด๋ ๊ฒฝ๊ณ ๊ฐ ์์ฑ๋ฉ๋๋ค.
๋ฐ์ดํธ ์ฐ์ฐ์ ํผํ๊ฑฐ๋
ํ์ํ ํ๋์จ์ด ์ง์. ์ด ์ต์ ์ ์ด๋ฌํ ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
PowerPC ์ต์
์ด๋ค์ ์๋์ ๋์ด๋ฉ๋๋ค
RL78 ์ต์
-msim
์๋ฎฌ๋ ์ดํฐ ๋ด์์ ์์ ์ ์ง์ํ๊ธฐ ์ํ ์ถ๊ฐ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋งํฌ.
-mmul=์์
-mmul=g13
-mmul=rl78
์ฌ์ฉํ ํ๋์จ์ด ๊ณฑ์ ์ง์ ์ ํ์ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
์ํํธ์จ์ด ๊ณฑ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ "์์". "g13" ์ต์ ์
ํ๋์จ์ด๋ RL78/G13 ํ๊ฒ์์๋ง ์ฃผ๋ณ ์ฅ์น๋ฅผ ๊ณฑํ๊ฑฐ๋ ๋๋๋๋ค. "rl78" ์ต์
RL78 ์ํํธ์จ์ด ๋งค๋ด์ผ์ ์ ์๋ ํ์ค ํ๋์จ์ด ๊ณฑ์ ์ฉ์ ๋๋ค.
IBM RS/6000 and PowerPC ์ต์
Bowman์ -m ์ต์ ์ IBM RS/6000 ๋ฐ PowerPC์ ๋ํด ์ ์๋ฉ๋๋ค.
-mpowerpc-gpopt
-mno-powerpc-gpopt
-mpowerpc-gfxopt
-mno-powerpc-gfxopt
-mpowerpc64
-mno-powerpc64
-mmfcrf
-mno-mfcrf
-mpopcntb
-mno-popcntb
-mpopcntd
-mno-popcntd
-mfprnd
-mno-fprnd
-mcmpb
-mno-cmpb
-mmfpgpr
-mno-mfpgpr
-mhard-dfp
-mno-ํ๋-dfp
์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์์์ ์ฌ์ฉํ ์ ์๋ ๋ช ๋ น์ ์ง์ ํฉ๋๋ค.
์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์ต์ ์ ๊ธฐ๋ณธ๊ฐ์ GCC๋ฅผ ๊ตฌ์ฑํ ๋ ๊ฒฐ์ ๋ฉ๋๋ค.
์ง์ -mcpu =CPU_์ ํ ์ด๋ฌํ ์ต์ ์ ์ฌ์์ ์ฌ์ ์ํฉ๋๋ค. ์ฐ๋ฆฌ
๋น์ ์ด ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค -mcpu =CPU_์ ํ ์์ ๋์ด๋ ์ต์ ์ด ์๋ ์ต์ ์ ๋๋ค.
์ง์ -mpowerpc-gpopt GCC๊ฐ ์ต์ ์ธ PowerPC ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
๋ถ๋ ์์์ ์ ๊ณฑ๊ทผ์ ํฌํจํ ๋ฒ์ฉ ๊ทธ๋ฃน์ ๋ช ๋ น์ด.
์ง์ -mpowerpc-gfxopt GCC๊ฐ ์ต์ ์ธ PowerPC ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
๋ถ๋ ์์์ ์ ํ์ ํฌํจํ ๊ทธ๋ํฝ ๊ทธ๋ฃน์ ๋ช ๋ น์ด.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -mmfcrf ์ต์ ์ ์ฌ์ฉํ๋ฉด GCC๊ฐ ์กฐ๊ฑด ๋ ์ง์คํฐ ํ๋์์ ์ด๋์ ์์ฑํ ์ ์์ต๋๋ค.
POWER4 ํ๋ก์ธ์ ๋ฐ ์ง์ํ๋ ๊ธฐํ ํ๋ก์ธ์์์ ๊ตฌํ๋ ๋ช ๋ น
PowerPC V2.01 ์ํคํ ์ฒ. NS -mpopcntb ์ต์ ์ ์ฌ์ฉํ๋ฉด GCC๊ฐ ํ์นด์ดํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
POWER5์ ๊ตฌํ๋ ๋ฐฐ์ ๋ฐ๋ FP ์ญ์ถ์ ๋ช ๋ น์ด
PowerPC V2.02 ์ํคํ ์ฒ๋ฅผ ์ง์ํ๋ ํ๋ก์ธ์ ๋ฐ ๊ธฐํ ํ๋ก์ธ์. NS
-mpopcntd ์ต์ ์ ์ฌ์ฉํ๋ฉด GCC์์ ๊ตฌํ๋ popcount ๋ช ๋ น์ ์์ฑํ ์ ์์ต๋๋ค.
PowerPC V7 ์ํคํ ์ฒ๋ฅผ ์ง์ํ๋ POWER2.06 ํ๋ก์ธ์ ๋ฐ ๊ธฐํ ํ๋ก์ธ์.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -mfprnd ์ต์ ์ ์ฌ์ฉํ๋ฉด GCC๊ฐ FP๋ฅผ ์ ์๋ก ๋ฐ์ฌ๋ฆผํ๋ ๋ช ๋ น์ด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
POWER5+ ํ๋ก์ธ์ ๋ฐ PowerPC๋ฅผ ์ง์ํ๋ ๊ธฐํ ํ๋ก์ธ์์์ ๊ตฌํ
V2.03 ์ํคํ ์ฒ. NS -mcmpb ์ต์ ์ ์ฌ์ฉํ๋ฉด GCC๊ฐ ๋น๊ต ๋ฐ์ดํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
POWER6 ํ๋ก์ธ์ ๋ฐ ์ง์ํ๋ ๊ธฐํ ํ๋ก์ธ์์์ ๊ตฌํ๋ ๋ช ๋ น
PowerPC V2.05 ์ํคํ ์ฒ. NS -mmfpgpr ์ต์ ์ ์ฌ์ฉํ๋ฉด GCC๊ฐ FP ์ด๋์ ์์ฑํ ์ ์์ต๋๋ค.
POWER6X ํ๋ก์ธ์์ ๊ตฌํ๋ ๋ฒ์ฉ ๋ ์ง์คํฐ ๋ช ๋ น์ด ๋ฐ
ํ์ฅ๋ PowerPC V2.05 ์ํคํ ์ฒ๋ฅผ ์ง์ํ๋ ๋ค๋ฅธ ํ๋ก์ธ์. NS -mhard-dfp
์ต์ ์ ์ฌ์ฉํ๋ฉด GCC์์ ๊ตฌํ๋ XNUMX์ง์ ๋ถ๋ ์์์ ๋ช ๋ น์ด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ผ๋ถ POWER ํ๋ก์ธ์.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -mpowerpc64 ์ต์ ์ ์ฌ์ฉํ๋ฉด GCC๊ฐ ์ถ๊ฐ 64๋นํธ ๋ช ๋ น์ด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ ์ฒด PowerPC64 ์ํคํ ์ฒ์์ ์ฐพ์ ์ ์์ผ๋ฉฐ GPR์ 64๋นํธ, ๋๋ธ์๋๋ก ์ฒ๋ฆฌํฉ๋๋ค.
์๋. GCC๋ ๊ธฐ๋ณธ์ ์ผ๋ก -mno-powerpc64.
-mcpu =CPU_์ ํ
์ํคํ ์ฒ ์ ํ, ๋ ์ง์คํฐ ์ฌ์ฉ ๋ฐ ๋ช ๋ น์ด ์ค์ผ์ค๋ง ๋งค๊ฐ๋ณ์ ์ค์
๊ธฐ๊ณ ์ ํ CPU_์ ํ. ์ง์๋๋ ๊ฐ CPU_์ ํ are 401, 403, 405, 405fp, 440,
440fp, 464, 464fp, 476, 476fp, 505, 601, 602, 603, 603e, 604, 604e, 620, 630, 740,
7400, 7450, 750, 801, 821, 823, 860, 970, 8540, a2, e300c2, e300c3, e500mc, e500mc64,
e5500, e6500, EC603e, G3, G4, G5, ํ์ดํ, power3, power4, power5, ํ์5+, power6,
ํ์6x, power7, power8, ์ ์, ํ์ pc64, ํ์ pc64le๋ฐ rs64.
-mcpu=ํ์PC, -mcpu=powerpc64๋ฐ -mcpu=powerpc64le ์์ 32๋นํธ PowerPC ์ง์
(๋ ์ค ํ๋), 64๋นํธ ๋น ์๋์ PowerPC ๋ฐ 64๋นํธ ๋ฆฌํ ์๋์ PowerPC
์ ์ ํ ์ผ๋ฐ ํ๋ก์ธ์ ๋ชจ๋ธ์ด ์๋ ์ํคํ ์ฒ ๋จธ์ ์ ํ
์ค์ผ์ค๋ง ๋ชฉ์ .
๋ค๋ฅธ ์ต์ ์ ํน์ ํ๋ก์ธ์๋ฅผ ์ง์ ํฉ๋๋ค. ํด๋น ์ต์ ์์ ์์ฑ๋ ์ฝ๋
ํด๋น ํ๋ก์ธ์์์ ๊ฐ์ฅ ์ ์คํ๋๋ฉฐ ๋ค๋ฅธ ํ๋ก์ธ์์์๋ ์ ํ ์คํ๋์ง ์์ ์ ์์ต๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -mcpu options๋ ๋ค์ ์ต์ ์ ์๋์ผ๋ก ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํฉ๋๋ค.
-๋งํฐ๋ฒก -mfprnd -mhard-float -mmfcrf -m๋ค์ค -mpopcntb -mpopcntd -mpowerpc64
-mpowerpc-gpopt -mpowerpc-gfxopt -msingle-float -m๋๋ธ ํ๋กํธ -ms๋จ์-fpu -mstring
-mmulhw -mdlmzb -mmfpgpr -mvsx -mcrypto -mdirect-์ด๋ -mpower8-ํจ์
-mpower8-๋ฒกํฐ -mquad-๋ฉ๋ชจ๋ฆฌ -mquad-๋ฉ๋ชจ๋ฆฌ-์์
ํน์ CPU์ ๋ํด ์ค์ ๋ ํน์ ์ต์ ์ ์ปดํ์ผ๋ฌ ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ด๋ค ์ค์ ์ด ํด๋น CPU์ ๋ํ ์ต์ ์ ์ฝ๋๋ฅผ ์์ฑํ๋์ง์ ๋ฐ๋ผ; ๊ทธ๊ฒ์ํ์ง ์์ต๋๋ค
๋ฐ๋์ ์ค์ ํ๋์จ์ด์ ๊ธฐ๋ฅ์ ๋ฐ์ํด์ผ ํฉ๋๋ค. ์ค์ ์ ์ํ์๋ฉด
๊ฐ๋ณ ์ต์ ์ ํน์ ๊ฐ์ผ๋ก ์ง์ ํ๋ ค๋ฉด -mcpu ์ ํ๊ถ,
์ฒ๋ผ -mcpu=970 -mno-altivec.
AIX์์๋ -๋งํฐ๋ฒก and -mpowerpc64 ์ต์ ์ -mcpu
AIX๋ ์ด๋ฌํ ์ต์ ์ ์๋ฒฝํ๊ฒ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ํ์ฌ ์ต์ ์ ๋๋ค. ๋น์ ์ ํ ์์๋ค
์ฌ์ ํ ์๋ํ ๊ฒ์ด๋ผ๊ณ ํ์ ํ๋ ๊ฒฝ์ฐ ๊ฐ๋ณ์ ์ผ๋ก ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํฉ๋๋ค.
ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
-mtune=CPU_์ ํ
๋จธ์ ์ ํ์ ๋ํ ๋ช ๋ น์ด ์ค์ผ์ค๋ง ๋งค๊ฐ๋ณ์ ์ค์ CPU_์ ํ, ๊ทธ๋ฌ๋ ์ค์ ํ์ง ๋ง์ญ์์ค
์ํคํ ์ฒ ์ ํ ๋๋ ๋ ์ง์คํฐ ์ฌ์ฉ -mcpu =CPU_์ ํ ํ๋ค. ์ ๋ํ ๋์ผํ ๊ฐ
CPU_์ ํ ์ ์ฌ์ฉ๋๋ค -mtune ์ ๊ดํด์ -mcpu. ๋ ๋ค ์ง์ ํ๋ฉด ์์ฑ๋ ์ฝ๋
์ ์ํด ์ค์ ๋ ์ํคํ ์ฒ ๋ฐ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. -mcpu, ๊ทธ๋ฌ๋ ์ ์ํด ์ค์ ๋ ์ค์ผ์ค๋ง ๋งค๊ฐ๋ณ์
-mtune.
-mcmodel=์์
์ํ ๋ชจ๋ธ์ฉ PowerPC64 ์ฝ๋ ์์ฑ: TOC๋ 64k๋ก ์ ํ๋ฉ๋๋ค.
-mcmodel=์ค๊ฐ
์คํ ๋ชจ๋ธ์ ๋ํ PowerPC64 ์ฝ๋ ์์ฑ: TOC ๋ฐ ๊ธฐํ ์ ์ ๋ฐ์ดํฐ๊ฐ ์๋ ์ค์ผ ์ ์์ต๋๋ค.
์ด 4G ํฌ๊ธฐ์ ๋๋ค.
-mcmodel=๋ํ
๋ํ ๋ชจ๋ธ์ ๋ํ PowerPC64 ์ฝ๋ ์์ฑ: TOC์ ํฌ๊ธฐ๋ ์ต๋ 4G์ผ ์ ์์ต๋๋ค. ๋ค๋ฅธ
๋ฐ์ดํฐ์ ์ฝ๋๋ 64๋นํธ ์ฃผ์ ๊ณต๊ฐ์ ์ํด์๋ง ์ ํ๋ฉ๋๋ค.
-๋งํฐ๋ฒก
-mno-altivec
AltiVec ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋(์ฌ์ฉํ์ง ์๋) ์ฝ๋ ์์ฑ ๋ฐ ์ฌ์ฉ ๊ฐ๋ฅ
AltiVec ๋ช ๋ น์ด ์ธํธ์ ๋ํ ๋ณด๋ค ์ง์ ์ ์ธ ์ก์ธ์ค๋ฅผ ํ์ฉํ๋ ๋ด์ฅ ํจ์.
์ค์ ํด์ผ ํ ์๋ ์์ต๋๋ค. -๋ง๋น=์ํฐ๋ฒก AltiVec ABI๋ก ํ์ฌ ABI ์กฐ์
ํฅ์.
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -๋งํฐ๋ฒก ๋ณด๋ค๋ ์ฌ์ฉ๋๋ค -maltivec=๋ฅด or -maltivec=๋ฒ , ์์ ์์
"vec_splat", "vec_extract" ๋ฐ "vec_insert"์ ๊ฐ์ Altivec ๋ด์ฅ ํจ์์ ๊ฒฝ์ฐ ์ผ์นํฉ๋๋ค.
๋์์ ์๋์(endianness)์ ํด๋นํ๋ ๋ฐฐ์ด ์์ ์์์ ๋๋ค. ์ฆ, ์์
XNUMX์ ๋น ์๋์์ ๋์์ผ๋ก ํ ๋ ๋ฒกํฐ ๋ ์ง์คํฐ์์ ๊ฐ์ฅ ์ผ์ชฝ ์์๋ฅผ ์๋ณํฉ๋๋ค.
ํ๋ซํผ์ ๋์์ผ๋ก ํ ๋ ๋ฒกํฐ ๋ ์ง์คํฐ์์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์์๋ฅผ ์๋ณํฉ๋๋ค.
๋ฆฌํ ์๋์ ํ๋ซํผ.
-maltivec=๋ฒ
์ฌ๋ถ์ ๊ด๊ณ์์ด ๋น ์๋์ ์์ ์์๋ฅผ ์ฌ์ฉํ์ฌ Altivec ๋ช ๋ น์ด๋ฅผ ์์ฑํฉ๋๋ค.
๋์์ ๋น ์๋์ ๋๋ ๋ฆฌํ ์๋์์ ๋๋ค. ๋น ์๋์์ ํ๊ฒํ ํ ๋์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
ํ๋ซํผ์ ๋๋ค.
์์ ์์๋ ๋ค์๊ณผ ๊ฐ์ Altivec ๋ด์ฅ ํจ์์์ ์์ ๋ฒํธ๋ฅผ ํด์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
"vec_splat", "vec_extract" ๋ฐ "vec_insert". ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ค์ ๋ฐฐ์ด๊ณผ ์ผ์นํฉ๋๋ค.
๋์์ ์๋์(endianness)์ ํด๋นํ๋ ์์ ์์.
-maltivec=๋ฅด
์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ฆฌํ ์๋์ ์์ ์์๋ฅผ ์ฌ์ฉํ์ฌ Altivec ๋ช ๋ น์ด๋ฅผ ์์ฑํฉ๋๋ค.
๋์์ ๋น ์๋์ ๋๋ ๋ฆฌํ ์๋์์ ๋๋ค. ์ฝ๊ฐ ํ๊ฒํ ํ ๋์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
์๋์ ํ๋ซํผ. ์ด ์ต์ ์ ํ์ฌ ๋น ์๋์์ ํ๊ฒํ ํ ๋ ๋ฌด์๋ฉ๋๋ค.
ํ๋ซํผ์ ๋๋ค.
์์ ์์๋ ๋ค์๊ณผ ๊ฐ์ Altivec ๋ด์ฅ ํจ์์์ ์์ ๋ฒํธ๋ฅผ ํด์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
"vec_splat", "vec_extract" ๋ฐ "vec_insert". ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ค์ ๋ฐฐ์ด๊ณผ ์ผ์นํฉ๋๋ค.
๋์์ ์๋์(endianness)์ ํด๋นํ๋ ์์ ์์.
-mvrsave
-mno-vrsave
AltiVec ์ฝ๋๋ฅผ ์์ฑํ ๋ VRSAVE ๋ช ๋ น์ด๋ฅผ ์์ฑํฉ๋๋ค.
-mgen-cell-๋ง์ดํฌ๋ก์ฝ๋
Cell ๋ง์ดํฌ๋ก์ฝ๋ ๋ช ๋ น์ด๋ฅผ ์์ฑํฉ๋๋ค.
-mwarn-cell-๋ง์ดํฌ๋ก์ฝ๋
Cell ๋ง์ดํฌ๋ก์ฝ๋ ๋ช ๋ น์ด ๋ฐ์ํ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. Cell ๋ง์ดํฌ๋ก์ฝ๋์ ์
๋ช ๋ น์ด๋ ๊ฐ๋ณ ์ํํธ์ ๋๋ค.
-msecure-plt
ํ์ฉํ๋ ์ฝ๋ ์์ฑ ld and ld.so ์คํ ํ์ผ ๋ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋น๋
์คํํ ์ ์๋ ".plt" ๋ฐ ".got" ์น์ . ์ด๊ฒ์ PowerPC 32๋นํธ SYSV ABI ์ต์ ์ ๋๋ค.
-mbss-plt
BSS ".plt" ์น์ ์ ์ฌ์ฉํ๋ ์ฝ๋ ์์ฑ ld.so ์ฑ์ฐ๊ณ ".plt"๊ฐ ํ์ํฉ๋๋ค.
์ฐ๊ธฐ ๊ฐ๋ฅํ๊ณ ์คํ ๊ฐ๋ฅํ ".got" ์น์ . ์ด๊ฒ์ PowerPC 32๋นํธ์ ๋๋ค.
SYSV ABI ์ต์ .
-๋ฏธ์ ค
-mno-isel
์ด ์ค์์น๋ ISEL ๋ช ๋ น์ด ์์ฑ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํฉ๋๋ค.
-๋ฏธ์ ค=์ ์๋์ค
์ด ์ค์์น๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์ฌ์ฉํ๋ค -๋ฏธ์ ค and -mno-isel ๋์ .
-mspe
-mno-sp
์ด ์ค์์น๋ SPE simd ๋ช ๋ น์ด ์์ฑ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํฉ๋๋ค.
-์ง์ด ๋
-mno ์
์ด ์ค์์น๋ PAIRED simd ๋ช ๋ น์ด ์์ฑ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํฉ๋๋ค.
-mspe=์ ์๋์ค
์ด ์ต์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์ฌ์ฉํ๋ค -mspe and -mno-sp ๋์ .
-mvsx
-mno-vsx
๋ฒกํฐ/์ค์นผ๋ผ(VSX) ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋(์ฌ์ฉํ์ง ์๋) ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
VSX์ ๋ํ ๋ณด๋ค ์ง์ ์ ์ธ ์ก์ธ์ค๋ฅผ ํ์ฉํ๋ ๋ด์ฅ ๊ธฐ๋ฅ์ ์ฌ์ฉ์ ํ์ฑํํฉ๋๋ค.
๋ช ๋ น์ด ์ธํธ.
-mcrypto
-mno-์ํธํ
์ง์ ์ก์ธ์ค๋ฅผ ํ์ฉํ๋ ๋ด์ฅ ๊ธฐ๋ฅ์ ์ฌ์ฉ์ ํ์ฑํ(๋นํ์ฑํ)
PowerPC ISA ๋ฒ์ 2.07์ ์ถ๊ฐ๋ ์ํธํ ๋ช ๋ น.
-mdirect-์ด๋
-mno-์ง์ ์ด๋
๋ช ๋ น์ ์ฌ์ฉํ๋(์ฌ์ฉํ์ง ์๋) ์ฝ๋๋ฅผ ์์ฑํ์ฌ
๋ฒ์ฉ ๋ ์ง์คํฐ ๋ฐ ์ ์ถ๊ฐ๋ ๋ฒกํฐ/์ค์นผ๋ผ(VSX) ๋ ์ง์คํฐ
PowerPC ISA ๋ฒ์ 2.07.
-mpower8-ํจ์
-mno-power8-ํจ์
์ผ๋ถ ์ ์ ์ฐ์ฐ์ ์ธ์ ํ๊ฒ ์ ์ง(์ ์งํ์ง ์์)ํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ฌ
๋ช ๋ น์ power8 ์ด์ ํ๋ก์ธ์์์ ํจ๊ป ์ตํฉ๋ ์ ์์ต๋๋ค.
-mpower8-๋ฒกํฐ
-mno-power8-๋ฒกํฐ
๋ฒกํฐ ๋ฐ ์ค์นผ๋ผ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
PowerPC ISA ๋ฒ์ 2.07์ ์ถ๊ฐ๋์์ต๋๋ค. ๋ํ ๋ด์ฅ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ก ์ค์
๋ฒกํฐ ๋ช ๋ น์ด์ ๋ณด๋ค ์ง์ ์ ์ผ๋ก ์ก์ธ์คํ ์ ์์ต๋๋ค.
-mquad-๋ฉ๋ชจ๋ฆฌ
-mno ์ฟผ๋ ๋ฉ๋ชจ๋ฆฌ
๋น์์ ์ฟผ๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋(์ฌ์ฉํ์ง ์๋) ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -mquad-๋ฉ๋ชจ๋ฆฌ ์ต์ ์ ์ฌ์ฉํ๋ ค๋ฉด 64๋นํธ ๋ชจ๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
-mquad-๋ฉ๋ชจ๋ฆฌ-์์
-mno-์ฟผ๋-๋ฉ๋ชจ๋ฆฌ-์์
์์ ์ฟผ๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋(์ฌ์ฉํ์ง ์๋) ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. NS
-mquad-๋ฉ๋ชจ๋ฆฌ-์์ ์ต์ ์ ์ฌ์ฉํ๋ ค๋ฉด 64๋นํธ ๋ชจ๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
-mfloat-gprs=์/์ฑ๊ธ/๋๋ธ/์๋์
-mfloat-gprs
์ด ์ค์์น๋ ๋ถ๋ ์์์ ์ฐ์ฐ ์์ฑ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํฉ๋๋ค.
์ด๋ฅผ ์ง์ํ๋ ์ํคํ ์ฒ์ฉ ๋ฒ์ฉ ๋ ์ง์คํฐ.
๋ ผ์ ๊ฑฐ๋ฆฌ ์ or ๋จ์ผ ๋จ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ฌ์ฉ ๊ฐ๋ฅ
์์ .
๋ ผ์ ๊ฑฐ๋ฆฌ ๋๋ธ ๋จ์ ๋ฐ๋ ๋ฐ ๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ฌ์ฉ ๊ฐ๋ฅ
์์ .
๋ ผ์ ๊ฑฐ๋ฆฌ ์๋ ๋ฒ์ฉ ๋ ์ง์คํฐ์์ ๋ถ๋ ์์์ ์ฐ์ฐ์ ๋นํ์ฑํํฉ๋๋ค.
์ด ์ต์ ์ ํ์ฌ MPC854x์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
-m32
-m64
Darwin ๋ฐ SVR32 ๋์์ 64๋นํธ ๋๋ 4๋นํธ ํ๊ฒฝ์ฉ ์ฝ๋ ์์ฑ(ํฌํจ
GNU/๋ฆฌ๋ ์ค). 32๋นํธ ํ๊ฒฝ์ int, long ๋ฐ ํฌ์ธํฐ๋ฅผ 32๋นํธ๋ก ์ค์ ํ๊ณ
๋ชจ๋ PowerPC ๋ณํ์์ ์คํ๋๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. 64๋นํธ ํ๊ฒฝ์ int๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค.
32๋นํธ ๋ฐ long ๋ฐ 64๋นํธ์ ๋ํ ํฌ์ธํฐ, ๋ค์๊ณผ ๊ฐ์ด PowerPC64์ฉ ์ฝ๋ ์์ฑ
-mpowerpc64.
-mfull-toc
-mno-fp-in-toc
-mno-ํฉ๊ณ-๋ชฉ์ฐจ
-์ต์-toc
๋ชจ๋ ํญ๋ชฉ์ ๋ํด ์์ฑ๋๋ TOC(๋ชฉ์ฐจ) ์์ฑ ์์
์คํ ๊ฐ๋ฅ ํ์ผ. NS -mfull-toc ์ต์ ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ๋์ด ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ GCC๋
๊ฐ ๊ณ ์ ํ ๋น์๋ ๋ณ์ ์ฐธ์กฐ์ ๋ํด ํ๋ ์ด์์ TOC ํญ๋ชฉ์ ํ ๋นํฉ๋๋ค.
๋น์ ์ ํ๋ก๊ทธ๋จ. GCC๋ ๋ํ TOC์ ๋ถ๋ ์์์ ์์๋ฅผ ๋ฐฐ์นํฉ๋๋ค. ๋ค๋ง,
16,384๊ฐ์ ํญ๋ชฉ์ด TOC์ ์์ต๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ฅผ ์ค๋ฒํ๋กํ๋ค๋ ๋ง์ปค ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋๋ ๊ฒฝ์ฐ
TOC ๊ณต๊ฐ, ๋น์ ์ ํจ๊ป ์ฌ์ฉ๋๋ TOC ๊ณต๊ฐ์ ์์ ์ค์ผ ์ ์์ต๋๋ค -mno-fp-in-toc and
-mno-ํฉ๊ณ-๋ชฉ์ฐจ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. -mno-fp-in-toc GCC๊ฐ ๋ถ๋ ์์์ ์ ๋ฃ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
๋ชฉ์ฐจ์ ์์ ๋ฐ -mno-ํฉ๊ณ-๋ชฉ์ฐจ GCC๊ฐ ๊ณ์ฐ์ ์ํด ์ฝ๋๋ฅผ ์์ฑํ๋๋ก ํฉ๋๋ค.
๊ทธ ํฉ๊ณ๋ฅผ TOC์ ๋ฃ๋ ๋์ ๋ฐํ์์ ์ฃผ์์ ์์์ ํฉ๊ณ.
์ด ์ต์ ์ค ํ๋ ๋๋ ๋ ๋ค๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๊ฐ๊ฐ์ GCC๊ฐ ๋งค์ฐ
TOC ๊ณต๊ฐ์ ์ ์ฝํ๋ ๋์ ์ฝ๊ฐ ๋ ๋๋ฆฌ๊ณ ๋ ํฐ ์ฝ๋.
์ด ๋ ์ต์ ์ ๋ชจ๋ ์ง์ ํ๋๋ฐ๋ ๋ชฉ์ฐจ์ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด
์ง์ ํ๋ค -์ต์-toc ๋์ ์. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด GCC๊ฐ ๋ค์ ํญ๋ชฉ์ ๋ํด ํ๋์ TOC ํญ๋ชฉ๋ง
๋ชจ๋ ํ์ผ. ์ด ์ต์ ์ ์ง์ ํ๋ฉด GCC๋ ๋ ๋๋ฆฌ๊ณ ๋ ํฐ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋งค์ฐ ์ ์ TOC ๊ณต๊ฐ์ ์ฌ์ฉํฉ๋๋ค. ์ด ์ต์ ์ ๋ค์์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ ์์ฃผ ์คํ๋๋ ์ฝ๋๋ฅผ ํฌํจํ๋ ํ์ผ.
-maix64
-maix32
64๋นํธ AIX ABI ๋ฐ ํธ์ถ ๊ท์น ์ฌ์ฉ: 64๋นํธ ํฌ์ธํฐ, 64๋นํธ "long" ์ ํ ๋ฐ
๊ทธ๋ค์ ์ง์ํ๋ ๋ฐ ํ์ํ ์ธํ๋ผ. ์ง์ -maix64 ์๋ฏธํ๋ค -mpowerpc64,
๋์ -maix32 64๋นํธ ABI๋ฅผ ๋นํ์ฑํํ๊ณ -mno-powerpc64. GCC๋ ๊ธฐ๋ณธ์ ์ผ๋ก
-maix32.
-mxl-ํธํ
-mno-xl-์ปดํจํธ
AIX-
ํธํ ๊ฐ๋ฅํ ABI. ๋ถ๋ ์์์ ์ธ์๋ฅผ ๋ค์์ ๋์ด ํ๋กํ ํ์ ๋ ํจ์์ ์ ๋ฌ
์ธ์ FPR ์ธ์ ์คํ์ ์ ์ฅ ์์ญ(RSA)์ ๋ฑ๋กํฉ๋๋ค. ๊ฐ์ ํ์ง ๋ง์ญ์์ค
128๋นํธ long double ๊ฐ์์ ๊ฐ์ฅ ์ค์ํ double์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ ์ ํ๊ฒ ๋ฐ์ฌ๋ฆผ๋ฉ๋๋ค.
๊ฐ์ ๋น๊ตํ๊ณ double๋ก ๋ณํํฉ๋๋ค. long double์ XL ๊ธฐํธ ์ด๋ฆ ์ฌ์ฉ
๋ฃจํด์ ์ง์ํฉ๋๋ค.
AIX ํธ์ถ ๊ท์น์ด ํ์ฅ๋์์ง๋ง ์ฒ์์๋ ์ฒ๋ฆฌํ๋๋ก ๋ฌธ์ํ๋์ง ์์์ต๋๋ค.
์ธ์์ ์ฃผ์๋ฅผ ์ทจํ๋ ํจ์๋ฅผ ํธ์ถํ๋ ๋ชจํธํ K&R C ์ฌ๋ก
์ ์ธ๋ ๊ฒ๋ณด๋ค ์ ์ ์ธ์. IBM XL ์ปดํ์ผ๋ฌ๋ ๋ถ๋ ์์์ ์ธ์์ ์ก์ธ์คํฉ๋๋ค.
์๋ธ๋ฃจํด์ด ๋ค์ ์์ด ์ปดํ์ผ๋ ๋ ์คํ์ RSA์ ๋ง์ง ์์ต๋๋ค.
์ต์ ํ. ์คํ์ ๋ถ๋ ์์์ ์ธ์๋ฅผ ํญ์ ์ ์ฅํ๋ ๊ฒ์
๋นํจ์จ์ ์ด๊ณ ๊ฑฐ์ ํ์ํ์ง ์์ ์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค.
์ต์ ํ ์์ด IBM XL ์ปดํ์ผ๋ฌ์ ์ํด ์ปดํ์ผ๋ ์๋ธ๋ฃจํด์ ํธ์ถํ ๋ ํ์ํฉ๋๋ค.
-mp
๊ณ ๊ฐ ์ง์ IBM RS/6000 SP ํํ ํ๊ฒฝ (์ฒด์ก). ์ฌ์ฉํ๋๋ก ์์ฑ๋ ์์ฉ ํ๋ก๊ทธ๋จ ์ฐ๊ฒฐ
์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋๋ก ํน์ ์์ ์ฝ๋์ ํจ๊ป ๋ฉ์์ง๋ฅผ ์ ๋ฌํฉ๋๋ค. NS
์์คํ ์๋ ํ์ค ์์น(/usr/lpp/ppe.poe/), ์๋๋ฉด ๊ทธ
๋ช ์ธ์ ํ์ผ์ ๋ค์์ผ๋ก ์ฌ์ ์๋์ด์ผ ํฉ๋๋ค. -์ฌ์= ์ ์ ํ ์ง์ ์ต์
๋๋ ํ ๋ฆฌ ์์น. ๋ณ๋ ฌ ํ๊ฒฝ์ ์ค๋ ๋๋ฅผ ์ง์ํ์ง ์์ผ๋ฏ๋ก -mp
์ต์ ๊ณผ -pthread ์ต์ ์ด ํธํ๋์ง ์์ต๋๋ค.
-์ ์ฑ - ์์ฐ
-์ ์๋ ฅ
AIX, 32๋นํธ Darwin ๋ฐ 64๋นํธ PowerPC GNU/Linux์์ ์ต์ -์ ์ฑ - ์์ฐ
๋ถ๋ ์์์ double๊ณผ ๊ฐ์ ๋ ํฐ ์ ํ์ ABI ์ ์ ์ ๋ ฌ์ ์ฌ์ ์ํฉ๋๋ค.
์์ฐ ํฌ๊ธฐ ๊ธฐ๋ฐ ๊ฒฝ๊ณ์์. ์ต์ -์ ์๋ ฅ GCC์ ์ง์
ABI ์ง์ ์ ๋ ฌ ๊ท์น์ ๋ฐ๋ฆ ๋๋ค. GCC๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ค ์ ๋ ฌ์ ์ฌ์ฉํฉ๋๋ค.
ABI์ ์ ์๋์ด ์์ต๋๋ค.
64๋นํธ Darwin์์๋ ์์ฐ ์ ๋ ฌ์ด ๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ -์ ์๋ ฅ ํ์ง ์์ต๋๋ค
์ง์.
-msoft-float
-mhard-float
๋ถ๋ ์์์ ๋ ์ง์คํฐ ์ธํธ๋ฅผ ์ฌ์ฉ(์ฌ์ฉ)ํ์ง ์๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ํํธ์จ์ด
์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ถ๋ ์์์ ์๋ฎฌ๋ ์ด์ ์ด ์ ๊ณต๋ฉ๋๋ค. -msoft-float ์ต์ ์ ์ ํํ๊ณ ํต๊ณผ
๋งํฌํ ๋ GCC์ ์ต์ .
-msingle-float
-m๋๋ธ ํ๋กํธ
๋จ์ ๋ฐ๋ ๋๋ ๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ฐ์ฐ์ ์ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m๋๋ธ ํ๋กํธ ์๋ฏธํ๋ค -msingle-float.
-ms๋จ์-fpu
ํ๋์จ์ด ๋ถ๋ ์์์ ๋จ์์ ๋ํด "sqrt" ๋ฐ "div" ๋ช ๋ น์ด๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค.
-mfpu=name
๋ถ๋ ์์์ ๋จ์์ ์ ํ์ ์ง์ ํฉ๋๋ค. ์ ํจํ ๊ฐ name are sp_lite ์ (๋๋ฑํ
-msingle-float -ms๋จ์-fpu), dp_lite ์ (๋๋ฑํ -m๋๋ธ ํ๋กํธ -ms๋จ์-fpu),
sp_full ์ (๋๋ฑํ -msingle-float), ๊ทธ๋ฆฌ๊ณ dp_๊ฐ๋ ์ (๋๋ฑํ -m๋๋ธ ํ๋กํธ).
-mxilinx-fpu
Xilinx PPC 405/440์์ ๋ถ๋ ์์์ ์ฅ์น์ ๋ํ ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค.
-m๋ค์ค
-mno-๋ค์ค
์ฌ๋ฌ ๋จ์ด ๋ก๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํ๋ ์ฝ๋ ์์ฑ ๋ฐ
์ฌ๋ฌ ๋จ์ด ๋ช ๋ น์ ์ ์ฅํฉ๋๋ค. ์ด ์ง์นจ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์์์ ์์ฑ๋ฉ๋๋ค.
POWER ์์คํ ์ด๋ฉฐ PowerPC ์์คํ ์์ ์์ฑ๋์ง ์์ต๋๋ค. ์ฌ์ฉํ์ง ๋ง์ธ์ -m๋ค์ค ์กฐ๊ธ์-
์๋์ PowerPC ์์คํ ์ ํ๋ก์ธ์๊ฐ
๋ฆฌํ ์๋์ ๋ชจ๋. ์์ธ๋ ๋ค์์ ํ์ฉํ๋ PPC740 ๋ฐ PPC750์ ๋๋ค.
๋ฆฌํ ์๋์ ๋ชจ๋์ ๋ช ๋ น์ด.
-mstring
-mno-๋ฌธ์์ด
๋ก๋ ๋ฌธ์์ด ๋ช ๋ น์ด์ ์คํ ์ด๋ฅผ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํ๋ ์ฝ๋ ์์ฑ
์ฌ๋ฌ ๋ ์ง์คํฐ๋ฅผ ์ ์ฅํ๊ณ ์์ ๋ธ๋ก ์ด๋์ ์ํํ๋ ๋ฌธ์์ด ์๋ ๋ช ๋ น์ด. ์ด๊ฒ๋ค
๋ช ๋ น์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก POWER ์์คํ ์์ ์์ฑ๋๋ฉฐ PowerPC์์๋ ์์ฑ๋์ง ์์ต๋๋ค.
์์คํ . ์ฌ์ฉํ์ง ๋ง์ธ์ -mstring ๋ฆฌํ ์๋์ PowerPC ์์คํ ์์๋
ํ๋ก์ธ์๊ฐ ๋ฆฌํ ์๋์ ๋ชจ๋์ ์์ ๋ ๋ช ๋ น์ด ์๋ํ์ง ์์ต๋๋ค. ์์ธ
๋ฆฌํ ์๋์ ๋ชจ๋์์ ์ด๋ฌํ ๋ช ๋ น์ ํ์ฉํ๋ PPC740 ๋ฐ PPC750์ ๋๋ค.
-์ ๋ฐ์ดํธ
-mno-์ ๋ฐ์ดํธ
์ ๋ฐ์ดํธํ๋ ๋ก๋ ๋๋ ์ ์ฅ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํ๋ ์ฝ๋ ์์ฑ
๊ธฐ๋ณธ ๋ ์ง์คํฐ๋ฅผ ๊ณ์ฐ๋ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ฃผ์๋ก ๋ณ๊ฒฝํฉ๋๋ค. ์ด ์ง์นจ
๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์ฌ์ฉํ๋ ๊ฒฝ์ฐ -mno-์ ๋ฐ์ดํธ, ์ฌ์ด์ ์์ ์ฐฝ์ด ์์ต๋๋ค.
์คํ ํฌ์ธํฐ๊ฐ ์ ๋ฐ์ดํธ๋๊ณ ์ด์ ํ๋ ์์ ์ฃผ์๊ฐ
์ด๋ ์ธํฐ๋ฝํธ ๋๋ ์ ํธ๋ฅผ ๊ฐ๋ก์ง๋ฌ ์คํ ํ๋ ์์ ์ด๋ํ๋ ์ฝ๋๊ฐ
์์๋ ๋ฐ์ดํฐ๋ฅผ ์ป์ต๋๋ค.
-mavoid-์์ธ ์ฃผ์
-mno-avoid-์์ธ ์ฃผ์
์ธ๋ฑ์ฑ๋ ๋ก๋ ๋๋ ์ ์ฅ์ ์ฌ์ฉ์ ํผํ๋ ค๋(ํํผํ์ง ์๋) ์ฝ๋ ์์ฑ
์ง์นจ. ์ด๋ฌํ ๋ช ๋ น์ Power6 ํ๋ก์ธ์์์ ์ฑ๋ฅ ์ ํ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
16M์ ๋๋ ๋ํ ์ด๋ ์ด๋ฅผ ํต๊ณผํ ๋์ ๊ฐ์ ํน์ ์ํฉ์์
๊ฒฝ๊ณ. ์ด ์ต์ ์ Power6์ ๋์์ผ๋ก ํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋๊ณ ๋นํ์ฑํ๋ฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด.
-๋จธํจ์ฆ๋-๋งค๋
-mno-์ตํฉ-๋งค๋
๋ถ๋ ์์์ ๊ณฑํ๊ธฐ ๋ฐ ๋์ ์ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํ๋ ์ฝ๋ ์์ฑ
์ง์นจ. ์ด๋ฌํ ๋ช ๋ น์ด๋ ํ๋์จ์ด ๋ถ๋ ์์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
์ฌ์ฉ. ๊ธฐ๊ณ ์์กด -๋จธํจ์ฆ๋-๋งค๋ ์ด์ ์ต์ ์ด ์์คํ ์ ๋งคํ๋ฉ๋๋ค.
๋ ๋ฆฝ -ffp-๊ณ์ฝ=๋น ๋ฅธ ์ต์ ๋ฐ -mno-์ตํฉ-๋งค๋ ๋งคํ๋ฉ๋๋ค
-ffp-๊ณ์ฝ=ํด์ .
-mmulhw
-mno-๋ฌผํ
ํํ์๋ ๊ณฑ์ ๋ฐ ๊ณฑ์ ๋์ฐ์ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํ๋ ์ฝ๋ ์์ฑ
IBM 405, 440, 464 ๋ฐ 476 ํ๋ก์ธ์์ ๋ํ ์ง์นจ. ์ด๋ฌํ ์ง์นจ์
ํด๋น ํ๋ก์ธ์๋ฅผ ๋์์ผ๋ก ํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
-mdlmzb
-mno-dlmzb
๋ฌธ์์ด ๊ฒ์์ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํ๋ ์ฝ๋ ์์ฑ dlmzb IBM์ ๋ํ ์ง์
405, 440, 464 ๋ฐ 476 ํ๋ก์ธ์. ์ด ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
ํด๋น ํ๋ก์ธ์๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค.
-mno ๋นํธ ์ ๋ ฌ
-mbit ์ ๋ ฌ
System V.4์ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ๊ตฌ์กฐ์ ๊ฒฐํฉ์ ๊ฐ์ ํ์ง ์์ต๋๋ค.
๋นํธ ํ๋์ ๊ธฐ๋ณธ ์ ํ์ ๋ง์ถฐ ์ ๋ ฌ๋ ๋นํธ ํ๋๋ฅผ ํฌํจํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๊ธฐ๋ณธ์ ์ผ๋ก 8๊ฐ์ "๋ถํธ ์๋" ๋นํธ ํ๋๋ง ํฌํจํ๋ ๊ตฌ์กฐ
๊ธธ์ด 1์ 4๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ๋ ฌ๋๋ฉฐ ํฌ๊ธฐ๋ 4๋ฐ์ดํธ์ ๋๋ค. ์ฌ์ฉํ์ฌ
-mno ๋นํธ ์ ๋ ฌ, ๊ตฌ์กฐ๋ 1๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ๋ ฌ๋๊ณ ํฌ๊ธฐ๋ 1๋ฐ์ดํธ์ ๋๋ค.
-mno-์๊ฒฉํ ์ ๋ ฌ
-mstrict-์ ๋ ฌ
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ์ ๋ ฌ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์ง ์์ต๋๋ค.
์ฐธ์กฐ๋ ์์คํ ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
-m ์ฌ๋ฐฐ์น ๊ฐ๋ฅ
-mno ์ฌ๋ฐฐ์น ๊ฐ๋ฅ
์ ์ ์คํ ํ์ผ์
๋ฐํ์์ ๋ค๋ฅธ ์ฃผ์. ๊ฐ๋จํ ์๋ฒ ๋๋ PowerPC ์์คํ ๋ก๋๋
".got2"์ ์ ์ฒด ๋ด์ฉ๊ณผ ".fixup"์ ๋์ด๋ 4๋ฐ์ดํธ ์์น๋ฅผ ์ฌ๋ฐฐ์นํฉ๋๋ค.
์น์ , ์ด ์ต์ ์ ์ํด ์์ฑ๋ 32๋นํธ ์ฃผ์ ํ ์ด๋ธ. ์ด๊ฒ์ด ์๋ํ๋ ค๋ฉด ๋ชจ๋
ํจ๊ป ์ฐ๊ฒฐ๋ ๊ฐ์ฒด๋ ๋ค์์ผ๋ก ์ปดํ์ผํด์ผ ํฉ๋๋ค. -m ์ฌ๋ฐฐ์น ๊ฐ๋ฅ or -mrelocateable-lib.
-m ์ฌ๋ฐฐ์น ๊ฐ๋ฅ ์ฝ๋๋ ์คํ์ 8๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถฅ๋๋ค.
-mrelocateable-lib
-mno-relocateable-lib
์ฒ๋ผ -m ์ฌ๋ฐฐ์น ๊ฐ๋ฅ, -mrelocateable-lib ์ ์ ์ ํ์ฉํ๋ ".fixup"์น์ ์ ์์ฑํฉ๋๋ค.
์คํ ํ์ผ์ ๋ฐํ์์ ์ฌ๋ฐฐ์น๋์ง๋ง -mrelocateable-lib ์ฌ์ฉํ์ง ์๋๋ค
๋ ์์ ์คํ ์ ๋ ฌ -m ์ฌ๋ฐฐ์น ๊ฐ๋ฅ. ๋ค์์ผ๋ก ์ปดํ์ผ๋ ๊ฐ์ฒด -mrelocateable-lib ๏ผ์
๋ชจ๋ ์กฐํฉ์ผ๋ก ์ปดํ์ผ๋ ๊ฐ์ฒด์ ์ฐ๊ฒฐ -m ์ฌ๋ฐฐ์น ๊ฐ๋ฅ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-mno-toc
-mtoc
System V.4์ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ๋ ์ง์คํฐ 2๊ฐ ๋ค์์ ํฌํจํ๋ค๊ณ ๊ฐ์ ํ์ง ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๋ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ์ ์ญ ์์ญ์ ๋ํ ํฌ์ธํฐ.
-์กฐ๊ธ
-๋ฏธ๋ฆฌํ ์๋์
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ํ๋ก์ธ์์ฉ ์ฝ๋๋ฅผ ์ฝ๊ฐ์ ์ปดํ์ผ
์๋์ ๋ชจ๋. NS -๋ฏธ๋ฆฌํ ์๋์ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -์กฐ๊ธ.
-mbig
-mbig-์๋์
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ํ๋ก์ธ์์ฉ ์ฝ๋๋ฅผ ์ปดํ์ผํฉ๋๋ค.
์๋์ ๋ชจ๋. NS -mbig-์๋์ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -mbig.
-mdynamic-no-pic
Darwin ๋ฐ Mac OS X ์์คํ ์์๋ ์ฌ๋ฐฐ์นํ ์ ์๋๋ก ์ฝ๋๋ฅผ ์ปดํ์ผํ์ง๋ง
์ธ๋ถ ์ฐธ์กฐ๋ ์ฌ๋ฐฐ์น ๊ฐ๋ฅํฉ๋๋ค. ๊ฒฐ๊ณผ ์ฝ๋๋ ๋ค์์ ์ ํฉํฉ๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ด์ง๋ง ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋๋๋ค.
-msingle-pic-base
PIC ์ฃผ์ ์ง์ ์ ์ฌ์ฉ๋๋ ๋ ์ง์คํฐ๋ฅผ ๋ก๋ํ๋ ๋์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ฒ๋ฆฌํ์ญ์์ค.
๊ฐ ๊ธฐ๋ฅ์ ๋ํ ํ๋กค๋ก๊ทธ. ๋ฐํ์ ์์คํ ์ ์ด๊ฒ์ ์ด๊ธฐํํ ์ฑ ์์ด ์์ต๋๋ค.
์คํ์ด ์์๋๊ธฐ ์ ์ ์ ์ ํ ๊ฐ์ผ๋ก ๋ฑ๋กํ์ญ์์ค.
- ์ฐ์ ์์ ์ ํ - inns =์ฐ์
์ด ์ต์ ์ ๋์คํจ์น ์ฌ๋กฏ ์ ํ์ ํ ๋น๋๋ ์ฐ์ ์์๋ฅผ ์ ์ดํฉ๋๋ค.
๋ ๋ฒ์งธ ์ค์ผ์ค๋ง ํจ์ค ๋์ ์ง์. ๋ ผ์ ๊ฑฐ๋ฆฌ ์ฐ์ ๊ฐ์น๋ฅผ ์ทจํ๋ค
0, 1๋ฐ 2 ์๋์ค, ๊ฐ์ฅ ๋๊ฑฐ๋ ๋ ๋ฒ์งธ๋ก ๋์(๊ฐ๊ฐ) ์ฐ์ ์์๋ฅผ ํ ๋น
๋์คํจ์น ์ฌ๋กฏ ์ ํ ์ง์นจ.
-msched-๋น์ฉ์ด ๋ง์ด ๋๋-dep=์์กด ์ ํ
์ด ์ต์ ์ ๋์์์ ๋น์ฉ์ด ๋ง์ด ๋๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ ์ข ์์ฑ์ ์ ์ดํฉ๋๋ค.
๋ช ๋ น ์ค์ผ์ค๋ง. ๋ ผ์ ๊ฑฐ๋ฆฌ ์์กด ์ ํ ๋ค์ ์ค ํ๋๋ฅผ ์ทจํฉ๋๋ค.
๊ฐ :
์๋ ์์กด์ฑ ๋น์ฉ์ด ๋ค์ง ์์ต๋๋ค.
๋ชจ๋ ๋ชจ๋ ์์กด์ฑ์ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค.
true_store_to_load
์์ ์์ ๋ก๋๊น์ง์ ์ง์ ํ ์์กด์ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค.
store_to_load
์ ์ฅ์์์ ๋ก๋๊น์ง์ ๋ชจ๋ ์ข ์์ฑ์ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค.
๋ฒํธ
๋๊ธฐ ์๊ฐ์ด ๋ค์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๋ชจ๋ ์ข ์์ฑ ๋ฒํธ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค.
-minsert-sched-nops=๊ณํ
์ด ์ต์ ์ ๋ ๋ฒ์งธ ์ค์ผ์ค๋ง ์ค์ ์ฌ์ฉ๋๋ NOP ์ฝ์ ๋ฐฉ์์ ์ ์ดํฉ๋๋ค.
ํต๊ณผํ๋ค. ๋ ผ์ ๊ฑฐ๋ฆฌ ๊ณํ ๋ค์ ๊ฐ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๋ NOP๋ฅผ ์ฝ์ ํ์ง ๋ง์ญ์์ค.
์ธ์ฃผ ์ ๋ฐ๋ผ ๋น ๋ฌธ์ ์ฌ๋กฏ์ด ์๋ ๋ชจ๋ ๋์คํจ์น ๊ทธ๋ฃน์ NOP๋ก ์ฑ์ฐ์ญ์์ค.
์ค์ผ์ค๋ฌ์ ๊ทธ๋ฃนํ.
์ฌ๊ทธ๋ฃน_์ ํ
๋น์ฉ์ด ๋ง์ด ๋๋ ์ข ์ ์๋ฐ ์์ค์ ๋ณ๋์ ๊ทธ๋ฃน์ผ๋ก ๊ฐ์ ํ๋ ค๋ฉด NOP๋ฅผ ์ฝ์ ํ์ธ์. ์ ํํ ์ฝ์
์ถ์ ์ ๋ฐ๋ผ ์ ๊ทธ๋ฃน์ ์ฌ๊ด์ ๊ฐ์ ํ๋ ๋ฐ ํ์ํ ๋งํผ์ NOP
ํ๋ก์ธ์ ๊ทธ๋ฃนํ.
๋ฒํธ
๋น์ฉ์ด ๋ง์ด ๋๋ ์ข ์ ์๋ฐ ์์ค์ ๋ณ๋์ ๊ทธ๋ฃน์ผ๋ก ๊ฐ์ ํ๋ ค๋ฉด NOP๋ฅผ ์ฝ์ ํ์ธ์. ๋ผ์ ๋ฃ๋ค ๋ฒํธ
NOP๋ ์ฌ๊ด์ ์ ๊ทธ๋ฃน์ ๊ฐ์ ์ ์ฉํฉ๋๋ค.
-mcall-sysv
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ๋ค์๊ณผ ๊ฐ์ ํธ์ถ ๊ท์น์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์ปดํ์ผํฉ๋๋ค.
System V Application Binary Interface, PowerPC์ 1995๋ XNUMX์ ์ด์ ์ค์
ํ๋ก์ธ์ ๋ณด์ถฉ. ๋ค์์ ์ฌ์ฉํ์ฌ GCC๋ฅผ ๊ตฌ์ฑํ์ง ์๋ ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
powerpc-*-eabiaix.
-mcall-sysv-eabi
-mcall-eabi
๋ ๋ค ์ง์ -mcall-sysv and -๋ฉ์ด๋น ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-mcall-sysv-noeabi
๋ ๋ค ์ง์ -mcall-sysv and -mno-eabi ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-mcall-aixdesc
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ AIX ์ด์ ์ฒด์ ์ฉ ์ฝ๋๋ฅผ ์ปดํ์ผํฉ๋๋ค.
-mcall-๋ฆฌ๋ ์ค
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ Linux ๊ธฐ๋ฐ GNU์ฉ ์ปดํ์ผ ์ฝ๋
์์คํ .
-mcall-freebsd
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ FreeBSD ์ด์์ ์ํ ์ฝ๋ ์ปดํ์ผ
์์คํ .
-mcall-netbsd
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ NetBSD ์ด์์ ์ํ ์ฝ๋ ์ปดํ์ผ
์์คํ .
-mcall-openbsd
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ OpenBSD ์ด์์ ์ํ ์ฝ๋ ์ปดํ์ผ
์์คํ .
-maix-๊ตฌ์กฐ์ฒด-๋ฐํ
๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ ๊ตฌ์กฐ๋ฅผ ๋ฐํํฉ๋๋ค(AIX ABI์์ ์ง์ ํ ๋๋ก).
-msvr4-๊ตฌ์กฐ์ฒด ๋ฐํ
๋ ์ง์คํฐ์์ 8๋ฐ์ดํธ๋ณด๋ค ์์ ๊ตฌ์กฐ๋ฅผ ๋ฐํํฉ๋๋ค(SVR4 ABI์ ์ํด ์ง์ ๋จ).
-๋ง๋น=์๋นํ
ํน์ ํ์ฅ์ผ๋ก ํ์ฌ ABI๋ฅผ ํ์ฅํ๊ฑฐ๋ ๊ทธ๋ฌํ ํ์ฅ์ ์ ๊ฑฐํ์ญ์์ค. ์ ํจํ
๊ฐ์ ์ํฐ๋ฒก, ๋ฌด์ํฐ๋ฒก, spe, ๋ ธ์คํ, ibmlongdouble, ieeelongdouble, ์ํ1,
์ํ2.
-๋ง๋น=์คํ
SPE ABI ํ์ฅ์ผ๋ก ํ์ฌ ABI๋ฅผ ํ์ฅํฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ ABI๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉฐ,
๋์ ํ์ฌ ABI์ SPE ABI ํ์ฅ์ ์ถ๊ฐํฉ๋๋ค.
-๋ง๋น=๋ ธ์คํ
ํ์ฌ ABI์ ๋ํด Book-E SPE ABI ํ์ฅ์ ๋นํ์ฑํํฉ๋๋ค.
-๋ง๋น=ibmlongdouble
IBM ํ์ฅ ์ ๋ฐ๋ long double์ ์ฌ์ฉํ๋๋ก ํ์ฌ ABI๋ฅผ ๋ณ๊ฒฝํ์ญ์์ค. ํ์ํผ์จ์ ๋๋ค
32๋นํธ SYSV ABI ์ต์ .
-mabi=์ด์๋กฑ๋๋ธ
IEEE ํ์ฅ ์ ๋ฐ๋ long double์ ์ฌ์ฉํ๋๋ก ํ์ฌ ABI๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ํ์ํผ์จ์ ๋๋ค
32๋นํธ Linux ABI ์ต์ .
-๋ง๋น=์ํv1
ELFv1 ABI๋ฅผ ์ฌ์ฉํ๋๋ก ํ์ฌ ABI๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ์ด๊ฒ์ ๋น ์๋์์ ๊ธฐ๋ณธ ABI์ ๋๋ค.
PowerPC 64๋นํธ ๋ฆฌ๋ ์ค. ๊ธฐ๋ณธ ABI๋ฅผ ์ฌ์ ์ํ๋ ค๋ฉด ํน๋ณํ ์์คํ ์ง์์ด ํ์ํ๋ฉฐ
๋๋ผ์ด ๋ฐฉ์์ผ๋ก ์คํจํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
-๋ง๋น=์ํv2
ELFv2 ABI๋ฅผ ์ฌ์ฉํ๋๋ก ํ์ฌ ABI๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ์ด๊ฒ์ ์์-
endian PowerPC 64๋นํธ Linux. ๊ธฐ๋ณธ ABI๋ฅผ ์ฌ์ ์ํ๋ ค๋ฉด ํน๋ณํ ์์คํ ์ด ํ์ํฉ๋๋ค.
์ง์ํ๊ณ ๋๋ผ์ด ๋ฐฉ์์ผ๋ก ์คํจํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
-mํ๋กํ ํ์
-mno ํ๋กํ ํ์
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ๋ชจ๋ ํธ์ถ์ ๊ฐ๋ณ ์ธ์๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
๊ธฐ๋ฅ์ด ์ ๋๋ก ํ๋กํ ํ์ ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๋ ๋ช ๋ น์ด๋ฅผ ์ฝ์ ํด์ผ ํฉ๋๋ค.
์กฐ๊ฑด ์ฝ๋ ๋ ์ง์คํฐ์ ๋นํธ 6์ ์ค์ ํ๊ฑฐ๋ ์ง์ฐ๊ธฐ ์ํด ํ๋กํ ํ์ ์ด ์์ฑ๋์ง ์์ ๋ชจ๋ ํธ์ถ ์ ์
(CR) ๋ถ๋ ์์์ ๊ฐ์ด ๋ถ๋ ์์์ ์ผ๋ก ์ ๋ฌ๋๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.
ํจ์๊ฐ ๋ณ์ ์ธ์๋ฅผ ์ทจํ๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ๋ฑ๋กํฉ๋๋ค. ์ ํจ๊ป -mํ๋กํ ํ์ , ํตํ๋ง
ํ๋กํ ํ์ ๋ ๊ฐ๋ณ ์ธ์ ํจ์์ ๋นํธ๋ฅผ ์ค์ ํ๊ฑฐ๋ ์ง์๋๋ค.
-msim
์๋ฒ ๋๋ PowerPC ์์คํ ์์ ์์ ๋ชจ๋์ด ํธ์ถ๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. sim-crt0.o and
ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ libsim.a and libc.a. ์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
powerpc-*-์๋น์ฌ ๊ตฌ์ฑ.
-mmvme
์๋ฒ ๋๋ PowerPC ์์คํ ์์ ์์ ๋ชจ๋์ด ํธ์ถ๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. crt0.o ๊ทธ๋ฆฌ๊ณ
ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ libmvme.a and libc.a.
- ๋ฏธ์น
์๋ฒ ๋๋ PowerPC ์์คํ ์์ ์์ ๋ชจ๋์ด ํธ์ถ๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. crt0.o ๊ทธ๋ฆฌ๊ณ
ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ libads.a and libc.a.
-๊ณจ์์นผ
์๋ฒ ๋๋ PowerPC ์์คํ ์์ ์์ ๋ชจ๋์ด ํธ์ถ๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. crt0.o ๊ทธ๋ฆฌ๊ณ
ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ libyk.a and libc.a.
-mvxworks
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ์ปดํ์ผ ์ค์์ ์ง์ ํ์ญ์์ค.
VxWorks ์์คํ .
-๋ฉค๋ฒ
์๋ฒ ๋๋ PowerPC ์์คํ ์์ ๋ค์์ ์ค์ ํ์ญ์์ค. PPC_EMB ๋ํ๋ด๋ ELF ํ๋๊ทธ ํค๋์ ๋นํธ
๊ทธ ์๋น ํ์ฅ ์ฌ๋ฐฐ์น๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
-๋ฉ์ด๋น
-mno-eabi
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ Embedded
์์คํ ์ ๋ํ ์์ ์ธํธ์ธ EABI(Application Binary Interface)
V.4 ์ฌ์. ์ ํ -๋ฉ์ด๋น ์คํ์ด 8๋ฐ์ดํธ๋ก ์ ๋ ฌ๋์์์ ์๋ฏธํฉ๋๋ค.
๊ฒฝ๊ณ์์ "__eabi" ํจ์๋ "main"์์ ํธ์ถ๋์ด EABI ํ๊ฒฝ์ ์ค์ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ -msdata ์ต์ ์ "r2"์ "r13"์ ๋ชจ๋ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ๊ฐ๋ณ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์์ต๋๋ค.
์ง์ญ. ์ ํ -mno-eabi ์คํ์ด 16๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ๋ ฌ๋์์์ ์๋ฏธํฉ๋๋ค.
EABI ์ด๊ธฐํ ํจ์๋ "main"์์ ํธ์ถ๋๋ฉฐ, -msdata ์ต์ ๋ง ์ฌ์ฉ
"r13"์ ํ๋์ ์์ ๋ฐ์ดํฐ ์์ญ์ ๊ฐ๋ฆฌํต๋๋ค. NS -๋ฉ์ด๋น ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค.
๋ค์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ๋ GCC powerpc*-*-eabi* ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-msdata=์๋น
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ์ด๊ธฐํ๋ ์์ "const" ์ ์ญ ๋ฐ
์ ์ ๋ฐ์ดํฐ .sdata2 ๋ ์ง์คํฐ "r2"๊ฐ ๊ฐ๋ฆฌํค๋ ์น์ . ์๊ฒ ๋ฃ์ด
์ด๊ธฐํ๋ ๋น "const" ์ ์ญ ๋ฐ ์ ์ ๋ฐ์ดํฐ .sdata. ๊ฐ๋ฆฌํค๋ ๋ถ๋ถ
๋ ์ง์คํฐ "r13"์ ์ํด. ์ด๊ธฐํ๋์ง ์์ ์์ ์ ์ญ ๋ฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ .sbss
์์ ์๋ ์น์ , .sdata. ๋ถ๋ถ. NS -msdata=์๋น ์ต์ ์
์ ํธํ๋์ง ์๋ -m ์ฌ๋ฐฐ์น ๊ฐ๋ฅ ์ ํ๊ถ. ๊ทธ๋งํผ -msdata=์๋น ์ต์ ์ ๋ํ
-๋ฉค๋ฒ ์ต์ ์ ์ ํํฉ๋๋ค.
-msdata=sysv
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ์์ ์ ์ญ ๋ฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ
.sdata. ๋ ์ง์คํฐ "r13"์ด ๊ฐ๋ฆฌํค๋ ์น์ . ์์ ์ด๊ธฐํ๋์ง ์์ ์ ์ญ ๋ฃ์ด
๋ฐ ์ ์ ๋ฐ์ดํฐ .sbss ์์ ์๋ ์น์ , .sdata. ๋ถ๋ถ. NS
-msdata=sysv ์ต์ ์ด ํธํ๋์ง ์์ต๋๋ค. -m ์ฌ๋ฐฐ์น ๊ฐ๋ฅ ์ต์ ์ ์ ํํฉ๋๋ค.
-msdata=๊ธฐ๋ณธ๊ฐ
-msdata
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ -๋ฉ์ด๋น ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ฝ๋๋ฅผ ๋์ผํ๊ฒ ์ปดํ์ผ
as -msdata=์๋น, ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ์ปดํ์ผํฉ๋๋ค. -msdata=sysv.
-msdata=๋ฐ์ดํฐ
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ์์ ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ๋ฅผ .sdata.
๋ถ๋ถ. ์ด๊ธฐํ๋์ง ์์ ์์ ์ ์ญ ๋ฐ์ดํฐ๋ฅผ .sbss ๋ถ๋ถ. ์ฌ์ฉํ์ง ๋ง์ธ์
๊ทธ๋ฌ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด "r13"์ ๋ฑ๋กํ์ญ์์ค. ๋ค์์ด ์๋๋ฉด ๊ธฐ๋ณธ ๋์์ ๋๋ค.
other -msdata ์ต์ ์ด ์ฌ์ฉ๋ฉ๋๋ค.
-msdata=์์
-mno-sdata
์๋ฒ ๋๋ PowerPC ์์คํ ์์ ์ด๊ธฐํ๋ ๋ชจ๋ ์ ์ญ ๋ฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ .data
์น์ ๋ฐ ์ด๊ธฐํ๋์ง ์์ ๋ชจ๋ ๋ฐ์ดํฐ .bss ์๋ด
-mblock-์ด๋-์ธ๋ผ์ธ-์ ํ=NUM
๋ชจ๋ ๋ธ๋ก ์ด๋(์: "memcpy" ๋๋ ๊ตฌ์กฐ ๋ณต์ฌ๋ณธ ํธ์ถ)์ ์ธ๋ผ์ธํ๊ฑฐ๋
๋์ผ NUM ๋ฐ์ดํธ. ์ ๋ํ ์ต์๊ฐ NUM 32๋นํธ ๋์์์๋ 32๋ฐ์ดํธ์ด๊ณ 64๋นํธ์์๋
64๋นํธ ๋์์์ ๋ฐ์ดํธ. ๊ธฐ๋ณธ๊ฐ์ ๋์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
-G NUM
์๋ฒ ๋๋ PowerPC ์์คํ ์์ ์ ์ญ ๋ฐ ์ ์ ํญ๋ชฉ์ ๋ค์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ NUM
์ผ๋ฐ ๋ฐ์ดํฐ ๋๋ BSS ์น์ ๋์ ์์ ๋ฐ์ดํฐ ๋๋ BSS ์น์ ์ ๋ฐ์ดํธ๋ฅผ ๋ฃ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก, NUM 8์ ๋๋ค. -G NUM ์ค์์น๋ ๋ง์ปค๋ก ์ ๋ฌ๋ฉ๋๋ค. ๋ชจ๋ ๋ชจ๋
๊ฐ์ ๊ฒ์ผ๋ก ์ปดํ์ผํด์ผํฉ๋๋ค -G NUM ๊ฐ.
-mregnames
-mno-regnames
System V.4 ๋ฐ ์๋ฒ ๋๋ PowerPC ์์คํ ์์ ๋ ์ง์คํฐ ์ด๋ฆ์ ๋ด๋ณด๋ด์ง ์์ต๋๋ค.
๊ธฐํธ ํ์์ ์ฌ์ฉํ ์ด์ ๋ธ๋ฆฌ ์ธ์ด ์ถ๋ ฅ
-mlongcall
-mno-longcall
๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ํธ์ถ์ด ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๋ค๊ณ ๊ฐ์ ํ์ฌ ๋ ๊ธธ๊ณ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค.
ํธ์ถ ์์๊ฐ ํ์ํฉ๋๋ค. 32MB ์ด์์ ํตํ์ ํ์ํฉ๋๋ค.
(33,554,432๋ฐ์ดํธ) ํ์ฌ ์์น์์. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์งง์ ํตํ๊ฐ ์์ฑ๋ฉ๋๋ค.
์ปดํ์ผ๋ฌ๋ ํธ์ถ์ด ๊ทธ๋ ๊ฒ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์์ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ์ด ์ค์ ์ ๋ค์์ผ๋ก ์ฌ์ ์ํ ์ ์์ต๋๋ค.
"๋จ๊ธฐ ํธ์ถ" ๊ธฐ๋ฅ ์์ฑ ๋๋ "#pragma" ๋กฑ์ฝ(0)".
์ผ๋ถ ๋ง์ปค๋ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ํธ์ถ์ ๊ฐ์งํ๊ณ ๊ธ๋ฃจ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
ํ๋ฆฌ. ์ด๋ฌํ ์์คํ ์์๋ ๊ธด ํธ์ถ์ด ํ์ํ์ง ์์ผ๋ฉฐ ๋ ๋๋ฆฐ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ฐ์ด
์ด ๊ธ์์ AIX ๋ง์ปค๋ PowerPC/64์ฉ GNU ๋ง์ปค์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ
32๋นํธ PowerPC ์์คํ ์ฉ GNU ๋ง์ปค์๋ ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๊ณํ์ ๋๋ค.
Darwin/PPC ์์คํ ์์ "#pragma longcall"์ "jbsr callee, L42"๋ฅผ ์์ฑํ๊ณ ์ง์ฌ
์ฌ (์ ์ฐฉ ์ฝ๋). ๋ ๊ฐ์ ๋์ ์ฃผ์๋ ์์ ์์ ๋ถ๊ธฐ๋ฅผ ๋ํ๋ ๋๋ค.
์ฌ. Darwin/PPC ๋ง์ปค๋ ์ฒซ ๋ฒ์งธ ์ฃผ์๋ฅผ ์ ํธํ๊ณ "bl callee"๋ฅผ ์์ฑํฉ๋๋ค.
PPC "bl" ๋ช ๋ น์ด ์์ ์์๊ฒ ์ง์ ๋๋ฌํ๋ ๊ฒฝ์ฐ; ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ง์ปค
๋ธ๋์น ์์ผ๋๋๋ฅผ ํธ์ถํ๊ธฐ ์ํด "bl L42"๋ฅผ ์์ฑํฉ๋๋ค. ๋ธ๋์น ์์ผ๋๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
ํธ์ถ ํจ์์ ๋ณธ์ฒด; ํธ์ถ ์์ ์์ ์ ์ฒด 32๋นํธ ์ฃผ์๋ฅผ ๊ณ์ฐํ๊ณ
๊ทธ๊ฒ์ ์ ํ.
Mach-O(Darwin) ์์คํ ์์ ์ด ์ต์ ์ ์ปดํ์ผ๋ฌ๊ฐ ๊ธ๋ฃจ๋ก ๋ฐฉ์ถํ๋๋ก ์ง์ํฉ๋๋ค.
๋ชจ๋ ์ง์ ํธ์ถ, ๊ทธ๋ฆฌ๊ณ Darwin ๋ง์ปค๋ ์ด๋ฅผ ์ฌ์ฉํ ์ง ๋ฒ๋ฆด์ง ๊ฒฐ์ ํฉ๋๋ค.
์์ผ๋ก GCC๋ ๋ง์ปค๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์๋ ค์ง ๊ฒฝ์ฐ ๋ชจ๋ longcall ์ฌ์์ ๋ฌด์ํ ์ ์์ต๋๋ค
์ ์ฐฉ์ ๋ฅผ ์์ฑํฉ๋๋ค.
-mtls-๋ง์ปค
-mno-tls-๋ง์ปค
๊ธฐ๋ฅ์ ์ง์ ํ๋ ์ฌ๋ฐฐ์น๋ก "__tls_get_addr"์ ๋ํ ํธ์ถ์ ํ์(ํ์ํ์ง ์์)
๋ ผ์. ์ฌ๋ฐฐ์น๋ ๋ง์ปค๊ฐ ํจ์ ํธ์ถ์ ๋ค์๊ณผ ์์ ์ ์ผ๋ก ์ฐ๊ฒฐํ ์ ์๋๋ก ํฉ๋๋ค.
TLS ์ต์ ํ๋ฅผ ์ํ ์ธ์ ์ค์ ์ง์นจ์ ํตํด GCC๊ฐ ๋ ๋์
์์๋ฅผ ์์ฝํฉ๋๋ค.
-pthread
๋ฉํฐ์ค๋ ๋ฉ ์ง์ ์ถ๊ฐ pthread ๋์๊ด. ์ด ์ต์ ์ ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ์ ๋ง์ปค ๋ชจ๋.
-mrecip
-mno-recipe
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ญ ์ถ์ ๋ฐ ์ญ ์ ๊ณฑ๊ทผ ์ถ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋์ ์ ๋ฐ๋๋ฅผ ๋์ด๊ธฐ ์ํด ์ถ๊ฐ Newton-Raphson ๋จ๊ณ๊ฐ ํฌํจ๋ ์ง์นจ
๋ถ๋ ์์์ ์ธ์์ ๋ํด ๋๋๊ธฐ ๋๋ ์ ๊ณฑ๊ทผ ๋ฐ ๋๋๊ธฐ๋ฅผ ์ํํฉ๋๋ค. ๋น์ ์ ์ฌ์ฉํด์ผํฉ๋๋ค
์ ์, -๋น ๋ฅธ ์ํ ์ฌ์ฉ์ ์ต์ -mrecip (์๋๋ฉด ์ ์ด๋ -์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ,
- ์ ํ ์ํ ์ ์ฉ, - ๋ถ์ ์ํ and -fno ํธ๋ํ ์ํ). ๋์ ์ฐธ๊ณ
์ํ์ค์ ์ฒ๋ฆฌ๋์ ์ผ๋ฐ์ ์ผ๋ก ๋น ์ฒ๋ฆฌ๋์ ์ฒ๋ฆฌ๋๋ณด๋ค ๋์ต๋๋ค.
์ํธ ๋ช ๋ น, ์ํ์ค์ ์ ๋ฐ๋๋ ์ต๋ 2ulp๊น์ง ๊ฐ์๋ ์ ์์ต๋๋ค.
(์ฆ, 1.0์ ์ญ์๋ 0.99999994์ ๊ฐ์) ์ญ์ ๊ณฑ๊ทผ์ ๊ฒฝ์ฐ.
-mrecip=๊ณ ๋ฅด๋ค
์ด ์ต์ ์ ์ฌ์ฉํ ์ ์๋ ์ํธ ์ถ์ ์ง์นจ์ ์ ์ดํฉ๋๋ค. ๊ณ ๋ฅด๋ค ํ๋
"!"๊ฐ ์์ ์ฌ ์ ์๋ ์ผํ๋ก ๊ตฌ๋ถ๋ ์ต์ ๋ชฉ๋ก ์ต์ ์ ๋ฐ์ ์ํค๋ ค๋ฉด:
"all": ๋ชจ๋ ์ถ์ ๋ช ๋ น์ด ํ์ฑํ, "default": ๊ธฐ๋ณธ ๋ช ๋ น์ด ํ์ฑํ,
์ ํด๋น -mrecip, "์์": ๋ชจ๋ ์ถ์ ๋ช ๋ น์ ๋นํ์ฑํํฉ๋๋ค.
-mno-recipe; "div": ๋จ์ผ
๋ฐ ๋ฐฐ์ ๋ฐ๋; "divf": ๋จ์ ๋ฐ๋ ์ญ์ ๊ทผ์ฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
์ง์นจ; "divd": ๋ฐฐ์ ๋ ์ญ์ ๊ทผ์ฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
์ง์นจ; "rsqrt": ์ญ ์ ๊ณฑ๊ทผ ๊ทผ์ฌ ๋ช ๋ น์ด๋ฅผ ํ์ฑํํฉ๋๋ค.
๋จ์ ๋ฐ๋ ๋ฐ ๋ฐฐ์ ๋ฐ๋ ๋ชจ๋์ ๋ํด; "rsqrtf": ๋จ์ ๋ฐ๋ ์ญ์ ํ์ฑํ
์ ๊ณฑ๊ทผ ๊ทผ์ฌํ ์ง์นจ; "rsqrtd": ๋ฐฐ์ ๋ฐ๋ ํ์ฑํ
์ญ ์ ๊ณฑ๊ทผ ๊ทผ์ฌ ๋ช ๋ น์ด;
์๋ฅผ ๋ค์ด -mrecip=๋ชจ๋,!rsqrtd ๋ชจ๋ ์ํธ ์ถ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
"FRSQRTE", "XSRSQRTEDP" ๋ฐ "XVRSQRTEDP" ๋ช ๋ น์ด ์ ์ธ
๋ฐฐ์ ๋ฐ๋ ์ญ ์ ๊ณฑ๊ทผ ๊ณ์ฐ์ ์ฒ๋ฆฌํฉ๋๋ค.
-mrecip-์ ๋ฐ๋
-mno-precision.
์ํธ ์ถ์ ์ง์นจ์ด ๋ ๋์ ๊ฐ์ ์ ๊ณตํ๋ค๊ณ ๊ฐ์ (๊ฐ์ ํ์ง ์์)
PowerPC ABI์์ ์๊ตฌํ๋ ๊ฒ๋ณด๋ค ์ ํํ ์ถ์ ์น. ์ ํ -mcpu=ํ์6,
-mcpu=ํ์7 or -mcpu=ํ์8 ์๋์ผ๋ก ์ ํ -mrecip-์ ๋ฐ๋. ๋๋ฐฐ-
์ ๋ฐ๋ ์ ๊ณฑ๊ทผ ์ถ์ ๋ช ๋ น์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฎ์ ๊ฐ์์ ์์ฑ๋์ง ์์ต๋๋ค.
์ ๋ฐ ๊ธฐ๊ณ๋ XNUMX ํ์ ์๋ ดํ๋ ์ถ์ ์น๋ฅผ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์
๋จ๊ณ.
-mveclibabi=์ ํ
์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ด์ฅ ํจ์๋ฅผ ๋ฒกํฐํํ๋ ๋ฐ ์ฌ์ฉํ ABI ์ ํ์ ์ง์ ํฉ๋๋ค.
ํ์ฌ ์ง์๋๋ ์ ์ผํ ์ ํ์ IBM์
๋ค์์ ์ฌ์ฉํ์ฌ ๋ด์ฅ ํจ์๋ฅผ ๋ฒกํฐํํ๊ธฐ ์ํ MASS(์ํ์ ๊ฐ์ ํ์ ์์คํ ) ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. GCC๋ ํ์ฌ "acosd2", "acosf4", "acoshd2",
"acoshf4", "asind2", "asinf4", "asinhd2", "asinhf4", "atan2d2", "atan2f4", "atand2",
"atanf4", "atanhd2", "atanhf4", "cbrtd2", "cbrtf4", "cosd2", "cosf4", "coshd2",
"coshf4", "erfcd2", "erfcf4", "erfd2", "erff4", "exp2d2", "exp2f4", "expd2", "expf4",
"expm1d2", "expm1f4", "hypotd2", "hypotf4", "lgammad2", "lgammaf4", "log10d2",
"log10f4", "log1pd2", "log1pf4", "log2d2", "log2f4", "logd2", "logf4", "powd2",
"powf4", "sind2", "sinf4", "sinhd2", "sinhf4", "sqrtd2", "sqrtf4", "tand2", "tanf4",
power2์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํ ๋ "tanhd4" ๋ฐ "tanhf7". ๋ ๋ค -ftree ๋ฒกํฐํ and
-์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ ๋ ํ์ฑํํด์ผ ํฉ๋๋ค. MASS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
๋งํฌ ์๊ฐ์ ์ง์ ๋ฉ๋๋ค.
-mfriz
-mno-friz
"friz" ๋ช ๋ น์ด๋ฅผ ์์ฑ(์์ฑํ์ง ์์)ํ ๋ -์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ
์ต์ ์ ๋ถ๋ ์์์ ๊ฐ์ ๋ฐ์ฌ๋ฆผ์ 64๋นํธ ์ ์๋ก ์ต์ ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ
๋ถ๋ ์์์ ์ผ๋ก ๋์๊ฐ๋๋ค. "friz" ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋์ผํ ๊ฐ์ ๋ฐํํ์ง ์์ต๋๋ค.
๋ถ๋ ์์์ ์ซ์๊ฐ ๋๋ฌด ์ปค์ ์ ์์ ๋ง์ง ์์ต๋๋ค.
-์ค์ฒฉ ํจ์์ ๋ํ mpointers
-์ค์ฒฉ ํจ์์ ๋ํ mno ํฌ์ธํฐ
์ ์ ์ฒด์ธ ๋ ์ง์คํฐ(r11) ์ธ์
ํจ์ ํฌ์ธํฐ๊ฐ ์๋ AIX ๋ฐ 64๋นํธ Linux ์์คํ ์์ ํฌ์ธํฐ๋ฅผ ํตํด ํธ์ถ
ํจ์ ์ฃผ์, ๋ก๋ํ TOC ๊ฐ์ ์ ๊ณตํ๋ 3์๋ ๋์คํฌ๋ฆฝํฐ๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
ํ์๊ฐ์ r2, ๋ ์ง์คํฐ์ ๋ก๋ํ ์ ์ ์ฒด์ธ ๊ฐ r11. ๊ทธ๋งํผ
-์ค์ฒฉ ํจ์์ ๋ํ mpointers ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค. ํฌ์ธํฐ๋ฅผ ํตํด ํธ์ถํ ์ ์์ต๋๋ค.
์ค์ฒฉ๋ ํจ์ ๋๋ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์ธ์ด๋ก ์ปดํ์ผ๋ ํจ์์ ๋ํ ํฌ์ธํฐ
์ ์ ์ฒด์ธ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ -์ค์ฒฉ ํจ์์ ๋ํ mno ํฌ์ธํฐ.
-msave-toc-๊ฐ์
-mno-save-toc-๊ฐ์
์์ฝ๋ ์คํ ์์น์ TOC ๊ฐ์ ์ ์ฅํ๋ ์ฝ๋ ์์ฑ(์์ฑํ์ง ์์)
ํจ์๊ฐ AIX ๋ฐ 64๋นํธ์ ํฌ์ธํฐ๋ฅผ ํตํด ํธ์ถํ๋ ๊ฒฝ์ฐ ํจ์ ํ๋กค๋ก๊ทธ์์
๋ฆฌ๋ ์ค ์์คํ . TOC ๊ฐ์ด ํ๋กค๋ก๊ทธ์ ์ ์ฅ๋์ง ์์ ๊ฒฝ์ฐ ์ง์ ์ ์ ์ฅ๋ฉ๋๋ค.
ํฌ์ธํฐ๋ฅผ ํตํ ํธ์ถ NS -mno-save-toc-๊ฐ์ ์ต์ ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mcompat-์ ๋ ฌ-parm
-mno-compat-align-parm
์ต๋ ์ ๋ ฌ๋ก ๊ตฌ์กฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ๋ ์ฝ๋ ์์ฑ(์์ฑํ์ง ์์)
์ด์ ๋ฒ์ ์ GCC์์ ํธํ์ฑ์ ์ํด 64๋นํธ์ ๋๋ค.
์ด์ ๋ฒ์ ์ GCC(4.9.0 ์ด์ )๋ ๊ตฌ์กฐ ๋งค๊ฐ๋ณ์๋ฅผ ์๋ชป ์ ๋ ฌํ์ง ์์์ต๋๋ค.
ํด๋น ๊ตฌ์กฐ์ 128๋นํธ๊ฐ ํ์ํ ๋ฉค๋ฒ๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ 128๋นํธ ๊ฒฝ๊ณ์์
์กฐ์ . ์ด๊ฒ์ ์ต์ ๋ฒ์ ์ GCC์์ ์์ ๋์์ต๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค
์ ์ด์ ๋ฒ์ ์ผ๋ก ์ปดํ์ผ๋ ํจ์์ ํธํ๋๋ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด
gcc.
์ด ๋ฒ์ ์ ์ปดํ์ผ๋ฌ์์๋ -mcompat-์ ๋ ฌ-parm ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
Linux ELFv2 ABI๋ฅผ ์ฌ์ฉํฉ๋๋ค.
RX ์ต์
๋ค์ ๋ช ๋ น์ค ์ต์ ์ RX ๋์์ ๋ํด ์ ์๋ฉ๋๋ค.
-m64bit-๋๋ธ
-m32bit-๋๋ธ
"์ด์ค" ๋ฐ์ดํฐ ์ ํ์ 64๋นํธ(-m64bit-๋๋ธ) ๋๋ 32๋นํธ(-m32bit-๋๋ธ)
ํฌ๊ธฐ์. ๊ธฐ๋ณธ๊ฐ์ -m32bit-๋๋ธ. ์ฃผ์ ์ฌํญ RX ๋ถ๋ ์์์ ํ๋์จ์ด๋ง ์๋
32๋นํธ ๊ฐ์์ ๊ธฐ๋ณธ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -m32bit-๋๋ธ.
-fpu
-๋ ธํธ
ํ์ฑํ(-fpu) ๋๋ ๋นํ์ฑํ(-๋ ธํธ) RX ๋ถ๋ ์์์ ํ๋์จ์ด ์ฌ์ฉ. NS
์ ๋ํด ๊ธฐ๋ณธ๊ฐ์ด ํ์ฑํ๋์ด ์์ต๋๋ค. RX600 ์๋ฆฌ์ฆ ๋ฐ ๋นํ์ฑํ RX200 ์๋ฆฌ์ฆ.
๋ถ๋ ์์์ ๋ช ๋ น์ด๋ 32๋นํธ ๋ถ๋ ์์์ ๊ฐ์ ๋ํด์๋ง ์์ฑ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ FPU ํ๋์จ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ณต์์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. -m64bit-๋๋ธ ์ต์ ์
์ต์ํ.
์ฃผ์ ์ฌํญ ๊ฒฝ์ฐ -fpu ์ต์ ์ด ํ์ฑํ๋๋ฉด -์ฌ๋ฏธ์๋ ์ํ ์ต์ ํ ๋ ํ์ฑํ๋ฉ๋๋ค
์๋์ผ๋ก. RX FPU ๋ช ๋ น์ด ์์ฒด๊ฐ ์์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
-mcpu =name
๋์์ผ๋ก ํ RX CPU ์ ํ์ ์ ํํฉ๋๋ค. ํ์ฌ ์ธ ๊ฐ์ง ์ ํ์ด ์ง์๋๋ฉฐ,
์ผ๋ฐ์ ์ธ RX600 and RX200 ์๋ฆฌ์ฆ ํ๋์จ์ด ๋ฐ ํน์ RX610 CPU. ๊ธฐ๋ณธ๊ฐ์
RX600.
์ ์ผํ ์ฐจ์ด์ ์ RX600 and RX610 ๋๋ถ ํ์ค์ ๊ฐ์ผ ๋ฅด RX610 ์ง์ํ์ง ์์ต๋๋ค
"MVTIPL" ๋ช ๋ น.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ RX200 ์๋ฆฌ์ฆ์๋ ํ๋์จ์ด ๋ถ๋ ์์์ ๋จ์๊ฐ ์์ผ๋ฏ๋ก -๋ ธํธ ์ฌ์ฉ ๊ฐ๋ฅ
์ด ์ ํ์ ์ ํํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก
-mbig-endian-๋ฐ์ดํฐ
-mlittle-endian-๋ฐ์ดํฐ
๋น ์๋์ ํ์์ผ๋ก ๋ฐ์ดํฐ(์ฝ๋ ์ ์ธ)๋ฅผ ์ ์ฅํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
-mlittle-endian-๋ฐ์ดํฐ, ์ฆ, ๋ฆฌํ ์๋์ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
-m์์ ๋ฐ์ดํฐ ์ ํ=N
๋ฐฐ์นํ ์ ์๋ ์ ์ญ ๋ฐ ์ ์ ๋ณ์์ ์ต๋ ํฌ๊ธฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ง์ ํฉ๋๋ค.
์์ ๋ฐ์ดํฐ ์์ญ์ผ๋ก ์์ ๋ฐ์ดํฐ ์์ญ์ ์ฌ์ฉํ๋ฉด ๋ ์๊ณ ๋นจ๋ผ์ง ์ ์์ต๋๋ค.
์ฝ๋์ด์ง๋ง ์์ญ์ ํฌ๊ธฐ๋ ์ ํ๋์ด ์์ผ๋ฉฐ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ด๋ฅผ ํ์ธํ๋ ๊ฒ์
์์ญ์ด ๋์น์ง ์์ต๋๋ค. ๋ํ ์์ ๋ฐ์ดํฐ ์์ญ์ด RX ์ค ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๋ ์ง์คํฐ(๋ณดํต "r13")๋ ์ด ์์ญ์ ๊ฐ๋ฆฌํค๋ ์ฉ๋๋ก ์์ฝ๋์ด ์์ผ๋ฏ๋ก
์ปดํ์ผ๋ฌ์์ ๋ ์ค๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ์๋๊ฐ ๋๋ ค์ง๊ฑฐ๋ ์ปค์ง ์ ์์ต๋๋ค.
๋ณ์๊ฐ ์ด ๋ ์ง์คํฐ์ ์ ์ง๋๋ ๋์ ์คํ์ ํธ์๋๋ ๊ฒฝ์ฐ ์ฝ๋์ ๋๋ค.
๊ณตํต ๋ณ์(์ด๊ธฐํ๋์ง ์์ ๋ณ์)์ ์์๋
๋ค๋ฅธ ์น์ ์ ํ ๋น๋๋ฏ๋ก ์์ ๋ฐ์ดํฐ ์์ญ์ ๋ฐฐ์น๋์ง ์์ต๋๋ค.
์ถ๋ ฅ ์คํ ๊ฐ๋ฅ.
๊ธฐ๋ณธ๊ฐ์ ์ด ๊ธฐ๋ฅ์ ๋นํ์ฑํํ๋ XNUMX์ ๋๋ค. ์ฐธ๊ณ ๋ก ์ด ๊ธฐ๋ฅ์
๋ ๋์ ์ต์ ํ ์์ค์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ(-O2 ๋ฑ) ๋๋ฌธ์
๋ ์ง์คํฐ ์์ฝ์ ์ ์ฌ์ ์ผ๋ก ํด๋ก์ด ์ํฅ. ๊ทธ๊ฒ์ ํ๋ก๊ทธ๋๋จธ์๊ฒ ๋ฌ๋ ค์๋ค.
์ด ๊ธฐ๋ฅ์ด ํ๋ก๊ทธ๋จ์ ์ ์ฉํ์ง ์ฌ๋ถ๋ฅผ ์คํํ๊ณ ๋ฐ๊ฒฌํฉ๋๋ค. ๋ณด๋ค
์ ๋ํ ์ค๋ช -mpid ์ค์ ๋ฑ๋ก ๋ฐฉ๋ฒ์ ๋ํ ์ค๋ช ์ ์ํ ์ต์
์์ ๋ฐ์ดํฐ ์์ญ ํฌ์ธํฐ๊ฐ ์ ํ๋ ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
-msim
-mno-sim
์๋ฎฌ๋ ์ดํฐ ๋ฐํ์์ ์ฌ์ฉํ์ญ์์ค. ๊ธฐ๋ณธ๊ฐ์ libgloss ๋ณด๋๋ณ ๋ฐํ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
-mas100-๊ตฌ๋ฌธ
-mno-as100-๊ตฌ๋ฌธ
์ด์ ๋ธ๋ฌ ์ถ๋ ฅ์ ์์ฑํ ๋ Renesas์ AS100๊ณผ ํธํ๋๋ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ญ์์ค.
์ด์ ๋ธ๋ฌ. ์ด ๊ตฌ๋ฌธ์ GAS ์ด์ ๋ธ๋ฌ์์๋ ์ฒ๋ฆฌํ ์ ์์ง๋ง ์ผ๋ถ
๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋์ง ์๋๋ก ์ ํํฉ๋๋ค.
-mmax-์ผ์ ํฌ๊ธฐ=N
์์ ํผ์ฐ์ฐ์๋ก ์ฌ์ฉํ ์ ์๋ ์์์ ์ต๋ ํฌ๊ธฐ(๋ฐ์ดํธ)๋ฅผ ์ง์ ํฉ๋๋ค.
RX ๋ช ๋ น. RX ๋ช ๋ น์ด ์ธํธ๋ ์ต๋ 4์ ์์๋ฅผ ํ์ฉํ์ง๋ง
๋ช ๋ น์ด์์ ์ฌ์ฉํ ๊ธธ์ด์ ๋ฐ์ดํธ, ๋ ๊ธด ๊ฐ์ ๋ ๊ธด ๊ฒ๊ณผ ๋์ผํฉ๋๋ค.
์ง์นจ. ๋ฐ๋ผ์ ์ด๋ค ์ํฉ์์๋ ํฌ๊ธฐ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ ๋ฆฌํ ์ ์์ต๋๋ค.
๋ช ๋ น์ด์ ์ฌ์ฉ๋๋ ์์. ๋๋ฌด ํฐ ์์๋ ๋์
์์ ํ์ ๋ฐฐ์น๋๊ณ ๋ ์ง์คํฐ ๊ฐ์ ์ฐธ์กฐ๋ฅผ ํตํด ์ฐธ์กฐ๋ฉ๋๋ค.
๊ฐ์น N 0๊ณผ 4 ์ฌ์ด์ผ ์ ์์ต๋๋ค. 0(๊ธฐ๋ณธ๊ฐ) ๋๋ 4 ๊ฐ์ ๋ค์์ ์๋ฏธํฉ๋๋ค.
๋ชจ๋ ํฌ๊ธฐ์ ์์๊ฐ ํ์ฉ๋ฉ๋๋ค.
-mrelax
๋ง์ปค ์ด์์ ํ์ฑํํฉ๋๋ค. ๋ง์ปค ์ด์์ ๋ง์ปค๊ฐ
๋ค์ํ ๋ช ๋ น์ด์ ๋ ์งง์ ๋ฒ์ ์ ์ฐพ์ ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๊ฒ.
๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ๋์ด ์์ต๋๋ค.
-๋ฏผํธ ๋ ์ง์คํฐ=N
๊ณ ์ ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ๊ธฐ ๊ธฐ๋ฅ์ ์ํด ์์ฝํ ๋ ์ง์คํฐ ์๋ฅผ ์ง์ ํฉ๋๋ค. NS
๊ฐ์น N 0๊ณผ 4 ์ฌ์ด์ผ ์ ์์ต๋๋ค. ๊ฐ์ด 1์ด๋ฉด ๋ ์ง์คํฐ "r13"์ด ์์ฝ๋์ด ์์์ ์๋ฏธํฉ๋๋ค.
๊ณ ์ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ์ ์ฉ. 2์ ๊ฐ์ "r13"์ ์์ฝํ๊ณ
"r12". ๊ฐ 3์ "r13", "r12" ๋ฐ "r11"์ ์์ฝํ๊ณ ๊ฐ 4๋ "r13"์ ์์ฝํฉ๋๋ค.
"r10"์ ํตํด. ๊ธฐ๋ณธ๊ฐ์ธ 0 ๊ฐ์ ๋ ์ง์คํฐ๋ฅผ ์์ฝํ์ง ์์ต๋๋ค.
-msave-ACC -์ - ์ธํฐ๋ฝํธ
์ธํฐ๋ฝํธ ์ฒ๋ฆฌ๊ธฐ ๊ธฐ๋ฅ์ด ๋์ฐ๊ธฐ ๋ ์ง์คํฐ๋ฅผ ๋ณด์กดํด์ผ ํจ์ ์ง์ ํฉ๋๋ค.
์ด๊ฒ์ ์ผ๋ฐ ์ฝ๋๊ฐ ๋์ฐ๊ธฐ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ์๋ง ํ์ํฉ๋๋ค.
64๋นํธ ๊ณฑ์ ์ ์ํํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ๋์ฐ๊ธฐ๋ฅผ ๋ฌด์ํ๋ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋๋ค.
-mpid
-mno-pid
์์น ๋ ๋ฆฝ ๋ฐ์ดํฐ์ ์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋ชจ๋ ์ก์ธ์ค๊ฐ ํ์ฑํ๋๋ฉด
์์ ๋ฐ์ดํฐ๋ ๋ ์ง์คํฐ์ ์๋ ๊ธฐ๋ณธ ์ฃผ์์ ์คํ์ ์ ํตํด ์ํ๋ฉ๋๋ค. ์ด๊ฒ
ํ์ ์์ด ๋ฐํ์์ ์์ ๋ฐ์ดํฐ์ ์์น๋ฅผ โโ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
์คํ ํ์ผ์ ์ฌ๋ฐฐ์นํ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ธด๋ฐํ
๋ฉ๋ชจ๋ฆฌ ์ ์ฝ. ์์ ํ ์ ์๋ ๋ฐ์ดํฐ๋ ์ด ์ต์ ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์์ ๋ฐ์ดํฐ์ ๋ํด ๋ ์ง์คํฐ(๋ณดํต "r13")๋ฅผ ์์ฝํฉ๋๋ค.
๊ธฐ๋ณธ ์ฃผ์. ์ด๊ฒ์ ํนํ ๋ณต์กํ ์ฝ๋์์ ๋ ๋๋ฆฌ๊ฑฐ๋ ๋ ํฐ ์ฝ๋๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ.
์ผ์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฃผ์๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ ํ๋ ์ค์ ๋ ์ง์คํฐ๋ ๋ค์ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ ์, -m์์ ๋ฐ์ดํฐ ์ ํ ๋ฐ / ๋๋ -๋ฏผํธ ๋ ์ง์คํฐ ๋ช ๋ น์ค ์ต์ ์ด ํ์ฑํ๋ฉ๋๋ค.
๋ ์ง์คํฐ "r13"๋ถํฐ ์์ํ์ฌ ์๋์ชฝ์ผ๋ก ์งํํ๋ฉด ๋ ์ง์คํฐ๊ฐ ๋จผ์ ํ ๋น๋ฉ๋๋ค.
์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด -๋ฏผํธ ๋ ์ง์คํฐ๋ค์, -mpid ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก
-m์์ ๋ฐ์ดํฐ ์ ํ. ๋ฐ๋ผ์ ์์ ๋ฐ์ดํฐ ์์ญ ๋ ์ง์คํฐ๋ "r8"์ด ๋ ์ ์์ต๋๋ค.
๋ ๋ค -๋ฏผํธ ๋ ์ง์คํฐ=4 and -mpid ๋ช ๋ น์ค์ ์ง์ ๋ฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๊ธฐ๋ฅ์ ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ๋ค์์ ํตํด ๋ณต์ํ ์ ์์ต๋๋ค. -mno-pid
๋ช ๋ น์ค ์ต์ .
-mno-warn-๋ค์ค ๊ณ ์-์ธํฐ๋ฝํธ
-mwarn-๋ค์ค ๊ณ ์ ์ธํฐ๋ฝํธ
ํ๋ ์ด์์ ๋น ๋ฅธ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด GCC๊ฐ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๋ฐํํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
ํ์ผ์ ์ปดํ์ผํ ๋ ํธ๋ค๋ฌ. ๊ธฐ๋ณธ๊ฐ์ ๊ฐ ์ถ๊ฐ ํญ๋ชฉ์ ๋ํด ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํ๋ ๊ฒ์ ๋๋ค.
RX๋ ์ด๋ฌํ ์ธํฐ๋ฝํธ๋ฅผ ํ๋๋ง ์ง์ํ๋ฏ๋ก ๋น ๋ฅธ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ๋ฅผ ์ฐพ์์ต๋๋ค.
์ฐธ๊ณ : ์ผ๋ฐ GCC ๋ช ๋ น์ค โโ์ต์ -๊ณ ์ -๋ฑ๋ก ๋ฒํธ RX์ ํน๋ณํ ์๋ฏธ๊ฐ ์์ต๋๋ค.
"์ธํฐ๋ฝํธ" ๊ธฐ๋ฅ ์์ฑ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ํฌํธ์ ๋๋ค. ์ด ์์ฑ์ ๋ค์์ ๋ํ๋ ๋๋ค.
๋น ๋ฅธ ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ๋๋ค. GCC๋ ๋ ์ง์คํฐ๋ง ์ฌ์ฉํ๋๋ก ํฉ๋๋ค.
"r10", "r11", "r12" ๋ฐ/๋๋ "r13" ๋ฐ/๋๋ "rXNUMX" ๋ฐ
ํด๋น ๋ ์ง์คํฐ๋ ๋ค์์ ํตํด ์ ํ๋์์ต๋๋ค. -๊ณ ์ -๋ฑ๋ก ๋ฒํธ or -๋ฏผํธ ๋ ์ง์คํฐ
๋ช ๋ น์ค ์ต์ .
S / 390 and z ์๋ฆฌ์ฆ ์ต์
์ด๋ค์ ์์ต๋๋ค -m S/390 ๋ฐ zSeries ์ํคํ ์ฒ์ ๋ํด ์ ์๋ ์ต์ .
-mhard-float
-msoft-float
๋ถ๋ ์์์ ๋ช ๋ น์ด ๋ฐ ๋ถ๋ ์์์ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)
ํฌ์ธํธ ์์ . ์ธ์ -msoft-float ๊ฐ ์ง์ ๋๋ฉด ๊ธฐ๋ฅ libgcc.a ~์ ์ต์ํ๋ค
๋ถ๋ ์์์ ์ฐ์ฐ์ ์ํํฉ๋๋ค. ์ธ์ -mhard-float ์ง์ ๋๋ฉด ์ปดํ์ผ๋ฌ
IEEE ๋ถ๋ ์์์ ๋ช ๋ น์ด๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mhard-dfp
-mno-ํ๋-dfp
XNUMX์ง์์ ๋ํ ํ๋์จ์ด XNUMX์ง์ ๋ถ๋ ์์์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)
๋ถ๋ ์์์ ์ฐ์ฐ. ์ธ์ -mno-ํ๋-dfp ๊ฐ ์ง์ ๋๋ฉด ๊ธฐ๋ฅ libgcc.a are
์์์ ๋ถ๋ ์์์ ์ฐ์ฐ์ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ธ์ -mhard-dfp ์ง์ ๋๊ณ ,
์ปดํ์ผ๋ฌ๋ XNUMX์ง์ ๋ถ๋ ์์์ ํ๋์จ์ด ๋ช ๋ น์ด๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค
for -ํ์ง=z9-ec ์ด์.
-mlong-๋๋ธ-64
-mlong-๋๋ธ-128
์ด ์ค์์น๋ "๋กฑ ๋๋ธ" ์ ํ์ ํฌ๊ธฐ๋ฅผ ์ ์ดํฉ๋๋ค. 64๋นํธ์ ํฌ๊ธฐ๋
"long double" ์ ํ์ "double" ์ ํ์ ํด๋นํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mbackchain
-mno-๋ฐฑ์ฒด์ธ
ํธ์ถ์์ ํ๋ ์ ์ฃผ์๋ฅผ ๋ฐฑ์ฒด์ธ ํฌ์ธํฐ๋ก ์ ์ฅ(์ ์ฅํ์ง ์์)
์์ ์์ ์คํ ํ๋ ์. ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฒ๊น ์ ํ์ฉํ๋ ค๋ฉด ๋ฐฑ์ฒด์ธ์ด ํ์ํ ์ ์์ต๋๋ค.
DWARF 2 ํธ์ถ ํ๋ ์ ์ ๋ณด๋ฅผ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ธ์ -mno-packed-์คํ ์
ํจ๊ณผ, ๋ฐฑ์ฒด์ธ ํฌ์ธํฐ๋ ์คํ ํ๋ ์์ ๋งจ ์๋์ ์ ์ฅ๋ฉ๋๋ค. ์ธ์
-mpacked-์คํ ์ค์ ๋ก ๋ฐฑ์ฒด์ธ์ ์ต์์ ๋จ์ด์ ๋ฐฐ์น๋ฉ๋๋ค.
96/160๋ฐ์ดํธ ๋ ์ง์คํฐ ์ ์ฅ ์์ญ.
์ผ๋ฐ์ ์ผ๋ก ์ปดํ์ผ๋ ์ฝ๋๋ -mbackchain ๋ค์์ผ๋ก ์ปดํ์ผ๋ ์ฝ๋์ ํธ์ถ ํธํ ๊ฐ๋ฅ
-mmo-๋ฐฑ์ฒด์ธ; ๊ทธ๋ฌ๋ ๋๋ฒ๊น ๋ชฉ์ ์ผ๋ก ๋ฐฑ์ฒด์ธ์ ์ฌ์ฉํ๋ ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ด ํ์ํฉ๋๋ค.
์ ์ฒด ๋ฐ์ด๋๋ฆฌ๊ฐ -mbackchain. ์ ์กฐํฉ์ ์ ์ํ์ญ์์ค.
-mbackchain, -mpacked-์คํ and -mhard-float ์ง์๋์ง ์์ต๋๋ค. ๊ตฌ์ถํ๊ธฐ ์ํด์๋
๋ฆฌ๋ ์ค ์ปค๋ ์ฌ์ฉ -msoft-float.
๊ธฐ๋ณธ๊ฐ์ ๋ฐฑ์ฒด์ธ์ ์ ์งํ์ง ์๋ ๊ฒ์ ๋๋ค.
-mpacked-์คํ
-mno-packed-์คํ
ํจํน๋ ์คํ ๋ ์ด์์์ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํฉ๋๋ค. ์ธ์ -mno-packed-์คํ ์ง์ ๋๊ณ ,
์ปดํ์ผ๋ฌ๋ 96/160๋ฐ์ดํธ ๋ ์ง์คํฐ ์ ์ฅ ์์ญ์ ๋ชจ๋ ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ธฐ๋ณธ ๋ชฉ์ ; ์ฌ์ฉํ์ง ์๋ ํ๋๋ ์ฌ์ ํ ์คํ ๊ณต๊ฐ์ ์ฐจ์งํฉ๋๋ค. ์ธ์ -mpacked-์คํ is
์ง์ ๋๋ฉด ๋ ์ง์คํฐ ์ ์ฅ ์ฌ๋กฏ์ ๋ ์ง์คํฐ ์ ์ฅ ์๋จ์ ์กฐ๋ฐํ๊ฒ ์ฑ์์ง๋๋ค.
์ง์ญ; ์ฌ์ฉํ์ง ์์ ๊ณต๊ฐ์ ๋ค๋ฅธ ์ฉ๋๋ก ์ฌ์ฌ์ฉ๋์ด ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ์คํ ๊ณต๊ฐ ๊ทธ๋ฌ๋ ์ธ์ -mbackchain ๋ ์ ํจํฉ๋๋ค. ์ต์์
์ ์ฅ ์์ญ์ ๋จ์ด๋ ํญ์ ๋ฐฑ์ฒด์ธ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ ๋ฐํ ์ฃผ์
๋ ์ง์คํฐ๋ ํญ์ ๋ฐฑ์ฒด์ธ ์๋์ ๋ ๋จ์ด๋ก ์ ์ฅ๋ฉ๋๋ค.
์คํ ํ๋ ์ ๋ฐฑ์ฒด์ธ์ ์ฌ์ฉํ์ง ์๋ ํ ๋ค์์ผ๋ก ์์ฑ๋ ์ฝ๋๋ -mpacked-์คํ
๋ก ์์ฑ๋ ์ฝ๋์ ํตํ ํธํ ๊ฐ๋ฅ -mno-packed-์คํ. ์ผ๋ถ ๋น FSF
์คํ ํ๋ ์์ ์ฌ์ฉํ๋ S/2.95 ๋๋ zSeries ์์ฑ ์ฝ๋์ฉ GCC 390 ๋ฆด๋ฆฌ์ค
๋๋ฒ๊น ๋ชฉ์ ๋ฟ๋ง ์๋๋ผ ๋ฐํ์์ ๋ฐฑ์ฒด์ธ. ์ด๋ฌํ ์ฝ๋๋ ํธ์ถ๋์ง ์์ต๋๋ค.
๋ก ์ปดํ์ผ๋ ์ฝ๋์ ํธํ ๊ฐ๋ฅ -mpacked-์คํ. ๋ํ, ๋ค์์ ์กฐํฉ์ ์ ์ํ์ญ์์ค.
-mbackchain, -mpacked-์คํ and -mhard-float ์ง์๋์ง ์์ต๋๋ค. ๊ตฌ์ถํ๊ธฐ ์ํด์๋
๋ฆฌ๋ ์ค ์ปค๋ ์ฌ์ฉ -msoft-float.
๊ธฐ๋ณธ๊ฐ์ ํจํน๋ ์คํ ๋ ์ด์์์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๋๋ค.
-msmall-exec
-mno-์ํ-exec
์๋ธ๋ฃจํด์ ์ํํ๊ธฐ ์ํด "bras" ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ์์ฑ(๋๋ ์์ฑํ์ง ์์)
์ ํ. ์ด๊ฒ์ ์ ์ฒด ์คํ ํ์ผ ํฌ๊ธฐ๊ฐ 64k๋ฅผ ์ด๊ณผํ์ง ์๋ ๊ฒฝ์ฐ์๋ง ์์ ์ ์ผ๋ก ์๋ํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ ๋์ "basr" ๋ช ๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
ํ์ .
-m64
-m31
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -m31 ์ง์ ๋๋ฉด S/390 ABI์ฉ GNU/Linux์ ํธํ๋๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ธ์
-m64 ์ง์ ๋๋ฉด zSeries ABI์ฉ GNU/Linux์ ํธํ๋๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ
GCC๋ ํนํ 64๋นํธ ๋ช ๋ น์ด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ฅผ ์ํด s390 ๋์,
๊ธฐ๋ณธ๊ฐ์ -m31๋ฐ๋ฉด, s390x ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ -m64.
-mzarch
-๋ฉ์ฌ
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ -mzarch ๊ฐ ์ง์ ๋๋ฉด ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ง์นจ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
z/์ํคํ ์ฒ. ์ธ์ -๋ฉ์ฌ ์ง์ ๋ ๊ฒฝ์ฐ ์ง์นจ์ ์ฌ์ฉํ์ฌ ์ฝ๋ ์์ฑ
ESA/390์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐธ๊ณ -๋ฉ์ฌ ๋ก๋ ๋ถ๊ฐ๋ฅ -m64. ์์ฑํ ๋
S/390 ABI์ฉ GNU/Linux์ ํธํ๋๋ ์ฝ๋, ๊ธฐ๋ณธ๊ฐ์ -๋ฉ์ฌ. ์์ฑํ ๋
zSeries ABI์ฉ GNU/Linux์ ํธํ๋๋ ์ฝ๋, ๊ธฐ๋ณธ๊ฐ์ -mzarch.
-mmvcle
-mno-mvcle
๋ธ๋ก์ ์ํํ๊ธฐ ์ํด "mvcle" ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ์์ฑ(๋๋ ์์ฑํ์ง ์์)
์์ง์ธ๋ค. ์ธ์ -mno-mvcle ์ง์ ๋ ๊ฒฝ์ฐ ๋์ "mvc" ๋ฃจํ๋ฅผ ์ฌ์ฉํ์ญ์์ค. ์ด๊ฒ์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค
ํฌ๊ธฐ๋ฅผ ์ต์ ํํ์ง ์๋ ํ.
-m๋๋ฒ๊ทธ
-mno ๋๋ฒ๊ทธ
์ปดํ์ผํ ๋ ์ถ๊ฐ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์ธ์ํ๊ฑฐ๋ ์ธ์ํ์ง ๋ง์ญ์์ค. ๊ธฐ๋ณธ๊ฐ์
๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์ธ์ํ์ง ์์ต๋๋ค.
-ํ์ง=CPU ์ ํ
์์ ์คํ๋๋ ์ฝ๋ ์์ฑ CPU ์ ํ๋ฅผ ๋ํ๋ด๋ ์์คํ ์ ์ด๋ฆ์ ๋๋ค.
ํน์ ํ๋ก์ธ์ ์ ํ. ๊ฐ๋ฅํ ๊ฐ CPU ์ ํ are g5, g6, z900, z990, z9-109,
Z9-EC, z10, z196๋ฐ ZEC12. ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ง์นจ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ ๋
z/Architecture, ๊ธฐ๋ณธ๊ฐ์ -ํ์ง=z900. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ -ํ์ง=g5.
-mtune=CPU ์ ํ
ํ๋ CPU ์ ํ ABI๋ฅผ ์ ์ธํ๊ณ ์์ฑ๋ ์ฝ๋์ ์ ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒ
์ฌ์ฉ ๊ฐ๋ฅํ ์ง์นจ ์ธํธ. ๋ชฉ๋ก CPU ์ ํ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-XNUMX ์. ๊ธฐ๋ณธ๊ฐ์ ๋ค์์ ์ฌ์ฉ๋๋ ๊ฐ์ ๋๋ค. -XNUMX ์.
-mtpf ์ถ์
-mno-tpf-์ถ์
์ถ์ ๋ฃจํด์ TPF OS ํน์ ๋ถ๊ธฐ์ ์ถ๊ฐ(์ถ๊ฐํ์ง ์์)ํ๋ ์ฝ๋ ์์ฑ
์ด์ ์ฒด์ ์์. ์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํด์ ๋์ด ์์ต๋๋ค.
TPF OS.
-๋จธํจ์ฆ๋-๋งค๋
-mno-์ตํฉ-๋งค๋
๋ถ๋ ์์์ ๊ณฑํ๊ธฐ ๋ฐ ๋์ ์ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํ๋ ์ฝ๋ ์์ฑ
์ง์นจ. ์ด๋ฌํ ๋ช ๋ น์ด๋ ํ๋์จ์ด ๋ถ๋ ์์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
์ฌ์ฉ.
-mwarn-ํ๋ ์ ํฌ๊ธฐ=ํ๋ ์ ํฌ๊ธฐ
ํ์ฌ ๊ธฐ๋ฅ์ด ์ฃผ์ด์ง ํ๋ ์ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ ๋๋ค. ์๋ํ๋ฉด ์ด๊ฒ์
์ปดํ์ผ ํ์ ์ฒดํฌ๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ ์ค์ ๋ฌธ์ ๊ฐ ๋ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ
์คํ ์ค๋ฒํ๋ก๋ฅผ ์ผ์ผํฌ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ฅ ๋์ ํจ์๋ฅผ ์๋ณํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์์ด๋ค
Linux ์ปค๋๊ณผ ๊ฐ์ด ์คํ ํฌ๊ธฐ๊ฐ ์ ํ๋ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ฉด ์ ์ฉํฉ๋๋ค.
-mwarn-๋์ ์คํ
ํจ์๊ฐ "alloca"๋ฅผ ํธ์ถํ๊ฑฐ๋ ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ ๋๋ค. ์ด๊ฒ
์ผ๋ฐ์ ์ผ๋ก ์คํ ํฌ๊ธฐ๊ฐ ์ ํ๋์ด ์์ผ๋ฉด ์ข์ง ์์ต๋๋ค.
-mstack-๊ฐ๋=์คํ ๊ฐ๋
-mstack-ํฌ๊ธฐ=์คํ ํฌ๊ธฐ
์ด๋ฌํ ์ต์ ์ด ์ ๊ณต๋๋ฉด S/390 ๋ฐฑ์๋๋
์คํ ํฌ๊ธฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ํธ๋ฉ์ ํธ๋ฆฌ๊ฑฐํ๋ ํจ์ ํ๋กค๋ก๊ทธ ์คํ ๊ฐ๋ ์์ ๋ฐ์ดํธ
์คํ ํฌ๊ธฐ (S/390์ ์คํ์ ์๋์ชฝ์ผ๋ก ์ปค์ง๋๋ค.) ๋ง์ฝ ์คํ ๊ฐ๋
์ต์ ์ ์ปดํ์ผ๋ ํ๋ ์ ํฌ๊ธฐ๋ณด๋ค ํฐ 2์ ์ต์ ๊ฑฐ๋ญ์ ๊ณฑ์ด ์๋ต๋ฉ๋๋ค.
๊ธฐ๋ฅ์ด ์ ํ๋ฉ๋๋ค. ์ด ์ต์ ์ ์คํ ๋๋ฒ๊น ์ ๋๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์ค๋ฒํ๋ก ๋ฌธ์ . ์ถ๊ฐ๋ก ๋ฐฉ์ถ๋ ์ฝ๋๋ ์ฝ๊ฐ์ ์ค๋ฒํค๋๋ง ๋ฐ์์ํค๊ณ
๋ฐ๋ผ์ ๋ ๋์ ์ฑ๋ฅ ์์ด ํ๋ก๋์ ๊ณผ ์ ์ฌํ ์์คํ ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๋ฝ. ์ฃผ์ด์ง ๊ฐ์ 2์ ์ ํํ ๊ฑฐ๋ญ์ ๊ณฑ์ด์ด์ผ ํ๋ฉฐ ์คํ ํฌ๊ธฐ ์ด์ด์ผํ๋ค
๋ณด๋ค ํฐ ์คํ ๊ฐ๋ 64k๋ฅผ ์ด๊ณผํ์ง ์์ต๋๋ค. ํจ์จ์ ์ธ ์ถ๊ฐ ์์ ์ ์ํด
์ฝ๋๋ ์คํ์ด ๊ฐ์ ์ ๋ ฌ๋ ์ฃผ์์์ ์์ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ฃผ์ด์ง ์คํ ํฌ๊ธฐ. ๊ทธ๋งํผ ์คํ ๊ฐ๋ ์ต์ ์ ๋ค์๊ณผ ํจ๊ป๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
์คํ ํฌ๊ธฐ.
-mhotpatch=๋ฐ๋ง,ํ๋ฐ๋ถ
ํซํจ์น ์ต์ ์ด ํ์ฑํ๋๋ฉด "ํซํจ์นญ" ๊ธฐ๋ฅ ํ๋กค๋ก๊ทธ๊ฐ ์์ฑ๋ฉ๋๋ค.
์ปดํ์ผ ์ ๋์ ๋ชจ๋ ๊ธฐ๋ฅ. ํจ์ ๋ ์ด๋ธ ์์ ์ฃผ์ด์ง
XNUMX๋ฐ์ดํธ NOP ๋ช ๋ น์ด ์(๋ฐ๋ง, ์ต๋ 1000000). ํ
๋ ์ด๋ธ, 2 * ํ๋ฐ๋ถ ๋ช ๋ น๊ณผ ๊ฐ์ ๊ฐ์ฅ ํฐ NOP๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํธ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
์ํคํ ์ฒ์์ ํ์ฉํฉ๋๋ค(์ต๋ 1000000).
๋ ์ธ์๊ฐ ๋ชจ๋ XNUMX์ด๋ฉด ํซํจ์นญ์ด ๋นํ์ฑํ๋ฉ๋๋ค.
์ด ์ต์ ์ "hotpatch" ์์ฑ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ๊ธฐ๋ฅ์ ๋ํด ์ฌ์ ์ํ ์ ์์ต๋๋ค.
์ ์ ์ต์
๋ค์ ์ต์ ์ ์ ์ ๊ตฌํ์ ๋ํด ์ ์๋ฉ๋๋ค.
-๋ฉ๋ธ
๋น ์๋์ ๋ชจ๋์ ๋ํ ์ฝ๋๋ฅผ ์ปดํ์ผํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-๋ฉ
๋ฆฌํ ์๋์ ๋ชจ๋์ ๋ํ ์ฝ๋๋ฅผ ์ปดํ์ผํฉ๋๋ค.
-mnhwloop
"bcnz" ๋ช ๋ น์ด ์์ฑ์ ๋นํ์ฑํํฉ๋๋ค.
-๋ฌผ
์ ๋ ฌ๋์ง ์์ ๋ก๋ ๋ฐ ์ ์ฅ ๋ช ๋ น์ด ์์ฑ์ ํ์ฑํํฉ๋๋ค.
-mmac
๊ณฑํ๊ธฐ ๋์ฐ ๋ช ๋ น์ด ์ฌ์ฉ์ ํ์ฑํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
-mscore5
SCORE5๋ฅผ ๋์ ์ํคํ ์ฒ๋ก ์ง์ ํฉ๋๋ค.
-mscore5u
๋์ ์ํคํ ์ฒ์ SCORE5U๋ฅผ ์ง์ ํฉ๋๋ค.
-mscore7
SCORE7์ ๋์ ์ํคํ ์ฒ๋ก ์ง์ ํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mscore7d
SCORE7D๋ฅผ ๋์ ์ํคํ ์ฒ๋ก ์ง์ ํฉ๋๋ค.
SH ์ต์
Bowman์ -m ์ต์ ์ SH ๊ตฌํ์ ๋ํด ์ ์๋ฉ๋๋ค.
-m1 SH1์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m2 SH2์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m2e
SH2e์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m2a-๋ ธํธ
FPU ์์ด SH2a์ฉ ์ฝ๋๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก SH2a-FPU์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๋ถ๋ ์์์ ๋จ์๋ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
-m2a-๋จ์ผ ์ ์ฉ
๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ด ์๋ ๋ฐฉ์์ผ๋ก SH2a-FPU์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์กฐ์์ด ์ฌ์ฉ๋ฉ๋๋ค.
-m2a-๋จ์ผ
๋ถ๋ ์์์ ๋จ์๊ฐ ๋จ์ ๋ฐ๋๋ผ๊ณ ๊ฐ์ ํ์ฌ SH2a-FPU์ฉ ์ฝ๋ ์์ฑ
๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋.
-m2a
๋ถ๋ ์์์ ๋จ์๊ฐ ๋ฐฐ์ ๋ฐ๋๋ผ๊ณ ๊ฐ์ ํ๊ณ SH2a-FPU์ฉ ์ฝ๋ ์์ฑ
๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋.
-m3 SH3์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m3e
SH3e์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m4-๋ ธํธ
๋ถ๋ ์์์ ๋จ์ ์์ด SH4์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m4-๋จ์ผ ์ ์ฉ
๋จ์ผ ์ง์๋ง ์ง์ํ๋ ๋ถ๋ ์์์ ๋จ์๋ก SH4์ฉ ์ฝ๋ ์์ฑ
์ ๋ฐ ์ฐ์ .
-m4-๋จ์ผ
๋ถ๋ ์์์ ๋จ์๊ฐ ๋จ์ ๋ฐ๋ ๋ชจ๋์ ์๋ค๊ณ ๊ฐ์ ํ์ฌ SH4์ฉ ์ฝ๋ ์์ฑ
๊ธฐ๋ณธ์ ์ผ๋ก
-m4 SH4์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m4-100
SH4-100์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m4-100-๋ ธํธ
๋ถ๋ ์์์ ๋จ์๊ฐ ์ฌ์ฉ๋์ง ์๋ ๋ฐฉ์์ผ๋ก SH4-100์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํ์ญ์์ค.
-m4-100-๋จ์ผ
๋ถ๋ ์์์ ๋จ์๊ฐ ๋จ์ ๋ฐ๋ ๋ชจ๋์ ์๋ค๊ณ ๊ฐ์ ํ์ฌ SH4-100์ฉ ์ฝ๋ ์์ฑ
๊ธฐ๋ณธ์ ์ผ๋ก
-m4-100-๋จ์ผ ์ ์ฉ
๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ด ์๋ ๋ฐฉ์์ผ๋ก SH4-100์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์กฐ์์ด ์ฌ์ฉ๋ฉ๋๋ค.
-m4-200
SH4-200์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m4-200-๋ ธํธ
๋ถ๋ ์์์ ๋จ์๊ฐ ์๋ ๋ฐฉ์์ผ๋ก SH4-200์ฉ ์ฝ๋ ์์ฑ
์ต์ํ.
-m4-200-๋จ์ผ
๋ถ๋ ์์์ ๋จ์๊ฐ ๋จ์ ๋ฐ๋ ๋ชจ๋์ ์๋ค๊ณ ๊ฐ์ ํ์ฌ SH4-200์ฉ ์ฝ๋ ์์ฑ
๊ธฐ๋ณธ์ ์ผ๋ก
-m4-200-๋จ์ผ ์ ์ฉ
๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ด ์๋ ๋ฐฉ์์ผ๋ก SH4-200์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์กฐ์์ด ์ฌ์ฉ๋ฉ๋๋ค.
-m4-300
SH4-300์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m4-300-๋ ธํธ
๋ถ๋ ์์์ ๋จ์๊ฐ ์๋ ๋ฐฉ์์ผ๋ก SH4-300์ฉ ์ฝ๋ ์์ฑ
์ต์ํ.
-m4-300-๋จ์ผ
๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ด ์๋ ๋ฐฉ์์ผ๋ก SH4-300์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์กฐ์์ด ์ฌ์ฉ๋ฉ๋๋ค.
-m4-300-๋จ์ผ ์ ์ฉ
๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ด ์๋ ๋ฐฉ์์ผ๋ก SH4-300์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์กฐ์์ด ์ฌ์ฉ๋ฉ๋๋ค.
-m4-340
SH4-340์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค(MMU ์์, FPU ์์).
-m4-500
SH4-500์ฉ ์ฝ๋ ์์ฑ(FPU ์์). ํจ์ค -isa=sh4-๋ ธํํธ ์ด์ ๋ธ๋ฌ์๊ฒ.
-m4a-๋ ธํธ
SH4al-dsp ๋๋ SH4a์ ๋ํ ์ฝ๋๋ฅผ ๋ถ๋ ์์์ ์ด
๋จ์๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
-m4a-๋จ์ผ ์ ์ฉ
๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ด ์๋ ๋ฐฉ์์ผ๋ก SH4a์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์กฐ์์ด ์ฌ์ฉ๋ฉ๋๋ค.
-m4a-๋จ์ผ
๋ถ๋ ์์์ ๋จ์๊ฐ ๋จ์ ๋ฐ๋๋ผ๊ณ ๊ฐ์ ํ๊ณ SH4a์ ๋ํ ์ฝ๋ ์์ฑ
๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋.
-m4a
SH4a์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m4al
๊ณผ ๋์ผ -m4a-๋ ธํธ, ์์์ ์ผ๋ก ์ ๋ฌ๋๋ ๊ฒ์ ์ ์ธํ๊ณ -dsp ์ด์ ๋ธ๋ฌ์๊ฒ. GCC
ํ์ฌ๋ก์๋ DSP ๋ช ๋ น์ด๋ฅผ ์์ฑํ์ง ์์ต๋๋ค.
-m5-32๋ฏธ๋์ด
SHmedia์ฉ 32๋นํธ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m5-32๋ฏธ๋์ด-๋ ธํธ
๋ถ๋ ์์์ ๋จ์๊ฐ ์๋ ๋ฐฉ์์ผ๋ก SHmedia์ฉ 32๋นํธ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ต์ํ.
-m5-64๋ฏธ๋์ด
SHmedia์ฉ 64๋นํธ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m5-64๋ฏธ๋์ด-๋ ธํธ
๋ถ๋ ์์์ ๋จ์๊ฐ ์๋ ๋ฐฉ์์ผ๋ก SHmedia์ฉ 64๋นํธ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ต์ํ.
-m5-์ปดํฉํธ
SHcompact์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-m5-์ปดํฉํธ-nofpu
๋ถ๋ ์์์ ๋จ์๊ฐ ์ฌ์ฉ๋์ง ์๋ ๋ฐฉ์์ผ๋ก SHcompact์ฉ ์ฝ๋๋ฅผ ์์ฑํ์ญ์์ค.
-mb ๋น ์๋์ ๋ชจ๋์์ ํ๋ก์ธ์์ ๋ํ ์ฝ๋๋ฅผ ์ปดํ์ผํฉ๋๋ค.
-ml ๋ฆฌํ ์๋์ ๋ชจ๋์์ ํ๋ก์ธ์์ฉ ์ฝ๋๋ฅผ ์ปดํ์ผํฉ๋๋ค.
-mdalign
64๋นํธ ๊ฒฝ๊ณ์์ ๋ ๋ฐฐ๋ฅผ ์ ๋ ฌํฉ๋๋ค. ์ด๊ฒ์ ํธ์ถ ๊ท์น์ ๋ณ๊ฒฝํฉ๋๋ค.
๋ฐ๋ผ์ ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ผ๋ถ ๊ธฐ๋ฅ์ ๋ค์ ์ปดํ์ผํ์ง ์๋ ํ ์๋ํ์ง ์์ต๋๋ค.
๊ทธ๊ฒ์ผ๋ก ๋จผ์ -mdalign.
-mrelax
๊ฐ๋ฅํ๋ฉด ๋งํฌ ์๊ฐ์ ์ผ๋ถ ์ฃผ์ ์ฐธ์กฐ๋ฅผ ์ค์ด์ญ์์ค. ๋ง์ปค ์ต์ ์ ์ฌ์ฉ
-ํธํ๊ฒ ํ๋ค.
-mbigtable
"์ค์์น" ํ ์ด๋ธ์์ 32๋นํธ ์คํ์ ์ ์ฌ์ฉํ์ญ์์ค. ๊ธฐ๋ณธ๊ฐ์ 16๋นํธ ์คํ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
-์ ๋นํ์ค
SH2A์์ ๋นํธ ์กฐ์ ๋ช ๋ น์ด ์ฌ์ฉ์ ํ์ฑํํฉ๋๋ค.
-mfmovd
"fmovd" ๋ช ๋ น ์ฌ์ฉ์ ํ์ฑํํฉ๋๋ค. ํ์ธํ๋ค -mdalign ์ ๋ ฌ ์ ์ฝ ์กฐ๊ฑด์ ๋ํด.
-๋ฏ๋ ๋ค์ฌ์ค
Renesas๊ฐ ์ ์ํ ํธ์ถ ๊ท์น์ ์ค์ํฉ๋๋ค.
-mno-๋ฅด๋ค์ฌ์ค
Renesas ๊ท์น ์ด์ ์ GCC์ ๋ํด ์ ์๋ ํธ์ถ ๊ท์น์ ์ค์ํฉ๋๋ค.
์ด์ฉ ๊ฐ๋ฅํ์ต๋๋ค. ์ด ์ต์ ์ SH ๋๊ตฌ ์ฒด์ธ์ ๋ชจ๋ ๋์์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mnomac์ ์ฅ
"MAC" ๋ ์ง์คํฐ๋ฅผ call-clobbed๋ก ํ์ํฉ๋๋ค. -๋ฏ๋ ๋ค์ฌ์ค ์ฃผ์ด์ง๋ค.
-์ด๋ฐ
-mno-ieee
์ฒ๋ฆฌ์ ์ํฅ์ ๋ฏธ์น๋ ๋ถ๋ ์์์ ๋น๊ต์ IEEE ๊ท์ ์ค์ ์ ์ด
๋น๊ต ๊ฒฐ๊ณผ๊ฐ ์ ๋ ฌ๋์ง ์์ ๊ฒฝ์ฐ. ๊ธฐ๋ณธ์ ์ผ๋ก -์ด๋ฐ is
์์์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค. ๋ง์ฝ์ - ์ ํ ์ํ ์ ์ฉ ์ฌ์ฉ ๊ฐ๋ฅ -mno-ieee ์์์ ์ผ๋ก ์ค์ ๋๋ฉฐ,
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ๋น ๋ฅธ ๋ถ๋ ์์์ ๋น๊ต๊ฐ ๋ ๋น ๋ฆ ๋๋ค. NS
์์์ ์ค์ ์ ๋ค์ ์ค ํ๋๋ฅผ ์ง์ ํ์ฌ ์ฌ์ ์ํ ์ ์์ต๋๋ค. -์ด๋ฐ or -mno-ieee.
-minline-ic_invalidate
์ค์ฒฉ ํจ์๋ฅผ ์ค์ ํ ํ ๋ช ๋ น์ด ์บ์ ํญ๋ชฉ์ ๋ฌดํจํํ๋ ์ธ๋ผ์ธ ์ฝ๋
ํธ๋จํด๋ฆฐ. ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ํจ๊ณผ๊ฐ ์์ต๋๋ค. -muser ๋ชจ๋ ์ ํจํ๊ณ ์ ํ๋
์ฝ๋ ์์ฑ ์ต์ (์: -m4) "icbi" ๋ช ๋ น์ด์ ์ฌ์ฉ์ ํ์ฉํ์ง ์์ต๋๋ค.
์ ํํ ์ฝ๋ ์์ฑ ์ต์ ์ด "icbi"์ ์ฌ์ฉ์ ํ์ฉํ์ง ์๋ ๊ฒฝ์ฐ
์ง์, ๊ทธ๋ฆฌ๊ณ -muser ๋ชจ๋ ์ ํจํ์ง ์์ ๊ฒฝ์ฐ ์ธ๋ผ์ธ ์ฝ๋๋
์ฐ๊ด ์ฐ๊ธฐ์ ์ง์ ๋ช ๋ น์ด ์บ์ ์ฃผ์ ๋ฐฐ์ด. ์ด ๋ฟ๋ง ์๋๋ผ
๋ฐํ์์ ํน๊ถ ๋ชจ๋๊ฐ ํ์ํ์ง๋ง ์บ์ ๋ผ์ธ์ด
TLB๋ฅผ ํตํด ๋งคํ๋๊ณ ๋งคํ ํด์ ๋์์ต๋๋ค.
-์ฌ์ด์ฆ๋ฅผ ์๋ชป ๋ง์ถ๋ค
์ด์ ๋ธ๋ฆฌ ์ฝ๋์ ๋คํ ๋ช ๋ น์ด ํฌ๊ธฐ ๋ฐ ์์น.
-mpadstruct
์ด ์ต์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๊ตฌ์กฐ๋ฅผ 4๋ฐ์ดํธ์ ๋ฐฐ์๋ก ์ฑ์๋๋ค.
SH ABI์ ํธํ๋์ง ์์ต๋๋ค.
-์์ ๋ชจ๋ธ=๋ชจ๋ธ
์์ ์ฐ์ฐ ๋ชจ๋ธ๊ณผ ์ถ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ์ค์ ํฉ๋๋ค.
๋ชฉ๋ก. ์์ ๋ด์ฅ ํจ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ญ์์ค. __์์ ๋นํธ์ธ. ๊ทธ๋งํผ
๋ค์ ๋ชจ๋ธ ๋ฐ ๋งค๊ฐ๋ณ์๊ฐ ์ง์๋ฉ๋๋ค.
์์
์ปดํ์ผ๋ฌ์์ ์์ฑ๋ ์์ ์ํ์ค๋ฅผ ๋นํ์ฑํํ๊ณ ์์์ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ์ ๋ด๋ณด๋ ๋๋ค.
์์ . ๋์์ด "sh*-*-linux*"๊ฐ ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
์ํํธ๊ตฌ์ฌ
์์ ๋ด์ฅ์ ์ํ GNU/Linux ํธํ gUSA ์ํํธ์จ์ด ์์ ์ํ์ค ์์ฑ
๊ธฐ๋ฅ์์. ์์ฑ๋ ์์ ์ํ์ค๋ ์ถ๊ฐ ์ง์์ด ํ์ํฉ๋๋ค.
์์คํ ์ ์ธํฐ๋ฝํธ/์์ธ ์ฒ๋ฆฌ ์ฝ๋์ด๋ฉฐ SH3* ๋ฐ
SH4* ๋จ์ผ ์ฝ์ด ์์คํ . ์ด ์ต์ ์ ๋์์ด ๋ค์๊ณผ ๊ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
"sh*-*-linux*" ๋ฐ SH3* ๋๋ SH4*. ๋์์ด SH4A์ธ ๊ฒฝ์ฐ ์ด ์ต์ ๋
ํ๋์จ์ด ์์ ๋ช ๋ น์ด "movli.l" ๋ฐ "movco.l"์ ๋ถ๋ถ์ ์ผ๋ก ํ์ฉํ์ฌ
๋ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋ ํ ์๊ฒฉํ ์ด ์ง์ ๋ฉ๋๋ค.
์ํํธ tcb
์ค๋ ๋ ์ ์ด์์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ์ํํธ์จ์ด ์์ ์ํ์ค ์์ฑ
๋ธ๋ก. ์ด๊ฒ์ SH1*์์๋ ์ฌ์ฉํ ์ ์๋ gUSA ์ํ์ค์ ๋ณํ์ ๋๋ค.
๋ฐ SH2* ํ์ . ์์ฑ๋ ์์ ์ํ์ค์์ ์ถ๊ฐ ์ง์์ด ํ์ํฉ๋๋ค.
์์คํ ์ ์ธํฐ๋ฝํธ/์์ธ ์ฒ๋ฆฌ ์ฝ๋์ด๋ฉฐ ๋ค์์๋ง ์ ํฉํฉ๋๋ค.
๋จ์ผ ์ฝ์ด ์์คํ . ์ด ๋ชจ๋ธ์ ์ฌ์ฉํ ๋, gbr ์คํ์ = ๋งค๊ฐ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
๋ ์ง์ ํฉ๋๋ค.
์ํํธ ์์ด๋ง์คํฌ
์ค์ ํ์ฌ ์ธํฐ๋ฝํธ๋ฅผ ์ผ์์ ์ผ๋ก ๋นํ์ฑํํ๋ ์ํํธ์จ์ด ์์ ์ํ์ค ์์ฑ
"SR.IMASK = 1111". ์ด ๋ชจ๋ธ์ ํ๋ก๊ทธ๋จ์ด ํน๊ถ ๋ชจ๋์์ ์คํ๋ ๋๋ง ์๋ํฉ๋๋ค.
๋จ์ผ ์ฝ์ด ์์คํ ์๋ง ์ ํฉํฉ๋๋ค. ์ถ๊ฐ ์ง์
์์คํ ์ ์ธํฐ๋ฝํธ/์์ธ ์ฒ๋ฆฌ ์ฝ๋๋ ํ์ํ์ง ์์ต๋๋ค. ์ด ๋ชจ๋ธ์
๋์์ด "sh*-*-linux*"์ด๊ณ SH1* ๋๋ SH2*์ธ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
ํ๋-llcs
"movli.l" ๋ฐ "movco.l" ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์จ์ด ์์ ์ํ์ค ์์ฑ
์ค์ง. ์ด๊ฒ์ SH4A์์๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ฉํฐ ์ฝ์ด ์์คํ ์ ์ ํฉํฉ๋๋ค.
ํ๋์จ์ด ๋ช ๋ น์ด๋ 32์ ๋ํ 8๋นํธ ์์ ๋ณ์ ์ก์ธ์ค๋ง ์ง์ํ๊ธฐ ๋๋ฌธ์
๋๋ 16๋นํธ ๋ณ์๋ 32๋นํธ ์ก์ธ์ค๋ก ์๋ฎฌ๋ ์ดํธ๋ฉ๋๋ค. ์ด๊ฒ์ผ๋ก ์ปดํ์ผ๋ ์ฝ๋
์ต์ ์ ๋ค๋ฅธ ์ํํธ์จ์ด ์์ ๋ชจ๋ธ๊ณผ๋ ํธํ๋ฉ๋๋ค.
SH4A ์์คํ ์์ ์คํ๋๋ ๊ฒฝ์ฐ ์ธํฐ๋ฝํธ/์์ธ ์ฒ๋ฆฌ ์์คํ . ์ถ๊ฐ์
์์คํ ์ ์ธํฐ๋ฝํธ/์์ธ ์ฒ๋ฆฌ ์ฝ๋์์ ์ง์์ด ํ์ํ์ง ์์ต๋๋ค.
์ด ๋ชจ๋ธ์ ์ํด.
gbr ์คํ์ =
์ด ๋งค๊ฐ๋ณ์๋ ์ค๋ ๋ ์ ์ด์์ ๋ณ์์ ์คํ์ (๋ฐ์ดํธ)์ ์ง์ ํฉ๋๋ค.
์์ฑ๋ ์์ ์ํ์ค์ ์ํด ์ฌ์ฉ๋์ด์ผ ํ๋ ๋ธ๋ก ๊ตฌ์กฐ
์ํํธ tcb ๋ชจ๋ธ์ด ์ ์ ๋์์ต๋๋ค. ๋ค๋ฅธ ๋ชจ๋ธ์ ๊ฒฝ์ฐ ์ด ๋งค๊ฐ๋ณ์๋ ๋ฌด์๋ฉ๋๋ค.
์ง์ ๋ ๊ฐ์ 0์ ์ ์ ๋ฐฐ์์ฌ์ผ ํ๋ฉฐ ๋ฒ์๋ 1020-XNUMX์ ๋๋ค.
์๊ฒฉํ
์ด ๋งค๊ฐ๋ณ์๋ ์ฌ๋ฌ ์์ ๋ชจ๋ธ์ ํผํฉ ์ฌ์ฉ์ ๋ฐฉ์งํฉ๋๋ค.
ํธํ ๊ฐ๋ฅํ๊ณ ์ปดํ์ผ๋ฌ๊ฐ ์์ ์ํ์ค๋ฅผ ์์ฑํ๋๋ก ํฉ๋๋ค.
์ง์ ๋ ๋ชจ๋ธ๋ง ํด๋น๋ฉ๋๋ค.
-mtas
"__atomic_test_and_set"์ ๋ํ "tas.b" opcode๋ฅผ ์์ฑํฉ๋๋ค. ์ ๋ฐ๋ผ ์ฃผ์
ํน์ ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด ๊ตฌ์ฑ์ผ๋ก ์ธํด ์ ์ฒด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
"tas.b" ๋ช ๋ น์ด๊ฐ ์์ํ๋ ํผ์ฐ์ฐ์ ์บ์ ๋ผ์ธ ํ๋ฌ์ ๋๋ฌธ์ ๋๋ค. ์
๋ฉํฐ ์ฝ์ด SH4A ํ๋ก์ธ์ "ta.b" ๋ช ๋ น์ด๋ ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํน์ ์บ์ ๊ตฌ์ฑ์ ๋ํ ๋ฐ์ดํฐ ์์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
-mpfergot
์์น ๋ ๋ฆฝ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ ์ญ ์คํ์ ์ ์ฌ์ฉํ์ฌ ํจ์ ํธ์ถ์ ๋ด๋ณด๋ ๋๋ค.
ํ๋ก์์ ์ฐ๊ฒฐ ํ ์ด๋ธ ๋์ ํ ์ด๋ธ.
-muser ๋ชจ๋
-mno-์ฌ์ฉ์ ๋ชจ๋
์ปดํ์ผ๋ฌ๊ฐ ํน๊ถ ๋ชจ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ํ์ฉ(ํ์ฉ)ํ์ง ๋ง์ญ์์ค. ์ง์
-muser ๋ชจ๋ ๋ํ ์๋ฏธ -mno-inline-ic_invalidate ์ธ๋ผ์ธ ์ฝ๋๊ฐ ์๋ํ์ง ์๋ ๊ฒฝ์ฐ
์ฌ์ฉ์ ๋ชจ๋์์. -muser ๋ชจ๋ ๋์์ด "sh*-*-linux*"์ธ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ๋ง์ฝ
๋์์ SH1* ๋๋ SH2*์ ๋๋ค. -muser ๋ชจ๋ ์ฌ์ฉ์ ๋ชจ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ฌด ํจ๊ณผ๊ฐ ์์ต๋๋ค.
-๋ค์ค ๋น์ฉ=๋ฒํธ
๋ค์ค ์๋ฐ ์์ค์ ๋ํด ๊ฐ์ ํ ๋น์ฉ์ ์ค์ ํฉ๋๋ค.
-mdiv=์ ๋ต
์ ์ ๋๋์ ์ฐ์ฐ์ ์ฌ์ฉํ ๋๋์ ์ ๋ต์ ์ค์ ํฉ๋๋ค. SH๋ฏธ๋์ด์ฉ
์ ๋ต ๋ค์ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
fp ๋ถ๋ ์์์ ์ฐ์ฐ์ ์ํํฉ๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ๋์ ๋๊ธฐ ์๊ฐ์ ๊ฐ์ง๋ง ๋ค์์ด ํ์ํฉ๋๋ค.
๋ช ๊ฐ์ง ์ง์นจ๋ง ์์ผ๋ฏ๋ก ์ฝ๋์ ์ถฉ๋ถํ
์ปดํ์ผ๋ฌ๊ฐ ๋ถ๋ ์์์ ์ ์์ฝํ ์ ์๋๋ก ์ฝ๊ฒ ์ ์ฉํ ์ ์๋ ILP
๋ค๋ฅธ ์ง์นจ๊ณผ ํจ๊ป ์ง์นจ. XNUMX์ผ๋ก ๋๋๋ฉด
๋ถ๋ ์์์ ์์ธ.
INV ์ ์ ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ์ ์์ ์ญ์๋ฅผ ๊ณ์ฐํ ๋ค์
๋ฐฐ๋น๊ธ์ ์ญ์๋ฅผ ๊ณฑํฉ๋๋ค. ์ด ์ ๋ต์ CSE ๋ฐ ํธ์ด์คํ ์ ํ์ฉํฉ๋๋ค.
์ญ ๊ณ์ฐ์. XNUMX์ผ๋ก ๋๋๊ธฐ๋ ์ง์ ๋์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๊ณ ,
๊ทธ๋ฌ๋ ํธ๋ฉํ์ง ์์ต๋๋ค.
์ธ๋ณด์ด์ค:๋ฏผ๋ผํธ
์ ๋ณํ INV CSE ๋๋ ํธ์ด์คํ ๊ธฐํ๊ฐ ๋ฐ๊ฒฌ๋์ง ์์ ๊ฒฝ์ฐ ๋๋
์ ์ฒด ์์ ์ด ๊ฐ์ ์ฅ์๋ก ํธ์ด์คํธ๋์์ต๋๋ค.
์ญ ๊ณ์ฐ์ ์ ์ฒด๋ฅผ ์ค์ด๊ธฐ ์ํด ์ต์ข ๊ณฑ์ ๊ณผ ์ฝํ ์์ต๋๋ค.
๋ช ๊ฐ์ง ๋ ๋ง์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ ์ ์ ์์
๋ค๋ฅธ ์ฝ๋๋ก ๊ธฐํ๋ฅผ ์์ฝํฉ๋๋ค.
์ ํ
์ผ๋ฐ์ ์ผ๋ก ๊ตฌํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. ์ธ๋ณด์ด์ค:๋ฏผ๋ผํธ ์ ๋ต. ์ด๊ฒ
"m5-*media-nofpu" ์ปดํ์ผ์ ๋์ ์ฝ๋ ๋ฐ๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
call2
๋์ผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์์ ๋ค๋ฅธ ์ง์ ์ ์ ์ฌ์ฉํฉ๋๋ค.
๋ฃฉ์ ํ ์ด๋ธ์ ๋ํ ํฌ์ธํฐ๊ฐ ์ด๋ฏธ ์ค์ ๋์ด ์์ด ํฌ์ธํฐ ๋ก๋๊ฐ ๋ ธ์ถ๋ฉ๋๋ค.
CSE ๋ฐ ์ฝ๋ ํธ์ด์คํ ์ต์ ํ.
์ธ๋ณด์ด์ค:์ฝ
์ธ๋ณด์ด์ค:์ฝ2
์ธ๋ณด์ด์ค:FP
์ฌ์ฉ INV ์ด๊ธฐ ์ฝ๋ ์์ฑ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ด์ง๋ง ์ฝ๋๊ฐ ์ ์ง๋๋ ๊ฒฝ์ฐ
์ต์ ํ๋์ง ์์ ์ํ๋ก ๋๋๋ฆฌ๊ธฐ ์ ํ, call2๋ฐ fp ์ ๋ต, ๊ฐ๊ฐ. ์ฐธ๊ณ
XNUMX์ผ๋ก ๋๋๊ธฐ์ ์ ์ฌ์ ์ธ ํธ๋ํ ๋ถ์์ฉ์ ๋ณ๋์
๋ชจ๋ ์ ์ ๋ช ๋ น์ด๊ฐ ํธ์ด์คํธ ์์๋๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ถ์์ฉ์ ๋ํ ๋ง์ปค๋ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค. ์ ๋ํ ์ฌ์กฐํฉ
์ด ๊ฒฝ์ฐ ๋ถ๋ ์์์ ์ฐ์ฐ์ด๋ ํธ์ถ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
inv20u
inv20l
์ ๋ณ์ข ์ธ๋ณด์ด์ค:๋ฏผ๋ผํธ ์ ๋ต. ์ญ๊ณ์ฐ์ ๊ฒฝ์ฐ
๊ณฑํ๊ธฐ์์ ๋ถ๋ฆฌ๋์ง ์๊ณ ๋ฐฐ๋น๊ธ์ด ๋ง๋ ๋๋์ ์ ๊ฐ์ํํฉ๋๋ค.
์ฌ๋ฌ ๋ฒํธ๋ฅผ ๊ฑด๋๋ฐ๋ ํ ์คํธ๋ฅผ ์ฝ์ ํ์ฌ 20๋นํธ(ํด๋น๋๋ ๊ฒฝ์ฐ ๋ํ๊ธฐ ๊ธฐํธ)๋ก
์ด ๊ฒฝ์ฐ ์์ ; ์ด ํ ์คํธ๋ ๋ ํฐ ๋ฐฐ๋น๊ธ์ ๊ฒฝ์ฐ ์๋๋ฅผ ๋ฆ์ถฅ๋๋ค.
inv20u ๊ทธ๋ฌํ ์์ ๋ฐฐ๋น๊ธ์ ๊ฒฝ์ฐ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ , inv20l
๊ฐ๋ฅ์ฑ์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
SHmedia ์ด์ธ์ ๋์์ฉ ์ ๋ต ๋ค์ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
์ ํ div1
๋จ์ผ ๋จ๊ณ ๋๋๊ธฐ ๋ช ๋ น "div1"์ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ํธ์ถํ์ฌ
์์ ์ ์ํํฉ๋๋ค. XNUMX์ผ๋ก ๋๋๊ธฐ๋ ์ง์ ๋์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๊ณ ๋ค์์ ์ํํฉ๋๋ค.
ํธ๋ฉ์ด ์๋๋๋ค. ์ด๊ฒ์ SH4, SH2A ๋ฐ SHcompact๋ฅผ ์ ์ธํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
ํธ์ถ fp
๋ฐฐ์ ๋ฐ๋ ๋ถ๋์์ ์ฐ์ฐ์ ์ํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
๊ฐ๋ฆฌํค๋ค. XNUMX์ผ๋ก ๋๋๋ฉด ๋ถ๋ ์์์ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค
FPU๊ฐ ์๋ SHcompact์ฉ. double์ด ์๋ ๋์์ ๋ํด ์ด๊ฒ์ ์ง์ ํฉ๋๋ค.
์ ๋ฐ๋ FPU๋ ๊ธฐ๋ณธ์ ์ผ๋ก "call-div1"๋ก ์ค์ ๋ฉ๋๋ค.
์ฝ ํ ์ด๋ธ
์์ ์ ์์ ๋ํ ์กฐํ ํ ์ด๋ธ์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ํธ์ถํ๊ณ
๋ ํฐ ์ ์์ ๋ํ ๋์๋ฌธ์ ๊ตฌ๋ถ์ด ์๋ "div1" ๋ช ๋ น์ด. XNUMX์ผ๋ก ๋๋๊ธฐ
์ง์ ๋์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๊ณ ํธ๋ฉํ์ง ์์ต๋๋ค. ์ด๊ฒ์ SH4์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๋์ ์ด๋ ์ง์นจ์ด ์๋ ๋์์ ๋ํด ์ด๋ฅผ ์ง์ ํ๋ฉด
๊ธฐ๋ณธ๊ฐ์ "call-div1"์ ๋๋ค.
๋ถํ ์ ๋ต์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ ๋ต์ด ์ ํ๋ฉ๋๋ค.
ํ์ฌ ๋ชฉํ๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค. SH2A์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ ๋ต์ "divs"๋ฅผ ์ฌ์ฉํ๊ณ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ ํธ์ถ ๋์ "divu" ๋ช ๋ น.
-maccumulate-outgoing-args
์ฃผ๋ณ์ด ์๋ ํจ์ ํ๋กค๋ก๊ทธ์์ ๋๊ฐ๋ ์ธ์๋ฅผ ์ํด ๊ณต๊ฐ์ ํ ๋ฒ ์์ฝํ์ญ์์ค.
๊ฐ ํธ์ถ. ์ผ๋ฐ์ ์ผ๋ก ์ฑ๋ฅ๊ณผ ํฌ๊ธฐ์ ์ ๋ฆฌํฉ๋๋ค. ๊ธด์ฅ์ ํธ๋ ๋ฐ์๋ ํ์
์กฐ๊ฑด๋ถ ์ฝ๋ ์ฃผ๋ณ์ ์คํ ํ๋ ์ ๋ณ๊ฒฝ์ ๋ฐฉ์งํฉ๋๋ค.
-mdivsi3_libfunc=name
32๋นํธ ๋ถํธ ์๋ ๋๋๊ธฐ์ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์์ ์ด๋ฆ์ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. name. ์ด
์ ์ฌ์ฉ๋ ์ด๋ฆ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ ํ and ์ธ๋ณด์ด์ค:์ฝ ๋ถํ ์ ๋ต, ๊ทธ๋ฆฌ๊ณ
์ปดํ์ผ๋ฌ๋ ์ฌ์ ํ ๋์ผํ ์ ๋ ฅ/์ถ๋ ฅ/ํด๋ก๋ฒ ๋ ์ง์คํฐ ์ธํธ๋ฅผ ์์ํฉ๋๋ค.
์ต์ ์ด ์์์ต๋๋ค.
-m๊ณ ์ ๋ฒ์=๋ ์ง์คํฐ ๋ฒ์
์ฃผ์ด์ง ๋ ์ง์คํฐ ๋ฒ์๋ฅผ ๊ณ ์ ๋ ์ง์คํฐ๋ก ์ทจ๊ธํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ณ ์ ๋ ์ง์คํฐ
๋ ์ง์คํฐ ํ ๋น์๊ฐ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ์ปค๋์ ์ปดํ์ผํ ๋ ์ ์ฉํฉ๋๋ค.
์ํธ. ๋ ์ง์คํฐ ๋ฒ์๋ ๋์๋ก ๊ตฌ๋ถ๋ ๋ ๊ฐ์ ๋ ์ง์คํฐ๋ก ์ง์ ๋ฉ๋๋ค. ๋ค์์
๋ ์ง์คํฐ ๋ฒ์๋ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ์ง์ ํ ์ ์์ต๋๋ค.
-mindexed ์ฃผ์ ์ง์
SHmedia32/SHcompact์ ๋ํด ์ธ๋ฑ์ค ์ฃผ์ ์ง์ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํฉ๋๋ค. ์ด๊ฒ์ ๋จ์ง
ํ๋์จ์ด ๋ฐ/๋๋ OS๊ฐ ์ธ๋ฑ์ฑ๋ 32๋นํธ ๋ฉ์ด๋ผ์ด๋ ์๋ฏธ ์ฒด๊ณ๋ฅผ ๊ตฌํํ๋ ๊ฒฝ์ฐ ์์ ํฉ๋๋ค.
์ฃผ์ ์ง์ ๋ชจ๋. ์ํคํ ์ฒ๋ฅผ ํตํด 64๋นํธ ํ๋ก์ธ์๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
OS๊ฐ 32๋นํธ ์ฃผ์ ์ง์ ์ ์ป๋ ๋ฐ ์ฌ์ฉํ ์ ์์ง๋ง ํ์ฌ ํ๋์จ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ MMU
๊ตฌํ์ ์ธ๋ฑ์ฑ๋ ์ฃผ์ ์ง์ ๋ชจ๋๋ฅผ ์์ ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ์ด ๋ฐฉ๋ฒ ๋๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ง์ํฉ๋๋ค.
32๋นํธ ABI์์ ์ฌ์ฉํ๋ ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ -mno ์ธ๋ฑ์ค ์ฃผ์ ์ง์ .
-mgettr๋น์ฉ=๋ฒํธ
"gettr" ๋ช ๋ น์ ๋ํด ๊ฐ์ ํ ๋น์ฉ์ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. ๋ฒํธ. ๊ธฐ๋ณธ๊ฐ์ 2์ ๋๋ค.
-mpt ๊ณ ์ ์ ํจํ์ง ์์ผ๋ฉด 100์ ๋๋ค.
-mpt ๊ณ ์
"pt*" ๋ช ๋ น์ด๊ฐ ํธ๋ฉ๋์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋์ ์ค์ผ์ค๋ง๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๊ทธ๋ฌ๋ ํ์ฌ ํ๋์จ์ด์์๋ ์์ ํ์ง ์์ต๋๋ค. ํ์ฌ ์ํคํ ์ฒ ์ ์์ ๋ฐ๋ฅด๋ฉด
"ptabs" ๋ฐ "ptrel"์ ๋์ anded๊ฐ 3์ผ ๋ ํธ๋ฉ๋ฉ๋๋ค.
์ฌ์ ์ ์ด๋ฌํ ์ง์นจ์ ์์ฝํ๋ ๊ฒ์ด ์์ ํ์ง ์๊ฒ ๋ง๋๋ ์๋ํ์ง ์์ ์ํฅ
๋ถ๊ธฐํ๊ฑฐ๋ ๋ฃจํ์์ ๋์ด์ฌ๋ฆฝ๋๋ค. ์๋ฅผ ๋ค์ด, "__do_global_ctors"๋
libgcc ํ๋ก๊ทธ๋จ ์์ ์ ์์ฑ์๋ฅผ ์คํํ๊ณ ๋ค์๊ณผ ๊ฐ์ ๋ชฉ๋ก์ ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
-1๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ์ด๋ -mpt ๊ณ ์ ์ต์ , "ptabs"๋ ํ ์คํธ ์ ์ ์ํ๋ฉ๋๋ค.
๋ฐ๋ -1. ์ฆ, ๋ชจ๋ ์์ฑ์๊ฐ ์กฐ๊ธ ๋ ๋น ๋ฅด๊ฒ ์คํ๋์ง๋ง
๋ฃจํ๊ฐ ๋ชฉ๋ก์ ๋์ ์ค๋ฉด "ptabs"๊ฐ -1์ ๋ก๋ํ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ด ์ถฉ๋ํฉ๋๋ค.
๋์ ๋ ์ง์คํฐ.
์ด ์ต์ ์ ํ์ฌ ์ํคํ ์ฒ๋ฅผ ๊ตฌํํ๋ ๋ชจ๋ ํ๋์จ์ด์ ์์ ํ์ง ์๊ธฐ ๋๋ฌธ์
์ฌ์, ๊ธฐ๋ณธ๊ฐ์ -mno-pt ๊ณ ์ . ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์๋ ํ
-mgettr๋น์ฉ, -mno-pt ๊ณ ์ ๋ํ ์๋ฏธ -mgtrcost=100; ์ด๊ฒ์ ๋ฑ๋ก์ ๋ฐฉํดํฉ๋๋ค
์ผ๋ฐ ์ ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋์ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ ๋นํฉ๋๋ค.
-์ต์ ์ ํจ ๊ธฐํธ
๊ธฐํธ๊ฐ ์ ํจํ์ง ์์ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ปดํ์ผ๋ฌ์์ ์์ฑํ ์ผ๋ฐ ํจ์ ๊ธฐํธ
"movi"/"shori"/"ptabs" ๋๋ "movi"/"shori"/"ptrel"๋ก ๋ก๋ํ๋ ๋ฐ ํญ์ ์ ํจํ์ง๋ง
์ด์ ๋ธ๋ฌ ๋ฐ/๋๋ ๋ง์ปค ํธ๋ฆญ์ ์ฌ์ฉํ๋ฉด
"ptabs" ๋๋ "ptrel"์ ์ฌ์ฉํ์ฌ ํธ๋ฉํฉ๋๋ค. ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค. -mno-pt ๊ณ ์ ์
ํจ๊ณผ. ๊ธฐ๋ณธ ๋ธ๋ก ๊ฐ CSE, ํธ์ด์คํ ๋ฐ ๋๋ถ๋ถ์ ์ฌ๋ณผ ์ค์ผ์ค๋ง์ ๋ฐฉ์งํฉ๋๋ค.
์๋ฉ. ๊ธฐ๋ณธ๊ฐ์ -mno-๋ฌดํจ ๊ธฐํธ.
-mbranch ๋น์ฉ=NUM
์ทจํ๋ค NUM ๋ถ๊ธฐ ๋ช ๋ น์ ๋ํ ๋น์ฉ์ด ๋ฉ๋๋ค. ์ซ์๊ฐ ๋์์๋ก ์ปดํ์ผ๋ฌ๊ฐ
๊ฐ๋ฅํ๋ฉด ๋ ๋ง์ ๋ถ๊ธฐ ์๋ ์ฝ๋๋ฅผ ์์ฑํ์ญ์์ค. ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๊ฐ์
์ปดํ์ผ๋๋ ํ๋ก์ธ์ ์ ํ์ ๋ฐ๋ผ ์ ํ๋ฉ๋๋ค.
-mzdc๋ถ๊ธฐ
-mno-zdc๋ธ๋์น
์ ๋ก ๋ณ์ ์กฐ๊ฑด ๋ถ๊ธฐ ๋ช ๋ น์ด "bt" ๋ฐ
"bf"๋ ๋น ๋ฆ ๋๋ค. ๋ง์ฝ์ -mzdc๋ถ๊ธฐ ๊ฐ ์ง์ ๋๋ฉด ์ปดํ์ผ๋ฌ๋ XNUMX์ ์ ํธํ๋ ค๊ณ ์๋ํฉ๋๋ค.
๋ณ์ ๋ถ๊ธฐ ์ฝ๋ ์ํ์ค. ์ด๊ฒ์ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
SH4 ๋ฐ SH4A์ฉ. ๋ค์์ ์ง์ ํ์ฌ ๋ช ์์ ์ผ๋ก ๋นํ์ฑํํ ์ ์์ต๋๋ค. -mno-zdc๋ธ๋์น.
-mcbranchdi
"cbranchdi4" ๋ช ๋ น ํจํด์ ํ์ฑํํฉ๋๋ค.
-mcmpeqdi
๊ฒฝ์ฐ์๋ "cmpeqdi_t" ๋ช ๋ น ํจํด์ ๋ด๋ณด๋ ๋๋ค. -mcbranchdi ์ ํจํฉ๋๋ค.
-๋จธํจ์ฆ๋-๋งค๋
-mno-์ตํฉ-๋งค๋
๋ถ๋ ์์์ ๊ณฑํ๊ธฐ ๋ฐ ๋์ ์ ์ฌ์ฉ(์ฌ์ฉํ์ง ์์)ํ๋ ์ฝ๋ ์์ฑ
์ง์นจ. ์ด๋ฌํ ๋ช ๋ น์ด๋ ํ๋์จ์ด ๋ถ๋ ์์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
์ฌ์ฉ. ๊ธฐ๊ณ ์์กด -๋จธํจ์ฆ๋-๋งค๋ ์ด์ ์ต์ ์ด ์์คํ ์ ๋งคํ๋ฉ๋๋ค.
๋ ๋ฆฝ -ffp-๊ณ์ฝ=๋น ๋ฅธ ์ต์ ๋ฐ -mno-์ตํฉ-๋งค๋ ๋งคํ๋ฉ๋๋ค
-ffp-๊ณ์ฝ=ํด์ .
-mfsca
-mno-fsca
์ปดํ์ผ๋ฌ๊ฐ ์ฌ์ธ ๋ฐ ์ฝ์ฌ์ธ์ ๋ํด "fsca" ๋ช ๋ น์ ๋ด๋ณด๋ด๋๋ก ํ์ฉํ๊ฑฐ๋ ํ์ฉํ์ง ์์ต๋๋ค.
๊ทผ์ฌ์น. ์ต์ "-mfsca"๋ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
"-funsafe-math-optimizations". ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
SH4A. "-mno-fsca"๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ฌ์ธ ๋ฐ ์ฝ์ฌ์ธ ๊ทผ์ฌ๊ฐ ๋นํ์ฑํ๋ฉ๋๋ค.
"-funsafe-math-optimizations"๊ฐ ์ ์ฉ๋ฉ๋๋ค.
-mfsrra
-mno-fsrra
์ปดํ์ผ๋ฌ๊ฐ ์ญ์ ๊ณฑ์ ๋ํด "fsrra" ๋ช ๋ น์ ๋ด๋ณด๋ด๋๋ก ํ์ฉํ๊ฑฐ๋ ํ์ฉํ์ง ์์ต๋๋ค.
๋ฃจํธ ๊ทผ์ฌ. ์ต์ "-mfsrra"๋ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
"-funsafe-math-optimizations" ๋ฐ "-ffinite-math-only". ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
SH4A์ฉ ์ฝ๋ ์์ฑ. "-mno-fsrra"๋ฅผ ์ฌ์ฉํ๋ฉด ์ญ ์ ๊ณฑ๊ทผ์ด ๋นํ์ฑํ๋ฉ๋๋ค.
"-funsafe-math-optimizations" ๋ฐ "-ffinite-math-only"๊ฐ
ํจ๊ณผ.
-์ฒ-cmove
์กฐ๊ฑด๋ถ ์ด๋ ๋ช ๋ น์ ๋ํด ์ ๋ก ๋ณ์ ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ๋ฅผ ์ ํธํฉ๋๋ค.
ํจํด. ์ด๋ก ์ธํด SH4 ํ๋ก์ธ์์์ ๋ ๋น ๋ฅธ ์ฝ๋๊ฐ ์์ฑ๋ ์ ์์ต๋๋ค.
์๋ผ๋ฆฌ์ค 2 ์ต์
Bowman์ -m ์ต์ ์ Solaris 2์์ ์ง์๋ฉ๋๋ค.
-๋ถ์ํ ํ ์คํธ
-๋ถ์ํ ํ ์คํธ, ์ด์ธ์ ์ฌ์ฉ -๊ณต์ , ์ปดํ์ผ๋ฌ์๊ฒ ์ ๋ฌํ์ง ์๋๋ก ์ง์ํฉ๋๋ค. -z ๋ณธ๋ฌธ ์
๊ณต์ ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ ๋ ๋ง์ปค. ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์์น๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ข ์ ์ฝ๋๋ฅผ ๊ณต์ ๊ฐ์ฒด๋ก.
-๋ถ์ํ ํ ์คํธ "์ฌ๋ฐฐ์น๋ ํ ๋น ๊ฐ๋ฅํ์ง๋ง ์ฐ๊ธฐ ๋ถ๊ฐ๋ฅ์ ๋ํด ์ ์ง๋ฉ๋๋ค.
์น์ " ๋ง์ปค ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์ํ ์ฌ๋ฐฐ์น๋ copy-on-
์ฐ๊ธฐ ๋ฐ ๊ณต์ ๊ฐ์ฒด๋ ์ค์ ๋ก ํ๋ก์ธ์ค ๊ฐ์ ๊ณต์ ๋์ง ์์ต๋๋ค. ๋์ ์
์ฌ์ฉ -๋ถ์ํ ํ ์คํธ, ๋ชจ๋ ์์ค ์ฝ๋๋ฅผ ๋ค์์ผ๋ก ์ปดํ์ผํด์ผ ํฉ๋๋ค. -fpic or -fPIC.
์ด๋ฌํ ์ค์์น๋ Solaris 2์์ ์์ ์ถ๊ฐ๋ก ์ง์๋ฉ๋๋ค.
-pthread
POSIX ์ค๋ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉํฐ์ค๋ ๋ฉ์ ๋ํ ์ง์์ ์ถ๊ฐํฉ๋๋ค. ์ด ์ต์ ์
์ ์ฒ๋ฆฌ๊ธฐ์ ๋ง์ปค ๋ชจ๋์ ๋ํ ํ๋๊ทธ์ ๋๋ค. ์ด ์ต์ ์ ์ค๋ ๋์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
์ปดํ์ผ๋ฌ ๋๋ ์ปดํ์ผ๋ฌ์ ํจ๊ป ์ ๊ณต๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํด ์์ฑ๋ ๊ฐ์ฒด ์ฝ๋์ ์์ ์ฑ.
-pthread
์ด๊ฒ์ ๋์์ด์ ๋๋ค -pthread.
SPARC ์ต์
Bowman์ -m ์ต์ ์ SPARC์์ ์ง์๋ฉ๋๋ค.
-mno-app-regs
-map-regs
์ง์ -map-regs ์ ์ญ ๋ ์ง์คํฐ 2~4๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค.
SPARC SVR4 ABI๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ์ผ๋ก ์์ฝ๋์ด ์์ต๋๋ค. ์ ์ญ ๋ ์ง์คํฐ 1๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ ์ ์ญ
๋ ์ง์คํฐ 2์์ 4๋ ๋ค์์ผ๋ก ํด๋ก๋ฒ๋๋ ํ ๋น ๊ฐ๋ฅํ ๋ ์ง์คํฐ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
ํจ์ ํธ์ถ. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
์ผ๋ถ ์ฑ๋ฅ ์์ค์ ๊ฐ์ํ๊ณ ์์ ํ SVR4 ABI๋ฅผ ์ค์ํ๋ ค๋ฉด ๋ค์์ ์ง์ ํ์ญ์์ค.
-mno-app-regs. ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์คํ ์ํํธ์จ์ด๋ฅผ ์ปดํ์ผํด์ผ ํฉ๋๋ค.
-mํ๋ซ
-mno-ํ๋ซ
์ -mํ๋ซ, ์ปดํ์ผ๋ฌ๋ ์ ์ฅ/๋ณต์ ๋ช ๋ น์ ์์ฑํ์ง ์๊ณ
"ํ๋ซ" ๋๋ ๋จ์ผ ๋ ์ง์คํฐ ์ฐฝ ๋ชจ๋ธ. ์ด ๋ชจ๋ธ์ ์ผ๋ฐ
์๋์ฐ ๋ชจ๋ธ์ ๋ฑ๋กํฉ๋๋ค. ๋ก์ปฌ ๋ ์ง์คํฐ์ ์ ๋ ฅ ๋ ์ง์คํฐ(0--5)๋ ์ฌ์ ํ
"ํธ์ถ ์ ์ฅ" ๋ ์ง์คํฐ๋ก ์ทจ๊ธ๋๋ฉฐ ํ์์ ๋ฐ๋ผ ์คํ์ ์ ์ฅ๋ฉ๋๋ค.
์ -mno-ํ๋ซ (๊ธฐ๋ณธ๊ฐ), ์ปดํ์ผ๋ฌ๋ ์ ์ฅ/๋ณต์ ๋ช ๋ น์ ์์ฑํฉ๋๋ค(์์ธ
๋ฆฌํ ํจ์์ ๊ฒฝ์ฐ). ์ด๊ฒ์ ์ ์ ์๋ ๋ชจ๋์ ๋๋ค.
-mfpu
-mhard-float
๋ถ๋ ์์์ ๋ช ๋ น์ด๊ฐ ํฌํจ๋ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mno-fpu
-msoft-float
๋ถ๋ ์์์ ์ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ์ด ํฌํจ๋ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ๊ฒฝ๊ณ : ํ์
๋ชจ๋ SPARC ๋์์ ๋ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์ค์
๊ธฐ๊ณ์ ์ผ๋ฐ์ ์ธ C ์ปดํ์ผ๋ฌ๊ฐ ์ฌ์ฉ๋์ง๋ง ์ด๊ฒ์ ๊ต์ฐจ์์ ์ง์ ์ํ๋ ์ ์์ต๋๋ค.
ํธ์ง. ์ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ค์ค๋ก ์ค๋นํด์ผ ํฉ๋๋ค.
ํฌ๋ก์ค ์ปดํ์ผ์ ์ํ ํจ์ ์๋ฒ ๋๋ ํ๊ฒ ์คํํฌ-*-์์ and ์คํํด๋ผ์ดํธ-*-*
์ํํธ์จ์ด ๋ถ๋ ์์์ ์ง์์ ์ ๊ณตํ์ญ์์ค.
-msoft-float ์ถ๋ ฅ ํ์ผ์ ํธ์ถ ๊ท์น์ ๋ณ๊ฒฝํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ทธ๊ฒ์ ๋จ์ง
์ปดํ์ผํ๋ฉด ์ ์ฉํฉ๋๋ค. ๋ชจ๋ ์ด ์ต์ ์ด ์๋ ํ๋ก๊ทธ๋จ์ ํนํ, ๋น์ ์
ํธ์งํ๋ค libgcc.a, GCC์ ํจ๊ป ์ ๊ณต๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, -msoft-float ์ด๋ฅผ ์ํด
์๋ํฉ๋๋ค.
-mhard-quad-float
์ฟผ๋ ์๋(long double) ๋ถ๋ ์์์ ๋ช ๋ น์ด๋ฅผ ํฌํจํ๋ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค.
-msoft-์ฟผ๋-ํ๋กํธ
์ฟผ๋ ์๋(long double) ๋ถ๋ ์์์ ์ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ์ ํฌํจํ๋ ์ถ๋ ฅ ์์ฑ
์ง์นจ. ํธ์ถ๋ ๊ธฐ๋ฅ์ SPARC ABI์ ์ง์ ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๊ฒ์ด
ํ๋ง.
์ด ๊ธ์ ์ฐ๋ ์์ ์์ ํ๋์จ์ด๋ฅผ ์ง์ํ๋ SPARC ๊ตฌํ์ ์์ต๋๋ค.
์ฟผ๋ ์๋ ๋ถ๋ ์์์ ๋ช ๋ น์ด. ๊ทธ๋ค์ ๋ชจ๋ ๋ค์ ์ค ํ๋์ ๋ํ ํธ๋ฉ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ํธ์ถํฉ๋๋ค.
์ด๋ฌํ ๋ช ๋ น์ ์ํํ๋ฉด ํธ๋ฉ ์ฒ๋ฆฌ๊ธฐ๊ฐ ๋ช ๋ น์ ํจ๊ณผ๋ฅผ ์๋ฎฌ๋ ์ดํธํฉ๋๋ค.
ํธ๋ฉ ํธ๋ค๋ฌ ์ค๋ฒํค๋๋ก ์ธํด ABI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋๋ฆฝ๋๋ค.
๋ฃจํด. ๊ทธ๋์ -msoft-์ฟผ๋-ํ๋กํธ ์ต์ ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mno-unaligned-double
-munaligned-๋๋ธ
double์๋ 8๋ฐ์ดํธ ์ ๋ ฌ์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
์ -munaligned-๋๋ธ, GCC๋ double์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง 8๋ฐ์ดํธ ์ ๋ ฌ์ ๊ฐ๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋ค๋ฅธ ์ ํ์ ํฌํจ๋๊ฑฐ๋ ์ ๋ ์ฃผ์๊ฐ ์๋ ๊ฒฝ์ฐ. ๊ทธ๋ ์ง ์์ผ๋ฉด
4๋ฐ์ดํธ ์ ๋ ฌ์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด ์ต์ ์ ์ง์ ํ๋ฉด ์ผ๋ถ ํฌ๊ท
๋ค๋ฅธ ์ปดํ์ผ๋ฌ์ ์ํด ์์ฑ๋ ์ฝ๋์์ ํธํ์ฑ ๋ฌธ์ . ๊ธฐ๋ณธ๊ฐ์ด ์๋๋๋ค.
ํนํ ๋ถ๋ ์์์ ์ฝ๋์ ๊ฒฝ์ฐ ์ฑ๋ฅ ์์ค์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
-muser ๋ชจ๋
-mno-์ฌ์ฉ์ ๋ชจ๋
๊ฐ๋ ์ ๋ชจ๋์์๋ง ์คํํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ ๋ค์์ ๋ํด์๋ง ๊ด๋ จ์ด ์์ต๋๋ค.
LEON3 ํ๋ก์ธ์์ ๋ํด ๋ด๋ณด๋ธ "casa" ๋ช ๋ น. ๊ธฐ๋ณธ๊ฐ์
-mno-์ฌ์ฉ์ ๋ชจ๋.
-mno-๋น ๋ฅธ ๊ตฌ์กฐ
-mfaster-๊ตฌ์กฐ์ฒด
์ -mfaster-๊ตฌ์กฐ์ฒด, ์ปดํ์ผ๋ฌ๋ ๊ตฌ์กฐ์ 8๋ฐ์ดํธ๊ฐ ์์ด์ผ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์กฐ์ . ์ด๋ฅผ ํตํด ์ฌ๋ณธ์ ๋ํด "ldd" ๋ฐ "std" ๋ช ๋ น์ด ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ตฌ์กฐ ํ ๋น์์ "ld" ๋ฐ "st" ์์ ๋ ๋ฐฐ ๋์ . ๊ทธ๋ฌ๋, ๊ทธ
์ด ๋ณ๊ฒฝ๋ ์ ๋ ฌ์ ์ฌ์ฉํ๋ฉด SPARC ABI๋ฅผ ์ง์ ์๋ฐํฉ๋๋ค. ๋ฐ๋ผ์ ์๋๋
๊ฐ๋ฐ์๊ฐ ๊ฒฐ๊ณผ ์ฝ๋๊ฐ ๋ค์๊ณผ ๊ฐ๋ค๊ณ ์ธ์ ํ๋ ๋์์๋ง ์ฌ์ฉ
ABI์ ๊ท์น๊ณผ ์ง์ ์ ์ผ๋ก ์ผ์นํ์ง ์์ต๋๋ค.
-mcpu =CPU_์ ํ
๋ช ๋ น์ด ์ธํธ, ๋ ์ง์คํฐ ์ธํธ ๋ฐ ๋ช ๋ น์ด ์ค์ผ์ค๋ง ๋งค๊ฐ๋ณ์ ์ค์
๊ธฐ๊ณ ์ ํ CPU_์ ํ. ์ง์๋๋ ๊ฐ CPU_์ ํ are v7, ์ฌ์ดํ๋ฌ์ค, v8, ์ด์,
ํ์ดํผ์คํํฌ, ๋ ์จ, leon3, ๋ ์จ3v7, ์คํํด๋ผ์ดํธ, f930, f934, ์คํํด๋ผ์ดํธ86x, ์คํํด๋ ,
tsc701, v9, ๊ทน์ด๋จํ, ๊ทน์ด๋จํ3, ๋์ด์๊ฐ๋ผ, ๋์ด์๊ฐ๋ผ 2, ๋์ด์๊ฐ๋ผ 3 and ๋์ด์๊ฐ๋ผ 4.
๊ธฐ๋ณธ Solaris ๋ฐ GNU/Linux ๋๊ตฌ ๋ชจ์๋ ๊ฐ์ ์ง์ํฉ๋๋ค. ์ถ์ , ์ ํ
ํธ์คํธ ํ๋ก์ธ์๋ฅผ ์ํ ์ต๊ณ ์ ์ํคํ ์ฒ ์ต์ ์ ๋๋ค. -mcpu=๋ค์ดํฐ๋ธ ๊ฒฝ์ฐ์๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค
GCC๊ฐ ํ๋ก์ธ์๋ฅผ ์ธ์ํ์ง ๋ชปํฉ๋๋ค.
๊ธฐ๋ณธ ๋ช ๋ น์ด ์ค์ผ์ค๋ง ๋งค๊ฐ๋ณ์๋ ๋ค์์ ์ ํํ๋ ๊ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
๊ตฌํ์ด ์๋๋ผ ์ํคํ ์ฒ์ ๋๋ค. ์ด๊ฒ๋ค์ v7, v8, ์คํํด๋ผ์ดํธ, ์คํํด๋ , v9.
๋ค์์ ์ง์๋๋ ๊ฐ ์ํคํ ์ฒ ๋ฐ ์ง์๋๋ ๊ตฌํ ๋ชฉ๋ก์ ๋๋ค.
v7 ์ฌ์ดํ๋ฌ์ค, leon3v7
v8 ์ํผ์คํํฌ, ํ์ดํผ์คํํฌ, ๋ ์จ, ๋ ์จ3
์คํํด๋ผ์ดํธ
f930, f934, ์คํํด๋ผ์ดํธ86x
์คํํด๋
tsc701
v9 ultrasparc, ultrasparc3, โโ๋์ด์๊ฐ๋ผ, ๋์ด์๊ฐ๋ผ2, ๋์ด์๊ฐ๋ผ3, ๋์ด์๊ฐ๋ผ4
๊ธฐ๋ณธ์ ์ผ๋ก(๋ฌ๋ฆฌ ๊ตฌ์ฑํ์ง ์๋ ํ) GCC๋ V7 ๋ณํ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
SPARC ์ํคํ ์ฒ. ์ ํจ๊ป -mcpu=์ฌ์ดํ๋ฌ์ค, ์ปดํ์ผ๋ฌ๋ ์ถ๊ฐ๋ก ์ต์ ํํฉ๋๋ค.
SPARCStation/SPARCServer 7xx ์๋ฆฌ์ฆ์์ ์ฌ์ฉ๋๋ Cypress CY602C3 ์นฉ. ์ด๊ฒ์
๋ํ ์ด์ SPARCStation 1, 2, IPX ๋ฑ์ ์ ํฉํฉ๋๋ค.
์ -mcpu=v8, GCC๋ SPARC ์ํคํ ์ฒ์ V8 ๋ณํ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. NS
V7 ์ฝ๋์์ ์ ์ผํ ์ฐจ์ด์ ์ ์ปดํ์ผ๋ฌ๊ฐ ์ ์ ๊ณฑํ๊ธฐ ๋ฐ
SPARC-V8์๋ ์์ง๋ง SPARC-V7์๋ ์๋ ์ ์ ๋๋๊ธฐ ๋ช ๋ น์ด. ์ ํจ๊ป
-mcpu=์ํผ์คํํฌ, ์ปดํ์ผ๋ฌ๋ SuperSPARC ์นฉ์ ๋ํด ์ถ๊ฐ๋ก ์ต์ ํํฉ๋๋ค.
SPARCStation 10, 1000 ๋ฐ 2000 ์๋ฆฌ์ฆ์์ ์ฌ์ฉ๋ฉ๋๋ค.
์ -mcpu=์คํํด๋ผ์ดํธ, GCC๋ SPARC์ SPARClite ๋ณํ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๊ฑด์ถํ. ์ด๊ฒ์ ์ ์ ๊ณฑํ๊ธฐ, ์ ์ ๋๋๊ธฐ ๋จ๊ณ ๋ฐ ์ค์บ("ffs")์ ์ถ๊ฐํฉ๋๋ค.
SPARClite์๋ ์์ง๋ง SPARC-V7์๋ ์๋ ๋ช ๋ น์ด. ์ ํจ๊ป -mcpu=f930Walk Through California ํ๋ก๊ทธ๋จ,
์ปดํ์ผ๋ฌ๋ ์๋ Fujitsu MB86930 ์นฉ์ ๋ํด ์ถ๊ฐ๋ก ์ต์ ํํฉ๋๋ค.
FPU๊ฐ ์๋ SPARClite. ์ ํจ๊ป -mcpu=f934, ์ปดํ์ผ๋ฌ๋ ์ถ๊ฐ๋ก ์ต์ ํํฉ๋๋ค.
FPU๊ฐ ์๋ ์ต์ SPARClite์ธ Fujitsu MB86934 ์นฉ.
์ -mcpu=์คํํด๋ , GCC๋ SPARC์ SPARClet ๋ณํ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๊ฑด์ถํ. ์ด๊ฒ์ ์ ์ ๊ณฑํ๊ธฐ, ๊ณฑํ๊ธฐ/๋์ ํ๊ธฐ, ์ ์ ๋๋๊ธฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
SPARClet์๋ ์์ง๋ง SPARC-V7์๋ ์๋ ๋จ๊ณ ๋ฐ ์ค์บ("ffs") ๋ช ๋ น. ์ ํจ๊ป
-mcpu=tsc701, ์ปดํ์ผ๋ฌ๋ TEMIC SPARClet ์นฉ์ ๋ํด ์ถ๊ฐ๋ก ์ต์ ํํฉ๋๋ค.
์ -mcpu=v9, GCC๋ SPARC ์ํคํ ์ฒ์ V9 ๋ณํ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ
64๋นํธ ์ ์ ๋ฐ ๋ถ๋ ์์์ ์ด๋ ๋ช ๋ น์ด ์ถ๊ฐ, 3๊ฐ์ ์ถ๊ฐ ๋ถ๋ ์์์
์กฐ๊ฑด ์ฝ๋ ๋ ์ง์คํฐ ๋ฐ ์กฐ๊ฑด๋ถ ์ด๋ ๋ช ๋ น. ์ ํจ๊ป -mcpu=์ธํธ๋ผ์คํํฌ,
์ปดํ์ผ๋ฌ๋ Sun UltraSPARC I/II/IIi ์นฉ์ ๋ํด ์ถ๊ฐ๋ก ์ต์ ํํฉ๋๋ค. ์ ํจ๊ป
-mcpu=ultraparc3, ์ปดํ์ผ๋ฌ๋ Sun UltraSPARC์ ๋ํด ์ถ๊ฐ๋ก ์ต์ ํํฉ๋๋ค.
III/III+/IIIi/IIIi+/IV/IV+ ์นฉ. ์ ํจ๊ป -mcpu=๋์ด์๊ฐ๋ผ, ์ปดํ์ผ๋ฌ๋ ์ถ๊ฐ๋ก
Sun UltraSPARC T1 ์นฉ์ ์ต์ ํํฉ๋๋ค. ์ ํจ๊ป -mcpu=๋์ด์๊ฐ๋ผ2, ์ปดํ์ผ๋ฌ
Sun UltraSPARC T2 ์นฉ์ ๋ํด ์ถ๊ฐ๋ก ์ต์ ํํฉ๋๋ค. ์ ํจ๊ป -mcpu=๋์ด์๊ฐ๋ผ3Walk Through California ํ๋ก๊ทธ๋จ,
์ปดํ์ผ๋ฌ๋ Sun UltraSPARC T3 ์นฉ์ ๋ํด ์ถ๊ฐ๋ก ์ต์ ํํฉ๋๋ค. ์ ํจ๊ป -mcpu=๋์ด์๊ฐ๋ผ4,
์ปดํ์ผ๋ฌ๋ Sun UltraSPARC T4 ์นฉ์ ๋ํด ์ถ๊ฐ๋ก ์ต์ ํํฉ๋๋ค.
-mtune=CPU_์ ํ
๋จธ์ ์ ํ์ ๋ํ ๋ช ๋ น์ด ์ค์ผ์ค๋ง ๋งค๊ฐ๋ณ์ ์ค์ CPU_์ ํ, ๊ทธ๋ฌ๋ ์ค์ ํ์ง ๋ง์ญ์์ค
์ต์ ์ ๋ํ๋ด๋ ๋ช ๋ น์ด ์ธํธ ๋๋ ๋ ์ง์คํฐ ์ธํธ -mcpu =CPU_์ ํ ์์ต๋๋ค.
์ ๋ํ ๋์ผํ ๊ฐ -mcpu =CPU_์ ํ ์ฌ์ฉํ ์ ์์ต๋๋ค -mtune=CPU_์ ํ, ๊ทธ๋ฌ๋ ์ ์ผํ
์ ์ฉํ ๊ฐ์ ํน์ CPU ๊ตฌํ์ ์ ํํ๋ ๊ฐ์ ๋๋ค. ์ฌ๋๋ค์
์ฌ์ดํ๋ฌ์ค, ์ด์, ํ์ดํผ์คํํฌ, ๋ ์จ, leon3, ๋ ์จ3v7, f930, f934, ์คํํด๋ผ์ดํธ86x,
tsc701, ๊ทน์ด๋จํ, ๊ทน์ด๋จํ3, ๋์ด์๊ฐ๋ผ, ๋์ด์๊ฐ๋ผ 2, ๋์ด์๊ฐ๋ผ 3 and ๋์ด์๊ฐ๋ผ 4. ๊ณผ
๊ธฐ๋ณธ Solaris ๋ฐ GNU/Linux ๋๊ตฌ ๋ชจ์, ์ถ์ ๋ํ ์ฌ์ฉ๋ ์์๋ค.
-mv8plus
-mno-v8plus
์ -mv8plus, GCC๋ SPARC-V8+ ABI์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. V8๊ณผ์ ์ฐจ์ด์
ABI๋ ์ ์ญ ๋ฐ ์ถ๋ ฅ ๋ ์ง์คํฐ๊ฐ 64๋นํธ ๋๋น๋ก ๊ฐ์ฃผ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ํ์ฑํ๋์ด ์์ต๋๋ค
๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ SPARC-V32 ํ๋ก์ธ์์ ๋ํด 9๋นํธ ๋ชจ๋์ Solaris.
-mvis
-mno-vis
์ -mvis, GCC๋ UltraSPARC Visual์ ํ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๋ช ๋ น์ด ์ธํธ ํ์ฅ. ๊ธฐ๋ณธ๊ฐ์ -mno-vis.
-mvis2
-mno-vis2
์ -mvis2, GCC๋ UltraSPARC ๋ฒ์ 2.0์ ํ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๋น์ฃผ์ผ ๋ช ๋ น์ด ์ธํธ ํ์ฅ. ๊ธฐ๋ณธ๊ฐ์ -mvis2 CPU๋ฅผ ํ๊ฒํ ํ ๋
UltraSPARC-III ์ด์๊ณผ ๊ฐ์ ๋ช ๋ น์ ์ง์ํฉ๋๋ค. ํ๊ฒฝ -mvis2 ๋ํ
์ธํธ -mvis.
-mvis3
-mno-vis3
์ -mvis3, GCC๋ UltraSPARC ๋ฒ์ 3.0์ ํ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๋น์ฃผ์ผ ๋ช ๋ น์ด ์ธํธ ํ์ฅ. ๊ธฐ๋ณธ๊ฐ์ -mvis3 CPU๋ฅผ ํ๊ฒํ ํ ๋
niagara-3 ์ด์๊ณผ ๊ฐ์ ์ง์นจ์ ์ง์ํฉ๋๋ค. ํ๊ฒฝ -mvis3 ๋ํ ์ธํธ
-mvis2 and -mvis.
-mcbcond
-mno-cbcond
์ -mcbcond, GCC๋ ๋น๊ต ๋ฐ โโ๋ถ๊ธฐ๋ฅผ ํ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
Sparc Architecture 2011์ ์ ์๋ ์ง์นจ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -mcbcond ์ธ์
niagara-4 ์ด์๊ณผ ๊ฐ์ด ์ด๋ฌํ ๋ช ๋ น์ ์ง์ํ๋ CPU๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค.
-mpoc
-mno-popc
์ -mpoc, GCC๋ UltraSPARC ๋ชจ์ง๋จ์ ํ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๊ณ์ฐ ์ง์. ๊ธฐ๋ณธ๊ฐ์ -mpoc ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ง์ํ๋ CPU๋ฅผ ๋์์ผ๋ก ํ ๋
Niagara-2 ์ด์๊ณผ ๊ฐ์ ์ง์นจ.
-mfmaf
-mno-fmaf
์ -mfmaf, GCC๋ UltraSPARC Fused Multiply-
๋ถ๋ ์์์ ํ์ฅ์ ์ถ๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -mfmaf CPU๋ฅผ ํ๊ฒํ ํ ๋
Niagara-3 ์ด์๊ณผ ๊ฐ์ ์ง์นจ์ ์ง์ํฉ๋๋ค.
-mfix-at697f
Atmel AT697F ํ๋ก์ธ์์ ๋จ์ผ ์ ์คํ์ ๋ํด ๋ฌธ์ํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ์ฑํํฉ๋๋ค.
(AT13E ํ๋ก์ธ์์ ์ ์คํ #697์ ํด๋น).
-mfix-ut699
๋ถ๋ ์์์ ์ ์คํ ๋ฐ ๋ฐ์ดํฐ ์บ์์ ๋ํด ๋ฌธ์ํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ์ฑํํฉ๋๋ค.
UT699 ํ๋ก์ธ์์ ์ ์คํ๋ฅผ ๋ฌดํจํํฉ๋๋ค.
Bowman์ -m ์ต์ ์ 9๋นํธ์ SPARC-V64 ํ๋ก์ธ์์์ ์์ ์ถ๊ฐ๋ก ์ง์๋ฉ๋๋ค.
ํ๊ฒฝ :
-m32
-m64
32๋นํธ ๋๋ 64๋นํธ ํ๊ฒฝ์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. 32๋นํธ ํ๊ฒฝ์ int,
long ๋ฐ 32๋นํธ์ ๋ํ ํฌ์ธํฐ์ ๋๋ค. 64๋นํธ ํ๊ฒฝ์ int๋ฅผ 32๋นํธ๋ก ์ค์ ํ๊ณ long ๋ฐ
64๋นํธ์ ๋ํ ํฌ์ธํฐ.
-mc๋ชจ๋ธ=์ด๋
์ฝ๋ ๋ชจ๋ธ์ ๋ค์ ์ค ํ๋๋ก ์ค์ ํฉ๋๋ค.
๋ฉ๋ค๋ก
์ค๊ฐ/๋ฎ์ ์ฝ๋ ๋ชจ๋ธ: 64๋นํธ ์ฃผ์, ํ๋ก๊ทธ๋จ์ ๋ฎ์ 32๋นํธ๋ก ์ฐ๊ฒฐ๋์ด์ผ ํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋นํธ. ํ๋ก๊ทธ๋จ์ ์ ์ ์ผ๋ก ๋๋ ๋์ ์ผ๋ก ๋งํฌ๋ ์ ์์ต๋๋ค.
์ค๊ฐ
์ค๊ฐ/์ค๊ฐ ์ฝ๋ ๋ชจ๋ธ: 64๋นํธ ์ฃผ์, ํ๋ก๊ทธ๋จ์ ๋ฎ์
44๋นํธ ๋ฉ๋ชจ๋ฆฌ, ํ ์คํธ ๋ฐ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ์ ํฌ๊ธฐ๋ 2GB ๋ฏธ๋ง์ด์ด์ผ ํ๋ฉฐ
๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ๋ ํ ์คํธ ์ธ๊ทธ๋จผํธ์ 2GB ์ด๋ด์ ์์ด์ผ ํฉ๋๋ค.
๋ฉ๋ค๋
Medium/Anywhere ์ฝ๋ ๋ชจ๋ธ: 64๋นํธ ์ฃผ์, ํ๋ก๊ทธ๋จ์ ์ด๋์์๋ ๋งํฌ๋ ์ ์์
๋ฉ๋ชจ๋ฆฌ์์ ํ ์คํธ ๋ฐ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ์ ํฌ๊ธฐ๋ 2GB ๋ฏธ๋ง์ด์ด์ผ ํ๋ฉฐ ๋ฐ์ดํฐ๋
์ธ๊ทธ๋จผํธ๋ ํ ์คํธ ์ธ๊ทธ๋จผํธ์ 2GB ์ด๋ด์ ์์ด์ผ ํฉ๋๋ค.
์ ๋ฉ๋ค๋
์๋ฒ ๋๋ ์์คํ ์ ์ํ Medium/Anywhere ์ฝ๋ ๋ชจ๋ธ: 64๋นํธ ์ฃผ์, ํ ์คํธ
๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ๋ ํฌ๊ธฐ๊ฐ 2GB ๋ฏธ๋ง์ด์ด์ผ ํ๋ฉฐ ๋ ๋ค ๋ฉ๋ชจ๋ฆฌ์ ์๋ฌด ๊ณณ์์๋ ์์ํด์ผ ํฉ๋๋ค.
(๋งํฌ ์๊ฐ์ ๊ฒฐ์ ๋จ). ์ ์ญ ๋ ์ง์คํฐ %g4๋ ๋ฐ์ดํฐ์ ๊ธฐ์ค์ ๊ฐ๋ฆฌํต๋๋ค.
๋ถ์ . ํ๋ก๊ทธ๋จ์ ์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ PIC๋ ์ง์๋์ง ์์ต๋๋ค.
-๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ=๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ
ํ๋ก์ธ์์ ์ ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ ๋ค์ ์ค ํ๋๋ก ์ค์ ํฉ๋๋ค.
๋ํดํธ ๊ฐ
ํ๋ก์ธ์ ๋ฐ ์ด์ ์ฒด์ ์ ๊ธฐ๋ณธ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ ๋๋ค.
rmo ๋ฆด๋ ์ค ๋ฉ๋ชจ๋ฆฌ ์ค๋
pso ๋ถ๋ถ ์์ ์ฃผ๋ฌธ
tso ์ด ๋งค์ฅ ์ฃผ๋ฌธ
sc ์์ฐจ ์ผ๊ด์ฑ
์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ Sparc V9 ์ํคํ ์ฒ์ ๋ถ๋ก D์ ๊ณต์์ ์ผ๋ก ์ ์๋์ด ์์ต๋๋ค.
ํ๋ก์ธ์์ "PSTATE.MM" ํ๋์ ์ค์ ๋ ๋๋ก ์๋.
-mstack ๋ฐ์ด์ด์ค
-mno-์คํ-๋ฐ์ด์ด์ค
์ -mstack ๋ฐ์ด์ด์ค, GCC๋ ์คํ ํฌ์ธํฐ์ ํ๋ ์ ํฌ์ธํฐ(์๋ ๊ฒฝ์ฐ),
์คํ ํ๋ ์ ์ฐธ์กฐ๋ฅผ ๋ง๋ค ๋ ๋ค์ ์ถ๊ฐํด์ผ ํ๋ -2047๋งํผ ์คํ์ ๋ฉ๋๋ค. ์ด๊ฒ
64๋นํธ ๋ชจ๋์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ทธ๋ฌํ ์คํ์ ์ด ์กด์ฌํ์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
SPU ์ต์
Bowman์ -m ์ต์ ์ SPU์์ ์ง์๋ฉ๋๋ค.
-Mwarn-Reloc
-mererror-reloc
SPU์ฉ ๋ก๋๋ ๋์ ์ฌ๋ฐฐ์น๋ฅผ ์ฒ๋ฆฌํ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก GCC๋
๋์ ์ฌ๋ฐฐ์น๊ฐ ํ์ํ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. -mno-์ค๋ฅ-์ฌ๋ฐฐ์น
์ค๋ฅ๋ฅผ ๋นํ์ฑํํ๊ณ , -Mwarn-Reloc ๋์ ๊ฒฝ๊ณ ๋ฅผ ์์ฑํฉ๋๋ค.
-msafe-dma
-munsafe-dma
DMA๋ฅผ ์์ํ๊ฑฐ๋ ์๋ฃ๋ฅผ ํ ์คํธํ๋ ๋ช ๋ น์ ๋ค์์ผ๋ก ์ฌ์ ๋ ฌ๋์ด์๋ ์ ๋ฉ๋๋ค.
์ก์ธ์ค ์ค์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ ๋ฐ ์ ์ฅ๊ณผ ๊ด๋ จํ์ฌ ์ ํจ๊ป -munsafe-dma
๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค๋ฅผ ๋ณดํธํ๋ ค๋ฉด "ํ๋ฐ์ฑ" ํค์๋๋ฅผ ์ฌ์ฉํด์ผ ํ์ง๋ง
๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋ ๊ฒ์ผ๋ก ์๋ ค์ง ์ฅ์์ ๋นํจ์จ์ ์ธ ์ฝ๋. ๋งํฌ๋ณด๋ค
๋ฉ๋ชจ๋ฆฌ๊ฐ ํ๋ฐ์ฑ์ด๋ฏ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. -msafe-dma ์ปดํ์ผ๋ฌ์๊ฒ DMA๋ฅผ ์ฒ๋ฆฌํ๋๋ก ์ง์
๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ์ ์ผ๋ก ์ํฅ์ ๋ฏธ์น๋ ๋ช ๋ น.
-mbranch ํํธ
๊ธฐ๋ณธ์ ์ผ๋ก GCC๋ ํ์ดํ๋ผ์ธ ์ค๋จ์ ํผํ๊ธฐ ์ํด ๋ถ๊ธฐ ํํธ ๋ช ๋ น์ ์์ฑํฉ๋๋ค.
ํญ์ ๊ฐ์ ธ ๊ฐ๊ฑฐ๋ ์๋ง๋ ๊ฐ์ ธ๊ฐ ๊ฐ์ง. ํํธ๋ 8๋ณด๋ค ๊ฐ๊น๊ฒ ์์ฑ๋์ง ์์ต๋๋ค.
๋ถ๊ธฐ์์ ๋ฉ๋ฆฌ ๋จ์ด์ง ์ง์. ๋ค์์ ์ ์ธํ๊ณ ๋ ๋นํ์ฑํํ ์ด์ ๊ฐ ๊ฑฐ์ ์์ต๋๋ค.
๋๋ฒ๊น ๋ชฉ์ , ๋๋ ๊ฐ์ฒด๋ฅผ ์กฐ๊ธ ๋ ์๊ฒ ๋ง๋ค๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
-msmall-mem
-mlarge-mem
๊ธฐ๋ณธ์ ์ผ๋ก GCC๋ ์ฃผ์๊ฐ 18๋นํธ๋ณด๋ค ํฌ์ง ์๋ค๋ ๊ฐ์ ํ์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ -mlarge-mem ์ ์ฒด 32๋นํธ ์ฃผ์๋ฅผ ๊ฐ์ ํ๋ ์ฝ๋๊ฐ ์์ฑ๋ฉ๋๋ค.
-mstdmain
๊ธฐ๋ณธ์ ์ผ๋ก GCC๋ SPU ์คํ์ผ์ ์ฃผ์ ๊ธฐ๋ฅ์ ๊ฐ์ ํ๋ ์์ ์ฝ๋์ ๋ํด ๋งํฌํฉ๋๋ค.
์ธํฐํ์ด์ค(์ ํต์ ์ธ ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ด ์์). ์ ํจ๊ป -mstdmain, GCC ๋งํฌ
"main"์ ๋ํ C99 ์คํ์ผ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ ํ๋ ์์ ์ฝ๋์ ๋ํ ํ๋ก๊ทธ๋จ,
"argv" ๋ฌธ์์ด์ ๋ก์ปฌ ๋ณต์ฌ๋ณธ์ ํฌํจํฉ๋๋ค.
-m๊ณ ์ ๋ฒ์=๋ ์ง์คํฐ ๋ฒ์
์ฃผ์ด์ง ๋ ์ง์คํฐ ๋ฒ์๋ฅผ ๊ณ ์ ๋ ์ง์คํฐ๋ก ์ทจ๊ธํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ณ ์ ๋ ์ง์คํฐ
๋ ์ง์คํฐ ํ ๋น์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ปค๋์ ์ปดํ์ผํ ๋ ์ ์ฉํฉ๋๋ค.
์ํธ. ๋ ์ง์คํฐ ๋ฒ์๋ ๋์๋ก ๊ตฌ๋ถ๋ ๋ ๊ฐ์ ๋ ์ง์คํฐ๋ก ์ง์ ๋ฉ๋๋ค. ๋ค์์
๋ ์ง์คํฐ ๋ฒ์๋ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ์ง์ ํ ์ ์์ต๋๋ค.
-mea32
-mea64
"__ea"๋ฅผ ํตํด ์ก์ธ์ค๋๋ PPU ์ฃผ์ ๊ณต๊ฐ์ ๋ํ ํฌ์ธํฐ๋ฅผ ๊ฐ์ ํ์ฌ ์ฝ๋๋ฅผ ์ปดํ์ผํฉ๋๋ค.
๋ช ๋ช ๋ ์ฃผ์ ๊ณต๊ฐ ํ์ ์๋ 32๋นํธ ๋๋ 64๋นํธ ๋๋น์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 32๋นํธ์ ๋๋ค.
ABI ๋ณ๊ฒฝ ์ต์ ์ด๋ฏ๋ก ์คํ ํ์ผ์ ๋ชจ๋ ๊ฐ์ฒด ์ฝ๋๋ฅผ ์ปดํ์ผํด์ผ ํฉ๋๋ค.
๊ฐ์ ์ค์ ์ผ๋ก.
-maddress ๊ณต๊ฐ ๋ณํ
-mno ์ฃผ์ ๊ณต๊ฐ ๋ณํ
"__ea" ์ฃผ์ ๊ณต๊ฐ์ ์ผ๋ฐ ์ฃผ์์ ์์ ์งํฉ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ํ์ฉ/๋นํ์ฉ
์ฐ์ฃผ. ์ด๊ฒ์ "__ea"์ ์ ๋ค๋ฆญ ํฌ์ธํฐ ์ฌ์ด์ ๋ช ์์ ์ ํ ์บ์คํธ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
"__ea" ํฌ์ธํฐ์ ๋ํ ์ผ๋ฐ ํฌ์ธํฐ์ ์์์ ๋ณํ. ๊ธฐ๋ณธ๊ฐ์ ํ์ฉ
์ฃผ์ ๊ณต๊ฐ ํฌ์ธํฐ ๋ณํ
-mcache ํฌ๊ธฐ=์บ์ ํฌ๊ธฐ
์ด ์ต์ ์ ์ปดํ์ผ๋ฌ๊ฐ ์คํ ํ์ผ์ ์ฐ๊ฒฐํ๋ libgcc ๋ฒ์ ์ ์ ์ดํฉ๋๋ค.
"__ea" ์ฃผ์์ ๋ณ์์ ์ก์ธ์คํ๊ธฐ ์ํด ์ํํธ์จ์ด ๊ด๋ฆฌ ์บ์๋ฅผ ์ ํํฉ๋๋ค.
ํน์ ์บ์ ํฌ๊ธฐ์ ๊ณต๊ฐ. ๊ฐ๋ฅํ ์ต์ ์บ์ ํฌ๊ธฐ are 8, 16, 32, 64
and 128. ๊ธฐ๋ณธ ์บ์ ํฌ๊ธฐ๋ 64KB์ ๋๋ค.
-๋งํ ๋ฏน ์ ๋ฐ์ดํธ
-mno-์์ ์ ๋ฐ์ดํธ
์ด ์ต์ ์ ์ปดํ์ผ๋ฌ๊ฐ ์คํ ํ์ผ์ ์ฐ๊ฒฐํ๋ libgcc ๋ฒ์ ์ ์ ์ดํฉ๋๋ค.
PPU ์ธก ๋ณ์์ ์ํํธ์จ์ด ๊ด๋ฆฌ ์บ์์ ๋ํ ์์ ์ ๋ฐ์ดํธ ์ฌ๋ถ๋ฅผ ์ ํํฉ๋๋ค.
์ฌ์ฉ๋ฉ๋๋ค. ์์ ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํ์ฌ SPU ์ฝ๋์์ PPU ๋ณ์๋ก ๋ณ๊ฒฝํฉ๋๋ค.
"__ea"๋ผ๋ ์ด๋ฆ์ ์ฃผ์ ๊ณต๊ฐ ํ์ ์๋ ๋ค๋ฅธ PPU์ ๋ํ ๋ณ๊ฒฝ์ ๋ฐฉํดํ์ง ์์ต๋๋ค.
PPU ์ฝ๋์ ๋์ผํ ์บ์ ๋ผ์ธ์ ์๋ ๋ณ์. ์์๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ
์ ๋ฐ์ดํธ, ์ด๋ฌํ ๊ฐ์ญ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์บ์ ๋ผ์ธ์ ๋ค์ ์ฐ๋ ๊ฒ์
ํจ์จ์ ์ธ. ๊ธฐ๋ณธ ๋์์ ์์์ ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
-mdual-nops
-mdual-nops=n
๊ธฐ๋ณธ์ ์ผ๋ก GCC๋ ์ฆ๊ฐํ ๊ฒ์ผ๋ก ์์๋๋ ๊ฒฝ์ฐ ์ด์ค ๋ฌธ์ ๋ฅผ ์ฆ๊ฐ์ํค๊ธฐ ์ํด nops๋ฅผ ์ฝ์ ํฉ๋๋ค.
์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค. n 0์์ 10 ์ฌ์ด์ ๊ฐ์ด ๋ ์ ์์ต๋๋ค. n ๋ ์ ์ ์์ nops๋ฅผ ์ฝ์ ํฉ๋๋ค. 10์
๊ธฐ๋ณธ๊ฐ์ธ 0์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -mno-dual-nops. ์ฅ์ ์ธ - ์ค์ค.
-mint-max-nops=n
๋ถ๊ธฐ ํํธ์ ๋ํด ์ฝ์ ํ ์ต๋ nops ์์ ๋๋ค. ๋ถ๊ธฐ ํํธ๋ 8 ์ด์์ด์ด์ผ ํฉ๋๋ค.
์ํฅ์ ๋ฏธ์น๋ ๋ถ๊ธฐ์์ ๋ช ๋ น์ ์ ๊ฑฐํฉ๋๋ค. ์ต๋ GCC ์ฝ์ n ๋
์ด๋ฅผ ์ ์ฉํ์ง ์์ผ๋ฉด ๋ถ๊ธฐ ํํธ๋ฅผ ์์ฑํ์ง ์์ต๋๋ค.
-mint-max-distance=n
๋ถ๊ธฐ ํํธ ๋ช ๋ น์ด์ ์ธ์ฝ๋ฉ์ ํํธ๋ฅผ 256 ์ด๋ด๋ก ์ ํํฉ๋๋ค.
์ํฅ์ ๋ฏธ์น๋ ์ง์ ์ ์ง์นจ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก GCC๋
125.
-msafe-ํํธ
SPU๋ฅผ ๋ฌด๊ธฐํ ์ ์ง์ํค๋ ํ๋์จ์ด ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ์ญ์์ค. ๊ธฐ๋ณธ์ ์ผ๋ก GCC
์ด ์ง์ฐ์ด ๋ฐ์ํ์ง ์๋๋ก "hbrp" ๋ช ๋ น์ ์ฝ์ ํฉ๋๋ค.
์ต์ for V
์ด๋ฌํ ์ถ๊ฐ ์ต์ ์ ๋ค๋ฅธ ์์คํ ๊ณผ์ ํธํ์ฑ์ ์ํด System V ๋ฆด๋ฆฌ์ค 4์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํด๋น ์์คํ ์ ์ปดํ์ผ๋ฌ:
-G ๊ณต์ ๊ฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค. ๋ค์์ ์ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. - ์์ง์ or -๊ณต์ ๋์ ์ฌ์ฉํ์ญ์์ค.
-Qy ".ident" ์ด์ ๋ธ๋ฌ์์ ์ปดํ์ผ๋ฌ๊ฐ ์ฌ์ฉํ๋ ๊ฐ ๋๊ตฌ์ ๋ฒ์ ์ ์๋ณํฉ๋๋ค.
์ถ๋ ฅ์ ์ง์๋ฌธ.
-Qn ์ถ๋ ฅ ํ์ผ์ ".ident" ์ง์๋ฌธ์ ์ถ๊ฐํ์ง ๋ง์ญ์์ค(๊ธฐ๋ณธ๊ฐ).
- ์,dirs
๋๋ ํ ๋ฆฌ ๊ฒ์ dirs๋ก ์ง์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ -l.
-์,DIR
๋๋ ํ ๋ฆฌ๋ฅผ ์ดํด๋ณด์ธ์ DIR M4 ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฐพ์ต๋๋ค. ์ด์ ๋ธ๋ฌ๋ ์ด๊ฒ์ ์ฌ์ฉํฉ๋๋ค.
์ต์ ์ ์ ํํฉ๋๋ค.
ํ์ผ-Gx ์ต์
Bowman์ -m ์ต์ ์ TILE-Gx์์ ์ง์๋ฉ๋๋ค.
-mcmodel=์์
์์ ๋ชจ๋ธ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๋ค์ด๋ ํธ ์ฝ ๊ฑฐ๋ฆฌ๋ 500M๋ก ์ ํ๋ฉ๋๋ค.
์ด๋ ๋ฐฉํฅ์ผ๋ก. PC ์๋ ์ฃผ์๋ 32๋นํธ์ ๋๋ค. ์ ๋ ์ฃผ์ ์ง์
์ ์ฒด ์ฃผ์ ๋ฒ์.
-mcmodel=๋ํ
๋ํ ๋ชจ๋ธ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ํตํ ๊ฑฐ๋ฆฌ ์ ํ์ด ์์ต๋๋ค.
์๋ ์ฃผ์ ๋๋ ์ ๋ ์ฃผ์.
-mcpu =name
๋์์ผ๋ก ํ CPU ์ ํ์ ์ ํํฉ๋๋ค. ํ์ฌ ์ง์๋๋ ์ ์ผํ ์ ํ์ ํ์ผ โโ์์ค.
-m32
-m64
32๋นํธ ๋๋ 64๋นํธ ํ๊ฒฝ์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. 32๋นํธ ํ๊ฒฝ์ int,
long, 32๋นํธ์ ๋ํ ํฌ์ธํฐ. 64๋นํธ ํ๊ฒฝ์ int๋ฅผ 32๋นํธ๋ก ์ค์ ํ๊ณ long ๋ฐ
64๋นํธ์ ๋ํ ํฌ์ธํฐ.
ํ์ผํ๋ก ์ต์
Bowman์ -m ์ต์ ์ TILEPro์์ ์ง์๋ฉ๋๋ค.
-mcpu =name
๋์์ผ๋ก ํ CPU ์ ํ์ ์ ํํฉ๋๋ค. ํ์ฌ ์ง์๋๋ ์ ์ผํ ์ ํ์ ํ์ผํ๋ก.
-m32
int, long ๋ฐ ํฌ์ธํฐ๋ฅผ 32๋นํธ๋ก ์ค์ ํ๋ 32๋นํธ ํ๊ฒฝ์ฉ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ด๊ฒ์ ์ ์ผํ๊ฒ ์ง์๋๋ ๋์์ด๋ฏ๋ก ํ๋๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌด์๋ฉ๋๋ค.
V850 ์ต์
Bowman์ -m ์ต์ ์ V850 ๊ตฌํ์ ๋ํด ์ ์๋ฉ๋๋ค.
-mlong-ํตํ
-mno-long-ํตํ
๋ชจ๋ ํตํ๋ฅผ ๋ฉ๋ฆฌ(๊ฐ๊น์ด) ๊ฒ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ํตํ๊ฐ ๋ฉ๋ฆฌ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด
์ปดํ์ผ๋ฌ๋ ํญ์ ํจ์์ ์ฃผ์๋ฅผ ๋ ์ง์คํฐ์ ๋ก๋ํ๊ณ ๊ฐ์ ์ ์ผ๋ก ํธ์ถํฉ๋๋ค.
ํฌ์ธํฐ๋ฅผ ํตํด.
-mno-ep
-mep
๋์ผํ ์ธ๋ฑ์ค ํฌ์ธํฐ 4 ์ด์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๋ธ๋ก์ ์ต์ ํ(์ต์ ํ)ํ์ง ๋ง์ญ์์ค.
ํฌ์ธํฐ๋ฅผ "ep" ๋ ์ง์คํฐ์ ๋ณต์ฌํ๊ณ ๋ ์งง์ "sld" ๋ฐ "sst"๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ง์นจ. NS -mep ์ต์ ์ ์ต์ ํํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค.
-mno-prolog-ํจ์
-mprolog-ํจ์
ํ๋กค๋ก๊ทธ์์ ๋ ์ง์คํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ณต์ํ๊ธฐ ์ํด ์ธ๋ถ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ฅ์ ์ํ๋ก๊ทธ. ์ธ๋ถ ๊ธฐ๋ฅ์ ๋๋ฆฌ์ง๋ง ๋ ์ ์ ์ฝ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ ์ด์์ ํจ์๊ฐ ๋์ผํ ์์ ๋ ์ง์คํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒฝ์ฐ ๊ณต๊ฐ. NS
-mprolog-ํจ์ ์ต์ ์ ์ต์ ํํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค.
-mspace
์ฝ๋๋ฅผ ๊ฐ๋ฅํ ํ ์๊ฒ ๋ง๋์ญ์์ค. ํ์ฌ, ์ด๊ฒ์ ๋จ์ง ์ผ์ง๋๋ค -mep
and -mprolog-ํจ์ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-mtda =n
ํฌ๊ธฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ ์ ๋๋ ์ ์ญ ๋ณ์๋ฅผ ๋ฃ์ต๋๋ค. n ์์ ๋ฐ์ดํฐ ์์ญ์ ๋ฐ์ดํธ ์ดํ
"ep"๊ฐ ๊ฐ๋ฆฌํค๋ ๋ ์ง์คํฐ. ์์ ๋ฐ์ดํฐ ์์ญ์ ์ด 256๋ฐ์ดํธ๊น์ง ์ ์ฅํ ์ ์์ต๋๋ค.
(๋ฐ์ดํธ ์ฐธ์กฐ์ ๊ฒฝ์ฐ 128๋ฐ์ดํธ).
-msda=n
ํฌ๊ธฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ ์ ๋๋ ์ ์ญ ๋ณ์๋ฅผ ๋ฃ์ต๋๋ค. n ์์ ๋ฐ์ดํฐ ์์ญ์ ๋ฐ์ดํธ ์ดํ
"gp"๊ฐ ๊ฐ๋ฆฌํค๋ ๋ ์ง์คํฐ. ์์ ๋ฐ์ดํฐ ์์ญ์ ์ต๋ 64ํฌ๋ก๋ฐ์ดํธ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค.
-mzda=n
ํฌ๊ธฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ ์ ๋๋ ์ ์ญ ๋ณ์๋ฅผ ๋ฃ์ต๋๋ค. n ์ฒ์ 32๋ฐ์ดํธ ์ดํ
ํฌ๋ก๋ฐ์ดํธ์ ๋ฉ๋ชจ๋ฆฌ.
-mv850
๋์ ํ๋ก์ธ์๊ฐ V850์์ ์ง์ ํ์ญ์์ค.
-mv850e3v5
๋์ ํ๋ก์ธ์๊ฐ V850E3V5์์ ์ง์ ํ์ญ์์ค. ์ ์ฒ๋ฆฌ๊ธฐ ์์
__v850e3v5__ ์ด ์ต์ ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ ์๋ฉ๋๋ค.
-mv850e2v4
๋์ ํ๋ก์ธ์๊ฐ V850E3V5์์ ์ง์ ํ์ญ์์ค. ์ ๋ํ ๋ณ์นญ์ ๋๋ค.
-mv850e3v5 ์ต์ ์ ์ ํํฉ๋๋ค.
-mv850e2v3
๋์ ํ๋ก์ธ์๊ฐ V850E2V3์์ ์ง์ ํ์ญ์์ค. ์ ์ฒ๋ฆฌ๊ธฐ ์์
__v850e2v3__ ์ด ์ต์ ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ ์๋ฉ๋๋ค.
-mv850e2
๋์ ํ๋ก์ธ์๊ฐ V850E2์์ ์ง์ ํ์ญ์์ค. ์ ์ฒ๋ฆฌ๊ธฐ ์์ __v850e2__
์ด ์ต์ ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ ์๋ฉ๋๋ค.
-mv850e1
๋์ ํ๋ก์ธ์๊ฐ V850E1์์ ์ง์ ํ์ญ์์ค. ์ ์ฒ๋ฆฌ๊ธฐ ์์
__v850e1__ and __v850e__ ์ด ์ต์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ์๋ฉ๋๋ค.
-mv850es
๋์ ํ๋ก์ธ์๊ฐ V850ES์์ ์ง์ ํ์ญ์์ค. ์ ๋ํ ๋ณ์นญ์ ๋๋ค. -mv850e1
์ต์ ์ ์ ํํฉ๋๋ค.
-mv850e
๋์ ํ๋ก์ธ์๊ฐ V850E์์ ์ง์ ํ์ญ์์ค. ์ ์ฒ๋ฆฌ๊ธฐ ์์ __v850e__
์ด ์ต์ ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ ์๋ฉ๋๋ค.
๋ ๋ค -mv850 ...๋ ์๋๋ค -mv850e ...๋ ์๋๋ค -mv850e1 ...๋ ์๋๋ค -mv850e2 ...๋ ์๋๋ค -mv850e2v3 ...๋ ์๋๋ค -mv850e3v5
์ ์๋ ๋ค์ ๊ธฐ๋ณธ ๋์ ํ๋ก์ธ์๊ฐ ์ ํ๋๊ณ ๊ด๋ จ __v850*__
์ ์ฒ๋ฆฌ๊ธฐ ์์๊ฐ ์ ์๋ฉ๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ ์์ __v850 and __v851__ ์๊ด์์ด ํญ์ ์ ์๋ฉ๋๋ค.
ํ๋ก์ธ์ ๋ณํ์ด ๋์์ ๋๋ค.
-mdisable-callt
-mno-๋นํ์ฑํ-์ฝํธ
์ด ์ต์ ์ v850e, v850e1,
v850 ์ํคํ ์ฒ์ v2e850, v2e3v850 ๋ฐ v3e5v850 ๋ฒ์ .
์ด ์ต์ ์ RH850 ABI๊ฐ ์ฌ์ฉ ์ค์ผ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค(์ฐธ์กฐ -mrh850-์๋น), ๊ทธ๋ฆฌ๊ณ
GCC ABI๊ฐ ์ฌ์ฉ ์ค์ผ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋ฉ๋๋ค. "CALLT" ๋ช ๋ น์ด ์คํ ์ค์ธ ๊ฒฝ์ฐ
์์ฑ๋๋ฉด C ์ ์ฒ๋ฆฌ๊ธฐ ๊ธฐํธ "__V850_CALLT__"๊ฐ ์ ์๋ฉ๋๋ค.
-mrelax
-mno-ํด์
์ ๋ฌ(๋๋ ์ ๋ฌํ์ง ์์) -mrelax ์ด์ ๋ธ๋ฌ์ ๋ช ๋ น์ค ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-mlong-์ ํ
-mno-๋กฑ ์ ํ
PC ๊ด๋ จ ์ ํ ๋ช ๋ น ์์ฑ์ ๋นํ์ฑํ(๋๋ ๋ค์ ํ์ฑํ)ํฉ๋๋ค.
-msoft-float
-mhard-float
ํ๋์จ์ด ๋ถ๋ ์์์ ๋ช ๋ น์ด ์์ฑ์ ๋นํ์ฑํ(๋๋ ๋ค์ ํ์ฑํ)ํฉ๋๋ค. ์ด๊ฒ
์ต์ ์ ๋์ ์ํคํ ์ฒ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๋๋ง ์ค์ํฉ๋๋ค. V850E2V3 ๋๋ ๋ ๋๊ฒ. ๋ง์ฝ์
ํ๋์จ์ด ๋ถ๋ ์์์ ๋ช ๋ น์ด๊ฐ ์์ฑ๋ ๋ค์ C ์ ์ฒ๋ฆฌ๊ธฐ
"__FPU_OK__" ๊ธฐํธ๊ฐ ์ ์๋๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด "__NO_FPU__" ๊ธฐํธ๊ฐ ์ ์๋ฉ๋๋ค.
ํ์ ๋.
-mloop
e3v5 LOOP ๋ช ๋ น์ด์ ์ฌ์ฉ์ ํ์ฑํํฉ๋๋ค. ์ด ์ง์นจ์ ์ฌ์ฉ์
e3v5 ์ํคํ ์ฒ๊ฐ ์์ง ์ฌ์ฉ ์ค์ด๊ธฐ ๋๋ฌธ์ eXNUMXvXNUMX ์ํคํ ์ฒ๊ฐ ์ ํ๋๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
์คํ์ .
-mrh850-์๋น
-mghs
V850 ABI์ RH850 ๋ฒ์ ์ ๋ํ ์ง์์ ํ์ฑํํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ์ ํจ๊ป
์ด ๋ฒ์ ์ ABI๋ ๋ค์ ๊ท์น์ด ์ ์ฉ๋ฉ๋๋ค.
ยท ์ ์ ํฌ๊ธฐ์ ๊ตฌ์กฐ์ฒด์ ๊ณต์ฉ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ ํฌ์ธํฐ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ํฌ์ธํฐ๋ฅผ ํตํด ๋ฐํ๋ฉ๋๋ค.
๋ ์ง์คํฐ.
ยท ํฐ ๊ตฌ์กฐ ๋ฐ ๊ณต์ฉ์ฒด(ํฌ๊ธฐ๊ฐ 8๋ฐ์ดํธ ์ด์)๋ ๊ฐ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
ยท ๊ธฐ๋ฅ์ 16๋นํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ๋ ฌ๋ฉ๋๋ค.
ยท -m8byte-์ ๋ ฌ ๋ช ๋ น์ค ์ต์ ์ด ์ง์๋ฉ๋๋ค.
ยท -mdisable-callt ๋ช ๋ น์ค ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. NS
-mno-๋นํ์ฑํ-์ฝํธ ๋ช ๋ น์ค ์ต์ ์ ์ง์๋์ง ์์ต๋๋ค.
์ด ๋ฒ์ ์ ABI๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ C ์ ์ฒ๋ฆฌ๊ธฐ ๊ธฐํธ "__V850_RH850_ABI__"
์ ์๋ฉ๋๋ค.
-mgcc-์๋น
V850 ABI์ ์ด์ GCC ๋ฒ์ ์ ๋ํ ์ง์์ ํ์ฑํํฉ๋๋ค. ์ด ๋ฒ์ ์ ABI๋ฅผ ์ฌ์ฉํ๋ฉด
๋ค์ ๊ท์น์ด ์ ์ฉ๋ฉ๋๋ค.
ยท ์ ์ ํฌ๊ธฐ์ ๊ตฌ์กฐ์ฒด์ ๊ณต์ฉ์ฒด๋ ๋ ์ง์คํฐ "r10"์ ๋ฐํ๋ฉ๋๋ค.
ยท ํฐ ๊ตฌ์กฐ์ ๊ณต์ฉ์ฒด(ํฌ๊ธฐ๊ฐ 8๋ฐ์ดํธ ์ด์)๋ ์ฐธ์กฐ๋ก ์ ๋ฌ๋ฉ๋๋ค.
ยท ๊ธฐ๋ฅ์ ํฌ๊ธฐ๋ฅผ ์ต์ ํํ์ง ์๋ ํ 32๋นํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ๋ ฌ๋ฉ๋๋ค.
ยท -m8byte-์ ๋ ฌ ๋ช ๋ น์ค ์ต์ ์ ์ง์๋์ง ์์ต๋๋ค.
ยท -mdisable-callt ๋ช ๋ น์ค ์ต์ ์ด ์ง์๋์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค.
์ด ๋ฒ์ ์ ABI๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ C ์ ์ฒ๋ฆฌ๊ธฐ ๊ธฐํธ "__V850_GCC_ABI__"
์ ์๋ฉ๋๋ค.
-m8byte-์ ๋ ฌ
-mno-8byte-์ ๋ ฌ
"double" ๋ฐ "long long" ์ ํ์ ๋ํ ์ง์์ 8๋ฐ์ดํธ๋ก ์ ๋ ฌํ ์ ์์ต๋๋ค.
๊ฒฝ๊ณ. ๊ธฐ๋ณธ๊ฐ์ ๋ชจ๋ ๊ฐ์ฒด์ ์ ๋ ฌ์ ์ต๋๋ก ์ ํํ๋ ๊ฒ์ ๋๋ค.
4 ๋ฐ์ดํธ. ์ธ์ -m8byte-์ ๋ ฌ ์ฌ์ค์ C ์ ์ฒ๋ฆฌ๊ธฐ ๊ธฐํธ
"__V850_8BYTE_ALIGN__"์ด ์ ์๋ฉ๋๋ค.
-mbig ์ค์์น
ํฐ ์ค์์น ํ ์ด๋ธ์ ์ ํฉํ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ด ์ต์ ์ ์ฌ์ฉํ์ญ์์ค.
์ด์ ๋ธ๋ฌ/๋ง์ปค๊ฐ ์ค์์น ํ ์ด๋ธ ๋ด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๋ถ๊ธฐ์ ๋ํด ๋ถํํฉ๋๋ค.
-map-regs
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ์์ ์์ฑํ ์ฝ๋์์ r2 ๋ฐ r5๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๊ฒ
์ค์ ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-mno-app-regs
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด r2 ๋ฐ r5๊ฐ ๊ณ ์ ๋ ์ง์คํฐ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
๋ฐฑ์ค ์ต์
Bowman์ -m ์ต์ ์ VAX์ ๋ํด ์ ์๋ฉ๋๋ค.
-๋ฎค๋์ค
Unix ์ด์ ๋ธ๋ฌ๊ฐ ์คํํ๋ ํน์ ์ ํ ๋ช ๋ น("aobleq" ๋ฑ)์ ์ถ๋ ฅํ์ง ๋ง์ญ์์ค.
VAX๋ ์ฅ๊ฑฐ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
-mgnu
GNU ์ด์ ๋ธ๋ฌ๊ฐ ์คํ๋๋ค๋ ๊ฐ์ ํ์ ์ ํ ๋ช ๋ น์ ์ถ๋ ฅํ์ญ์์ค.
์ต์ํ.
-mg D ํ์ ๋์ G ํ์ ๋ถ๋ ์์์ ์ซ์์ ๋ํ ์ถ๋ ฅ ์ฝ๋์ ๋๋ค.
VMS ์ต์
Bowman์ -m ์ต์ ์ VMS ๊ตฌํ์ ๋ํด ์ ์๋ฉ๋๋ค.
-mvms-๋ฐํ ์ฝ๋
"main"์์ VMS ์กฐ๊ฑด ์ฝ๋๋ฅผ ๋ฐํํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ POSIX ์คํ์ผ ์กฐ๊ฑด์ ๋ฐํํ๋ ๊ฒ์ ๋๋ค.
(์: ์ค๋ฅ) ์ฝ๋.
-mdebug-๋ฉ์ธ=์ ๋์ฌ
์ด๋ฆ์ด ๋ก ์์ํ๋ ์ฒซ ๋ฒ์งธ ๋ฃจํด์ ํ๋๊ทธ ์ง์ ์ ๋์ฌ ์ ์ฃผ์ ๋ฃจํด์ผ๋ก
๋๋ฒ๊ฑฐ.
-mmalloc64
๊ธฐ๋ณธ๊ฐ์ 64๋นํธ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฃจํด์ ๋๋ค.
-mpointer-ํฌ๊ธฐ=ํฌ๊ธฐ
ํฌ์ธํฐ์ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ฐ๋ฅํ ์ต์ ํฌ๊ธฐ are 32 or ์งง์ 32๋นํธ์ฉ
ํฌ์ธํฐ, 64 or ๊ธด 64๋นํธ ํฌ์ธํฐ์ ๊ฒฝ์ฐ ์๋ 32๋นํธ ํฌ์ธํฐ๋ง ์ง์ํฉ๋๋ค.
๋์ค ์ต์ ์ "pragma pointer_size"๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
VxWorks ์ต์
์ด ์น์ ์ ์ต์ ์ ๋ชจ๋ VxWorks ๋์์ ๋ํด ์ ์๋ฉ๋๋ค. ํน์ ์ต์
๋์ ํ๋์จ์ด๋ ํด๋น ๋์์ ๋ํ ๋ค๋ฅธ ์ต์ ๊ณผ ํจ๊ป ๋์ด๋ฉ๋๋ค.
-mrtp
GCC๋ VxWorks ์ปค๋๊ณผ ์ค์๊ฐ ํ๋ก์ธ์ค(RTP) ๋ชจ๋์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๊ฒ
์ต์ ์ ์ ์์์ ํ์๋ก ์ ํ๋ฉ๋๋ค. ๋ํ ์ ์ฒ๋ฆฌ๊ธฐ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค.
"__RTP__".
-๋น์ ์
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด RTP ์คํ ํ์ผ์ ๋งํฌํฉ๋๋ค. NS
์ต์ -๊ณต์ and -๊ณต์ RTP์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. -๊ณต์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-๋น์ ์
-๋น๋ค์ด๋๋ฏน
์ด๋ฌํ ์ต์ ์ ๋ง์ปค๋ก ์ ๋ฌ๋ฉ๋๋ค. ๋ค์๊ณผ์ ํธํ์ฑ์ ์ํด ์ ์๋ฉ๋๋ค.
๋์๋ธ.
-Xbind-๊ฒ์ผ๋ฅธ
ํจ์ ํธ์ถ์ ์ง์ฐ ๋ฐ์ธ๋ฉ์ ํ์ฑํํฉ๋๋ค. ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -Wl,-z,์ง๊ธ ์ด๊ณ
Diab์์ ํธํ์ฑ์ ์ํด ์ ์๋์์ต๋๋ค.
-X๋ฐ์ธ๋-์ง๊ธ
ํจ์ ํธ์ถ์ ์ง์ฐ ๋ฐ์ธ๋ฉ์ ๋นํ์ฑํํฉ๋๋ค. ์ด ์ต์ ์ ๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ ๋ค์์ ๋ํด ์ ์๋ฉ๋๋ค.
๋์๋ธ์์ ํธํ์ฑ
x86-64 ์ต์
์ด๋ค์ ์๋์ ๋์ด๋ฉ๋๋ค
Xstormy16 ์ต์
๋ค์ ์ต์ ์ Xstormy16์ ๋ํด ์ ์๋ฉ๋๋ค.
-msim
์๋ฎฌ๋ ์ดํฐ์ ์ ํฉํ ์์ ํ์ผ๊ณผ ๋ง์ปค ์คํฌ๋ฆฝํธ๋ฅผ ์ ํํ์ญ์์ค.
์์คํ ์ฌ ์ต์
๋ค์ ์ต์ ์ Xtensa ๋์์ ๋ํด ์ง์๋ฉ๋๋ค.
-mconst16
-mno-const16
์์ ๊ฐ์ ๋ก๋ํ๊ธฐ ์ํ "CONST16" ๋ช ๋ น์ด ์ฌ์ฉ์ ํ์ฑํ ๋๋ ๋นํ์ฑํํฉ๋๋ค. NS
"CONST16" ๋ช ๋ น์ด๋ ํ์ฌ Tensilica์ ํ์ค ์ต์ ์ด ์๋๋๋ค. ์ธ์
ํ์ฑํ๋ ๊ฒฝ์ฐ "CONST16" ๋ช ๋ น์ด๋ ํญ์ ํ์ค "L32R" ๋์ ์ฌ์ฉ๋ฉ๋๋ค.
์ง์นจ. "CONST16"์ ์ฌ์ฉ์ "L32R"์ด
์ง์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-๋จธํจ์ฆ๋-๋งค๋
-mno-์ตํฉ-๋งค๋
ํตํฉ ๊ณฑํ๊ธฐ/๋ํ๊ธฐ ๋ฐ ๊ณฑํ๊ธฐ/๋นผ๊ธฐ ๋ช ๋ น์ด ์ฌ์ฉ์ ํ์ฑํ ๋๋ ๋นํ์ฑํํฉ๋๋ค.
๋ถ๋ ์์์ ์ต์ . ๋ถ๋ ์์์ ์ต์ ๋ ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ์๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
ํ์ฑํ. ์ตํฉ๋ ๊ณฑํ๊ธฐ/๋ํ๊ธฐ ๋ฐ ๊ณฑํ๊ธฐ/๋นผ๊ธฐ ๋ช ๋ น์ด๋ฅผ ๋นํ์ฑํํ๋ฉด
์ปดํ์ผ๋ฌ๋ ๊ณฑํ๊ธฐ ๋ฐ ๋ํ๊ธฐ/๋นผ๊ธฐ ์ฐ์ฐ์ ๋ํด ๋ณ๋์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๊ฒ์ ์๊ฒฉํ IEEE 754 ์ค์ ๊ฒฐ๊ณผ๊ฐ ํ์ํ ์ผ๋ถ ๊ฒฝ์ฐ์ ๋ฐ๋์งํ ์ ์์ต๋๋ค.
ํ์: ์ตํฉ๋ ๊ณฑํ๊ธฐ ๋ํ๊ธฐ/๋นผ๊ธฐ ๋ช ๋ น์ด๋ ์ค๊ฐ์ ๋ฐ์ฌ๋ฆผํ์ง ์์ต๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ํตํด ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค. ๋ฐฐ์ฐ๊ธฐ ์ ์ํด ์ง์ ๋ ๊ฒ๋ณด๋ค ์ ๋ฐ๋ ๋นํธ
IEEE ํ์ค. ์ตํฉ ๊ณฑํ๊ธฐ ๋ํ๊ธฐ/๋นผ๊ธฐ ๋ช ๋ น์ด๋ฅผ ๋นํ์ฑํํ๋ฉด
ํ๋ก๊ทธ๋จ ์ถ๋ ฅ์ ๊ณฑํ๊ธฐ์ ๊ณฑํ๊ธฐ๋ฅผ ๊ฒฐํฉํ๋ ์ปดํ์ผ๋ฌ์ ๊ธฐ๋ฅ์ ๋ฏผ๊ฐํ์ง ์์ต๋๋ค.
๋ํ๊ธฐ/๋นผ๊ธฐ ์ฐ์ฐ.
- ์ง๋ ฌํ - ํ๋ฐ์ฑ
-mno ์ง๋ ฌํ ํ๋ฐ์ฑ
์ด ์ต์ ์ด ํ์ฑํ๋๋ฉด GCC๋ "ํ๋ฐ์ฑ" ๋ฉ๋ชจ๋ฆฌ ์์ "MEMW" ๋ช ๋ น์ด๋ฅผ ์ฝ์ ํฉ๋๋ค.
์์ฐจ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ์ฐธ์กฐ. ๊ธฐ๋ณธ๊ฐ์ - ์ง๋ ฌํ - ํ๋ฐ์ฑ.
-mno ์ง๋ ฌํ ํ๋ฐ์ฑ "MEMW" ๋ช ๋ น์ ์๋ตํฉ๋๋ค.
-mforce-no-pic
๋ชจ๋ ์ฌ์ฉ์ ๋ชจ๋ Xtensa ์ฝ๋๊ฐ ๋ค์ ์์น์ ์์ด์ผ ํ๋ GNU/Linux์ ๊ฐ์ ๋์์ ๊ฒฝ์ฐ
PIC(๋ ๋ฆฝ ์ฝ๋)์์ ์ด ์ต์ ์ ์ปค๋ ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ธฐ ์ํด PIC๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
-mtext-์น์ -๋ฆฌํฐ๋ด
-mno-ํ ์คํธ-์น์ -๋ฆฌํฐ๋ด
๋ฆฌํฐ๋ด ํ์ ์ฒ๋ฆฌ๋ฅผ ์ ์ดํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ -mno-ํ ์คํธ-์น์ -๋ฆฌํฐ๋ด,
์ถ๋ ฅ ํ์ผ์ ๋ณ๋ ์น์ ์ ๋ฆฌํฐ๋ด์ ๋ฐฐ์นํฉ๋๋ค. ์ด๊ฒ์ ํ์ฉ
๋ฆฌํฐ๋ด ํ์ ๋ฐ์ดํฐ RAM/ROM์ ๋ฐฐ์น๋๋ฉฐ ๋ง์ปค๊ฐ ๊ฒฐํฉํ ์๋ ์์ต๋๋ค.
์ค๋ณต ๋ฆฌํฐ๋ด์ ์ ๊ฑฐํ๊ณ ์ฝ๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๋ณ๋์ ๊ฐ์ฒด ํ์ผ์์ ๋ฆฌํฐ๋ด ํ
ํฌ๊ธฐ. ์ ํจ๊ป -mtext-์น์ -๋ฆฌํฐ๋ด, ๋ฆฌํฐ๋ด์ ํ ์คํธ ์น์ ์ ์ฐ์ฌ๋์ด ์์ต๋๋ค.
๊ฐ๋ฅํ ํ ์ฐธ์กฐ์ ๊ฐ๊น๊ฒ ์ ์งํ๊ธฐ ์ํด. ์ด๊ฒ์ ํ์ํ ์ ์์ต๋๋ค
ํฐ ์ด์ ๋ธ๋ฆฌ ํ์ผ์ ๊ฒฝ์ฐ.
-mtarget-์ ๋ ฌ
-mno-ํ๊ฒ-์ ๋ ฌ
์ด ์ต์ ์ด ํ์ฑํ๋๋ฉด GCC๋ ์ด์ ๋ธ๋ฌ๊ฐ ์๋์ผ๋ก ์ ๋ ฌํ๋๋ก ์ง์ํฉ๋๋ค.
์ผ๋ถ ์ฝ๋ ๋ฐ๋๋ฅผ ํฌ์์ํค๋ฉด์ ๋ถ๊ธฐ ํจ๋ํฐ๋ฅผ ์ค์ด๊ธฐ ์ํ ๋ช ๋ น. NS
์ด์ ๋ธ๋ฌ๋ ๋ถ๊ธฐ ํ๊ฒ์ ์ ๋ ฌํ๊ธฐ ์ํด ๋ฐ๋ ๋ช ๋ น์ ํ์ฅํ๋ ค๊ณ ์๋ํ๊ณ
ํธ์ถ ์ง์์ ๋ฐ๋ฅธ ์ง์. ์ ํ ์์ ์ฅ์น๊ฐ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ
๋ชฉํ๋ฅผ ์ ๋ ฌํ๊ธฐ ์ํ ๋ฐ๋ ๋ช ๋ น, ํ์ฅ์ ์ํ๋์ง ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์
-mtarget-์ ๋ ฌ. ์ด ์ต์ ์ ์๋ ์ ๋ ฌ ์ฒ๋ฆฌ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
์ด์ ๋ธ๋ฌ๊ฐ ํญ์ ์ ๋ ฌํ๋ "LOOP"์ ๊ฐ์ ๋ช ๋ น์ด
๋ฐ๋ ๋ช ๋ น์ด ๋๋ NOP ๋ช ๋ น์ด ์ฝ์ .
-๊ธด ํตํ
-mno-longcalls
์ด ์ต์ ์ด ํ์ฑํ๋๋ฉด GCC๋ ์ง์ ํธ์ถ์ ๋ค์์ผ๋ก ๋ณํํ๋๋ก ์ด์ ๋ธ๋ฌ์ ์ง์ํฉ๋๋ค.
์ง์ ํธ์ถ์ ๋์์ด
ํธ์ถ ๋ช ๋ น์ด ํ์ฉํ๋ ๋ฒ์. ์ด ๋ฒ์ญ์ ์ผ๋ฐ์ ์ผ๋ก
๋ค๋ฅธ ์์ค ํ์ผ์ ๊ธฐ๋ฅ. ํนํ, ์ด์ ๋ธ๋ฌ๋ ์ง์
"CALL" ๋ช ๋ น์ด๋ฅผ "L32R"๋ก ์ ๋ ฅํ ๋ค์ "CALLX" ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
-mno-longcalls. ์ด ์ต์ ์ ํธ์ถ ๋์์ด ๋ค์์ ์ํํ ์ ์๋ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ ์ฌ์ ์ผ๋ก ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค. ์ด ์ต์ ์ ์ด์ ๋ธ๋ฆฌ๊ฐ ์๋๋ผ ์ด์ ๋ธ๋ฌ์์ ๊ตฌํ๋ฉ๋๋ค.
์ปดํ์ผ๋ฌ, ๊ทธ๋์ GCC์ ์ํด ์์ฑ๋ ์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ ์ฌ์ ํ ์ง์ ํธ์ถ์ ๋ณด์ฌ์ค๋๋ค
์ง์นจ --- ์ค์ ์ง์นจ์ ๋ณด๋ ค๋ฉด ๋์ค์ด์ ๋ธ๋ ๊ฐ์ฒด ์ฝ๋๋ฅผ ํ์ธํ์ญ์์ค.
์ด์ ๋ธ๋ฌ๋ ํ์ผ ๊ฐ ํธ์ถ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ํ์ผ ๊ฐ ํธ์ถ์ ๋ํด ๊ฐ์ ํธ์ถ์ ์ฌ์ฉํฉ๋๋ค.
์ ๋ง ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฒ๋ค.
z ์๋ฆฌ์ฆ ์ต์
์ด๋ค์ ์๋์ ๋์ด๋ฉ๋๋ค
์ต์ for ์ํธ ์ธ๋ ํ์ฝ
์ด๋ฌํ ๊ธฐ๊ณ ๋ ๋ฆฝ์ ์ธ ์ต์ ์ ์ฝ๋์์ ์ฌ์ฉ๋๋ ์ธํฐํ์ด์ค ๊ท์น์ ์ ์ดํฉ๋๋ค.
์ธ๋.
๊ทธ๋ค ๋๋ถ๋ถ์ ๊ธ์ ์ ์ธ ํํ์ ๋ถ์ ์ ์ธ ํํ๋ฅผ ๋ชจ๋ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ ๋ถ์ ์ ์ธ ํํ - ํธํธ is
-fno-foo. ์๋ ํ์๋ ์์ ์ค ํ๋๋ง ๋์ด๋์ด ์์ต๋๋ค. --- ์์์ด ์๋ ๊ฒ์
๊ธฐ๋ณธ. ๋ค์ ์ค ํ๋๋ฅผ ์ ๊ฑฐํ์ฌ ๋ค๋ฅธ ํ์์ ํ์ ํ ์ ์์ต๋๋ค. ์๋ - ๋๋ ์ถ๊ฐํฉ๋๋ค.
-fbounds-์ฒดํฌ
์ด๋ฅผ ์ง์ํ๋ ํ๋ฐํธ ์๋์ ๊ฒฝ์ฐ ์ธ๋ฑ์ค๊ฐ ๋ค์ ์์ ์ ์ฌ์ฉ๋์๋์ง ํ์ธํ๋ ์ถ๊ฐ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ก์ธ์ค ๋ฐฐ์ด์ด ์ ์ธ๋ ๋ฒ์ ๋ด์ ์์ต๋๋ค. ์ด๊ฒ์ ํ์ฌ ์ ์ํด์๋ง ์ง์๋ฉ๋๋ค.
์ด ์ต์ ์ ๊ธฐ๋ณธ๊ฐ์ true ๋ฐ false์ธ Java ๋ฐ Fortran ํ๋ฐํธ ์๋
๊ฐ๊ฐ.
-fstack-์ฌ์ฌ์ฉ=์ฌ์ฌ์ฉ ์์ค
์ด ์ต์ ์ ์ฌ์ฉ์๊ฐ ์ ์ธํ ๋ก์ปฌ/์๋ ๋ณ์์ ๋ํ ์คํ ๊ณต๊ฐ ์ฌ์ฌ์ฉ์ ์ ์ดํ๊ณ
์ปดํ์ผ๋ฌ ์์ฑ ์์. ์ฌ์ฌ์ฉ ์์ค ๋ ์ ์์ต๋๋ค ๋ชจ๋ , ๋ช ๋ช ๋_vars๋ฐ ์์. ๋ชจ๋
๋ชจ๋ ์ง์ญ ๋ณ์์ ์์ ๋ณ์์ ๋ํ ์คํ ์ฌ์ฌ์ฉ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋ช ๋ช ๋_vars ๊ฐ๋ฅ
์ด๋ฆ์ด ์๋ ์ฌ์ฉ์ ์ ์ ์ง์ญ ๋ณ์์๋ง ์ฌ์ฌ์ฉ ์์ ์คํ ์ฌ์ฌ์ฉ ๋นํ์ฑํ
์์ ํ. ๊ธฐ๋ณธ๊ฐ์ ๋ชจ๋ . ํ๋ก๊ทธ๋จ์ด ํ์ฅ๋ ๋ ์ต์ ์ด ํ์ํฉ๋๋ค.
๋ฒ์๊ฐ ์ง์ ๋ ์ง์ญ ๋ณ์์ ์๋ช ๋๋ ์ปดํ์ผ๋ฌ๊ฐ
์ธ์ด์ ์ํด ์ ์๋ ๋์ . ๋ณ์์ ์๋ช ์ด ๋๋๋ฉด
๋ณ์๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ผ๋ฉด ์ต์ ํ ์ปดํ์ผ๋ฌ๋ ์คํ์ ์์ ๋กญ๊ฒ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ผ์ด๋ธ ๋ฒ์๊ฐ ์ ์ฉ๋์ง ์๋ ๋ค๋ฅธ ์์ ๋๋ ๋ฒ์๊ฐ ์ง์ ๋ ์ง์ญ ๋ณ์๊ฐ ์๋ ๊ณต๊ฐ
๊ทธ๊ฒ๊ณผ ๊ฒน์นฉ๋๋ค. ๋ก์ปฌ ์๋ช ์ ์ฐ์ฅํ๋ ๋ ๊ฑฐ์ ์ฝ๋๋
์คํ ์ฌ์ฌ์ฉ ์ต์ ํ.
์๋ฅผ ๋ค์ด,
์ ์ *p;
{
์ ์ ๋ก์ปฌ1;
p = &local1;
์ง์ญ1 = 10;
....
}
{
์ ์ ๋ก์ปฌ2;
์ง์ญ2 = 20;
...
}
if (*p == 10) // local1 ์ฌ์ฉ ๋ฒ์๋ฅผ ๋ฒ์ด๋จ
{
}
๋ ๋ค๋ฅธ ์ :
๊ตฌ์กฐ์ฒด A
{
A(int k) : i(k), j(k) { }
int i;
์ ์ j;
};
*ap;
๋ฌดํจ foo(const A& ar)
{
ap = &ar;
}
๋ฌดํจ ๋ฐ()
{
ํธ(A(10)); // foo๊ฐ ๋ฐํ๋๋ฉด ์์ ๊ฐ์ฒด์ ์๋ช ์ด ์ข ๋ฃ๋ฉ๋๋ค.
{
A a(20);
....
}
ap->i+= 10; // ap์ ๊ณต๋ฐฑ์ด ์๋ ๋ฒ์ temp๋ฅผ ์ฐธ์กฐํ์ง ์์ต๋๋ค.
// a์ ํจ๊ป ์ฌ์ฌ์ฉ๋ฉ๋๋ค. ap->i์ ๊ฐ์ ๋ฌด์์ ๋๊น?
}
์์๋ก ์์ฑ๋ ์ปดํ์ผ๋ฌ์ ์๋ช ์ C++ ํ์ค์ ์ ์ ์๋์ด ์์ต๋๋ค.
์์์ ์๋ช ์ด ๋๋๊ณ ์์๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ
์ต์ ํ ์ปดํ์ผ๋ฌ๋ ์คํ ๊ณต๊ฐ์ ๋ค๋ฅธ ์์ ๋๋
๋ผ์ด๋ธ ๋ฒ์์ ๊ฒน์น์ง ์๋ ๋ฒ์๊ฐ ์ง์ ๋ ์ง์ญ ๋ณ์. ๊ทธ๋ฌ๋ ์ผ๋ถ
๋ ๊ฑฐ์ ์ฝ๋๋ ์์ ์คํ์ด ์๋ ์ด์ ์ปดํ์ผ๋ฌ์ ๋์์ ์์กดํฉ๋๋ค.
๊ณต๊ฐ์ด ์ฌ์ฌ์ฉ๋์ง ์์ผ๋ฉด ๊ณต๊ฒฉ์ ์ธ ์คํ ์ฌ์ฌ์ฉ์ผ๋ก ์ธํด ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๊ฒ
์ต์ ์ ์์ ์คํ ์ฌ์ฌ์ฉ ์ต์ ํ๋ฅผ ์ ์ดํ๋ โโ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
-ftrapv.
์ด ์ต์ ์ ๋ง์ , ๋บ์ ,
๊ณฑ์ ์ฐ์ฐ.
-fwrapv
์ด ์ต์ ์ ์ปดํ์ผ๋ฌ๊ฐ ๋ถํธ ์๋ ์ฐ์ ์ค๋ฒํ๋ก๋ฅผ ๊ฐ์ ํ๋๋ก ์ง์ํฉ๋๋ค.
๋ง์ , ๋บ์ ๋ฐ ๊ณฑ์ ์ XNUMX์ ๋ณด์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์๋๋ค.
๋ํ. ์ด ํ๋๊ทธ๋ ์ผ๋ถ ์ต์ ํ๋ฅผ ํ์ฑํํ๊ณ ๋๋จธ์ง๋ ๋นํ์ฑํํฉ๋๋ค. ์ด๊ฒ
์ต์ ์ Java ์ธ์ด์์ ์๊ตฌํ๋ ๋๋ก Java ํ๋ฐํธ ์๋์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
์ฌ์.
-์์ธ
์์ธ ์ฒ๋ฆฌ๋ฅผ ํ์ฑํํฉ๋๋ค. ์์ธ๋ฅผ ์ ํํ๋ ๋ฐ ํ์ํ ์ถ๊ฐ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์์ํ
์ผ๋ถ ๋์, ์ด๋ GCC๊ฐ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํ ํ๋ ์ ํด์ ์ ๋ณด๋ฅผ ์์ฑํจ์ ์๋ฏธํฉ๋๋ค.
์ํฅ์ ๋ฏธ์น์ง๋ ์์ง๋ง ์๋นํ ๋ฐ์ดํฐ ํฌ๊ธฐ ์ค๋ฒํค๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์คํ. ์ด ์ต์ ์ ์ง์ ํ์ง ์์ผ๋ฉด GCC์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ด์ ๋ํด ํ์ฑํํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ๊ณ ๋ค์๊ณผ ๊ฐ์ ์ธ์ด์ ๋ํด์๋ ๋นํ์ฑํํ๋ C++์ ๊ฐ์ต๋๋ค.
C๋ ์ผ๋ฐ์ ์ผ๋ก ํ์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ด ์ต์ ์ ํ์ฑํํด์ผ ํ ์๋ ์์ต๋๋ค.
์์ฑ๋ ์์ธ ์ฒ๋ฆฌ๊ธฐ์ ์ ๋๋ก ์ํธ ์ด์ฉํด์ผ ํ๋ C ์ฝ๋ ์ปดํ์ผ
C++์์. ์ด์ C++๋ฅผ ์ปดํ์ผํ๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ๋นํ์ฑํํ ์๋ ์์ต๋๋ค.
์์ธ ์ฒ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๋ ํ๋ก๊ทธ๋จ.
-fnon-call-exception
ํธ๋ํ ๋ช ๋ น์ด ์์ธ๋ฅผ throwํ๋๋ก ํ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด
์ด๋์๋ ์กด์ฌํ์ง ์๋ ํ๋ซํผ๋ณ ๋ฐํ์ ์ง์์ด ํ์ํฉ๋๋ค. ๊ฒ๋ค๊ฐ,
๊ทธ๊ฒ์ ๋จ์ง ํ์ฉ ํจ์ ์์ธ๋ฅผ ๋์ง๋ ๋ช ๋ น, ์ฆ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ๋๋
๋ถ๋ ์์์ ๋ช ๋ น์ด. ์์์ ์์ธ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค.
"SIGALRM"๊ณผ ๊ฐ์ ์ ํธ ์ฒ๋ฆฌ๊ธฐ.
-fdelete-dead-์์ธ
์์ธ๋ฅผ ๋์ง ์ ์์ง๋ง ๋ฌ๋ฆฌ ๊ธฐ์ฌํ์ง ์๋ ๋ช ๋ น์ ๊ณ ๋ คํ์ญ์์ค.
ํ๋ก๊ทธ๋จ ์คํ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
Ada ์ธ์ด ์ฌ์์์ ํ์ฉํ๋ ๋๋ก Ada ํ๋ฐํธ ์๋์ฉ์ ๋๋ค. ์ต์ ํ
์ฃฝ์ ์์ธ๊ฐ ์ ๊ฑฐ๋๋๋ก ํ๋ ํจ์ค๋ ์๋ก ๋ค๋ฅธ ์์น์์ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
์ต์ ํ ์์ค.
-ํ์๋ ํ ์ด๋ธ
์ ์ฌํ๊ฒ -์์ธ, ํ์ํ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋
๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์์ฑ๋ ์ฝ๋์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ๋น์ ์ ์ผ๋ฐ์ ์ผ๋ก ํ ํ์๊ฐ ์์ต๋๋ค
์ด ์ต์ ์ ํ์ฑํํ์ญ์์ค. ๋์ ์ด ์ฒ๋ฆฌ๊ฐ ํ์ํ ์ธ์ด ํ๋ก์ธ์๊ฐ
์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ.
-fasynchronous-unwind-tables
๋์ ์์คํ ์์ ์ง์ํ๋ ๊ฒฝ์ฐ DWARF 2 ํ์์ผ๋ก ํด์ ํ ์ด๋ธ์ ์์ฑํฉ๋๋ค. ํ ์ด๋ธ์
๊ฐ ๋ช ๋ น์ด ๊ฒฝ๊ณ์์ ์ ํํ๋ฏ๋ก ์คํ ํด์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋น๋๊ธฐ ์ด๋ฒคํธ(์: ๋๋ฒ๊ฑฐ ๋๋ ๊ฐ๋น์ง ์์ง๊ธฐ).
-fno-gnu-๊ณ ์
์ต๊ทผ GNU ์ด์ ๋ธ๋ฌ์ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ ์์คํ ์์ C++ ์ปดํ์ผ๋ฌ๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
ํ ํ๋ฆฟ ์ ์ ๋ฐ์ดํฐ ๋ฉค๋ฒ์ ์ ์๋ฅผ ํ์ธํ๋ "STB_GNU_UNIQUE" ๋ฐ์ธ๋ฉ
์ธ๋ผ์ธ ํจ์์ ์ ์ ์ง์ญ ๋ณ์๋ ๋ค์์ด ์๋ ๊ฒฝ์ฐ์๋ ๊ณ ์ ํฉ๋๋ค.
"RTLD_LOCAL"; ์ด๊ฒ์ ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ํ์ํฉ๋๋ค.
"RTLD_LOCAL" ํ๋ฌ๊ทธ์ธ์ ๊ทธ ์ค ํ๋์ ์ ์์ ๋ฐ๋ผ ๋ค๋ฅด๋ฏ๋ก
์์ง์ ๋ฐ์ธ๋ฉ์ ๋ํด ๋ค๋ฅธ ํ๋์ ๋์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ก ์ธํด
์ํฅ์ ๋ฐ๋ DSO์ ๋ํด "dlclose"๋ฅผ ๋ฌด์ํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ด ์ฌ์ด๊ธฐํ์ ์์กดํ๋ ๊ฒฝ์ฐ
"dlclose" ๋ฐ "dlopen"์ ํตํ DSO์ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. -fno-gnu-๊ณ ์ .
-fpcc-๊ตฌ์กฐ์ฒด-๋ฐํ
๋ฉ๋ชจ๋ฆฌ์ ์๋ "short" "struct" ๋ฐ "union" ๊ฐ์ ๋ ๊ธด ๊ฐ์ฒ๋ผ ๋ฐํํฉ๋๋ค.
๋ ์ง์คํฐ. ์ด ๊ท์น์ ๋ ํจ์จ์ ์ด์ง๋ง ๋ค์์ ํ์ฉํ๋ ์ด์ ์ด ์์ต๋๋ค.
GCC๋ก ์ปดํ์ผ๋ ํ์ผ๊ณผ ๋ค๋ฅธ ์ปดํ์ผ๋ฌ๋ก ์ปดํ์ผ๋ ํ์ผ ๊ฐ์ ์ํธํธ์ถ์ฑ,
ํนํ ํด๋์ฉ C ์ปดํ์ผ๋ฌ(pcc).
๋ฉ๋ชจ๋ฆฌ์์ ๊ตฌ์กฐ๋ฅผ ๋ฐํํ๋ ์ ํํ ๊ท์น์ ๋์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๊ตฌ์ฑ ๋งคํฌ๋ก.
์งง์ ๊ตฌ์กฐ์ ๊ณต์ฉ์ฒด๋ ํฌ๊ธฐ์ ์ ๋ ฌ์ด ์ผ๋ถ ๊ตฌ์กฐ์ ์ผ์นํ๋ ๊ฒ์ ๋๋ค.
์ ์ํ.
๊ฒฝ๊ณ : ๋ก ์ปดํ์ผ๋ ์ฝ๋ -fpcc-๊ตฌ์กฐ์ฒด-๋ฐํ ์ค์์น๊ฐ ๋ฐ์ด๋๋ฆฌ์ ํธํ๋์ง ์์ต๋๋ค
๋ก ์ปดํ์ผ๋ ์ฝ๋๋ก -freg-๊ตฌ์กฐ์ฒด-๋ฐํ ์ค์์น. ๊ท์ ์ ๋ง์ง ์๊ฒ ์ฌ์ฉํ์ญ์์ค.
๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ด๋๋ฆฌ ์ธํฐํ์ด์ค.
-freg-๊ตฌ์กฐ์ฒด-๋ฐํ
๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ ์ง์คํฐ์์ "๊ตฌ์กฐ์ฒด" ๋ฐ "๊ฒฐํฉ" ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ด๊ฒ ๋ ํจ์จ์ ์ด๋ค
๋ณด๋ค ์์ ๊ตฌ์กฐ๋ฌผ์ ๊ฒฝ์ฐ -fpcc-๊ตฌ์กฐ์ฒด-๋ฐํ.
๋ ๋ค ์ง์ ํ์ง ์์ผ๋ฉด -fpcc-๊ตฌ์กฐ์ฒด-๋ฐํ ...๋ ์๋๋ค -freg-๊ตฌ์กฐ์ฒด-๋ฐํ, GCC๋ ๊ธฐ๋ณธ์ ์ผ๋ก
์ด๋ค ๊ท์น์ด ๋์์ ๋ํ ํ์ค์ ๋๋ค. ํ์ค ๊ท์ฝ์ด ์๋ ๊ฒฝ์ฐ,
GCC๋ ๊ธฐ๋ณธ์ ์ผ๋ก -fpcc-๊ตฌ์กฐ์ฒด-๋ฐํ, GCC๊ฐ ์ฃผ์ ๋์์ธ ๋์ ์ ์ธ
์ปดํ์ผ๋ฌ. ์ด ๊ฒฝ์ฐ ํ์ค์ ์ ํํ ์ ์์ผ๋ฉฐ ๋ ํจ์จ์ ์ธ
๋ฑ๋ก ๋ฐํ ๋์.
๊ฒฝ๊ณ : ๋ก ์ปดํ์ผ๋ ์ฝ๋ -freg-๊ตฌ์กฐ์ฒด-๋ฐํ ์ค์์น๊ฐ ๋ฐ์ด๋๋ฆฌ์ ํธํ๋์ง ์์ต๋๋ค
๋ก ์ปดํ์ผ๋ ์ฝ๋๋ก -fpcc-๊ตฌ์กฐ์ฒด-๋ฐํ ์ค์์น. ๊ท์ ์ ๋ง์ง ์๊ฒ ์ฌ์ฉํ์ญ์์ค.
๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ด๋๋ฆฌ ์ธํฐํ์ด์ค.
-fshort ์ด๊ฑฐํ
์ ์ธ๋ ๋ฒ์์ ํ์ํ ๋งํผ๋ง "์ด๊ฑฐํ" ์ ํ์ ํ ๋นํฉ๋๋ค.
๊ฐ๋ฅํ ๊ฐ. ํนํ "enum" ์ ํ์ ๊ฐ์ฅ ์์ ์ ์์ ๋์ผํฉ๋๋ค.
์ถฉ๋ถํ ๊ณต๊ฐ์ด ์๋ ์ ํ.
๊ฒฝ๊ณ : ์ ์, -fshort ์ด๊ฑฐํ ์ค์์น๋ก ์ธํด GCC๊ฐ ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
ํด๋น ์ค์์น ์์ด ์์ฑ๋ ์ฝ๋์ ํธํ๋ฉ๋๋ค. ๊ท์ ์ ๋ง์ง ์๊ฒ ์ฌ์ฉํ์ญ์์ค.
๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ด๋๋ฆฌ ์ธํฐํ์ด์ค.
-fshort-๋๋ธ
"float"์ ๋ํด "double"์ ๋์ผํ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ฒฝ๊ณ : ์ ์, -fshort-๋๋ธ ์ค์์น๋ก ์ธํด GCC๊ฐ ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
ํด๋น ์ค์์น ์์ด ์์ฑ๋ ์ฝ๋์ ํธํ๋ฉ๋๋ค. ๊ท์ ์ ๋ง์ง ์๊ฒ ์ฌ์ฉํ์ญ์์ค.
๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ด๋๋ฆฌ ์ธํฐํ์ด์ค.
-fshort-wchar
์ ๋ํ ๊ธฐ๋ณธ ์ ํ์ ์ฌ์ ์ํฉ๋๋ค. wchar_t ๋ ์งง์ ๋ถํธ INT ๋์ ์
๋์์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ์ด ์ต์ ์ ์๋์์ ์คํํ ํ๋ก๊ทธ๋จ์ ๋น๋ํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
์์ธ.
๊ฒฝ๊ณ : ์ ์, -fshort-wchar ์ค์์น๋ก ์ธํด GCC๊ฐ ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
ํด๋น ์ค์์น ์์ด ์์ฑ๋ ์ฝ๋์ ํธํ๋ฉ๋๋ค. ๊ท์ ์ ๋ง์ง ์๊ฒ ์ฌ์ฉํ์ญ์์ค.
๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ด๋๋ฆฌ ์ธํฐํ์ด์ค.
-fno-๊ณตํต
C ์ฝ๋์์ ์ด๊ธฐํ๋์ง ์์ ์ ์ญ ๋ณ์์ ๋ฐฐ์น๋ฅผ ์ ์ดํฉ๋๋ค. ์ ๋์ค C ์ปดํ์ผ๋ฌ
์ ํต์ ์ผ๋ก ์ด๋ฌํ ๋ณ์์ ๋ํด ์ฌ๋ฌ ์ ์๋ฅผ ํ์ฉํ์ต๋๋ค.
๋ณ์๋ฅผ ๊ณตํต ๋ธ๋ก์ ๋ฐฐ์นํ์ฌ ์ปดํ์ผ ๋จ์๋ฅผ ๋ง๋ญ๋๋ค. ์ด๊ฒ์ด ํ๋์ด๋ค
์ ์ํด ์ง์ ๋ -f๊ณตํต์ด๋ฉฐ ๋๋ถ๋ถ์ ๋์์์ GCC์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ๋ฐ๋ฉด์,
์ด ๋์์ ISO C์์ ์๊ตฌํ์ง ์์ผ๋ฉฐ ์ผ๋ถ ๋์์์๋ ์๋ ๋๋ ์ฝ๋๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
๋ณ์ ์ฐธ์กฐ์ ๋ํ ํฌ๊ธฐ ํ๋ํฐ. NS -fno-๊ณตํต ์ต์ ์ ๋ค์์ ์ง์ ํฉ๋๋ค.
์ปดํ์ผ๋ฌ๋ ๊ฐ์ฒด์ ๋ฐ์ดํฐ ์น์ ์ ์ด๊ธฐํ๋์ง ์์ ์ ์ญ ๋ณ์๋ฅผ ๋ฐฐ์นํด์ผ ํฉ๋๋ค.
ํ์ผ์ ์ผ๋ฐ ๋ธ๋ก์ผ๋ก ์์ฑํ์ง ์์ต๋๋ค. ์ด๋ ๋ค์๊ณผ ๊ฐ์ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
๋ ๊ฐ์ ๋ค๋ฅธ ์ปดํ์ผ์์ ๋์ผํ ๋ณ์๊ฐ ์ ์ธ๋๋ฉด("extern" ์์ด) ๋ค์์ ์ป์ต๋๋ค.
๋งํฌํ ๋ ๋ค์ค ์ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ค์์ผ๋ก ์ปดํ์ผํด์ผ ํฉ๋๋ค.
-f๊ณตํต ๋์ ์. ์ปดํ์ผ -fno-๊ณตํต ๋์์ ์ ์ฉํฉ๋๋ค.
๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ๊ฑฐ๋ ํ๋ก๊ทธ๋จ์ด ์๋ํ๋์ง ํ์ธํ๋ ค๋ ๊ฒฝ์ฐ
์ด๊ธฐํ๋์ง ์์ ๋ณ์ ์ ์ธ์ ํญ์ ์ด๋ฐ ์์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ค๋ฅธ ์์คํ .
-fno-ident
๋ฌด์ #ident ์ง์นจ.
-finhibit-size-์ง์์ด
".size" ์ด์ ๋ธ๋ฌ ์ง์๋ฌธ์ด๋ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ ๋ค๋ฅธ ๊ฒ์ ์ถ๋ ฅํ์ง ๋ง์ญ์์ค.
ํจ์๊ฐ ์ค๊ฐ์ ๋ถํ ๋๊ณ ๋ ๊ฐ์ ์ ๋ฐ์ด ๋ฉ๋ฆฌ ๋จ์ด์ง ์์น์ ๋ฐฐ์น๋๋ ๊ฒฝ์ฐ
๊ธฐ์ต์ ๋ฐ๋ก. ์ด ์ต์ ์ ์ปดํ์ผํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. crtstuff.c; ๋น์ ์ ํ์ํ์ง ์์ต๋๋ค
๋ค๋ฅธ ์ฉ๋๋ก ์ฌ์ฉํฉ๋๋ค.
-fverbose-asm
์์ฑ๋ ์ด์ ๋ธ๋ฆฌ ์ฝ๋์ ์ถ๊ฐ ์ฃผ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ์ฌ
์ฝ์ ์ ์์ต๋๋ค. ์ด ์ต์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ค์ ๋ก ์ฝ์ ํ์๊ฐ ์๋ ์ฌ๋๋ค์๊ฒ๋ง ์ฌ์ฉ๋ฉ๋๋ค.
์์ฑ๋ ์ด์ ๋ธ๋ฆฌ ์ฝ๋(์๋ง๋ ์ปดํ์ผ๋ฌ ์์ฒด๋ฅผ ๋๋ฒ๊น ํ๋ ๋์).
-fno-verbose-asm, ๊ธฐ๋ณธ๊ฐ์ ์ถ๊ฐ ์ ๋ณด๊ฐ ์๋ต๋๋๋ก ํ๊ณ
๋ ๊ฐ์ ์ด์ ๋ธ๋ฌ ํ์ผ์ ๋น๊ตํ ๋ ์ ์ฉํฉ๋๋ค.
-frecord-gcc-์ค์์น
์ด ์ค์์น๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ๋ฅผ ํธ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ช ๋ น์ค์ด
์์ฑ ์ค์ธ ๊ฐ์ฒด ํ์ผ์ ๋๋ค. ์ด ์ค์์น๋ ์ผ๋ถ์์๋ง ๊ตฌํ๋ฉ๋๋ค.
๋์ ๋ฐ ๋ น์์ ์ ํํ ํ์์ ๋์ ๋ฐ ๋ฐ์ด๋๋ฆฌ ํ์ผ ํ์์ ๋๋ค.
์ข ์์ ์ด์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ASCII ํ ์คํธ๊ฐ ํฌํจ๋ ์น์ ํ์์ ์ทจํฉ๋๋ค. ์ด๊ฒ
์ค์์น๋ ๋ค์๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. -fverbose-asm ์ค์์น, ํ์ง๋ง ๊ทธ ์ค์์น๋ ๊ธฐ๋ก๋ง
์ด์ ๋ธ๋ฌ ์ถ๋ ฅ ํ์ผ์ ์ ๋ณด๋ฅผ ์ฃผ์์ผ๋ก ์ฌ์ฉํ๋ฏ๋ก ๊ฐ์ฒด์ ๋๋ฌํ์ง ์์ต๋๋ค.
ํ์ผ. ๋ํ๋ณด์ญ์์ค -grecord-gcc-์ค์์น ์ปดํ์ผ๋ฌ ์ต์ ์ ์ ์ฅํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ
๋ชฉ์ ํ์ผ.
-fpic
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉํ๊ธฐ์ ์ ํฉํ ์์น ๋ ๋ฆฝ ์ฝ๋(PIC)๋ฅผ ์์ฑํฉ๋๋ค.
๋์ ๋จธ์ ์ ๋ํด ์ง์๋ฉ๋๋ค. ์ด๋ฌํ ์ฝ๋๋ ๋ค์์ ํตํด ๋ชจ๋ ์์ ์ฃผ์์ ์ก์ธ์คํฉ๋๋ค.
๊ธ๋ก๋ฒ ์คํ์ ํ ์ด๋ธ(GOT). ๋์ ๋ก๋๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ GOT ํญ๋ชฉ์ ํด๊ฒฐํฉ๋๋ค.
ํ๋ก๊ทธ๋จ์ด ์์๋ฉ๋๋ค(๋์ ๋ก๋๋ GCC์ ์ผ๋ถ๊ฐ ์๋๋๋ค.
์ฒด๊ณ). ๋งํฌ๋ ์คํ ํ์ผ์ GOT ํฌ๊ธฐ๊ฐ ์์คํ ๋ณ ์ต๋๊ฐ์ ์ด๊ณผํ๋ ๊ฒฝ์ฐ
ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ฉด ๋ง์ปค์์ ๋ค์์ ๋ํ๋ด๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค. -fpic ์๋ํ์ง ์์ต๋๋ค. ~์
์ด ๊ฒฝ์ฐ ๋ค์์ผ๋ก ๋ค์ ์ปดํ์ผํ์ญ์์ค. -fPIC ๋์ ์. (์ด ์ต๋๊ฐ์ SPARC์ ๊ฒฝ์ฐ 8k์ด๊ณ 32k์ ๋๋ค.
m68k ๋ฐ RS/6000์์. 386์ ๊ทธ๋ฐ ์ ํ์ด ์์ต๋๋ค.)
์์น ๋ ๋ฆฝ ์ฝ๋์๋ ํน๋ณํ ์ง์์ด ํ์ํ๋ฏ๋ก ๋ค์์์๋ง ์๋ํฉ๋๋ค.
ํน์ ๊ธฐ๊ณ. 386์ ๊ฒฝ์ฐ GCC๋ System V์ฉ PIC๋ฅผ ์ง์ํ์ง๋ง Sun์ฉ์ ์ง์ํ์ง ์์ต๋๋ค.
386i. IBM RS/6000์ฉ์ผ๋ก ์์ฑ๋ ์ฝ๋๋ ํญ์ ์์น ๋ ๋ฆฝ์ ์ ๋๋ค.
์ด ํ๋๊ทธ๊ฐ ์ค์ ๋๋ฉด ๋งคํฌ๋ก "__pic__" ๋ฐ "__PIC__"๊ฐ 1๋ก ์ ์๋ฉ๋๋ค.
-fPIC
๋์ ๋จธ์ ์ ๋ํด ์ง์๋๋ ๊ฒฝ์ฐ ์์น ๋ ๋ฆฝ์ ์ธ ์ฝ๋๋ฅผ ๋ด๋ณด๋ ๋๋ค.
๋์ ์ฐ๊ฒฐ ๋ฐ ์ ์ญ ์คํ์ ํ ์ด๋ธ ํฌ๊ธฐ ์ ํ ๋ฐฉ์ง. ์ด๊ฒ
์ต์ ์ m68k, PowerPC ๋ฐ SPARC์์ ์ฐจ์ด๋ฅผ ๋ง๋ญ๋๋ค.
์์น ๋ ๋ฆฝ ์ฝ๋์๋ ํน๋ณํ ์ง์์ด ํ์ํ๋ฏ๋ก ๋ค์์์๋ง ์๋ํฉ๋๋ค.
ํน์ ๊ธฐ๊ณ.
์ด ํ๋๊ทธ๊ฐ ์ค์ ๋๋ฉด ๋งคํฌ๋ก "__pic__" ๋ฐ "__PIC__"๊ฐ 2๋ก ์ ์๋ฉ๋๋ค.
-ํ์ด
-fPIE
์ด๋ฌํ ์ต์ ์ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค. -fpic and -fPIC, ๊ทธ๋ฌ๋ ์์ฑ๋ ์์น ๋ ๋ฆฝ ์ฝ๋
์คํ ํ์ผ์๋ง ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค. -ํ์ด GCC
์ต์ ์ ๋งํฌ ์ค์ ์ฌ์ฉ๋ฉ๋๋ค.
-ํ์ด and -fPIE ๋ ๋ค "__pie__" ๋ฐ "__PIE__" ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. ๋งคํฌ๋ก์๋
๊ฐ 1 -ํ์ด ๋ฐ 2 for -fPIE.
-fno-์ ํ ํ ์ด๋ธ
๋ ํจ์จ์ ์ธ ๊ฒฝ์ฐ์๋ switch ๋ฌธ์ ์ ํ ํ ์ด๋ธ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
๋ค๋ฅธ ์ฝ๋ ์์ฑ ์ ๋ต๋ณด๋ค ์ด ์ต์ ์ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
-fpic or -fPIC ๋์ ๋ง์ปค์ ์ผ๋ถ๋ฅผ ํ์ฑํ๊ณ ํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด
์ ํ ํ ์ด๋ธ์ ์ฃผ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ์ผ๋ถ ๋์์์๋ ์ ํ ํ ์ด๋ธ์ด ํ์ํ์ง ์์ต๋๋ค.
GOT ๋ฐ ์ด ์ต์ ์ ํ์ํ์ง ์์ต๋๋ค.
-๊ณ ์ -๋ฑ๋ก ๋ฒํธ
๋ช ๋ช ๋ ๋ ์ง์คํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ๋ฑ๋ก ๋ฒํธ ๊ณ ์ ๋ ์ง์คํฐ๋ก; ์์ฑ๋ ์ฝ๋๋ ๋ค์์ ์ฐธ์กฐํด์๋ ์ ๋ฉ๋๋ค.
(์๋ง๋ ์คํ ํฌ์ธํฐ, ํ๋ ์ ํฌ์ธํฐ ๋๋ ๋ค๋ฅธ ๊ณ ์ ์ญํ ์ ์ ์ธํ๊ณ ).
๋ฑ๋ก ๋ฒํธ ๋ ์ง์คํฐ์ ์ด๋ฆ์ด์ด์ผ ํฉ๋๋ค. ํ์ฉ๋๋ ๋ ์ง์คํฐ ์ด๋ฆ์ ์์คํ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๊ธฐ๊ณ ์ค๋ช ๋งคํฌ๋ก ํ์ผ์ "REGISTER_NAMES" ๋งคํฌ๋ก์ ์ ์๋์ด ์์ต๋๋ค.
์ด ํ๋๊ทธ๋ XNUMX๋ฐฉํฅ ์ ํ์ ์ง์ ํ๊ธฐ ๋๋ฌธ์ ์์ ํ์์ ๊ฐ์ง ์์ต๋๋ค.
-fcall ์ฌ์ฉ-๋ฑ๋ก ๋ฒํธ
๋ช ๋ช ๋ ๋ ์ง์คํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ๋ฑ๋ก ๋ฒํธ ๊ธฐ๋ฅ์ ์ํด ์ฐจ๋จ๋๋ ํ ๋น ๊ฐ๋ฅํ ๋ ์ง์คํฐ๋ก
์ ํ. ๊ทธ๊ฒ์ ์์ ๋๋ ๋ณ์์ ๊ฑธ์ณ ์ด์ง ์๋ ๋ณ์์ ํ ๋น๋ ์ ์์ต๋๋ค.
์ ํ. ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ปดํ์ผ๋ ํจ์๋ ๋ ์ง์คํฐ๋ฅผ ์ ์ฅ ๋ฐ ๋ณต์ํ์ง ์์ต๋๋ค. ๋ฑ๋ก ๋ฒํธ.
ํ๋ ์ ํฌ์ธํฐ ๋๋ ์คํ ํฌ์ธํฐ์ ํจ๊ป ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ค๋ฅ์ ๋๋ค. ์ด๊ฒ์ ์ฌ์ฉ
๊ธฐ๊ณ ์คํ์์ ๊ณ ์ ๋ ํผ๋ฒ ์ด์๋ธ ์ญํ ์ด ์๋ ๋ค๋ฅธ ๋ ์ง์คํฐ์ ๋ํ ํ๋๊ทธ
๋ชจ๋ธ์ ๋น์ฐธํ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์ต๋๋ค.
์ด ํ๋๊ทธ๋ XNUMX๋ฐฉํฅ ์ ํ์ ์ง์ ํ๊ธฐ ๋๋ฌธ์ ์์ ํ์์ ๊ฐ์ง ์์ต๋๋ค.
-fcall ์ ์ฅ-๋ฑ๋ก ๋ฒํธ
๋ช ๋ช ๋ ๋ ์ง์คํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ๋ฑ๋ก ๋ฒํธ ํจ์์ ์ํด ์ ์ฅ๋ ํ ๋น ๊ฐ๋ฅํ ๋ ์ง์คํฐ๋ก. ๊ทธ๊ฒ์ ์ ์์ต๋๋ค
ํธ์ถ์ ๊ฑธ์ณ ์๋ ์์ ๋๋ ๋ณ์์๋ ํ ๋น๋ฉ๋๋ค. ๊ธฐ๋ฅ
์ด ๋ฐฉ๋ฒ์ผ๋ก ์ปดํ์ผํ์ฌ ๋ ์ง์คํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ณต์ํฉ๋๋ค. ๋ฑ๋ก ๋ฒํธ ๊ทธ๋ค์ด ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ค๋ฉด.
ํ๋ ์ ํฌ์ธํฐ ๋๋ ์คํ ํฌ์ธํฐ์ ํจ๊ป ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ค๋ฅ์ ๋๋ค. ์ด๊ฒ์ ์ฌ์ฉ
๊ธฐ๊ณ ์คํ์์ ๊ณ ์ ๋ ํผ๋ฒ ์ด์๋ธ ์ญํ ์ด ์๋ ๋ค๋ฅธ ๋ ์ง์คํฐ์ ๋ํ ํ๋๊ทธ
๋ชจ๋ธ์ ๋น์ฐธํ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์ต๋๋ค.
๋ ์ง์คํฐ์ ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ์ข ๋ฅ์ ์ฌ๋์ด ๋ฐ์ํฉ๋๋ค.
ํจ์ ๊ฐ์ด ๋ฐํ๋ ์ ์์ต๋๋ค.
์ด ํ๋๊ทธ๋ XNUMX๋ฐฉํฅ ์ ํ์ ์ง์ ํ๊ธฐ ๋๋ฌธ์ ์์ ํ์์ ๊ฐ์ง ์์ต๋๋ค.
-fpack-๊ตฌ์กฐ์ฒด[=n]
๊ฐ์ ์ง์ ํ์ง ์์ผ๋ฉด ๋ชจ๋ ๊ตฌ์กฐ ๋ถ์ฌ๋ฅผ ๊ตฌ๋ฉ ์์ด ํจ๊ป ํฌ์ฅํฉ๋๋ค. ์ธ์
๊ฐ์ด ์ง์ ๋จ(XNUMX์ ์์ ๊ฑฐ๋ญ์ ๊ณฑ์ด์ด์ผ ํจ), ํฉ ๊ตฌ์กฐ ๋ฉค๋ฒ
์ด ๊ฐ์ ๋ฐ๋ผ ์ต๋ ์ ๋ ฌ์ ๋ํ๋ด๋(์ฆ,
์ด๋ณด๋ค ํฐ ๊ธฐ๋ณธ ์ ๋ ฌ ์๊ตฌ ์ฌํญ์ ์ ์ฌ์ ์ผ๋ก ์ ๋ ฌ๋์ง ์์ ์ํ๋ก ์ถ๋ ฅ๋ฉ๋๋ค.
๋ค์ ํผํ ์์น.
๊ฒฝ๊ณ : ์ ์, -fpack-๊ตฌ์กฐ์ฒด ์ค์์น๋ก ์ธํด GCC๊ฐ ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
ํด๋น ์ค์์น ์์ด ์์ฑ๋ ์ฝ๋์ ํธํ๋ฉ๋๋ค. ๋ํ ์ฝ๋๋ฅผ
์ฐจ์ ์ฑ . ๊ธฐ๋ณธ์ด ์๋ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ์ด๋๋ฆฌ ์ธํฐํ์ด์ค๋ฅผ ์ค์ํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
- ๊ธฐ๊ตฌ ๊ธฐ๋ฅ
ํจ์์ ๋ํ ์ง์ ๋ฐ ์ข ๋ฃ๋ฅผ ์ํ ๊ณ์ธก ํธ์ถ์ ์์ฑํฉ๋๋ค. ํจ์ ์งํ
ํญ๋ชฉ ๋ฐ ํจ์ ์ข ๋ฃ ์ง์ ์ ๋ค์๊ณผ ๊ฐ์ ํ๋กํ์ผ๋ง ํจ์๊ฐ ๋ค์๊ณผ ๊ฐ์ด ํธ์ถ๋ฉ๋๋ค.
ํ์ฌ ํจ์ ๋ฐ ํธ์ถ ์ฌ์ดํธ์ ์ฃผ์์ ๋๋ค. (์ผ๋ถ ํ๋ซํผ์์๋
"__builtin_return_address"๋ ํ์ฌ ๊ธฐ๋ฅ ์ด์์ผ๋ก ์๋ํ์ง ์์ผ๋ฏ๋ก ํธ์ถ ์ฌ์ดํธ
๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋กํ์ผ๋ง ๊ธฐ๋ฅ์ ์ ๋ณด๊ฐ ์ ๊ณต๋์ง ์์ ์ ์์ต๋๋ค.)
๋ฌดํจ __cyg_profile_func_enter (๋ฌดํจ *this_fn,
๋ฌดํจ *call_site);
๋ฌดํจ __cyg_profile_func_exit (๋ฌดํจ *this_fn,
๋ฌดํจ *call_site);
์ฒซ ๋ฒ์งธ ์ธ์๋ ํ์ฌ ํจ์์ ์์ ์ฃผ์์ ๋๋ค.
๊ธฐํธ ํ ์ด๋ธ์์ ์ ํํ ์กฐํํ์ต๋๋ค.
์ด ๊ณ์ธก์ ๋ค๋ฅธ ๊ธฐ๋ฅ์์ ์ธ๋ผ์ธ์ผ๋ก ํ์ฅ๋ ๊ธฐ๋ฅ์ ๋ํด์๋ ์ํ๋ฉ๋๋ค.
ํ๋กํ์ผ๋ง ํธ์ถ์ ๊ฐ๋ ์ ์ผ๋ก ์ธ๋ผ์ธ ํจ์๊ฐ ์ ๋ ฅ๋๋ ์์น์
๋๊ฐ์ด. ์ด๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฃผ์ ์ง์ ๊ฐ๋ฅํ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๋ง์ฝ์
ํจ์์ ๋ชจ๋ ์ฌ์ฉ์ ์ธ๋ผ์ธ์ผ๋ก ํ์ฅ๋ฉ๋๋ค. ์ด๋ ์ถ๊ฐ ํ์ฅ์ ์๋ฏธํ ์ ์์ต๋๋ค.
์ฝ๋ ํฌ๊ธฐ. ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ธ๋ถ ์ธ๋ผ์ธ C ์ฝ๋์์ ์ด๋ฌํ ์ฃผ์ ์ง์ ๊ฐ๋ฅํ ๋ฒ์
๊ธฐ๋ฅ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. (์ด์จ๋ ๋ณดํต์ ๊ทธ๋ ์ง๋ง ์ด์ด ์ข๋ค๋ฉด
์ต์ ํ ํ๋ก๊ทธ๋จ์ ํญ์ ๊ธฐ๋ฅ์ ์ธ๋ผ์ธ์ผ๋ก ํ์ฅํฉ๋๋ค.
์ ์ ์ฌ๋ณธ์ ์ ๊ณตํ์ง ์๊ณ .)
ํจ์์๋ "no_instrument_function" ์์ฑ์ด ๋ถ์ฌ๋ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ
๊ณ์ธก์ด ์ํ๋์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ๋กํ์ผ๋ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ ๋์ด๋ ๊ธฐ๋ฅ, ์ฐ์ ์์๊ฐ ๋์ ์ธํฐ๋ฝํธ ๋ฃจํด ๋ฐ
ํ๋กํ์ผ๋ง ํจ์๋ ์์ ํ๊ฒ ํธ์ถ๋ ์ ์์ต๋๋ค(์๋ง๋ ์ ํธ ์ฒ๋ฆฌ๊ธฐ๊ฐ
ํ๋กํ์ผ๋ง ๋ฃจํด์ ์ถ๋ ฅ์ ์์ฑํ๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค.
-finstrument-๊ธฐ๋ฅ-์ ์ธ-ํ์ผ-๋ชฉ๋ก=ํ์ผ,ํ์ผ, ...
๊ณ์ธก์์ ์ ์ธ๋๋ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ค์ ํฉ๋๋ค(์ค๋ช ์ฐธ์กฐ
"-finstrument-functions"). ํจ์ ์ ์๊ฐ ํฌํจ๋ ํ์ผ์ด ์ผ์นํ๋ ๊ฒฝ์ฐ
์ค ํ๋์ ํ์ผ, ๊ทธ ๊ธฐ๋ฅ์ ๊ณ์ธก๋์ง ์์ต๋๋ค. ๊ฒฝ๊ธฐ๋
๋ถ๋ถ ๋ฌธ์์ด: ๋ง์ฝ ํ์ผ ๋งค๊ฐ๋ณ์๋ ํ์ผ ์ด๋ฆ์ ํ์ ๋ฌธ์์ด์ด๋ฉฐ ๋ค์์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ํฉ์ด ๋์ญ์์ค.
์ :
-finstrument-functions-exclude-file-list=/bits/stl,include/sys
๊ฒฝ๋ก ์ด๋ฆ์ "/bits/stl" ๋๋
"ํฌํจ/์์คํ ".
์ด๋ค ์ด์ ๋ก ๋ฌธ์ ','๋ฅผ ๋ค์ ์ค ํ๋์ ํฌํจํ๋ ค๋ฉด SYM, ์ฐ๋ค ','. ์์ํ
์: "-finstrument-functions-exclude-file-list=',,tmp'"(์์ ๋ฐ์ดํ์ ์ฃผ์
์ต์ ์ ๋๋ฌ์ธ๊ณ ์์ต๋๋ค).
-finstrument-๊ธฐ๋ฅ-์ ์ธ-๊ธฐ๋ฅ-๋ชฉ๋ก=SYM,SYM, ...
์ด๊ฒ์ "-finstrument-functions-exclude-file-list"์ ์ ์ฌํ์ง๋ง ์ด ์ต์ ์
๊ณ์ธก์์ ์ ์ธํ ํจ์ ์ด๋ฆ ๋ชฉ๋ก์ ๋๋ค. ํจ์ ์ด๋ฆ์
be ์ผ์น๋ "๋ฒกํฐ ใ (์์ ๋ฒกํฐ &)",
๋ด๋ถ ๋งน๊ธ๋ง๋ ์ด๋ฆ์ด ์๋๋๋ค(์: "_Z4blahRSt6vectorIiSaIiEE"). ๊ฒฝ๊ธฐ๊ฐ ๋๋ฌ๋ค
๋ถ๋ถ ๋ฌธ์์ด: ๋ง์ฝ SYM ๋งค๊ฐ๋ณ์๋ ํจ์ ์ด๋ฆ์ ํ์ ๋ฌธ์์ด์ ๋๋ค.
์ผ์น๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. C99 ๋ฐ C++ ํ์ฅ ์๋ณ์์ ๊ฒฝ์ฐ ํจ์ ์ด๋ฆ
๋ฒ์ฉ ๋ฌธ์ ์ด๋ฆ์ ์ฌ์ฉํ์ง ์๊ณ UTF-8๋ก ์ง์ ํด์ผ ํฉ๋๋ค.
-fstack-์ฒดํฌ
์คํ์ ๊ฒฝ๊ณ๋ฅผ ๋์ง ์๋์ง ํ์ธํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๋
๋ค์ค ์ค๋ ๋๊ฐ ์๋ ํ๊ฒฝ์์ ์คํ ์ค์ธ ๊ฒฝ์ฐ ์ด ํ๋๊ทธ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์คํ ์ดํ ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์๋ ๊ฑฐ์ ์ง์ ํ์ง ์์๋ ๋ฉ๋๋ค.
์คํ์ด ํ๋๋ง ์๋ ๊ฒฝ์ฐ ๊ฑฐ์ ๋ชจ๋ ์์คํ ์์ ์ค๋ฒํ๋ก๊ฐ ์๋์ผ๋ก ๊ฐ์ง๋ฉ๋๋ค.
์ด ์ค์์น๋ก ์ธํด ์ค์ ๋ก ๊ฒ์ฌ๊ฐ ์ํ๋๋ ๊ฒ์ ์๋๋๋ค. ์ด์
์์คํ ๋๋ ์ธ์ด ๋ฐํ์์ด ์ด๋ฅผ ์ํํด์ผ ํฉ๋๋ค. ์ค์์น๋ก ์ธํด ์ฝ๋ ์์ฑ
์คํ์ด ํ์ฅ๋๊ณ ์๋์ง ํ์ธํ์ญ์์ค.
์ถ๊ฐ๋ก ๋ฌธ์์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. "no"๋ ๊ฒ์ฌ ์์์ ์๋ฏธํ๊ณ "generic"์
๊ตฌ์ ๊ฒ์ฌ๋ฅผ ๊ฐ์ ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธํ๊ณ "ํน์ "์ ์ต์์ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํจ์ ์๋ฏธํฉ๋๋ค.
๋ฐฉ๋ฒ์ด๋ฉฐ ๋ฒ ์ด์ ๋์ผํฉ๋๋ค. -fstack-์ฒดํฌ.
๊ตฌ์ ๊ฒ์ฌ๋ ํน์ ๋์ ์ง์์ด ํ์ํ์ง ์์ ์ผ๋ฐ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
์ปดํ์ผ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋จ์ ์ด ์์ต๋๋ค.
1. ํฐ ๊ฐ์ฒด์ ๋ํ ์์ ๋ ํ ๋น ์ ๋ต: ํญ์ ํ ๋น๋ฉ๋๋ค.
ํฌ๊ธฐ๊ฐ ๊ณ ์ ์๊ณ๊ฐ์ ์ด๊ณผํ๋ ๊ฒฝ์ฐ ๋์ ์ผ๋ก
2. ํจ์์ ์ ์ ํ๋ ์ ํฌ๊ธฐ์ ๋ํ ๊ณ ์ ์ ํ:
ํน์ ๊ธฐ๋ฅ, ์คํ ๊ฒ์ฌ๋ ์ ๋ขฐํ ์ ์์ผ๋ฉฐ ๊ฒฝ๊ณ ๊ฐ ๋ฐํ๋ฉ๋๋ค.
์ปดํ์ผ๋ฌ.
3. ๋นํจ์จ์ฑ: ์์ ๋ ํ ๋น ์ ๋ต๊ณผ ์ผ๋ฐ
๊ตฌํํ๋ฉด ์ฝ๋ ์ฑ๋ฅ์ด ์ ํ๋ฉ๋๋ค.
๊ตฌ์ ์คํ ๊ฒ์ฌ๋ "ํน์ "์ ๋ํ ๋์ฒด ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํฉ๋๋ค.
๋์ ์ง์์ด ์ปดํ์ผ๋ฌ์ ์ถ๊ฐ๋์์ต๋๋ค.
-fstack ์ ํ ๋ ์ง์คํฐ=๋ฑ๋ก ๋ฒํธ
-fstack-์ ํ-์ฌ๋ณผ=SYM
-fno-์คํ ์ ํ
์คํ์ด ํน์ ๊ฐ ์ด์์ผ๋ก ์ฆ๊ฐํ์ง ์๋๋ก ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๋ ์ง์คํฐ์ ๊ฐ ๋๋ ๊ธฐํธ์ ์ฃผ์. ๋ ํฐ ์คํ์ด ํ์ํ ๊ฒฝ์ฐ
์ ํธ๋ ๋ฐํ์์ ๋ฐ์ํฉ๋๋ค. ๋๋ถ๋ถ์ ํ๊ฒ์ ๊ฒฝ์ฐ ์คํ๋ณด๋ค ๋จผ์ ์ ํธ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ฒฝ๊ณ๋ฅผ ๋์ด์๋ฏ๋ก ํน๋ณํ ์กฐ์น๋ฅผ ์ทจํ์ง ์๊ณ ๋ ์ ํธ๋ฅผ ์ก์ ์ ์์ต๋๋ค.
์๋ฐฉ ์กฐ์น.
์๋ฅผ ๋ค์ด ์คํ์ด ์ ๋ ์ฃผ์์์ ์์ํ๋ ๊ฒฝ์ฐ 0 X 80000000 ์๋์ชฝ์ผ๋ก ์๋ผ๋ฉฐ,
๋น์ ์ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค -fstack-limit-symbol=__stack_limit and
-Wl,--defsym,__stack_limit=0x7ffe0000 128KB์ ์คํ ์ ํ์ ์ ์ฉํฉ๋๋ค. ์ฐธ๊ณ
์ด๊ฒ์ GNU ๋ง์ปค์์๋ง ์๋ํ ์ ์์ต๋๋ค.
-fsplit ์คํ
์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ์คํ์ ์๋์ผ๋ก ๋ถํ ํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ฒฐ๊ณผ
ํ๋ก๊ทธ๋จ์๋ ํ๋ก๊ทธ๋จ์ด ์ํํ ์ ์๋ ๊ฒฝ์ฐ์๋ง ์ค๋ฒํ๋กํ ์ ์๋ ๋ถ์ฐ์ ์คํ์ด ์์ต๋๋ค.
๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ์ญ์์ค. ์ด๊ฒ์ ์ค๋ ๋ ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ๊ฐ์ฅ ์ ์ฉํฉ๋๋ค.
๋ ์ด์ ๊ฐ ์ค๋ ๋์ ์ฌ์ฉํ ์ ์ ํ ์คํ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ ํ์๊ฐ ์์ต๋๋ค. ์ด๊ฒ์
ํ์ฌ GNU/Linux๋ฅผ ์คํํ๋ i386 ๋ฐ x86_64 ๋ฐฑ์๋์๋ง ๊ตฌํ๋ฉ๋๋ค.
๋ก ์ฝ๋๋ฅผ ์ปดํ์ผํ ๋ -fsplit ์คํ ์์ด ์ปดํ์ผ๋ ์ฝ๋๋ฅผ ํธ์ถํฉ๋๋ค. -fsplit ์คํ๊ฑฐ๊ธฐ
ํ์์ ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์คํ ๊ณต๊ฐ์ด ๋ง์ง ์์ ์ ์์ต๋๋ค. ๋ชจ๋ ์ปดํ์ผํ๋ฉด
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ฅผ ํฌํจํ ์ฝ๋, -fsplit ์คํ ์ต์ ์ด ์๋ ๊ฒฝ์ฐ ๋ง์ปค๋
์ฝ๋๊ฐ ๋ค์ ์์ด ์ปดํ์ผ๋๋๋ก ์ด๋ฌํ ํธ์ถ์ ์์ ํฉ๋๋ค. -fsplit ์คํ ํญ์ ํฐ
์คํ. ์ด์ ๋ํ ์ง์์ GNU binutils ๋ฆด๋ฆฌ์ค์ ๊ณจ๋ ๋ง์ปค์์ ๊ตฌํ๋ฉ๋๋ค.
2.21 ๋ ์ดํ
- ๋ฐ์ค์ ๊ธ๋ค
์ด ์ต์ ๊ณผ ํด๋น ์ต์ ์ -fno ์ ํ ๋ฐ์ค, ๊ฐ์ ๋ก C ๋ฐฉ์์ ๋ณ๊ฒฝ
๊ธฐํธ๋ ๊ฐ์ฒด ํ์ผ์ ํ์๋ฉ๋๋ค. ํ ๊ฐ์ง ์ฉ๋๋ ๋ ๊ฑฐ์์์ ์ฐ๊ฒฐ์ ๋๋ ๊ฒ์ ๋๋ค.
์ด์ ๋ธ๋ฆฌ ์ฝ๋.
๊ฒฝ๊ณ : ์ ์, - ๋ฐ์ค์ ๊ธ๋ค ์ค์์น๋ GCC๊ฐ ๊ทธ๋ ์ง ์์ ์ฝ๋๋ฅผ ์์ฑํ๋๋ก ํฉ๋๋ค.
ํด๋น ์ค์์น ์์ด ์์ฑ๋ ์ฝ๋์ ํธํ๋๋ ๋ฐ์ด๋๋ฆฌ. ์ ๋ง๊ฒ ์ฌ์ฉํ์ญ์์ค.
๊ธฐ๋ณธ์ด ์๋ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ์ด๋๋ฆฌ ์ธํฐํ์ด์ค. ๋ชจ๋ ๋์์ด ์์ ํ ์ง์์ ์ ๊ณตํ๋ ๊ฒ์ ์๋๋๋ค.
์ด ์ค์์น์ ๊ฒฝ์ฐ.
-ftls-๋ชจ๋ธ=๋ชจ๋ธ
์ฌ์ฉํ ์ค๋ ๋ ๋ก์ปฌ ์ ์ฅ์ ๋ชจ๋ธ์ ๋ณ๊ฒฝํฉ๋๋ค. NS ๋ชจ๋ธ ์ธ์๋ ๋ค์ ์ค ํ๋์ฌ์ผ ํฉ๋๋ค.
"global-dynamic", "local-dynamic", "initial-exec" ๋๋ "local-exec".
์๋ ๊ธฐ๋ณธ๊ฐ -fpic "์ด๊ธฐ ์คํ"์ ๋๋ค. ~์ ํจ๊ป -fpic ๊ธฐ๋ณธ๊ฐ์
"๊ธ๋ก๋ฒ ๋ค์ด๋ด๋ฏน".
-๊ฐ์์ฑ=๊ธฐ๋ณธ๊ฐ|๋ด๋ถ|์จ๊น|๋ณดํธ๋จ
๊ธฐ๋ณธ ELF ์ด๋ฏธ์ง ๊ธฐํธ ๊ฐ์์ฑ์ ์ง์ ๋ ์ต์ ์ผ๋ก ์ค์ ---๋ชจ๋ ๊ธฐํธ๋
์ฝ๋ ๋ด์์ ์ฌ์ ์๋์ง ์๋ ํ this๋ก ํ์๋ฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋งค์ฐ
๊ณต์ ๊ฐ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋งํฌ ๋ฐ ๋ก๋ ์๊ฐ์ ํฌ๊ฒ ๊ฐ์ ํ๊ณ ๋ ๋ง์ ๊ฒ์ ์์ฑํฉ๋๋ค.
์ต์ ํ๋ ์ฝ๋, ๊ฑฐ์ ์๋ฒฝํ API ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ ๊ณตํ๊ณ ๊ธฐํธ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค. ๊ทธ๊ฒ์์ด๋ค
๊ฐํ๊ฒ ๋ฐฐํฌํ๋ ๋ชจ๋ ๊ณต์ ๊ฐ์ฒด์์ ์ด๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ช ๋ช ๋ฒ์๋ ๋ถ๊ตฌํ๊ณ "๊ธฐ๋ณธ๊ฐ"์ ํญ์ ๊ณต๊ฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ฐ๊ฒฐ ๊ฐ๋ฅ
๊ณต์ ๊ฐ์ฒด ์ธ๋ถ์์ ๋ฐ๋ํฉ๋๋ค. "๋ณดํธ๋"๊ณผ "๋ด๋ถ"๋ ๊ฝค ์ธ๋ชจ๊ฐ ์์ต๋๋ค.
์ค์ ์ฌ์ฉ์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ ์ผํ ์ต์ ์ "์จ๊น"์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ
if -๊ฐ์์ฑ ์ง์ ๋์ง ์์ ๊ฒ์ "๊ธฐ๋ณธ๊ฐ"์ ๋๋ค. ์ฆ, ๋ชจ๋ ๊ธฐํธ๋ฅผ ๊ณต๊ฐ๋ก ์ค์ ํฉ๋๋ค.
์ด์ ๋ฒ์ ์ GCC์ ๋์ผํ ๋์์ ์ผ์ผํต๋๋ค.
ELF ๊ธฐํธ๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํจ์ผ๋ก์จ ์ ๊ณต๋๋ ์ด์ ์ ๋ํ ์ข์ ์ค๋ช
๊ฐ์์ฑ์ Ulrich Drepper์ "How To Write Shared Libraries"์ ์ํด ์ ๊ณต๋ฉ๋๋ค.
์์ ๋ฐ๊ฒฌhttp://people.redhat.com/~drepper/>>--๊ทธ๋ฌ๋ ์ฐ์ํ ์๋ฃจ์ ์ ๋ง๋ค์์ต๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด ๊ณต๊ฐ์ผ ๋ ์จ๊ฒจ์ง ํญ๋ชฉ์ ํ์ํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ์จ๊น ๋ฐ ๊ณต๊ฐ๋ก ํ์ํฉ๋๋ค. ์ด๊ฒ์ Windows์ DLL์ ๋ํ ํ์ค์ด๋ฉฐ
๊ณผ -fvisibility=์จ๊น ๋ฐ "__attribute__ ((visibility("default")))" ๋์
"__declspec(dllexport)" ๋์ผํ ๊ตฌ๋ฌธ์ผ๋ก ๊ฑฐ์ ๋์ผํ ์๋ฏธ๋ฅผ ์ป์ต๋๋ค.
์ด๊ฒ์ ํฌ๋ก์ค ํ๋ซํผ ํ๋ก์ ํธ๋ฅผ ์ํํ๋ ์ฌ๋๋ค์๊ฒ ํฐ ์ด์ ์ ๋๋ค.
๊ธฐ์กด ์ฝ๋์ ๊ฐ์์ฑ ์ง์์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ฐพ์ ์ ์์ต๋๋ค. #ํ๋ผ๊ทธ๋ง GCC
๊ฐ์์ฑ ์ฌ์ฉ. ์ด๊ฒ์ ์ค์ ํ๋ ค๋ ์ ์ธ์ ๋ฌถ์์ผ๋ก์จ ์๋ํฉ๋๋ค.
with์ ๋ํ ๊ฐ์์ฑ(์:) #ํ๋ผ๊ทธ๋ง GCC ๊ฐ์์ฑ ํธ์(์จ๊น) and #ํ๋ผ๊ทธ๋ง GCC
๊ฐ์์ฑ ๋์ค์ ์ธ. ๊ธฐํธ ๊ฐ์์ฑ์ ํ์ธํด์ผ ํจ์ ๋ช ์ฌํ์ญ์์ค. as ๋ถํ of ์ ์,
API ์ธํฐํ์ด์ค ๊ณ์ฝ ๋ฐ๋ผ์ ๋ชจ๋ ์ ์ฝ๋๋ ํญ์ ๊ฐ์์ฑ์ ์ง์ ํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ด ์๋๋๋ค. ์ฆ, ์ง์ญ DSO ๋ด์์๋ง ์ฌ์ฉํ๊ธฐ ์ํ ์ ์ธ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค. ํญ์
PLT ๊ฐ์ ์ฐธ์กฐ ์ค๋ฒํค๋๋ฅผ ํผํ๊ธฐ ์ํด ๋ช ์์ ์ผ๋ก ์จ๊น์ผ๋ก ํ์ํด์ผ ํฉ๋๋ค.
ํ๋ถํ๊ฒ ๋ช ํํ๋ฉด ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์์ฒด ๋ฌธ์ํ์๋ ๋์์ด ๋ฉ๋๋ค. ์ฐธ๊ณ
ISO C++ ์ฌ์ ์๊ตฌ ์ฌํญ์ผ๋ก ์ธํด "operator new" ๋ฐ "operator delete"๋ ๋ฐ๋์
ํญ์ ๊ธฐ๋ณธ ๊ฐ์์ฑ์ ์ ์งํ์ญ์์ค.
ํ๋ก์ ํธ ์ธ๋ถ์ ํค๋, ํนํ ์์คํ ํค๋ ๋ฐ
์ฌ์ฉํ๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํค๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ปดํ์ผ๋ ๊ฒ์ผ๋ก ์์๋์ง ์์ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ ์ด์ธ์ ๊ฐ์์ฑ. ๋ช ์ ์ ์ผ๋ก ๋งํด์ผ ํ ์๋ ์์ต๋๋ค. #ํ๋ผ๊ทธ๋ง GCC
๊ฐ์์ฑ ํธ์(๊ธฐ๋ณธ๊ฐ) ๊ทธ๋ฌํ ํค๋๋ฅผ ํฌํจํ๊ธฐ ์ ์.
์ธ๋ถ ์ ์ธ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค -๊ฐ์์ฑ, ๊ทธ๋์ ๋ง์ ์ฝ๋๊ฐ
๋ก ์ฌ์ปดํ์ผ -fvisibility=์จ๊น ์์ ์์ด. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ค์์ ์๋ฏธํฉ๋๋ค
๋ช ์์ ๊ฐ์์ฑ์ด ์๋ "extern" ํจ์์ ๋ํ ํธ์ถ์ PLT๋ฅผ ์ฌ์ฉํ๋ฏ๋ก
"__attribute((๊ฐ์์ฑ))" ๋ฐ/๋๋ "#pragma GCC ๊ฐ์์ฑ"์ ์ฌ์ฉํ์ฌ ์๋ฆฌ๋ ๋ฐ ํจ๊ณผ์ ์ ๋๋ค.
"extern" ์ ์ธ์ด ์จ๊ฒจ์ง ๊ฒ์ผ๋ก ์ฒ๋ฆฌ๋์ด์ผ ํ๋ ์ปดํ์ผ๋ฌ.
์ฐธ๊ณ -๊ฐ์์ฑ C++ ๋ชจํธํ ์ฐ๊ฒฐ ์ํฐํฐ์ ์ํฅ์ ์ค๋๋ค. ์ด๊ฒ์ ๋ค์์ ์๋ฏธํฉ๋๋ค.
์ธ์คํด์ค, DSO ๊ฐ์ throw๋๋ ์์ธ ํด๋์ค๋ ๋ช ์์ ์ผ๋ก ํ์๋์ด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ๊ฐ์์ฑ์ผ๋ก ์ ํ_์ ๋ณด ๋ ธ๋๋ DSO ๊ฐ์ ํตํฉ๋ฉ๋๋ค.
์ด๋ฌํ ๊ธฐ์ , ์ด์ ๋ฐ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ์๋ ๋ค์์ ์ฐธ์กฐํ์ญ์์ค.
<http://gcc.gnu.org/wiki/Visibility>.
-fstrict-ํ๋ฐ์ฑ ๋นํธ ํ๋
์ด ์ต์ ์ ํ๋ฐ์ฑ ๋นํธ ํ๋(๋๋ ๋ค๋ฅธ ๊ตฌ์กฐ
ํ๋, ์ปดํ์ผ๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ด์จ๋ ์ด๋ฌํ ์ ํ์ ์กด์คํ์ง๋ง) ๋จ์ผ ํ๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๊ฐ๋ฅํ ๊ฒฝ์ฐ ์์ฐ ์ ๋ ฌ์ ๋ง์ถฐ ์ ๋ ฌ๋ ํ๋ ์ ํ์ ๋๋น์ ๋ํ ์ก์ธ์ค.
์๋ฅผ ๋ค์ด, ๋ฉ๋ชจ๋ฆฌ ๋งคํ๋ ์ฃผ๋ณ ์ฅ์น ๋ ์ง์คํฐ๊ฐ ์๋ ๋์์๋ ์ด๋ฌํ ๋ชจ๋ ๊ฒ์ด ํ์ํ ์ ์์ต๋๋ค.
16๋นํธ ํญ์ ์ก์ธ์ค; ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ์ฃผ๋ณ ๋นํธ ํ๋๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค.
GCC๊ฐ ์ฌ์ฉํ๋๋ก ๊ฐ์ ํ๋ ค๋ฉด "unsigned short"(์ด ํ๊ฒ์์ short๊ฐ 16๋นํธ๋ผ๊ณ ๊ฐ์ )๋ก
์๋ง๋ ๋ ํจ์จ์ ์ธ 16๋นํธ ์ก์ธ์ค ๋์ 32๋นํธ ์ก์ธ์ค.
์ด ์ต์ ์ด ๋นํ์ฑํ๋๋ฉด ์ปดํ์ผ๋ฌ๋ ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์
์ด์ ์์์ ์ก์ธ์คํ๋ ๊ฒฝ์ฐ์๋ 32๋นํธ ๋ก๋ ๋ช ๋ น์ผ ์ ์์ต๋๋ค.
๋นํธ ํ๋ ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋งคํ ๋ ์ง์คํฐ์ ์ด๋ค ๋ถ๋ถ๋ ํฌํจํ์ง ์๋ ๋ฐ์ดํธ
์ ๋ฐ์ดํธ๋๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
๋์์ ์๊ฒฉํ ์ ๋ ฌ์ด ํ์ํ๊ณ ํ๋ ์ ํ์ ์ค์ํ๋ ค๋ฉด ๋ค์์ด ํ์ํฉ๋๋ค.
์ด ์ ๋ ฌ์ ์๋ฐํ๋ฉด ๊ฒฝ๊ณ ๊ฐ ๋ฐํ๋ฉ๋๋ค. ํ๋์ "packed" ์์ฑ์ด ์๋ ๊ฒฝ์ฐ
ํ๋ ์ ํ์ ์ค์ํ์ง ์๊ณ ์ก์ธ์ค๊ฐ ์ํ๋ฉ๋๋ค. ํ๋์ ์๋ ๊ฒฝ์ฐ
"packed" ์์ฑ์ธ ๊ฒฝ์ฐ ํ๋ ์ ํ์ ์ค์ํ์ฌ ์ก์ธ์ค๊ฐ ์ํ๋ฉ๋๋ค. ๋ ๊ฒฝ์ฐ ๋ชจ๋ GCC
์ฌ์ฉ์๊ฐ ๋์ ํ๋์จ์ด์ ๋ํด ์์ง ๋ชปํ๋ ๋ฌด์ธ๊ฐ๋ฅผ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ด ์ต์ ์ ๊ธฐ๋ณธ๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ์ด๋๋ฆฌ ์ธํฐํ์ด์ค์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
๋์ ํ๋ก์ธ์.
-fsync-libcalls
์ด ์ต์ ์ "__sync" ์ ํ๊ตฐ์ ์คํ๋ผ์ธ ์ธ์คํด์ค๊ฐ
ํจ์๋ C++11 "__atomic" ํจ์ ์ ํ๊ตฐ์ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ์ต์ ์ ๊ธฐ๋ณธ๊ฐ์ ํ์ฑํ๋์ด ์์ผ๋ฏ๋ก ์ต์ ์ ์ ์ผํ ์ ์ฉํ ํ์์ ๋๋ค.
is -fno-sync-libcalls. ์ด ์ต์ ์ ์์ ์์
๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
ํ๊ฒฝ
์ด ์น์ ์์๋ GCC ์๋ ๋ฐฉ์์ ์ํฅ์ ์ฃผ๋ ์ฌ๋ฌ ํ๊ฒฝ ๋ณ์์ ๋ํด ์ค๋ช ํฉ๋๋ค. ์ผ๋ถ
๊ทธ ์ค ๋ค์ํ ์ข ๋ฅ๋ฅผ ๊ฒ์ํ ๋ ์ฌ์ฉํ ๋๋ ํ ๋ฆฌ ๋๋ ์ ๋์ฌ๋ฅผ ์ง์ ํ์ฌ ์๋ํฉ๋๋ค.
ํ์ผ์. ์ผ๋ถ๋ ์ปดํ์ผ ํ๊ฒฝ์ ๋ค๋ฅธ ์ธก๋ฉด์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ต์ ์ ์ฌ์ฉํ์ฌ ๊ฒ์ํ ์ฅ์๋ฅผ ์ง์ ํ ์๋ ์์ต๋๋ค. -B, -I and -L.
์ด๋ค์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๋ ์์น๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
GCC ๊ตฌ์ฑ์์ ์ง์ ํ ๊ฒ๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
๋
LC_CTYPE
LC_๋ฉ์์ง
LC_ALL
์ด๋ฌํ ํ๊ฒฝ ๋ณ์๋ GCC๊ฐ ํ์งํ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ ์ดํฉ๋๋ค.
์ด๋ฅผ ํตํด GCC๋ ๋ค์ํ ๊ตญ๊ฐ ํ์ฝ๊ณผ ํ๋ ฅํ ์ ์์ต๋๋ค. GCC๋ ๋ก์ผ์ผ์ ๊ฒ์ฌํฉ๋๋ค.
์นดํ ๊ณ ๋ฆฌ LC_CTYPE and LC_๋ฉ์์ง ๊ทธ๋ ๊ฒ ํ๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ. ์ด๋ฌํ ๋ก์ผ์ผ
๋ฒ์ฃผ๋ ์ค์น์์ ์ง์ํ๋ ๋ชจ๋ ๊ฐ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค. ๋ํ์ ์ธ ๊ฐ์
en_GB.UTF-8 UTF-8๋ก ์ธ์ฝ๋ฉ๋ ์๊ตญ ์์ด์ ๊ฒฝ์ฐ.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ LC_CTYPE ํ๊ฒฝ ๋ณ์๋ ๋ฌธ์ ๋ถ๋ฅ๋ฅผ ์ง์ ํฉ๋๋ค. GCC๋ ์ด๋ฅผ ์ฌ์ฉํ์ฌ
๋ฌธ์์ด์ ๋ฌธ์ ๊ฒฝ๊ณ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์ด๊ฒ์ ์ผ๋ถ ๋ฉํฐ ๋ฐ์ดํธ์ ํ์ํฉ๋๋ค.
๋ฐ์ดํ ๋ฐ ์ด์ค์ผ์ดํ ๋ฌธ์๋ฅผ ํฌํจํ๋ ์ธ์ฝ๋ฉ์ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ก ํด์๋ฉ๋๋ค.
๋ฌธ์์ด ๋ ๋๋ ์ด์ค์ผ์ดํ.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ LC_๋ฉ์์ง ํ๊ฒฝ ๋ณ์๋ ์ง๋จ์ ์ฌ์ฉํ ์ธ์ด๋ฅผ ์ง์ ํฉ๋๋ค.
๋ฉ์์ง.
๊ฒฝ์ฐ LC_ALL ํ๊ฒฝ ๋ณ์๊ฐ ์ค์ ๋๋ฉด ๊ฐ์ ์ฌ์ ์ํฉ๋๋ค. LC_CTYPE and
LC_๋ฉ์์ง; ๊ทธ๋ ์ง ์์ผ๋ฉด, LC_CTYPE and LC_๋ฉ์์ง ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋
ํ๊ฒฝ ๋ณ์. ์ด๋ฌํ ๋ณ์๊ฐ ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ GCC๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ์กด
C ์์ด ํ๋.
TMPDIR
If TMPDIR ์ค์ ๋๋ฉด ์์ ํ์ผ์ ์ฌ์ฉํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํฉ๋๋ค. GCC ์ฌ์ฉ
๋ค์์ผ๋ก ์ฌ์ฉ๋ ์ปดํ์ผ์ ํ ๋จ๊ณ์ ์ถ๋ ฅ์ ๋ณด๊ดํ๋ ์์ ํ์ผ
๋ค์ ๋จ๊ณ๋ก์ ์ ๋ ฅ: ์๋ฅผ ๋ค์ด ์ ์ฒ๋ฆฌ๊ธฐ์ ์ถ๋ ฅ
์ปดํ์ผ๋ฌ์ ์ ์ ํ ์ ๋ ฅ.
GCC_COMPARE_DEBUG
ํ๊ฒฝ GCC_COMPARE_DEBUG ํฉ๊ฒฉ๊ณผ ๊ฑฐ์ ๊ฐ๋ค -fcompare-๋๋ฒ๊ทธ ๋ถํฐ
์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ. ์์ธํ ๋ด์ฉ์ ์ด ์ต์ ์ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
GCC_EXEC_PREFIX
If GCC_EXEC_PREFIX ๊ฐ ์ค์ ๋๋ฉด ์ด๋ฆ์ ์ฌ์ฉํ ์ ๋์ฌ๋ฅผ ์ง์ ํฉ๋๋ค.
์ปดํ์ผ๋ฌ์ ์ํด ์คํ๋๋ ์๋ธ ํ๋ก๊ทธ๋จ. ์ด ์ ๋์ด๊ฐ ๊ฒฐํฉ๋๋ฉด ์ฌ๋์๊ฐ ์ถ๊ฐ๋์ง ์์ต๋๋ค.
ํ์ ํ๋ก๊ทธ๋จ์ ์ด๋ฆ์ ์ฌ์ฉํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ฌ๋์๋ก ๋๋๋ ์ ๋์ฌ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
๋น์ ์ด ์ํ๋.
If GCC_EXEC_PREFIX ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ GCC๋ ์ฌ์ฉํ ์ ์ ํ ์ ๋์ฌ๋ฅผ ํ์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
ํธ์ถ๋๋ ๊ฒฝ๋ก ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
GCC๊ฐ ์ง์ ๋ ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ ํ๋ก๊ทธ๋จ์ ์ฐพ์ ์ ์์ผ๋ฉด
์๋ธ ํ๋ก๊ทธ๋จ์ ์ผ๋ฐ์ ์ธ ์์น.
๊ธฐ๋ณธ๊ฐ GCC_EXEC_PREFIX is ์ ๋์ฌ/lib/gcc/ ์ด๋์ ์ ๋์ฌ ์ ์ ๋์ด์ ๋๋ค
์ค์น๋ ์ปดํ์ผ๋ฌ. ๋ง์ ๊ฒฝ์ฐ์ ์ ๋์ฌ ์คํํ์ ๋ "์ ๋์ฌ"์ ๊ฐ์ ๋๋ค.
๊ตฌ์ฑ ์คํฌ๋ฆฝํธ.
๋ก ์ง์ ๋ ๊ธฐํ ์ ๋์ฌ -B ์ด ์ ๋์ฌ๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
์ด ์ ๋์ฌ๋ ๋ค์๊ณผ ๊ฐ์ ํ์ผ์ ์ฐพ๋ ๋ฐ๋ ์ฌ์ฉ๋ฉ๋๋ค. crt0.o ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ํ, ์ ๋์ฌ๋ ๊ฒ์ํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ์ ๋ ํน์ดํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
ํค๋ ํ์ผ์ ๊ฒฝ์ฐ. ์ด๋ฆ์ด ์ผ๋ฐ์ ์ผ๋ก ์์๋๋ ๊ฐ ํ์ค ๋๋ ํ ๋ฆฌ์ ๋ํด
๊ณผ /usr/๋ก์ปฌ/lib/gcc (๋ณด๋ค ์ ํํ๊ฒ๋ GCC_INCLUDE_DIR), GCC ์๋
๋์ฒด ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๊ธฐ ์ํด ํด๋น ์์ ๋ถ๋ถ์ ์ง์ ๋ ์ ๋์ฌ๋ก ๋์ฒด
์ด๋ฆ. ๋ฐ๋ผ์ -ํธ์ฐ/, GCC ๊ฒ์ ํธ/๋ฐ ํ์ค์ ๊ฒ์ํ๊ธฐ ์ง์
์๋ฐฐ ๊ท์น์ /usr/local/lib/๋ฐ. ํ์ค ๋๋ ํ ๋ฆฌ๊ฐ ๊ตฌ์ฑ๋
์ ๋์ฌ ๋ค์์ ๊ฐ ์ ๋์ฌ ๋ค์์ผ๋ก ๋์ฒด๋ฉ๋๋ค. GCC_EXEC_PREFIX ํค๋๋ฅผ ์ฐพ์ ๋
ํ์ผ.
์ปดํ์ผ๋ฌ_๊ฒฝ๋ก
์ ๊ฐ์น ์ปดํ์ผ๋ฌ_๊ฒฝ๋ก ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ๋๋ค. PATH.
GCC๋ ํ์ ํ๋ก๊ทธ๋จ์ ๊ฒ์ํ ๋ ์ง์ ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์๋ํฉ๋๋ค.
๋ค์์ ์ฌ์ฉํ์ฌ ํ์ ํ๋ก๊ทธ๋จ ์ฐพ๊ธฐ GCC_EXEC_PREFIX.
๋ผ์ด๋ธ๋ฌ๋ฆฌ_๊ฒฝ๋ก
์ ๊ฐ์น ๋ผ์ด๋ธ๋ฌ๋ฆฌ_๊ฒฝ๋ก ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ๋๋ค. PATH.
๊ธฐ๋ณธ ์ปดํ์ผ๋ฌ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ GCC๋ ๋ค์๊ณผ ๊ฐ์ด ์ง์ ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์๋ํฉ๋๋ค.
ํน์ ๋ง์ปค ํ์ผ ๊ฒ์, ๋ค์์ ์ฌ์ฉํ์ฌ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ GCC_EXEC_PREFIX.
GCC๋ฅผ ์ฌ์ฉํ ๋งํฌ๋ ์ผ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒ์ํ ๋๋ ์ด ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ํ -l ์ต์ (๊ทธ๋ฌ๋ ๋ค์์ผ๋ก ์ง์ ๋ ๋๋ ํ ๋ฆฌ๋ -L ๋จผ์ ์ค์ธ์).
๋
์ด ๋ณ์๋ ๋ก์ผ์ผ ์ ๋ณด๋ฅผ ์ปดํ์ผ๋ฌ์ ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ํ ๊ฐ์ง ๋ฐฉ๋ฒ์
์ด ์ ๋ณด๋ ๋ฌธ์๋ฅผ ์ฌ์ฉํ ๋ ์ฌ์ฉํ ๋ฌธ์ ์งํฉ์ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฆฌํฐ๋ด, ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ฐ ์ฃผ์์ C ๋ฐ C++์์ ๊ตฌ๋ฌธ ๋ถ์๋ฉ๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ
๋ฉํฐ๋ฐ์ดํธ ๋ฌธ์๋ฅผ ํ์ฉํ๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๋ค์ ๊ฐ์ ๋ํด ๋ are
์ธ์:
์จ์ง์ค
JIS ๋ฌธ์๋ฅผ ์ธ์ํฉ๋๋ค.
์จ์์ฆ
SJIS ๋ฌธ์๋ฅผ ์ธ์ํฉ๋๋ค.
C-EUCJP
EUCJP ๋ฌธ์๋ฅผ ์ธ์ํฉ๋๋ค.
If ๋ ์ ์๋์ง ์์๊ฑฐ๋ ๋ค๋ฅธ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๋ "mblen"์ ์ฌ์ฉํฉ๋๋ค.
๋ฉํฐ๋ฐ์ดํธ๋ฅผ ์ธ์ํ๊ณ ๋ฒ์ญํ๊ธฐ ์ํด ๊ธฐ๋ณธ ๋ก์ผ์ผ์ ์ ์๋ "mbtowc" ๋ฐ "mbtowc"
์.
์ผ๋ถ ์ถ๊ฐ ํ๊ฒฝ ๋ณ์๋ ์ ์ฒ๋ฆฌ๊ธฐ์ ๋์์ ์ํฅ์ ์ค๋๋ค.
cpath
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
๊ฐ ๋ณ์์ ๊ฐ์ ํน์ ๋ฌธ์๋ก ๊ตฌ๋ถ๋ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ๋๋ค.
์ฒ๋ผ PATH, ํค๋ ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค. ํน๋ณํ ์บ๋ฆญํฐ,
"PATH_SEPARATOR"๋ ๋์์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ GCC ๋น๋ ์ ๊ฒฐ์ ๋ฉ๋๋ค. ๋ง์ดํฌ๋ก์ํํธ
Windows ๊ธฐ๋ฐ ๋์์ ์ธ๋ฏธ์ฝ๋ก ์ด๋ฉฐ ๊ฑฐ์ ๋ชจ๋ ๋ค๋ฅธ ๋์์ ๊ฒฝ์ฐ
์ฝ๋ก .
cpath ์ง์ ๋ ๊ฒ์ฒ๋ผ ๊ฒ์ํ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ์ง์ ํฉ๋๋ค. -Iํ์ง๋ง,
์ฃผ์ด์ง ๊ฒฝ๋ก ํ์ -I ๋ช ๋ น์ค์ ์ต์ . ์ด ํ๊ฒฝ ๋ณ์
์ฌ์ ์ฒ๋ฆฌ๋๋ ์ธ์ด์ ๊ด๊ณ์์ด ์ฌ์ฉ๋ฉ๋๋ค.
๋๋จธ์ง ํ๊ฒฝ ๋ณ์๋ ํน์ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ ์ฒ๋ฆฌํ ๋๋ง ์ ์ฉ๋ฉ๋๋ค.
ํ์๋ ์ธ์ด. ๊ฐ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด ๊ฒ์ํ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ์ง์ ํฉ๋๋ค.
๋ก ์ง์ -์์ด์์คํ , ๊ทธ๋ฌ๋ ์ฃผ์ด์ง ๊ฒฝ๋ก ํ์ -์์ด์์คํ ์ต์
๋ช ๋ น ํ.
์ด ๋ชจ๋ ๋ณ์์์ ๋น ์์๋ ์ปดํ์ผ๋ฌ์๊ฒ ํ์ฌ๋ฅผ ๊ฒ์ํ๋๋ก ์ง์ํฉ๋๋ค.
์์ ๋๋ ํ ๋ฆฌ. ๋น ์์๋ ๊ฒฝ๋ก์ ์์์ด๋ ๋์ ๋ํ๋ ์ ์์ต๋๋ค. ์์ํ
์๋ฅผ ๋ค์ด ๊ฐ์ด cpath ":/special/include"์ด๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
-๋๋. -๋/ํน๋ณ/ํฌํจ.
DEPENDENCIES_OUTPUT
์ด ๋ณ์๊ฐ ์ค์ ๋๋ฉด ํด๋น ๊ฐ์ Make ๊ธฐ๋ฐ์ ์ข ์์ฑ์ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํฉ๋๋ค.
์ปดํ์ผ๋ฌ๊ฐ ์ฒ๋ฆฌํ๋ ๋น์์คํ ํค๋ ํ์ผ์ ์์คํ ํค๋ ํ์ผ์
์ข ์์ฑ ์ถ๋ ฅ์์ โโ๋ฌด์๋ฉ๋๋ค.
์ ๊ฐ์น DEPENDENCIES_OUTPUT ํ์ผ ์ด๋ฆ์ผ ์ ์์ผ๋ฉฐ ์ด ๊ฒฝ์ฐ Make ๊ท์น
์์ค ํ์ผ ์ด๋ฆ์์ ๋์ ์ด๋ฆ์ ์ถ์ธกํ์ฌ ํด๋น ํ์ผ์ ๊ธฐ๋ก๋ฉ๋๋ค. ์๋๋ฉด ๊ทธ
๊ฐ์ ํ์์ ๊ฐ์ง ์ ์์ต๋๋ค. ํ์ผ ๋ชฉํ, ์ด ๊ฒฝ์ฐ ๊ท์น์ด ํ์ผ์ ๊ธฐ๋ก๋ฉ๋๋ค. ํ์ผ
์ฌ์ฉ ๋ชฉํ ๋์ ์ด๋ฆ์ผ๋ก.
์ฆ, ์ด ํ๊ฒฝ ๋ณ์๋ ์ต์ ์ ๊ฒฐํฉํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. -MM
and -MF, ์ ํ ์ฌํญ -์ฐ ์ค์์น๋.
SUNPRO_DEPENDENCIES
์ด ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. DEPENDENCIES_OUTPUT (์ ์ฐธ์กฐ), ๊ทธ ์์คํ ์ ์ ์ธํ๊ณ
ํค๋ ํ์ผ์ ๋ฌด์๋์ง ์์ผ๋ฏ๋ก -M ๋ณด๋ค๋ -MM. ๊ทธ๋ฌ๋, ๊ทธ
๊ธฐ๋ณธ ์ ๋ ฅ ํ์ผ์ ๋ํ ์ข ์์ฑ์ ์๋ต๋ฉ๋๋ค.
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ์์ aarch64-linux-gnu-g++-4.8 ์ฌ์ฉ