Skip to main content
  1. Posts/
  2. Today I Learned/

CSAPP 5.1 Capabilities and Limitations of Optimizing Compilers

·149 words·1 min
Jiho Kim
Author
Jiho Kim
달렀 또 달렀

πŸ“ 상세 정리
#

  • ν˜„λŒ€ μ»΄νŒŒμΌλŸ¬λŠ” ν”„λ‘œκ·Έλž¨μ—μ„œ μ–΄λ–€ 값이 κ³„μ‚°λ˜κ³  μ–΄λ–»κ²Œ μ‚¬μš©λ˜λŠ”μ§€λ₯Ό κ²°μ •ν•˜κΈ° μœ„ν•΄ μ •κ΅ν•œ μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•œλ‹€.
    • 식 λ‹¨μˆœν™”, 계산결과 μž¬ν™œμš©, 계산 횟수 κ°μ†Œ 등을 μ§€μ›ν•œλ‹€.
    • λŒ€λΆ€λΆ„μ˜ μ»΄νŒŒμΌλŸ¬λŠ” -Og, -O1, -O2…처럼 μ΅œμ ν™” λ ˆλ²¨λ„ μ§€μ •ν•  수 μžˆλ‹€.
    • μ—¬κΈ°μ„œλŠ” 일단 -O1둜 μ»΄νŒŒμΌλ„λ‹ˆ μ½”λ“œλ₯Ό μœ„μ£Όλ‘œ κ³ λ €ν•˜κ² λ‹€.
  • μ»΄νŒŒμΌλŸ¬λŠ” ν”„λ‘œκ·Έλž¨μ— λŒ€ν•΄ μ•ˆμ „ν•˜μ§€ μ•Šμ€ μ΅œμ ν™”λ₯Ό μ μš©ν•΄μ„œλŠ” μ•ˆλœλ‹€.
    • λ‹€μŒκ³Ό 같은 ν•¨μˆ˜κ°€ μžˆλ‹€κ³  μƒκ°ν•΄λ³΄μž.
    1	void twiddlel(long *xp, long *yp)
    2	{
    3		*xp += *yp;
    4		*xp += *yp;
    5	}
    6	
    7	void twiddle2(long *xp, long *yp)
    8	{
    9		*xp += 2* *yp;
    10	}
    • 첫번째 ν•¨μˆ˜λŠ” λ©”λͺ¨λ¦¬ μ°Έμ‘° 6번, λ‘λ²ˆμ§Έ ν•¨μˆ˜λŠ” 3λ²ˆμ΄λ‹ˆ μ•Œμ•„μ„œ μ΅œμ ν™”ν•˜μ§€ μ•Šμ„κΉŒ? μ‹Άλ‹€.
    • ν•˜μ§€λ§Œ xp와 ypκ°€ κ°™λ‹€λ©΄, κ·Έλ ‡κ²Œ ν•˜λ©΄ κ²°κ³Όκ°€ λ‹¬λΌμ§€κ²Œ λœλ‹€!
    • μ΄λ ‡κ²Œ 두 포인터가 λ™μΌν•œ λ©”λͺ¨λ¦¬ μœ„μΉ˜λ₯Ό 가리킬 수 μžˆλŠ” 경우λ₯Ό λ©”λͺ¨λ¦¬ 별칭(memory aliasing) 이라고 ν•œλ‹€.
    • μ•ˆμ „ν•œ μ΅œμ ν™”λ§Œ μˆ˜ν–‰ν•˜λŠ” μ»΄νŒŒμΌλŸ¬λŠ” μ„œλ‘œ λ‹€λ₯Έ 포인터가 κ²ΉμΉ  수 μžˆλ‹€ (alias 될 수 μžˆλ‹€)κ³  κ°€μ •ν•΄μ•Ό ν•œλ‹€.

β”μ§ˆλ¬Έ 사항
#

πŸ”— μ°Έκ³  자료
#