어셈블리 편집하기
최신판 | 당신의 편집 | ||
31번째 줄: | 31번째 줄: | ||
*작성한 코드를 이해하기가 어려울 뿐만 아니라 수정하기도 어렵기 때문에 유지 보수가 어렵다. | *작성한 코드를 이해하기가 어려울 뿐만 아니라 수정하기도 어렵기 때문에 유지 보수가 어렵다. | ||
*어셈블리를 이용하여 코딩을 한 결과물은 현존하거나 앞으로 개발될지도 모르는 다른 아키텍쳐의 머신으로 이식할 수 없다. | *어셈블리를 이용하여 코딩을 한 결과물은 현존하거나 앞으로 개발될지도 모르는 다른 아키텍쳐의 머신으로 이식할 수 없다. | ||
− | *어셈블리로 최적화시켜 작성한 코드는 개인이 개발한 타겟이 되는 아키텍쳐와 동일한 아키텍쳐를 가지고, 동일한 설정을 하고, 동일한 환경을 가진 기계에서만 수행될 것이다. 예글 들면, 인텔 계열의 프로세서들(Intel 386, 486, Pentium, PPro, PII, PIII, PIV; Cyrix 5x86, 6x86, M2; AMD K5, K6(K6-2, K6-III), K7(Athlon, Duron 등)만 보더라도 다들 프로세서의 디자인이나 그 외 여러 요소들(상대적 클럭 지연시간, 수행속도, 용량, | + | *어셈블리로 최적화시켜 작성한 코드는 개인이 개발한 타겟이 되는 아키텍쳐와 동일한 아키텍쳐를 가지고, 동일한 설정을 하고, 동일한 환경을 가진 기계에서만 수행될 것이다. 예글 들면, 인텔 계열의 프로세서들(Intel 386, 486, Pentium, PPro, PII, PIII, PIV; Cyrix 5x86, 6x86, M2; AMD K5, K6(K6-2, K6-III), K7(Athlon, Duron 등)만 보더라도 다들 프로세서의 디자인이나 그 외 여러 요소들(상대적 클럭 지연시간, 수행속도, 용량, 캐쉬, 램, 버스, 디스크, FPU의 존재여부, MMX, 3DNOW, SIMD 확장 등등 나열하기 힘들다.)의 차이로 인해서 프로세서마다 그 주변 환경에 따라서 완벽하게 다른 최적화 테크닉이 필요하다. 게다가 프로세서의 설계/디자인은 계속적으로 변하고, 바뀌고, 발전하고 있기 때문에 방금 나열한 목록과 최적화시킨 코드가 최신의 코드가 되기를 바라는 것은 안 된다. |
*자잘하고 세밀한 부분에 신경을 쓰느라 프로그램 전체의 알고리즘이나 설계에 신경을 쓰지 못할 가능성이 적지 않게 존재한다. | *자잘하고 세밀한 부분에 신경을 쓰느라 프로그램 전체의 알고리즘이나 설계에 신경을 쓰지 못할 가능성이 적지 않게 존재한다. | ||
*알고리즘 설계를 조금만 바꾸어도 이미 만들어둔 어셈블리 코드의 전체를 다시 만들어야 할 확률이 높아진다.<ref name="특징"></ref> | *알고리즘 설계를 조금만 바꾸어도 이미 만들어둔 어셈블리 코드의 전체를 다시 만들어야 할 확률이 높아진다.<ref name="특징"></ref> |