์˜์–ดํ”„๋ž‘์Šค์–ด์ŠคํŽ˜์ธ์–ด

Ad


์˜จ์›์Šค ํŒŒ๋น„์ฝ˜

FileCheck-3.6 - ํด๋ผ์šฐ๋“œ์˜ ์˜จ๋ผ์ธ

Ubuntu Online, Fedora Online, Windows ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋˜๋Š” MAC OS ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ํ†ตํ•ด OnWorks ๋ฌด๋ฃŒ ํ˜ธ์ŠคํŒ… ์ œ๊ณต์—…์ฒด์—์„œ FileCheck-3.6 ์‹คํ–‰

์ด๊ฒƒ์€ Ubuntu Online, Fedora Online, Windows ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋˜๋Š” MAC OS ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋ฌด๋ฃŒ ์˜จ๋ผ์ธ ์›Œํฌ์Šคํ…Œ์ด์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OnWorks ๋ฌด๋ฃŒ ํ˜ธ์ŠคํŒ… ์ œ๊ณต์—…์ฒด์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” FileCheck-3.6 ๋ช…๋ น์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ:

์ด๋ฆ„


FileCheck - ์œ ์—ฐํ•œ ํŒจํ„ด ๋งค์นญ ํŒŒ์ผ ๊ฒ€์ฆ๊ธฐ

๊ฐœ์š”


ํŒŒ์ผ ๊ฒ€์‚ฌ ์ผ์น˜ ํŒŒ์ผ ์ด๋ฆ„ [--check-์ ‘๋‘์‚ฌ=XXX] [--์—„๊ฒฉํ•œ ๊ณต๋ฐฑ]

๊ธฐ์ˆ 


ํŒŒ์ผ ๊ฒ€์‚ฌ ๋‘ ๊ฐœ์˜ ํŒŒ์ผ์„ ์ฝ์Šต๋‹ˆ๋‹ค(ํ•˜๋‚˜๋Š” ํ‘œ์ค€ ์ž…๋ ฅ์—์„œ, ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋ช…๋ น์ค„์—์„œ ์ง€์ •)
ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํ•˜๋‚˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๋™์ž‘์€ ํ…Œ์ŠคํŠธ ์ŠˆํŠธ์— ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์–ด๋–ค ๋„๊ตฌ(์˜ˆ: LLC) ์˜ˆ์ƒ ํฌํ•จ
์ •๋ณด(์˜ˆ: esp์˜ movsd ๋˜๋Š” ํฅ๋ฏธ๋กœ์šด ๊ฒƒ). ์ด๊ฒƒ์€ ๋น„์Šทํ•˜๋‹ค
์‚ฌ์šฉ ๋ฐฉ๋ฒ• GREP, ๊ทธ๋Ÿฌ๋‚˜ ํ•˜๋‚˜์˜ ํŒŒ์ผ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋‹ค๋ฅธ ์ž…๋ ฅ์„ ์ผ์น˜์‹œํ‚ค๋Š” ๋ฐ ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํŠน์ • ์ฃผ๋ฌธ.

XNUMXD๋ดํƒˆ์˜ ์ผ์น˜ ํŒŒ์ผ ์ด๋ฆ„ file์€ ์ผ์น˜์‹œํ‚ฌ ํŒจํ„ด์ด ํฌํ•จ๋œ ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ
ํ™•์ธํ•˜๋ ค๋ฉด ํ‘œ์ค€ ์ž…๋ ฅ์—์„œ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. --์ž…๋ ฅ ํŒŒ์ผ ์˜ต์…˜์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ต์…˜


-๋„์›€ ๋ช…๋ น์ค„ ์˜ต์…˜์˜ ์š”์•ฝ์„ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

--check-์ ‘๋‘์‚ฌ ์ ‘๋‘์‚ฌ
FileCheck๋Š” ๋‹ค์Œ์˜ ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ ํŒŒ์ผ ์ด๋ฆ„ ํŒจํ„ด์ด ์ผ์น˜ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์— ์˜ํ•ด
๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ํŒจํ„ด์—๋Š” "๊ฒ€์‚ฌ:". ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด
๋‹ค๋ฅธ ์ ‘๋‘์‚ฌ(์˜ˆ: ๋™์ผํ•œ ์ž…๋ ฅ ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ
๋„๊ตฌ ๋˜๋Š” ์˜ต์…˜), --check-์ ‘๋‘์‚ฌ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜ ์ด์ƒ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ผ์น˜ํ•˜๋Š” ์ ‘๋‘์‚ฌ. ๋‹ค์ค‘ ์ ‘๋‘์‚ฌ๋Š” ๋‹ค์Œ์— ๋Œ€ํ•ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์‹คํ–‰ ์˜ต์…˜์€ ๋‹ค๋ฅด์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ํ–‰์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

--์ž…๋ ฅ ํŒŒ์ผ ํŒŒ์ผ ์ด๋ฆ„
ํ™•์ธํ•  ํŒŒ์ผ(๊ธฐ๋ณธ๊ฐ’์€ stdin)์ž…๋‹ˆ๋‹ค.

--์—„๊ฒฉํ•œ ๊ณต๋ฐฑ
๊ธฐ๋ณธ์ ์œผ๋กœ FileCheck๋Š” ์ž…๋ ฅ ์ˆ˜ํ‰ ๊ณต๋ฐฑ(๊ณต๋ฐฑ ๋ฐ ํƒญ)์„ ์ •๊ทœํ™”ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Š” ์ด๋Ÿฌํ•œ ์ฐจ์ด์ ์„ ๋ฌด์‹œํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค(๊ณต๋ฐฑ์€ ํƒญ๊ณผ ์ผ์น˜ํ•จ). NS
--์—„๊ฒฉํ•œ ๊ณต๋ฐฑ ์ธ์ˆ˜๋Š” ์ด ๋™์ž‘์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ค„ ๋ ์‹œํ€€์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
UNIX ์Šคํƒ€์ผ๋กœ ์ •๊ทœํ™” \n ๋ชจ๋“  ๋ชจ๋“œ์—์„œ.

