rosieblue
article thumbnail
[์ปดํ“จํ„ฐ ๊ตฌ์กฐ] ALU

์‚ฌ์ „ ์ง€์‹ CPU๋Š” ๋ช…๋ น์–ด๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ์žฅ์น˜์ด๋‹ค. ALU๋Š” ๊ณ„์‚ฐ๊ธฐ์ด๊ณ , ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ž„์‹œ ๋ณด๊ด€ ์žฅ์น˜, ์ œ์–ด ์žฅ์น˜๋Š” ๋ช…๋ น์–ด๋ฅผ ํ•ด์„ํ•ด์„œ ์ œ์–ด์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ALU 3-10๋ผ๋Š” ์—ฐ์‚ฐ์„ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž ALU๋Š” ๊ณ„์‚ฐํ•˜๋Š” ๋ถ€ํ’ˆ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”ผ์—ฐ์‚ฐ์ž์™€ ์—ฐ์‚ฐ์„ ์ธํ’‹์œผ๋กœ ๋ฐ›์•„์•ผํ•œ๋‹ค. ALU๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋กœ๋ถ€ํ„ฐ ํ”ผ์—ฐ์‚ฐ์ž(3,10)๋ฅผ ๋ฐ›๊ณ , ์ œ์–ด์žฅ์น˜๊ฐ€ ๋ณด๋‚ด์ฃผ๋Š” ์ œ์–ด์‹ ํ˜ธ(๋‘˜์ด ๋นผ์ค˜!)๋กœ ์–ด๋–ค ์—ฐ์‚ฐ์„ ํ• ์ง€๋ฅผ ์ •ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๊ฐ’์ธ 8์„ ์ƒˆ๋กœ์šด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•œ๋‹ค. ๋˜ํ•œ 3-10

article thumbnail
[ROP ์‹œ๋ฆฌ์ฆˆ (1)] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋งํฌ

๐Ÿ”ROP ์‹œ๋ฆฌ์ฆˆ๐Ÿ” [ROP ์‹œ๋ฆฌ์ฆˆ (1)] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋งํฌ

article thumbnail
[OS] Thread Local Storage (TLS)

