Jastes 2022. 3. 21. 22:57

1. ์ปดํ“จํ„ฐ ๊ตฌ์กฐ(Computer Architecture)

์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ๋Š” PC์„ค๊ณ„๋ฅผ ์—ฌ๋Ÿฌ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๊ฐœ๋ฐœ๋˜๊ณ , ์ด๋“ค์„ ์กฐ๋ฆฝํ•ด์„œ ์ปดํ“จํ„ฐ๊ฐ€ ์™„์„ฑํ•œ ๊ฒƒ์ด ์ปดํ“จํ„ฐ ๊ตฌ์กฐ!

๋”๋ณด๊ธฐ

๐Ÿ“œ๊ฐœ์š”๐Ÿ“œ

  • ์ปดํ“จํ„ฐ ๊ตฌ์กฐ(Computer Architecture)
  • ๋ช…๋ น์–ด ์ง‘ํ•ฉ ๊ตฌ์กฐ(Instruction Set Architecture, ISA)
  • ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ(General Register)
  • ์„ธ๊ทธ๋จผํŠธ ๋ ˆ์ง€์Šคํ„ฐ(Segment Register)
  • ํ”Œ๋ž˜๊ทธ ๋ ˆ์ง€์Šคํ„ฐ(Flag Register)
  • ๋ช…๋ น์–ด ํฌ์ธํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ(Instruction Pointer Register, IP)

 

์ปดํ“จํ„ฐ๋Š” ๊ฐ์ž ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ถ€ํ’ˆ๋“ค์˜ ๋„์›€์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

CPU๋Š” ์ปดํ“จํ„ฐ์˜ ์ž‘๋™์— ํ•ต์‹ฌ์ด ๋˜๋Š” ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ €์žฅ์žฅ์น˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

์ด ์™ธ์—๋„ GPU๋Š” ๊ทธ๋ž˜ํ”ฝ ๋ฐ์ดํ„ฐ๋ฅผ, ๋žœ์นด๋“œ๋Š” ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„, ์‚ฌ์šด๋“œ ์นด๋“œ๋Š” ์†Œ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์— ํŠนํ™”

๊ฐ ๋ถ€ํ’ˆ๋“ค์€ ํŠน์ง•์ด ๋šœ๋ ทํ•˜์—ฌ ์ปดํ“จํ„ฐ์—์„œ ๊ณ ์œ ์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€ํ’ˆ๋“ค์ด ๋ชจ์—ฌ์„œ ‘์ปดํ“จํ„ฐ’๋ผ๋Š” ํ•˜๋‚˜์˜ ๊ธฐ๊ณ„๋กœ์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์„ค๊ณ„์˜ ์กด์žฌ

 

์ „์ฒด์ ์ธ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ ์ค‘์—์„œ ํŠนํžˆ CPU๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์™€ ๊ด€๋ จ๋œ ์„ค๊ณ„
๋ช…๋ น์–ด ์ง‘ํ•ฉ๊ตฌ์กฐ(Instruction Set Architecture, ISA)

๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ISA ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ธํ…”์˜ x86-64 ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค.

์ด ์ปค๋ฆฌํ˜๋Ÿผ ๋˜ํ•œ x86-64 ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑ๋์œผ๋ฏ€๋กœ, ์ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ„๋‹จํžˆ ์งš๊ณ  ๋„˜์–ด๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ“ข์ปดํ“จํ„ฐ ๊ณผํ•™์„ ๋ฐฐ์›Œ์•ผํ•˜๋Š” ์ด์œ 
์‹œ์Šคํ…œ ํ•ดํ‚น์˜ ๊ธฐ์ˆ ์€ ์ปดํ“จํ„ฐ ๊ณผํ•™์— ๋ฟŒ๋ฆฌ๋ฅผ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ˆ™๋ จ๋œ ์‹œ์Šคํ…œ ํ•ด์ปค๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„  ๋‹จ์ˆœํžˆ ์•Œ๋ ค์ง„ ๊ธฐ์ˆ ์„ ์Šต๋“ํ•˜๋Š” ๊ฒƒ์— ๊ทธ์น˜์ง€ ์•Š๊ณ  ๋ฐ”ํƒ•์ด๋˜๋Š” ์ปดํ“จํ„ฐ ๊ณผํ•™์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!!