--์•”์‹œ์  ํ™•์ธ ์•ˆ ํ•จ ์ฒดํฌ ํŒจํ„ด
๊ธ์ • ๊ฒ€์‚ฌ ์‚ฌ์ด์— ์ง€์ •๋œ ํŒจํ„ด์— ๋Œ€ํ•œ ์•”์‹œ์  ๋ถ€์ • ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ์œผ๋กœ ์ฑ„์šฐ์ง€ ์•Š๊ณ  ๋” ์—„๊ฒฉํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒดํฌํ•˜์ง€ ์•Š์Œs.

์˜ˆ๋ฅผ ๋“ค์–ด, "--์•”์‹œ์  ํ™•์ธ ์•ˆ ํ•จ ๊ฒฝ๊ณ :" ์ง„๋‹จ์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์™€ ์œ ์‚ฌํ•œ ์˜ต์…˜์ด ์—†๋Š” ๋„๊ตฌ์˜ ๋ฉ”์‹œ์ง€ ๊ทธ ์†Œ๋ฆฌ -๊ฒ€์ฆ. ์ด๊ฒƒ์œผ๋กœ
์˜ต์…˜ FileCheck๋Š” ์ž…๋ ฅ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๊ฒฝ๊ณ ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์–ด๋–ค ๊ฒ€์‚ฌ: ํŒจํ„ด.

-๋ฒˆ์—ญ
์ด ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

EXIT ์ง€์œ„


If ํŒŒ์ผ ๊ฒ€์‚ฌ ํŒŒ์ผ์ด ์˜ˆ์ƒ ๋‚ด์šฉ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  0์œผ๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด XNUMX์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด์šฉ ๊ฐ€์ด๋“œ


FileCheck๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ LLVM ํšŒ๊ท€ ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ RUN ๋ผ์ธ์—์„œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
์‹œํ—˜. RUN ๋ผ์ธ์—์„œ FileCheck๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

; ์‹คํ–‰: llvm-as < %s | LLC -86์›”=x64-XNUMX | ํŒŒ์ผ ๊ฒ€์‚ฌ %s

์ด ๊ตฌ๋ฌธ์€ ํ˜„์žฌ ํŒŒ์ผ("%s") ์•ˆ์œผ๋กœ llvm-as, ํŒŒ์ดํ”„ LLC๋‹ค์Œ,
ํŒŒ์ดํ”„์˜ ์ถœ๋ ฅ LLC ์œผ๋กœ ํŒŒ์ผ ๊ฒ€์‚ฌ. ์ด๋Š” FileCheck๊ฐ€
์ง€์ •๋œ ํŒŒ์ผ ์ด๋ฆ„ ์ธ์ˆ˜์— ๋Œ€ํ•œ ํ‘œ์ค€ ์ž…๋ ฅ(llc ์ถœ๋ ฅ)(์›๋ณธ .NS
"๋กœ ์ง€์ •๋œ ํŒŒ์ผ%s"). ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด๋ ค๋ฉด ๋‚˜๋จธ์ง€ .NS ํŒŒ์ผ
(RUN ๋ผ์ธ ์ดํ›„):

์ •์˜ ๋ฌดํšจ @sub1(i32* %p, i32 %v) {
๊ธฐ์ž…:
; ํ™•์ธ: ํ•˜์œ„ 1:
; ํ™•์ธ: ์„œ๋ธŒ
%0 = ๊ผฌ๋ฆฌ ํ˜ธ์ถœ i32 @llvm.atomic.load.sub.i32.p0i32(i32* %p, i32 %v)
๋ฌดํšจ
}

์ •์˜ ๋ฌดํšจ @inc4(i64* %p) {
๊ธฐ์ž…:
; ํ™•์ธ: Inc4:
; ํ™•์ธ: Incq
%0 = ๊ผฌ๋ฆฌ ํ˜ธ์ถœ i64 @llvm.atomic.load.add.i64.p0i64(i64* %p, i64 1)
๋ฌดํšจ
}

์—ฌ๊ธฐ์—์„œ ์ผ๋ถ€ "๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๊ฒ€์‚ฌ:" ๋ผ์ธ์ด ์ฃผ์„์œผ๋กœ ์ง€์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํŒŒ์ผ์ด ์–ด๋–ป๊ฒŒ
๋กœ ํŒŒ์ดํ”„๋œ๋‹ค llvm-as๋‹ค์Œ, LLC, ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ ์ถœ๋ ฅ์€ ์šฐ๋ฆฌ๊ฐ€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
FileCheck๋Š” ๊ธฐ๊ณ„ ์ฝ”๋“œ ์ถœ๋ ฅ์„ ๊ฒ€์‚ฌํ•˜์—ฌ "๊ฒ€์‚ฌ:" ๋ผ์ธ
์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

