์ˆ˜์ • ๋ฐ ๋ณด์™„ ํ•„์š” - rax register

RAX ๋ ˆ์ง€์Šคํ„ฐ

  • x86-64 ์•„ํ‚คํ…์ฒ˜์—์„œ์˜ 64๋น„ํŠธ ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ๋กœ, ์ฃผ๋กœ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋ณด๊ด€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. RAX๋Š” 64๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ์ด๋ฉฐ, 32๋น„ํŠธ์—์„œ๋Š” EAX, 16๋น„ํŠธ์—์„œ๋Š” AX, ๊ทธ๋ฆฌ๊ณ  8๋น„ํŠธ์—์„œ๋Š” AL ๋ฐ AH๋กœ ๋ถ€๋ถ„์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RAX ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ฃผ์š” ์šฉ๋„

  1. ์—ฐ์‚ฐ ๊ฒฐ๊ณผ ์ €์žฅ
    • RAX ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์‚ฐ์ˆ  ๋ฐ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‘ ์ˆ˜๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๊ณฑํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ž๋™์œผ๋กœ RAX์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • ๊ณฑ์…ˆ ์—ฐ์‚ฐ ์‹œ, RAX๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋‚˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์šฉ๋„๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  2. ์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ๋ฐ˜ํ™˜ ๊ฐ’ ์ €์žฅ
    • x86-64 ์•„ํ‚คํ…์ฒ˜์—์„œ ๋ฆฌ๋ˆ…์Šค์™€ ๊ฐ™์€ ์šด์˜์ฒด์ œ๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ RAX์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ผ์„ ์—ด ๋•Œ ๋ฐœ์ƒํ•˜๋Š” open() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ์„ฑ๊ณต ์—ฌ๋ถ€๋‚˜ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ๊ฐ’์ด RAX์— ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
  3. ํŠน์ • ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๋ฒˆํ˜ธ ์ง€์ •
    • ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ ํ˜ธ์ถœ์—์„œ๋Š” RAX์— ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•˜์—ฌ, ์šด์˜์ฒด์ œ๊ฐ€ ํ•ด๋‹น ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•˜๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์ธ์‹ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, RAX์— 1์„ ์ €์žฅํ•˜๋ฉด ์šด์˜์ฒด์ œ๋Š” exit ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

RAX์˜ ํ•˜์œ„ ๋ ˆ์ง€์Šคํ„ฐ

  • RAX (64๋น„ํŠธ): ์ „์ฒด 64๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๊ฐ€์žฅ ์ƒ์œ„์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • EAX (32๋น„ํŠธ): RAX์˜ ํ•˜์œ„ 32๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ EAX๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • AX (16๋น„ํŠธ): RAX์˜ ํ•˜์œ„ 16๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ AX๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • AH ๋ฐ AL (8๋น„ํŠธ): AX์˜ ์ƒ์œ„ 8๋น„ํŠธ๋Š” AH, ํ•˜์œ„ 8๋น„ํŠธ๋Š” AL๋กœ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ ์ฝ”๋“œ

  1. ์‚ฐ์ˆ  ์—ฐ์‚ฐ์—์„œ์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ
mov rax, 5       ; RAX์— 5๋ฅผ ์ €์žฅ
add rax, 3       ; RAX์— 3์„ ๋”ํ•จ, ๊ฒฐ๊ณผ๋Š” RAX์— ์ €์žฅ๋จ (RAX = 8)
  1. ์‹œ์Šคํ…œ ํ˜ธ์ถœ์—์„œ์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ (๋ฆฌ๋ˆ…์Šค)
mov rax, 60      ; ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๋ฒˆํ˜ธ 60์€ exit ํ˜ธ์ถœ
mov rdi, 0       ; ์ข…๋ฃŒ ์ฝ”๋“œ 0
syscall          ; ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์‹คํ–‰

์œ„ ์˜ˆ์‹œ๋Š” exit ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๋Š” ์ฝ”๋“œ๋กœ, RAX์— ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๋ฒˆํ˜ธ 60์„ ์ง€์ •ํ•˜์—ฌ exit ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์š”์•ฝ

  • RAX ๋ ˆ์ง€์Šคํ„ฐ๋Š” 64๋น„ํŠธ ์•„ํ‚คํ…์ฒ˜์˜ ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ๋กœ, ์‚ฐ์ˆ  ์—ฐ์‚ฐ ๊ฒฐ๊ณผ ์ €์žฅ, ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๋ฐ˜ํ™˜ ๊ฐ’ ์ €์žฅ, ํŠน์ • ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์ˆ˜ํ–‰์„ ์œ„ํ•œ ๋ฒˆํ˜ธ ์ง€์ • ๋“ฑ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜์œ„ ๋ ˆ์ง€์Šคํ„ฐ๋กœ EAX(32๋น„ํŠธ), AX(16๋น„ํŠธ), AH/AL(8๋น„ํŠธ)๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • RAX๋Š” ํšจ์œจ์ ์ด๊ณ  ๋‹ค๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ๋ ˆ์ง€์Šคํ„ฐ์ž…๋‹ˆ๋‹ค.