2. ์ปดํ“จํ„ฐ ๊ตฌ์กฐ์™€ ๋ช…๋ น์–ด ์ง‘ํ•ฉ ๊ตฌ์กฐ

์ปดํ“จํ„ฐ๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ธฐ๋Šฅ์„ ๊ณ ์•ˆํ•˜๊ณ , ์ด๋“ค์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

๋”๋ณด๊ธฐ

โœ”๏ธ์ปดํ“จํ„ฐ ๊ตฌ์กฐ์˜ ์„ธ๋ถ€ ๋ถ„์•ผ

  • ๊ธฐ๋Šฅ ๊ตฌ์กฐ์˜ ์„ค๊ณ„
    • ํฐ ๋…ธ์ด๋งŒ ๊ตฌ์กฐ
    • ํ•˜๋ฒ„๋“œ ๊ตฌ์กฐ
    • ์ˆ˜์ •๋œ ํ•˜๋ฒ„๋“œ ๊ตฌ์กฐ
  • ๋ช…๋ น์–ด ์ง‘ํ•ฉ๊ตฌ์กฐ
    • x86, x86-64
    • ARM
    • MIPS
    • AVR
  • ๋งˆ์ดํฌ๋กœ ์•„ํ‚คํ…์ฒ˜
    • ์บ์‹œ ์„ค๊ณ„
    • ํŒŒ์ดํ”„๋ผ์ด๋‹
    • ์Šˆํผ ์Šค์นผ๋ผ
    • ๋ถ„๊ธฐ ์˜ˆ์ธก
    • ๋น„์ˆœ์ฐจ์  ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ
  • ํ•˜๋“œ์›จ์–ด ๋ฐ ์ปดํ“จํŒ… ๋ฐฉ๋ฒ•๋ก 
    • ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ

 

์ปดํ“จํ„ฐ ๊ตฌ์กฐ๋Š” ์ปดํ“จํ„ฐ์˜ ๊ธฐ๋Šฅ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์„ค๊ณ„, ๋ช…๋ น์–ด ์ง‘ํ•ฉ๊ตฌ์กฐ, ๋งˆ์ดํฌ๋กœ ์•„ํ‚คํ…์ฒ˜, ๊ทธ๋ฆฌ๊ณ 

๊ธฐํƒ€ ํ•˜๋“œ์›จ์–ด ๋ฐ ์ปดํ“จํŒ… ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ค๊ณ„ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. 

 

"์ปดํ“จํ„ฐ์˜ ๊ธฐ๋Šฅ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์„ค๊ณ„"๋ž€ ์ปดํ“จํ„ฐ๊ฐ€ ์—ฐ์‚ฐ์„ ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•ด
์–ด๋–ค ๊ธฐ๋Šฅ๋“ค์ด ์ปดํ“จํ„ฐ์— ํ•„์š”ํ•œ์ง€ ๊ณ ๋ฏผํ•˜๊ณ , ์„ค๊ณ„ํ•˜๋Š” ๋ถ„์•ผ

Ex) ๋Œ€ํ‘œ์ ์œผ๋กœ ํฐ ๋…ธ์ด๋งŒ ๊ตฌ์กฐ, ํ•˜๋ฒ„๋“œ ๊ตฌ์กฐ, ์ˆ˜์ •๋œ ํ•˜๋ฒ„๋“œ ๊ตฌ์กฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

CPU์˜ ํ•˜๋“œ์›จ์–ด์  ์„ค๊ณ„๋Š” ๋งˆ์ดํฌ๋กœ ์•„ํ‚คํ…์ฒ˜(Micro Architecture)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ ์ •์˜๋œ ๋ช…๋ น์–ด ์ง‘ํ•ฉ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก, CPU์˜ ํšŒ๋กœ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ถ„์•ผ์ž…๋‹ˆ๋‹ค.

 


ํฐ ๋…ธ์ด๋งŒ ๊ตฌ์กฐ

์ปดํ“จํ„ฐ์— ์—ฐ์‚ฐ, ์ œ์–ด, ์ €์žฅ์˜ ์„ธ ๊ฐ€์ง€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ

 

์—ฐ์‚ฐ๊ณผ ์ œ์–ด๋ฅผ ์œ„ํ•ด ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜(Central Processing Unit, CPU)๋ฅผ, ์ €์žฅ์„ ์œ„ํ•ด ๊ธฐ์–ต์žฅ์น˜(memory)๋ฅผ ์‚ฌ์šฉ