"์˜ ๊ตฌ๋ฌธ๊ฒ€์‚ฌ:" ์ค„์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.
์ฃผ๋ฌธํ•˜๋‹ค. FileCheck๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€๋กœ ๊ณต๋ฐฑ ์ฐจ์ด๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ๊ณต๋ฐฑ์€
ํƒญ๊ณผ ์ผ์น˜ํ•˜๋„๋ก ํ—ˆ์šฉ๋จ). ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด "๊ฒ€์‚ฌ:" ๋ผ์ธ์€ ํ•„์ˆ˜
ํ…Œ์ŠคํŠธ ํŒŒ์ผ์˜ ์–ด๋–ค ๊ฒƒ์„ ์ •ํ™•ํžˆ ์ผ์น˜์‹œํ‚ต๋‹ˆ๋‹ค.

FileCheck(grep๊ณผ ๋น„๊ตํ•˜์—ฌ)์— ๋Œ€ํ•œ ํ•œ ๊ฐ€์ง€ ์ข‹์€ ์ ์€ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€๋ฅผ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ•จ๊ป˜ ๋…ผ๋ฆฌ ๊ทธ๋ฃน์œผ๋กœ. ์˜ˆ๋ฅผ ๋“ค์–ด ์œ„์˜ ํ…Œ์ŠคํŠธ๋Š”
"ํ•˜์œ„ 1:"์™€"Inc4:" ๋ผ๋ฒจ์ด ์—†์œผ๋ฉด ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค "์„œ๋ธŒ"๊ทธ ์‚ฌ์ด์—
๋ ˆ์ด๋ธ”. ํŒŒ์ผ์˜ ๋‹ค๋ฅธ ์œ„์น˜์— ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ„์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "GREP ์„œ๋ธŒ"
"์ด๋ฉด ์ผ์น˜์„œ๋ธŒ"๋Š” ํŒŒ์ผ์˜ ์•„๋ฌด ๊ณณ์—๋‚˜ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

XNUMXD๋ดํƒˆ์˜ ํŒŒ์ผ ๊ฒ€์‚ฌ -์ฒดํฌ ์ ‘๋‘์‚ฌ ์„ ํƒ๊ถŒ
ํŒŒ์ผ์ฒดํฌ -์ฒดํฌ ์ ‘๋‘์‚ฌ ์˜ต์…˜์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ์„ ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•œ .NS ํŒŒ์ผ. ์ด๊ฒƒ์€ ์—ฌ๋Ÿฌ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ
์•„ํ‚คํ…์ฒ˜ ๋ณ€ํ˜• LLC. ๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค.

; ์‹คํ–‰: llvm-as < %s | llc -mtriple=i686-apple-darwin9 -mattr=sse41 \
; ์‹คํ–‰: | ํŒŒ์ผ ๊ฒ€์‚ฌ %s -๊ฒ€์‚ฌ ์ ‘๋‘์‚ฌ=X32
; ์‹คํ–‰: llvm-as < %s | llc -mtriple=x86_64-apple-darwin9 -mattr=sse41 \
; ์‹คํ–‰: | ํŒŒ์ผ ๊ฒ€์‚ฌ %s -๊ฒ€์‚ฌ ์ ‘๋‘์‚ฌ=X64

์ •์˜ <4 x i32> @pinsrd_1(i32 %s, <4 x i32> %tmp) nounwind {
%tmp1 = ์‚ฝ์ž… ์š”์†Œ <4 x i32>; %tmp, i32 %s, i32 1
ret <4 x i32> %tmp1
; X32: pinrd_1:
; X32: ํ•€ ๋ฒˆํ˜ธ $1, 4(%esp), %xmm0

; X64: pinrd_1:
; X64: ํ•€ ๋ฒˆํ˜ธ $1, %edi, %xmm0
}

์ด ๊ฒฝ์šฐ 32๋น„ํŠธ ๋ฐ
64๋น„ํŠธ ์ฝ”๋“œ ์ƒ์„ฑ.

XNUMXD๋ดํƒˆ์˜ ํ™•์ธ-๋‹ค์Œ: ์ง€๋ น
๋•Œ๋กœ๋Š” ๋ผ์ธ์„ ์ผ์น˜์‹œํ‚ค๊ณ  ์ผ์น˜๊ฐ€ ์ •ํ™•ํžˆ
๊ทธ ์‚ฌ์ด์— ๋‹ค๋ฅธ ์ค„์ด ์—†๋Š” ์—ฐ์†๋œ ์ค„. ์ด ๊ฒฝ์šฐ "๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๊ฒ€์‚ฌ:"
์™€ "ํ™•์ธ-๋‹ค์Œ:" ์ง€์‹œ๋ฌธ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ • ๊ฒ€์‚ฌ ์ ‘๋‘์‚ฌ๋ฅผ ์ง€์ •ํ•œ ๊ฒฝ์šฐ
๊ทธ๋ƒฅ ์‚ฌ์šฉ "-๋‹ค์Œ:". ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜ˆ์ƒํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ •์˜ ๋ฌดํšจ @t2(<2 x ๋”๋ธ”>* %r, <2 x ๋”๋ธ”>* %A, ๋”๋ธ” %B) {
%tmp3 = ๋กœ๋“œ <2 x ๋”๋ธ”>* %A, 16 ์ •๋ ฌ
%tmp7 = ์‚ฝ์ž… ์š”์†Œ <2 x ์ด์ค‘> undef, ์ด์ค‘ %B, i32 0
%tmp9 = ์…”ํ”Œ ๋ฒกํ„ฐ <2 x ๋”๋ธ”> %tmp3,
<2 x ๋”๋ธ”> %tmp7,
<2 x i32> < i32 0, i32 2 >
์ €์žฅ <2 x ์ด์ค‘> %tmp9, <2 x ์ด์ค‘>* %r, ์ •๋ ฌ 16
๋ฌดํšจ

; ํ™•์ธ: t2:
; ํ™•์ธ: movl 8(%esp), %eax
; ๋‹ค์Œ ํ™•์ธ: movapd(%eax), %xmm0
; ๋‹ค์Œ ํ™•์ธ: movhpd 12(%esp), %xmm0
; ๋‹ค์Œ ํ™•์ธ: movl 4(%esp), %eax
; ๋‹ค์Œ ํ™•์ธ: movapd %xmm0, (%eax)
; CHECK-NEXT: ๋‹ค์‹œ
}