TLS(Thread Local Storage)๋ž€? TLS๋Š” Thread Local Storage์˜ ์•ฝ์ž๋กœ thread๋ณ„๋กœ ๊ณ ์œ ํ•œ ์ „์—ญ/์ •์  ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ณต๊ฐ„์ด๋‹ค. ์Šค๋ ˆ๋“œ๋Š” ์›๋ž˜ ์Šค๋ ˆ๋“œ ๋ณ„๋กœ ๊ณ ์œ ์˜ ์Šคํƒ์„ ๊ฐ€์ง€์ง€๋งŒ, ์ „์—ญ/์ „์  ๋ณ€์ˆ˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์ „์—ญ/์ •์  ๋ณ€์ˆ˜๋ฅผ ์Šค๋ ˆ๋“œ ๋ณ„๋กœ ํ• ๋‹นํ•ด์ฃผ๊ณ  ์‹ถ์„ ๋•Œ TLS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (๋”ฐ๋ผ์„œ TLS์— ๋“ค์–ด์žˆ๋Š” ์• ๋“ค์€ ์ง€์—ญ ๋ณ€์ˆ˜์™€ ๋‹ค๋ฅด๊ฒŒ ํ•จ์ˆ˜ above์—์„œ ๋‹ค visibleํ•˜๋‹ค) TLS๋Š” ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์— ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋‹ค fs๋Š” TLS๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”๋ฐ, ์˜ˆ๋ฅผ ๋“ค์–ด fs:0x28์—๋Š” ์Šคํƒ ์นด๋‚˜๋ฆฌ์˜ ๊ฐ’์œผ๋กœ ์“ฐ์ด๋Š” ๋žœ๋คํ•œ ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค. ๋Œ€์ถฉ tls ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜์ž„ ์•„๋ž˜๋Š” ใ…‡ใ…‡ static void * init_tls (v..

article thumbnail
[OS] ํ”„๋กœ์„ธ์Šค Process (1) - ํ”„๋กœ์„ธ์Šค ๊ฐœ๋…, ํฌ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค vs ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค, ps ๋ช…๋ น์–ด

ํ”„๋กœ๊ทธ๋žจ (Program) ํ”„๋กœ๊ทธ๋žจ์ด๋ž€ ์šฐ๋ฆฌ๊ฐ€ ๋งŽ์ด ์“ฐ๋“ฏ ๊ทธ์ € ํ•˜๋‚˜์˜ ์•ฑ?์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค. ์•ฑ์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์‚ฌ์‹ค ์—ฌ๊ธฐ์„œ ์ •ํ™•ํ•˜์ง„ ์•Š์ง€๋งŒ ๋น„์ „๊ณต์ž๋ถ„๋“คํ•œํ…Œ๋Š” ์ด๋ ‡๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ์‰ฌ์šธ ๊ฒƒ ๊ฐ™๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๋กฌ์ด๋‚˜ ๋…ธ์…˜, ์›Œ๋“œ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ๋‹ค ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. (exe๊ฐ™์€ ๊ฑฐ ๋ถ™์—ฌ์ง„ ์• ๋“ค!! exe๋ง๊ณ  ๋‹ค๋ฅธ ํ™•์žฅ์ž๋„ ๊ฐ€๋Šฅ~) ์ด๋Ÿฌํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค๊ณ„ํ•  ๋•Œ๋Š” ๋ณดํ†ต C์–ธ์–ด์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋– ํ•œ ํ…Œ์Šคํฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทธ์ € ์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ๋ผ๊ณ  ๋ณด๋ฉด ํŽธํ•˜๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ์„ธ์Šค์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ผ๊นŒ? ํ”„๋กœ์„ธ์Šค (Process) ์ด๋•Œ ํ”„๋กœ์„ธ์Šค๋ž€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ์•„์ง ์‹คํ–‰๋˜์ง€ ์•Š์€ ์ •์ ์ธ ์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ๋ผ๋ฉด, ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๋™์ ์ธ ์•„์ด๋ผ๊ณ  ..

article thumbnail
[System/Assembly] ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ ํ˜ธํ™˜ํ‘œ

x86(32๋น„ํŠธ) ์•„ํ‚คํ…์ฒ˜์˜ ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ 32๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ: eax, ebx, ecx, edx, esi, edi, ebp, esp (8๊ฐœ๋งŒ ์žˆ๊ณ  r8~r16์€ ์—†์Œ) 16๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ: ax, bx, cx, dx, si, di, bp, sp 8๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ: al, bl, cl, dl, sil, dil, bpl, spl x86-64 ์•„ํ‚คํ…์ฒ˜์˜ ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ 64๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ: rax, rbx, rcx, rdx, rsi, rdi, rbp, rsp, r8 ~ r15 32๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ(ํ•˜์œ„ 32๋น„ํŠธ๋งŒ ์‚ฌ์šฉ): eax, ebx, ecx, edx, esi, edi, ebp, esp, r8d ~ r15d 16๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ(ํ•˜์œ„ 16๋น„ํŠธ๋งŒ ์‚ฌ์šฉ): ax, bx, cx, dx, si, di, bp, sp, r8w ~..

article thumbnail
[System] ์ปดํŒŒ์ผ ๊ณผ์ •์˜ ๋งํฌ(Link)์™€ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ(Object File)

C์ฝ”๋“œ๋‚˜ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ ํ•  ๋•Œ ๊ฒฐ๊ณผ๋ฅผ ์ง€์ •ํ•  ๋•Œ Object File์ด ๋  ๋•Œ๋„ ์žˆ๊ณ ,,, ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๊ฐ€ ๋  ๋•Œ๋„ ์žˆ๊ณ (?)ํ•ด์„œ ๋„๋Œ€์ฒด ๋‘˜์˜ ์ฐจ์ด๊ฐ€ ๋ญ”์ง€, ๊ทธ๋ฆฌ๊ณ  ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์ด๋ผ๋Š”๊ฒŒ ์ •ํ™•ํ•˜๊ฒŒ ๋ญ˜ ์ง€์นญํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ค‘๊ฐ„์— ๋‚˜์˜ค๋Š” '๋งํฌ'์˜ ๊ฐœ๋…์„ ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•œ๋‹ค. ์˜ค๋Š˜ ๋‹ค๋ฃฐ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ vs ์˜ค๋ธŒ์ ํŠธ ์ฝ”๋“œ (vs ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ) ๋งํฌ(Link)์˜ ๊ฐœ๋… gcc vs as ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ vs ์˜ค๋ธŒ์ ํŠธ ์ฝ”๋“œ (vs ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ) ๋Š” ์•„๋ž˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์˜€๋‹ค. https://stackoverflow.com/questions/466790/assembly-code-vs-machine-code-vs-object-code#:~:text=Object%20code%20i..