๊ทธ๋ฆฌ๊ณ  ์žฅ์น˜๊ฐ„์— ๋ฐ์ดํ„ฐ๋‚˜ ์ œ์–ด ์‹ ํ˜ธ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฒ„์Šค(bus)๋ผ๋Š” ์ „์ž ํ†ต๋กœ๋ฅผ ์‚ฌ์šฉ


 

์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜๐Ÿง 

CPU๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•˜๋Š” PC์˜ ๋‘๋‡Œ!!

 

 ํ”„๋กœ์„ธ์Šค์˜ ์ฝ”๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์‹คํ–‰ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ์ผ๋ จ์˜ ๋ชจ๋“  ๊ณผ์ •์ด CPU์—์„œ ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

CPU๋Š” ์‚ฐ์ˆ /๋…ผ๋ฆฌ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์‚ฐ์ˆ ๋…ผ๋ฆฌ์žฅ์น˜(Arithmetic Logic Unit, ALU)์™€ CPU๋ฅผ ์ œ์–ดํ•˜๋Š” ์ œ์–ด์žฅ์น˜(Control Unit), CPU์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ(Register) ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.


 

๊ธฐ์–ต์žฅ์น˜๐Ÿ’พ

๋™์ž‘ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ์šฉ๋„์— ๋”ฐ๋ผ ์ฃผ๊ธฐ์–ต์žฅ์น˜์™€ ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜๋กœ ๋ถ„๋ฅ˜!!

 

 ์ฃผ๊ธฐ์–ต์žฅ์น˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ ๋žจ(Random-Access Memory, RAM)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๋ฐ˜๋Œ€๋กœ ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜๋Š” ์šด์˜ ์ฒด์ œ, ํ”„๋กœ๊ทธ๋žจ ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์žฅ๊ธฐ๊ฐ„ ๋ณด๊ด€ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ(Hard Disk Drive, HDD), SSD(Solid State Drive)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


 

๋ฒ„์Šค๐ŸšŒ

์ปดํ“จํ„ฐ ๋ถ€ํ’ˆ๊ณผ ๋ถ€ํ’ˆ ์‚ฌ์ด ๋˜๋Š” PC์™€ PC ์‚ฌ์ด์— ์‹ ํ˜ธ๋ฅผ ์ „์†กํ•˜๋Š” ํ†ต๋กœ!!

 

 ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋™ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ฒ„์Šค(Data Bus), ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋Š” ์ฃผ์†Œ ๋ฒ„์Šค(Address Bus), ์ฝ๊ธฐ/์“ฐ๊ธฐ๋ฅผ ์ œ์–ดํ•˜๋Š” ์ œ์–ด ๋ฒ„์Šค(Control Bus)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์™ธ์—๋„ ๋žœ์„ ์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ „์†ก ์†Œํ”„ํŠธ์›จ์–ด, ํ”„๋กœํ† ์ฝœ ๋“ฑ๋„ ๋ฒ„์Šค๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.

๐Ÿ’ก๊ธฐ์–ต์žฅ์น˜๊ฐ€ ์žˆ๋Š”๋ฐ CPU์•ˆ์— ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

 CPU๋Š” ๊ต‰์žฅํžˆ ๋น ๋ฅธ ์†๋„๋กœ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ, ์ด๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ์˜ ๋น ๋ฅธ ๊ตํ™˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
CPU์˜ ์—ฐ์‚ฐ์†๋„๊ฐ€ ๊ธฐ์–ต์žฅ์น˜์™€์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์†๋„๋ณด๋‹ค ์••๋„์ ์œผ๋กœ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ์–ต์žฅ์น˜๋งŒ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ‘๋ชฉํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ธฐ์— CPU๋Š” ๊ตํ™˜์†๋„๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ๋‹จ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋ ˆ์ง€์Šคํ„ฐ์™€ ์บ์‹œ๋ผ๋Š” ์ €์žฅ์žฅ์น˜๋ฅผ ๋‚ด๋ถ€์— ๋ณด์œ !

 


๋ช…๋ น์–ด ์ง‘ํ•ฉ ๊ตฌ์กฐ(Instruction Set Architecture, ISA)

 

CPU๊ฐ€ ํ•ด์„ํ•˜๋Š” ๋ช…๋ น์–ด์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธ

๋‹ค์–‘ํ•œ ISA ์ถœ์‹œ ์ด์œ ๋Š” ๋ชจ๋“  ์ปดํ“จํ„ฐ๊ฐ€ ๋™์ผํ•œ ์ˆ˜์ค€์˜ ์—ฐ์‚ฐ ๋Šฅ๋ ฅ์„ ์š”๊ตฌํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์ปดํ“จํŒ… ํ™˜๊ฒฝ๋„ ๋‹ค์–‘ํ•˜๊ธฐ ๋•Œ๋ฌธ

ํ”„๋กœ๊ทธ๋žจ์€ ๊ธฐ๊ณ„์–ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ, ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ์ด ๋ช…๋ น์–ด๋“ค์„ CPU๊ฐ€ ์ฝ๊ณ , ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋”๋ณด๊ธฐ

์˜ˆ์‹œ๋กœ์จ ์ธํ…”์˜ x86-64๋Š” ๊ณ ์„ฑ๋Šฅ ํ”„๋กœ์„ธ์„œ๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ CPU๋“ค์€ ๋งŽ์€ ์ „๋ ฅ์„ ์†Œ๋ชจํ•˜๋ฉฐ, ๋ฐœ์—ด๋„ ์ƒ๋Œ€์ ์œผ๋กœ ์‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์•ˆ์ •์ ์œผ๋กœ ์ „๋ ฅ์„ ๊ณต๊ธ‰ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ƒ‰๊ฐ ์žฅ์น˜๋ฅผ ๊ตฌ๋น„ํ•˜๋Š”๋ฐ ๊ณต๊ฐ„์ƒ์˜ ๋ถ€๋‹ด์ด ํฌ์ง€ ์•Š์€ ๋ฐ์Šคํฌํ†ฑ ๋˜๋Š” ๋žฉํ†ฑ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ์•„ํ‚คํ…์ฒ˜ ์ค‘์—์„œ ์ด ์ปค๋ฆฌํ˜๋Ÿผ์€ x86-64์•„ํ‚คํ…์ฒ˜๋งŒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ์œ—์ชฝ ์›ํ˜• ๊ทธ๋ž˜ํ”„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ, ์ธํ…”์˜ x86๊ธฐ๋ฐ˜ CPU์˜ ์ ์œ ์œจ์ด ์••๋„์ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•ด์„œ ์ง€๊ธˆ์€ ๊ฐ€์žฅ ๋ฒ”์šฉ์ ์ธ x64์•„ํ‚คํ…์ฒ˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์‹œ์Šคํ…œ ํ•ดํ‚น๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋ฉฐ, ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜๋Š” ์‹ฌํ™” ์ปค๋ฆฌํ˜๋Ÿผ์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

 


x86-64 ์•„ํ‚คํ…์ฒ˜

 ์ธํ…”์˜ 32๋น„ํŠธ CPU ์•„ํ‚คํ…์ฒ˜์ธ IA-32๋ฅผ 64๋น„ํŠธ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™•์žฅํ•œ ๊ฒƒ

 

‘64๋น„ํŠธ ์•„ํ‚คํ…์ฒ˜', '32๋น„ํŠธ ์•„ํ‚คํ…์ฒ˜’์—์„œ 64์™€ 32๋Š” CPU๊ฐ€ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ๋Š” ์ด๋ฅผ CPU๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋‹จ์œ„๋ผ๋Š” ์˜๋ฏธ์—์„œ WORD๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

 

๐Ÿ’กWORD๊ฐ€ ํฌ๋ฉด ์œ ๋ฆฌํ•œ ์  :๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์ƒ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ธ๋ฐ,
64๋น„ํŠธ ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ์ด๋ก ์ƒ 16์—‘์‚ฌ ๋ฐ”์ดํŠธ(=16,777,216 ํ…Œ๋ผ๋ฐ”์ดํŠธ)์˜ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ,
์ด๋Š” ์›ฌ๋งŒํ•ด์„œ๋Š” ์™„์ „ํ•œ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ์ •๋„๋กœ ํฐ ํฌ๊ธฐ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ณ ๋กœ ์ž์› ๋ฌธ์ œ ํ•ด๊ฒฐ!

x86-64 ์•„ํ‚คํ…์ฒ˜: ๋ ˆ์ง€์Šคํ„ฐ