"ํ™•์ธ-๋‹ค์Œ:" ์ง€์‹œ๋ฌธ ์‚ฌ์ด์— ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ๊ฐœํ–‰ ๋ฌธ์ž๊ฐ€ ์—†์œผ๋ฉด ์ž…๋ ฅ์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.
๋ฐ ์ด์ „ ์ง€์‹œ๋ฌธ. NS "ํ™•์ธ-๋‹ค์Œ:"๋Š” ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ง€์‹œ๋ฌธ์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

XNUMXD๋ดํƒˆ์˜ ์ฒดํฌํ•˜์ง€ ์•Š์Œ: ์ง€๋ น
"์ฒดํฌํ•˜์ง€ ์•Š์Œ:" ์ง€์‹œ๋ฌธ์€ ๋‘ ๋ฌธ์ž์—ด ์‚ฌ์ด์— ๋ฌธ์ž์—ด์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์ผ์น˜(๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ผ์น˜ ์ „ ๋˜๋Š” ๋งˆ์ง€๋ง‰ ์ผ์น˜ ํ›„). ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์„ ํ™•์ธํ•˜๋ ค๋ฉด
๋ณ€ํ˜•์— ์˜ํ•ด ๋ถ€ํ•˜๊ฐ€ ์ œ๊ฑฐ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ…Œ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์˜ i8 @coerce_offset0(i32 %V, i32* %P) {
i32 %V, i32* %P ์ €์žฅ

%P2 = ๋น„ํŠธ์บ์ŠคํŠธ i32* %P์—์„œ i8*๋กœ
%P3 = getelementptr i8* %P2, i32 2

%A = ๋กœ๋“œ i8* %P3
i8%A๋ฅผ ๋‹ค์‹œ ์„ค์ •ํ•˜์„ธ์š”
; ํ™•์ธ: @coerce_offset0
; ์ฒดํฌํ•˜์ง€ ์•Š์Œ: ๋กœ๋“œ
; ํ™•์ธ: ret i8
}

XNUMXD๋ดํƒˆ์˜ ์ฒดํฌ-DAG: ์ง€๋ น
์—„๊ฒฉํ•˜๊ฒŒ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ž์—ด์„ ์ผ์น˜์‹œ์ผœ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ,
"์ฒดํฌ-DAG:" ๋‘ ๊ฒฝ๊ธฐ ์‚ฌ์ด(๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฒฝ๊ธฐ ์ „,
๋˜๋Š” ๋งˆ์ง€๋ง‰ ๊ฒฝ๊ธฐ ํ›„). ์˜ˆ๋ฅผ ๋“ค์–ด, clang์€ vtable ์ „์—ญ์„ ์—ญ์ˆœ์œผ๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. ์‚ฌ์šฉ
์ฒดํฌ-DAG:, ์ˆ˜ํ‘œ๋ฅผ ์ž์—ฐ์Šค๋Ÿฌ์šด ์ˆœ์„œ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// ์‹คํ–‰: %clang_cc1 %s -emit-llvm -o - | ํŒŒ์ผ ๊ฒ€์‚ฌ %s

struct Foo { ๊ฐ€์ƒ ๋ฌดํšจ ๋ฉ”์†Œ๋“œ(); };
ํ‘ธ ์—ํ”„; // vtable์„ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.
// ํ™•์ธ-DAG: @_ZTV3Foo =

struct Bar { ๊ฐ€์ƒ ๋ฌดํšจ ๋ฉ”์†Œ๋“œ(); };
๋ฐ” b;
// ์ฒดํฌ-DAG: @_ZTV3Bar =

์ฒดํฌํ•˜์ง€ ์•Š์Œ: ์ง€์‹œ๋ฌธ์€ ๋‹ค์Œ๊ณผ ํ˜ผํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒดํฌ-DAG: ์‚ฌ์ด์˜ ๋ฌธ์ž์—ด์„ ์ œ์™ธํ•˜๋Š” ์ง€์‹œ๋ฌธ
์ฃผ๋ณ€ ์ฒดํฌ-DAG: ์ง€์‹œ. ๊ทธ ๊ฒฐ๊ณผ ์ฃผ๋ณ€ ์ฒดํฌ-DAG: ๏ฟฝ๏ฟฝฤง
์žฌ์ •๋ ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ํ•ญ๋ชฉ์ด ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ฒดํฌ-DAG: ์ „์— ์ฒดํฌํ•˜์ง€ ์•Š์Œ: ํ•˜์ง€ ์•Š์•„์•ผ
๋’ค์ฒ˜์ง€๋Š” ๋ฐœ์ƒ ์ผ์น˜ ์ฒดํฌ-DAG: ์‹œ๊ฐ„ ๋‚ด์— ์ฒดํฌํ•˜์ง€ ์•Š์Œ:. ์˜ˆ๋ฅผ ๋“ค์–ด,

; ์ฒดํฌ-๋Œ€๊ทธ: ์ด์ „
; ์ฒดํฌํ•˜์ง€ ์•Š์Œ: ์•„๋‹˜
; CHECK-DAG: ์ดํ›„

