Compile

์ปดํŒŒ์ผ์ด๋ž€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ €๊ธ‰์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.

์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ €๊ธ‰์–ธ์–ด๋กœ ์ด๋ฃจ์–ด์ง„ ์‹คํ–‰ํŒŒ์ผ๋กœ ๋ฐ”๋€Œ๊ณ , ์ด ์‹คํ–‰ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ๋‚ด์šฉ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ปดํŒŒ์ผ์€ ํฌ๊ฒŒ 4๊ฐ€์ง€์˜ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ๋‹ค.

์ „์ฒ˜๋ฆฌ (Pre-processing)

์ „์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ „์ฒ˜๋ฆฌ๋œ ํŒŒ์ผ (~~.i)๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

์ด ๊ณผ์ •์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—…์ด

  • ์ฃผ์„ ์ œ๊ฑฐ

  • ํ—ค๋”ํŒŒ์ผ ์‚ฝ์ž…

  • #define ์น˜ํ™˜ ๋ฐ ์ ์šฉ

์œผ๋กœ ๋‹จ์–ด ๊ทธ๋Œ€๋กœ ์ „์ฒ˜๋ฆฌ ๊ตฌ๋ฌธ๋“ค์ด ์ฒ˜๋ฆฌ๋œ๋‹ค.

์ปดํŒŒ์ผ (Compile)

์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ „์ฒ˜๋ฆฌ ๋œ ํŒŒ์ผ์„ ์ €๊ธ‰ ์–ธ์–ด์ธ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด (~~.s)๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

์ด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํ”„๋ก ํŠธ์—”๋“œ-๋ฏธ๋“ค์—”๋“œ-๋ฐฑ์—”๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

๋จผ์ € ํ”„๋ก ํŠธ์—”๋“œ ์—์„œ๋Š” ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘์„ฑ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋ฏธ๋“ค์—”๋“œ ์— ์ „๋‹ฌํ•œ ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ดํ›„ ๋ฏธ๋“ค์—”๋“œ ์—์„œ ํ”„๋ก ํŠธ์—”๋“œ ์—์„œ ์ „๋‹ฌ๋ฐ›์€ GIMPLE ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ์•„ํ‚คํ…์ณ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , RTL ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐฑ์—”๋“œ ์— ์ „๋‹ฌํ•œ๋‹ค.

์•„ํ‚คํ…์ณ ์ตœ์ ํ™”๋ž€ CPU ๊ฐ€ ์–ด๋–ค ์•„ํ‚คํ…์ณ (arm, x86 ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ง€์— ๊ด€๊ณ„์—†์ด ์ˆ˜ํ–‰ํ• ์ˆ˜ ์žˆ๋Š” ์ตœ์ ํ™”๋ฅผ ๋งํ•œ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐฑ์—”๋“œ ์—์„œ๋Š” ๋ฏธ๋“ค์—”๋“œ ์—์„œ ๋ฐ›์€ RTL์„ ์‚ฌ์šฉํ•ด, CPU ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์•„ํ‚คํ…์ณ์— ๋งž์ถ”์–ด ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. (์ด ํŒŒ์ผ์€ ํ•ด๋‹น ์•„ํ‚คํ…์ณ๋งŒ ์ดํ•ดํ• ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ์•„ํ‚คํ…์ณ๋Š” ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ• ์ˆ˜ ์—†๋‹ค)

์–ด์…ˆ๋ธ” (Assemble )

์ปดํŒŒ์ผ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์ƒ๊ธด ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ํŒŒ์ผ์„ ์•„๋ž˜ ์‚ฌ์ง„์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋ชฉ์  ํŒŒ์ผ (~~.o)๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

์‹ฌ๋ณผ ํ…Œ์ด๋ธ” ์„น์…˜์€ ์†Œ์Šค ์ฝ”๋“œ์—์„œ ์ฐธ์กฐ๋˜๋Š” ์‹ฌ๋ณผ ๋“ค์˜ ์ด๋ฆ„๊ณผ ์ฃผ์†Œ๊ฐ€ ์ •์˜๋œ ๋ถ€๋ถ„์ด๊ณ , ์žฌ๋ฐฐ์น˜ ์ •๋ณด์„น์…˜์€ ์‹ฌ๋ณผ์˜ ์œ„์น˜๊ฐ€ ๊ฒฐ์ •๋˜๋ฉด ๋ฐ”๊ฟ”์•ผ ํ•  ๋‚ด์šฉ์„ ์ ์–ด ๋†“๋Š” ๋ถ€๋ถ„์ด๋‹ค.

์œ„ ์‚ฌ์ง„์—์„œ ์‹ฌ๋ณผ ํ…Œ์ด๋ธ” ์„น์…˜์—์„œ๋Š” ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์—์„œ ์ฐธ์กฐ๋˜๋Š” ์‹ฌ๋ณผ ์ •๋ณด(์ด๋ฆ„๊ณผ ์ฃผ์†Œ)๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ์ฐธ์กฐ๋˜๋Š” ์‹ฌ๋ณผ ์ •๋ณด๋Š” ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค.

๋งํ‚น (Linking)

๋งˆ์ง€๋ง‰์œผ๋กœ ๋งํ‚น๊ณผ์ •์€ ๋ง์ปค๋ฅผ ์‚ฌ์šฉํ•ด ๋ชฉ์  ํŒŒ์ผ๋“ค์„ ๋ฌถ์–ด ์‹คํ–‰ํŒŒ์ผ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด๋‹ค.

๋งํฌ๋ผ๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋ชฉ์ ํŒŒ์ผ๊ณผ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๋“ค์„ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ์‹คํ–‰ํŒŒ์ผ๋กœ ๋งŒ๋“ ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ์„œ ์ •์  ๋งํ‚น๊ณผ ๋™์  ๋งํ‚น ์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

  • ์ •์  ๋งํ‚น : ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ ๋˜๋Š” ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ์„ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ์‹

    • โžก๏ธ ๋ชจ๋“  ๋ชจ๋“ˆ์„ ๊ฐ€์ง€๊ณ  ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ์ผ์น˜๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

  • ๋™์  ๋งํ‚น : ์ •์  ๋งํ‚น๊ณผ ๋‹ฌ๋ฆฌ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ์˜ ์ฃผ์†Œ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ฐ€ ๋Ÿฐ ํƒ€์ž„์— ํ•ด๋‹น ๋ชจ๋“ˆ์˜ ์ฃผ์†Œ๋กœ ๊ฐ€์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹

    • โžก๏ธ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ •์  ๋งํ‚น์— ๋น„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋” ์•„๋‚„์ˆ˜ ์žˆ๋‹ค.

๋งํ‚น๊ณผ์ •์—์„œ๋Š” ์‹ฌ๋ณผ ํ•ด์„๊ณผ ์žฌ๋ฐฐ์น˜์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • ์‹ฌ๋ณผ ํ•ด์„ : ๋ชฉ์  ํŒŒ์ผ์˜ ์‹ฌ๋ณผ ์ฐธ์กฐ๋ฅผ ์–ด๋–ค ์‹ฌ๋ณผ ์ •์˜์— ์—ฐ๊ฒฐํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ณผ์ •

  • ์žฌ๋ฐฐ์น˜ : ๋ชฉ์  ํŒŒ์ผ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋‚˜ ์ฝ”๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์•Œ๋งž๊ฒŒ ๋ฐฐ์น˜ํ•˜๋Š” ๊ณผ์ •

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

Last updated