๋ ˆ์ง€์Šคํ„ฐ๋Š” CPU๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•  ๋•Œ ์ด์šฉํ•˜๋Š” ๋ณด๊ด€์†Œ๋กœ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฉด์œผ๋กœ ์‚ฌ์šฉ๋จ

 

  • x64 ์•„ํ‚คํ…์ฒ˜: ๋ ˆ์ง€์Šคํ„ฐ
    • ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ(General Register)
    • ์„ธ๊ทธ๋จผํŠธ ๋ ˆ์ง€์Šคํ„ฐ(Segment Register)
    • ๋ช…๋ น์–ด ํฌ์ธํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ(Instruction Pointer Register, IP)
    • ํ”Œ๋ž˜๊ทธ ๋ ˆ์ง€์Šคํ„ฐ(Flag Register)

 

๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ ๐Ÿงบ

๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ฃผ์šฉ๋„๋Š” ์žˆ์œผ๋‚˜, ๊ทธ ์™ธ์˜ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ

 

์ž์ฃผ ์“ฐ์ด๋Š” ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ๋“ค์˜ ์ฃผ์šฉ๋„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ์™ธ์—๋„ x64์—๋Š” r8, r9, … , r15๊นŒ์ง€์˜ ๋ฒ”์šฉ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ๋” ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฆ„                                                       ์ฃผ์šฉ๋„
rax (accumulator register) ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’
rbx (base register) x64์—์„œ๋Š” ์ฃผ๋œ ์šฉ๋„ ์—†์Œ
rcx (counter register) ๋ฐ˜๋ณต๋ฌธ์˜ ๋ฐ˜๋ณต ํšŸ์ˆ˜, ๊ฐ์ข… ์—ฐ์‚ฐ์˜ ์‹œํ–‰ ํšŸ์ˆ˜
rdx (data register) x64์—์„œ๋Š” ์ฃผ๋œ ์šฉ๋„ ์—†์Œ
rsi (source index) ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธธ ๋•Œ ์›๋ณธ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
rdi (destination index) ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธธ ๋•Œ ๋ชฉ์ ์ง€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
rsp (stack pointer) ์‚ฌ์šฉ์ค‘์ธ ์Šคํƒ์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
rbp (stack base pointer) ์Šคํƒ์˜ ๋ฐ”๋‹ฅ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ

์„ธ๊ทธ๋จผํŠธ ๋ ˆ์ง€์Šคํ„ฐ ๐Ÿ—‚๏ธ

x64 ์•„ํ‚คํ…์ฒ˜์—๋Š” cs, ss, ds, es, fs, gs ์ด 6๊ฐ€์ง€ ์„ธ๊ทธ๋จผํŠธ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์กด์žฌ

 

  • CS ๋ ˆ์ง€์Šคํ„ฐ
    • CS๋ ˆ์ง€์Šคํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•œ๋‹ค.
      - ์„ธ๊ทธ๋จผํŠธ ์ฃผ์†Œ์— ๋ช…๋ น์–ด ํฌ์ธํ„ฐ(instruction pointer, IP) ๋ ˆ์ง€์Šคํ„ฐ์˜ ์˜คํ”„์…‹ ๊ฐ’์„ ๋”ํ•˜๋ฉด,
      ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์™€์•ผ ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
  • DS ๋ ˆ์ง€์Šคํ„ฐ
    • DS ๋ ˆ์ง€์Šคํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
      - ๋ช…๋ น์–ด๋Š” ์ด ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•œ๋‹ค
  • SS ๋ ˆ์ง€์Šคํ„ฐ
    • SS ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์Šคํƒ์˜ ๊ตฌํ˜„์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
      - ํ”„๋กœ๊ทธ๋žจ์€ ์ฃผ์†Œ์™€ ๋ฐ์ดํ„ฐ์˜ ์ž„์‹œ ์ €์žฅ ๋ชฉ์ ์œผ๋กœ ์Šคํƒ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ES ๋ ˆ์ง€์Šคํ„ฐ
    • CS๋ ˆ์ง€์Šคํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•œ๋‹ค.
      - ํ”„๋กœ๊ทธ๋žจ์ด ES ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—, ์ด ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ ์ ˆํ•œ ์„ธ๊ทธ๋จผํŠธ ์ฃผ์†Œ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค
  • FS์™€ GS ๋ ˆ์ง€์Šคํ„ฐ
    • ๊ธฐ์–ต์žฅ์น˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€๋กœ ๋„์ž…๋œ ์—ฌ๋ถ„์˜ ์„ธ๊ทธ๋จผํŠธ ๋ ˆ์ง€์Šคํ„ฐ์ž…๋‹ˆ๋‹ค.