์ด ๊ฒฝ์šฐ๋Š” ์ž…๋ ฅ ๋ฌธ์ž์—ด์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ์ „์— ์ดํ›„์— ๋ฐœ์ƒ ํ•œ ํ›„์—.

์บก์ฒ˜๋œ ๋ณ€์ˆ˜๋กœ, ์ฒดํฌ-DAG: DAG์˜ ์œ ํšจํ•œ ํ† ํด๋กœ์ง€ ์ˆœ์„œ์™€ ์ผ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ณ€์ˆ˜์˜ ์ •์˜์—์„œ ์‚ฌ์šฉ๊นŒ์ง€์˜ ๊ฐ€์žฅ์ž๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๋ช…๋ น์–ด ์Šค์ผ€์ค„๋Ÿฌ์˜ ๋‹ค๋ฅธ ์ถœ๋ ฅ ์‹œํ€€์Šค์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„์œ„ํ•œ
์˜ˆ,

; CHECK-DAG: [[REG1:r[0-9]+]], r1, r2 ์ถ”๊ฐ€
; CHECK-DAG: [[REG2:r[0-9]+]], r3, r4 ์ถ”๊ฐ€
; ํ™•์ธ: mul r5, [[REG1]], [[REG2]]

์ด ๊ฒฝ์šฐ, ๊ทธ ๋‘˜ ์ค‘ ์–ด๋–ค ์ˆœ์„œ๋ผ๋„ ๋”ํ•˜๋‹ค ์ง€์‹œ๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ •์˜ํ•˜๋Š” ๊ฒฝ์šฐ ๊ณผ ๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒดํฌ-DAG: ์ฐจ๋‹จ
์ •์˜ ๊ทœ์น™์ด ์ผ์น˜ํ•  ์ˆ˜ ์žˆ์Œ ์‹œ๊ฐ„ ๋‚ด์— ๊ทธ๊ฒƒ์˜ ์‚ฌ์šฉ.

๋”ฐ๋ผ์„œ ์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

; ํ™•์ธ-DAG: vmov.32 [[REG2:d[0-9]+]][0]
; ํ™•์ธ-DAG: vmov.32 [[REG2]][1]
vmov.32 d0[1]
vmov.32 d0[0]

์ด ๋‹ค๋ฅธ ์ฝ”๋“œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

; ํ™•์ธ-DAG: vmov.32 [[REG2:d[0-9]+]][0]
; ํ™•์ธ-DAG: vmov.32 [[REG2]][1]
vmov.32 d1[1]
vmov.32 d0[0]

์ด๊ฒƒ์€ ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋˜ํ•œ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.
์ˆœ์„œ๊ฐ€ ํ™•์‹คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์“ฐ๊ธฐ ์ „์— ์ฝ๊ธฐ, ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ณต์‚ฌ ๋“ฑ). ๋งŒ์•ฝ
ํ…Œ์ŠคํŠธ๊ฐ€ ์ฐพ๊ณ  ์žˆ๋Š” ์ •์˜๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ(์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋ฒ„๊ทธ๋กœ ์ธํ•ด)
์‚ฌ์šฉ์—์„œ ๋” ๋ฉ€๋ฆฌ ์ผ์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‹ค์ œ ๋ฒ„๊ทธ๋ฅผ ๋ฉ€๋ฆฌ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์ˆœ์„œ๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด DAG ๋ธ”๋ก ์‚ฌ์ด์— ๋น„ DAG ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

XNUMXD๋ดํƒˆ์˜ ์ฒดํฌ ๋ผ๋ฒจ: ์ง€๋ น
๋•Œ๋กœ๋Š” ๋…ผ๋ฆฌ์  ๋ธ”๋ก์œผ๋กœ ๋ถ„ํ• ๋œ ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ํŒŒ์ผ์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜
๊ฒ€์‚ฌ: ์ง€์‹œ๋ฌธ์€ ์ดํ›„ ๋ธ”๋ก์˜ ํ–‰์„ ์ผ์น˜์‹œ์ผœ ์‹ค์ˆ˜๋กœ ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์•ˆ
์˜ค๋ฅ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฒฐ๊ตญ ์ƒ์„ฑ๋˜์ง€๋งŒ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ์œผ๋กœ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ง€์ •๋œ ๊ฒ€์‚ฌ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ ๋ฌธ์ œ์˜ ์‹ค์ œ ์›์ธ๊ณผ ๊ด€๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๋” ๋‚˜์€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด "์ฒดํฌ ๋ผ๋ฒจ:" ์ง€์‹œ๋ฌธ์€
์‚ฌ์šฉ๋œ๋‹ค. ์ผ๋ฐ˜๊ณผ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค CHECK FileCheck๊ฐ€ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ  ์ง€์‹œ๋ฌธ
์ง€์‹œ๋ฌธ๊ณผ ์ผ์น˜ํ•˜๋Š” ํ–‰๋„ ๋‹ค์Œ์— ์˜ํ•ด ์ผ์น˜๋  ์ˆ˜ ์—†๋‹ค๋Š” ์ถ”๊ฐ€ ๊ฐ€์ •
๋‹ค๋ฅธ ๋ชจ๋“  ์ˆ˜ํ‘œ ์ผ์น˜ ํŒŒ์ผ ์ด๋ฆ„; ์ด๊ฒƒ์€ ๋ผ์ธ์— ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค
๋ ˆ์ด๋ธ” ๋˜๋Š” ๊ธฐํƒ€ ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋…์ ์œผ๋กœ ์กด์žฌ ์ฒดํฌ ๋ผ๋ฒจ
์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ๊ฐœ๋ณ„ ๋ธ”๋ก์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ ๋ธ”๋ก์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
๋ฐฉ์ง€ ๊ฒ€์‚ฌ: ํ•œ ๋ธ”๋ก์˜ ์ง€์‹œ๋ฌธ์ด ๋‹ค๋ฅธ ๋ธ”๋ก์˜ ํ–‰๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,