ํ˜„๋Œ€์˜ x64์—์„œ cs, ds, ss ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ฝ”๋“œ ์˜์—ญ๊ณผ ๋ฐ์ดํ„ฐ, ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ ์‚ฌ์šฉ๋˜๊ณ ,

๋‚˜๋จธ์ง€ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์šด์˜์ฒด์ œ ๋ณ„๋กœ ์šฉ๋„๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฒ”์šฉ์ ์ธ ์šฉ๋„๋กœ ์ œ์ž‘๋œ ์„ธ๊ทธ๋จผํŠธ ๋ ˆ์ง€์Šคํ„ฐ์ž…๋‹ˆ๋‹ค.

 


๋ช…๋ น์–ด ํฌ์ธํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ ๐Ÿ‘‡

CPU๊ฐ€ ์–ด๋Š ๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ• ์ง€ ๊ฐ€๋ฆฌํ‚ค๋Š”๊ฒŒ ๋ช…๋ น์–ด ํฌ์ธํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ์˜ ์—ญํ• 

 

x64 ์•„ํ‚คํ…์ฒ˜์˜ ๋ช…๋ น์–ด ๋ ˆ์ง€์Šคํ„ฐ๋Š” rip์ด๋ฉฐ, ํฌ๊ธฐ๋Š” 8๋ฐ”์ดํŠธ์ž…๋‹ˆ๋‹ค.

 


ํ”Œ๋ž˜๊ทธ ๋ ˆ์ง€์Šคํ„ฐ ๐Ÿณ๏ธ๐Ÿด

ํ”„๋กœ์„ธ์„œ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ

ํ”Œ๋ž˜๊ทธ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ž์‹ ์„ ๊ตฌ์„ฑํ•˜๋Š” ์—ฌ๋Ÿฌ ๋น„ํŠธ๋“ค๋กœ CPU์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

RFLAGS๋Š” 64๋น„ํŠธ์ด๋ฏ€๋กœ ์ตœ๋Œ€ 64๊ฐœ์˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ์˜ค๋ฅธ์ชฝ์˜ 20์—ฌ๊ฐœ์˜ ๋น„ํŠธ๋งŒ ์‚ฌ์šฉํ•จ

๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ค‘์—์„œ๋„ ์—ฌ๋Ÿฌ๋ถ„์ด ์•ž์œผ๋กœ ์ฃผ๋กœ ์ ‘ํ•˜๊ฒŒ ๋  ๊ฒƒ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

ํ”Œ๋ž˜๊ทธ์˜๋ฏธ

CF(Carry Flag) ๋ถ€ํ˜ธ ์—†๋Š” ์ˆ˜์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋น„ํŠธ์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์„ ๊ฒฝ์šฐ ์„ค์ • ๋ฉ๋‹ˆ๋‹ค.
ZF(Zero Flag) ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ 0์ผ ๊ฒฝ์šฐ ์„ค์ • ๋ฉ๋‹ˆ๋‹ค.
SF(Sign Flag) ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ ์„ค์ • ๋ฉ๋‹ˆ๋‹ค.
OF(Overflow Flag) ๋ถ€ํ˜ธ ์žˆ๋Š” ์ˆ˜์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋น„ํŠธ ๋ฒ”์œ„๋ฅผ ๋„˜์„ ๊ฒฝ์šฐ ์„ค์ • ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ๋กœ 3์˜ ๊ฐ’์„ ๊ฐ–๋Š” a์™€ 5์˜ ๊ฐ’์„ ๊ฐ–๋Š” b๊ฐ€ ์žˆ์„ ๋•Œ, a์—์„œ b๋ฅผ ๋นผ๋Š” ์—ฐ์‚ฐ์„ ํ•˜๋ฉด, ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์Œ์ˆ˜์ด๋ฏ€๋กœ 

SF๊ฐ€ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด CPU๋Š” SF๋ฅผ ํ†ตํ•ด a๊ฐ€ b๋ณด๋‹ค ์ž‘์•˜์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