์ •์˜ %struct.C* @C_ctor_base(%struct.C* %this, i32 %x) {
๊ธฐ์ž…:
; ํ™•์ธ ๋ผ๋ฒจ: C_ctor_base:
; ํ™•์ธ: mov [[SAVETHIS:r[0-9]+]], r0
; ํ™•์ธ: bl A_ctor_base
; ํ™•์ธ: mov r0, [[์ €์žฅ]]
%0 = ๋น„ํŠธ์บ์ŠคํŠธ %struct.C* %์ด๋ฅผ %struct.A*๋กœ
%call = ๊ผฌ๋ฆฌ ํ˜ธ์ถœ %struct.A* @A_ctor_base(%struct.A* %0)
%1 = ๋น„ํŠธ์บ์ŠคํŠธ %struct.C* %์ด๋ฅผ %struct.B*๋กœ
%call2 = ๊ผฌ๋ฆฌ ํ˜ธ์ถœ %struct.B* @B_ctor_base(%struct.B* %1, i32 %x)
ret %struct.C* % this
}

์ •์˜ %struct.D* @D_ctor_base(%struct.D* %this, i32 %x) {
๊ธฐ์ž…:
; ํ™•์ธ ๋ผ๋ฒจ: D_ctor_base:

์‚ฌ์šฉ ์ฒดํฌ ๋ผ๋ฒจ: ์ด ๊ฒฝ์šฐ ์ง€์‹œ๋ฌธ์€ ์„ธ ๊ฐ€์ง€ ๊ฒ€์‚ฌ: ๏ฟฝ๏ฟฝฤง
๋ณธ๋ฌธ์— ํ•ด๋‹นํ•˜๋Š” ์ค„๋งŒ ํ—ˆ์šฉ @C_ctor_base ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋”๋ผ๋„
ํŒจํ„ด์€ ํŒŒ์ผ์˜ ๋’ท๋ถ€๋ถ„์—์„œ ์ฐพ์€ ์ผ์น˜ ๋ผ์ธ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด XNUMX๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๊ฒ€์‚ฌ:
์ง€์‹œ๋ฌธ์ด ์‹คํŒจํ•˜๋ฉด FileCheck๋Š” ๋‹ค์Œ ๋ธ”๋ก์„ ๊ณ„์†ํ•˜์—ฌ ๋ณต๊ตฌํ•˜์—ฌ ์—ฌ๋Ÿฌ
๋‹จ์ผ ํ˜ธ์ถœ์—์„œ ๊ฐ์ง€ํ•  ํ…Œ์ŠคํŠธ ์‹คํŒจ.

์š”๊ตฌ ์‚ฌํ•ญ์€ ์—†์Šต๋‹ˆ๋‹ค. ์ฒดํฌ ๋ผ๋ฒจ: ์ง€์‹œ๋ฌธ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
์†Œ์Šค ๋˜๋Š” ์ถœ๋ ฅ ์–ธ์–ด์˜ ์‹ค์ œ ๊ตฌ๋ฌธ ๋ ˆ์ด๋ธ”: ๋‹จ์ˆœํžˆ ๊ณ ์œ ํ•˜๊ฒŒ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํ™•์ธ ์ค‘์ธ ํŒŒ์ผ์˜ ํ•œ ์ค„.

์ฒดํฌ ๋ผ๋ฒจ: ์ง€์‹œ๋ฌธ์€ ๋ณ€์ˆ˜ ์ •์˜ ๋˜๋Š” ์‚ฌ์šฉ์„ ํฌํ•จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ๊ฒ€์‚ฌ ๋ฌด๋Šฌ ๋งค์นญ ํ†ต์‚ฌ๋ก 
"๊ฒ€์‚ฌ:"์™€"์ฒดํฌํ•˜์ง€ ์•Š์Œ:" ์ง€์‹œ๋ฌธ์€ ๋ชจ๋‘ ์ผ์น˜ํ•˜๋Š” ํŒจํ„ด์„ ์ทจํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ
FileCheck, ๊ณ ์ • ๋ฌธ์ž์—ด ๋งค์นญ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋”
์œ ์—ฐํ•œ ํ˜•ํƒœ์˜ ๋งค์นญ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด FileCheck๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด์ค‘ ์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ์ธ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž์—ด์˜ ์ •๊ทœ์‹: {{yourregex}}.
์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์— ๊ณ ์ • ๋ฌธ์ž์—ด ์ผ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— FileCheck๋Š”
์ผ๋ฐ˜ ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ณ ์ • ๋ฌธ์ž์—ด์˜ ํ˜ผํ•ฉ ๋ฐ ์ผ์น˜๋ฅผ ์ง€์›ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
ํ‘œํ˜„. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

; ํ™•์ธ: movhpd {{[0-9]+}}(%esp), {{%xmm[0-7]}}

์ด ๊ฒฝ์šฐ ESP ๋ ˆ์ง€์Šคํ„ฐ์˜ ์˜คํ”„์…‹์ด ํ—ˆ์šฉ๋˜๊ณ  ๋ชจ๋“  xmm ๋ ˆ์ง€์Šคํ„ฐ๋Š”
ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ •๊ทœ์‹์€ ์ด์ค‘ ์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ์—ฌ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ์ ์œผ๋กœ ๊ตฌ๋ณ„๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  C์—์„œ์ฒ˜๋Ÿผ ์ด์ค‘ ์ค‘๊ด„ํ˜ธ ์•ˆ์— ์ด์Šค์ผ€์ดํ”„ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
์ž…๋ ฅ์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์ด์ค‘ ์ค‘๊ด„ํ˜ธ๋ฅผ ์ผ์น˜์‹œํ‚ค๋ ค๋Š” ๋“œ๋ฌธ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถ”์•…ํ•œ ๊ฒƒ์„ ์‚ฌ์šฉ {{[{][{]}} ๋‹น์‹ ์˜ ํŒจํ„ด์œผ๋กœ.

ํŒŒ์ผ ๊ฒ€์‚ฌ ๋ณ€์ˆ˜
ํŒจํ„ด์„ ์ผ์น˜์‹œํ‚จ ๋‹ค์Œ ๋‚˜์ค‘์— ๋‹ค์‹œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข…์ข… ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
ํŒŒ์ผ. codegen ํ…Œ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ๋ชจ๋“  ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๋ฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์Œ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋‚˜์ค‘์— ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ํ•˜๊ธฐ ์œ„ํ•ด, ํŒŒ์ผ ๊ฒ€์‚ฌ ๋ช…๋ช…๋œ ๋ณ€์ˆ˜๋ฅผ ํ—ˆ์šฉ
์ •์˜๋˜๊ณ  ํŒจํ„ด์œผ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค.

; ํ™•์ธ: ํ…Œ์ŠคํŠธ5:
; ํ™•์ธ: ์ง€๊ธˆ [[๋“ฑ๋ก:%[az]+]]
; ํ™•์ธ: andw {{.*}}[[๋“ฑ๋ก]]

์ฒซ ๋ฒˆ์งธ ์ฒดํฌ ๋ผ์ธ์€ ์ •๊ทœ์‹๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. %[์•„์ฆˆ]+ ๋ณ€์ˆ˜์— ์บก์ฒ˜ ๋ฐ”์ด๋‚ธ์Šค(BINANCE) ๊ฐ€์ž…ํ•˜๊ธฐ.
๋‘ ๋ฒˆ์งธ ์ค„์€ ๋‹ค์Œ ํ•ญ๋ชฉ์ด ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋‚ธ์Šค(BINANCE) ๊ฐ€์ž…ํ•˜๊ธฐ ์ดํ›„์— ํŒŒ์ผ์—์„œ ๋ฐœ์ƒ
"๊ทธ๋ฆฌ๊ณ ". ํŒŒ์ผ ๊ฒ€์‚ฌ ๋ณ€์ˆ˜ ์ฐธ์กฐ๋Š” ํ•ญ์ƒ [[ ]] ์Œ, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์˜
์ด๋ฆ„์€ ์ •๊ทœ์‹์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [a-zA-Z][a-zA-Z0-9]*. ์ฝœ๋ก ์ด ์ด๋ฆ„ ๋’ค์— ์˜ค๋Š” ๊ฒฝ์šฐ,
๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ณ€์ˆ˜์˜ ์ •์˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ์ž…๋‹ˆ๋‹ค.

ํŒŒ์ผ ๊ฒ€์‚ฌ ๋ณ€์ˆ˜๋Š” ์—ฌ๋Ÿฌ ๋ฒˆ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•ญ์ƒ ์ตœ์‹  ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋ณ€์ˆ˜๋Š” ๋‚˜์ค‘์— ์ •์˜๋œ ๋™์ผํ•œ ๋ผ์ธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

; ํ™•์ธ: op [[REG:r[0-9]+]], [[REG]]

ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์›ํ•  ๊ฒฝ์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. op ๋™์ผํ•œ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ๋˜๋ฉฐ ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ •ํ™•ํžˆ ์–ด๋–ค ๋ ˆ์ง€์Šคํ„ฐ์ธ์ง€.

ํŒŒ์ผ ๊ฒ€์‚ฌ ์‹
๋•Œ๋กœ๋Š” ์ผ์น˜ ํŒŒ์ผ์˜ ์ค„ ๋ฒˆํ˜ธ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ถœ๋ ฅ์„ ํ™•์ธํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์ปดํŒŒ์ผ๋Ÿฌ ์ง„๋‹จ์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ. ์ด๊ฒƒ์€ ๊ฒฝ๊ธฐ์˜ ํŠน์ • ์ทจ์•ฝ์„ฑ์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.
ํŒŒ์ผ ๊ตฌ์กฐ, "๊ฒ€์‚ฌ:" ์ค„์—๋Š” ๋™์ผํ•œ ํŒŒ์ผ์— ์ ˆ๋Œ€ ์ค„ ๋ฒˆํ˜ธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํ…์ŠคํŠธ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ๋กœ ์ธํ•ด ์ค„ ๋ฒˆํ˜ธ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด FileCheck๋Š” [[@์„ ]], [[@LINE+ ]],
[[@์„ - ]] ํŒจํ„ด์˜ ํ‘œํ˜„. ์ด๋Ÿฌํ•œ ํ‘œํ˜„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.
ํŒจํ„ด์ด ์žˆ๋Š” ๋ผ์ธ(์„ ํƒ์ ์ธ ์ •์ˆ˜ ์˜คํ”„์…‹ ํฌํ•จ).

์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์ผ์น˜ ํŒจํ„ด์„ ๊ด€๋ จ ํ…Œ์ŠคํŠธ ๋ผ์ธ ๊ทผ์ฒ˜์— ๋ฐฐ์น˜ํ•˜๊ณ  ์ƒ๋Œ€ ๋ผ์ธ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฒˆํ˜ธ ์ฐธ์กฐ, ์˜ˆ:

// ํ™•์ธ: test.cpp:[[@LINE+4]]:6: ์˜ค๋ฅ˜: ์˜ˆ์ƒ ';' ์ตœ์ƒ์œ„ ์„ ์–ธ์ž ์ดํ›„
// ํ™•์ธ-๋‹ค์Œ: {{^int a}}
// ํ™•์ธ-๋‹ค์Œ: {{^ \^}}
// ๋‹ค์Œ ํ™•์ธ: {{^ ;}}
์ •์ˆ˜

onworks.net ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜จ๋ผ์ธ์œผ๋กœ FileCheck-3.6 ์‚ฌ์šฉ


๋ฌด๋ฃŒ ์„œ๋ฒ„ ๋ฐ ์›Œํฌ์Šคํ…Œ์ด์…˜

Windows ๋ฐ Linux ์•ฑ ๋‹ค์šด๋กœ๋“œ

  • 1
    Eclipse Tomcat ํ”Œ๋Ÿฌ๊ทธ์ธ
    Eclipse Tomcat ํ”Œ๋Ÿฌ๊ทธ์ธ
    Eclipse Tomcat ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    Tomcat ์„œ๋ธ”๋ฆฟ์˜ ๊ฐ„๋‹จํ•œ ํ†ตํ•ฉ
    ์ž๋ฐ” ๊ฐœ๋ฐœ์šฉ ์ปจํ…Œ์ด๋„ˆ
    ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜. ๋‹น์‹ ์€ ์šฐ๋ฆฌ์™€ ํ•จ๊ป˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
    ํ† ๋ก ...
    Eclipse Tomcat ํ”Œ๋Ÿฌ๊ทธ์ธ ๋‹ค์šด๋กœ๋“œ
  • 2
    WebTorrent ๋ฐ์Šคํฌํ†ฑ
    WebTorrent ๋ฐ์Šคํฌํ†ฑ
    WebTorrent Desktop์€ ์ŠคํŠธ๋ฆฌ๋ฐ์šฉ์ž…๋‹ˆ๋‹ค.
    Mac, Windows ๋˜๋Š” Linux์˜ ํ† ๋ ŒํŠธ. ๊ทธ๊ฒƒ
    BitTorrent ๋ฐ
    WebTorrent ํ”ผ์–ด. ์ด์ œ ์—†๋‹ค
    ๊ธฐ๋‹ค๋ ค์•ผ...
    WebTorrent ๋ฐ์Šคํฌํ†ฑ ๋‹ค์šด๋กœ๋“œ
  • 3
    GenX
    GenX
    GenX๋Š” ์ •์ œํ•˜๊ธฐ ์œ„ํ•œ ๊ณผํ•™ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.
    X์„  ๋ฐ˜์‚ฌ์œจ, ์ค‘์„ฑ์ž
    ๋ฐ˜์‚ฌ์œจ ๋ฐ ํ‘œ๋ฉด X-๋ ˆ์ด
    ๋ฏธ๋ถ„์„ ์ด์šฉํ•œ ํšŒ์ ˆ ๋ฐ์ดํ„ฐ
    ์ง„ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜....
    GenX ๋‹ค์šด๋กœ๋“œ
  • 4
    pspp4windows
    pspp4windows
    PSPP๋Š” ํ†ต๊ณ„๋ฅผ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.
    ์ƒ˜ํ”Œ๋ง ๋ฐ์ดํ„ฐ ๋ถ„์„. ๊ทธ๊ฒƒ์€ ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค
    ์ „์šฉ ํ”„๋กœ๊ทธ๋žจ ๋Œ€์ฒด
    SPSS. PSPP์—๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฐ
    ๊ทธ๋ž˜ํ”ฝ ์šฐ๋ฆฌ...
    pspp4windows ๋‹ค์šด๋กœ๋“œ
  • 5
    Git ํ™•์žฅ
    Git ํ™•์žฅ
    Git Extensions๋Š” ๋…๋ฆฝ ์‹คํ–‰ํ˜• UI ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
    Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ด€๋ฆฌ์šฉ. ๋˜ํ•œ
    Windows ํƒ์ƒ‰๊ธฐ์™€ ํ†ตํ•ฉ ๋ฐ
    Microsoft Visual Studio
    (2015/2017/2019). ๋ชฉ...
    Git ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ๋‹ค์šด๋กœ๋“œ
  • 6
    eSpeak : ์Œ์„ฑ ํ•ฉ์„ฑ
    eSpeak : ์Œ์„ฑ ํ•ฉ์„ฑ
    ์˜์–ด์šฉ ํ…์ŠคํŠธ ์Œ์„ฑ ๋ณ€ํ™˜ ์—”์ง„ ๋ฐ
    ๋‹ค๋ฅธ ๋งŽ์€ ์–ธ์–ด. ์ฝคํŒฉํŠธํ•œ ์‚ฌ์ด์ฆˆ
    ๋ช…ํ™•ํ•˜์ง€๋งŒ ์ธ๊ณต์ ์ธ ๋ฐœ์Œ.
    ๋ช…๋ น์ค„ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    ๋งŽ์€ ...
    eSpeak ๋‹ค์šด๋กœ๋“œ: ์Œ์„ฑ ํ•ฉ์„ฑ
  • ๋”ยป

Linux ๋ช…๋ น

Ad