๋ ˆ์ง€์Šคํ„ฐ ํ˜ธํ™˜

์•ž์—์„œ x86-64 ์•„ํ‚คํ…์ฒ˜๋Š” IA-32์˜ 64๋น„ํŠธ ํ™•์žฅ ์•„ํ‚คํ…์ฒ˜์ด๋ฉฐ, ํ˜ธํ™˜์ด ๊ฐ€๋Šฅ

 

IA-32์—์„œ CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ๋“ค์€ 32๋น„ํŠธ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ด๋“ค์˜ ๋ช…์นญ์€ ๊ฐ๊ฐ eax, ebx, ecx, edx, esi, edi, esp, ebp์ด์ž๋งŒ,ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์ด ๋ ˆ์ง€์Šคํ„ฐ๋“ค์€ x86-64์—์„œ๋„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp๊ฐ€ ์ด๋“ค์˜ ํ™•์žฅ๋œ ํ˜•ํƒœ์ด๋ฉฐ, eax, ebx ๋“ฑ์€ ํ™•์žฅ๋œ ๋ ˆ์ง€์Šคํ„ฐ์˜

ํ•˜์œ„ 32๋น„ํŠธ๋ฅผ ๊ฐ€๋ฅดํ‚ต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, eax๋Š” rax์˜ ํ•˜์œ„ 32๋น„ํŠธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ณผ๊ฑฐ 16๋น„ํŠธ ์•„ํ‚คํ…์ฒ˜์ธ IA-16๊ณผ์˜ ํ˜ธํ™˜์„ ์œ„ํ•ด ax, bx, cx, dx, si, di, sp, bp๋Š” eax, ebx, ecx, edx, esi, edi, esp ,ebp์˜ ํ•˜์œ„ 16๋น„ํŠธ๋ฅผ ๊ฐ€๋ฅดํ‚ต๋‹ˆ๋‹ค.

 


๊ฒฐ๋ก 

  • ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ(General Register): ์ฃผ ์šฉ๋„๋Š” ์žˆ์œผ๋‚˜, ๊ทธ ์™ธ์˜ ์šฉ๋„๋กœ๋„ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ.
    x64์—๋Š” rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp, r8-r15๊ฐ€ ์žˆ๋‹ค.
  • ์„ธ๊ทธ๋จผํŠธ ๋ ˆ์ง€์Šคํ„ฐ(Segment Register): ๊ณผ๊ฑฐ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜์ด๋‚˜, ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ํ™•์žฅ์„ ์œ„ํ•ด
    ์‚ฌ์šฉ๋์œผ๋‚˜, ํ˜„์žฌ๋Š” ์ฃผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ x64์—๋Š” cs, ss, ds, es, fs, gs๊ฐ€ ์žˆ๋‹ค.
  • ํ”Œ๋ž˜๊ทธ ๋ ˆ์ง€์Šคํ„ฐ(Flag Register): CPU์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ
  • ๋ช…๋ น์–ด ํฌ์ธํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ(Instruction Pointer Register, IP): CPU๊ฐ€ ์‹คํ–‰ํ•ด์•ผํ•  ์ฝ”๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ ˆ์ง€์Šคํ„ฐ.
    x64์—์„œ๋Š” rip๊ฐ€ ์žˆ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ(๋‹จ, ์œ„ ๋ถ€๋ถ„์€ ์ œ๊ฐ€ ๋ฐฐ์šด ๋‚ด์šฉ ์š”์•ฝ์— ๊ฐ€๊น๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ์˜ ์œ„ ๋‚ด์šฉ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.)

 

Background: Computer Architecture

์ปดํ“จํ„ฐ ๊ตฌ์กฐ ๋ฐ ๋ช…๋ น์–ด ์ง‘ํ•ฉ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๊ณ , ์ปค๋ฆฌํ˜๋Ÿผ์ด ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์ธํ…” x86-64 ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

dreamhack.io

์ฐธ๊ณ  ์ด๋ฏธ์ง€

 

Background: Computer Architecture

์ปดํ“จํ„ฐ ๊ตฌ์กฐ ๋ฐ ๋ช…๋ น์–ด ์ง‘ํ•ฉ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๊ณ , ์ปค๋ฆฌํ˜๋Ÿผ์ด ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์ธํ…” x86-64 ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

dreamhack.io