[어셈블러] 편견이 깨지는 어셈블리 프로그래밍 – 최적화 강좌 1 – 2

편견이 깨지는 어셈블리 프로그래밍 – 최적화 강좌 1 – 2       파이프 라인과 스캐일러스 파 이프 라인(pipe line)에 대해서 설명하기 전에 잠깐 인텔 80×86의 클럭 속도에 대해 이야기하겠다. <표 1>을 참고해 살펴보자. 인텔 80×86 계열의 CPU는 1978년 8086 발표 당시 8MHz의 클럭 속도로 시작한다. 15년이 지난 후 펜티엄이 발표되는 1993년, 클럭은 8086 시절보다 […]

Read More [어셈블러] 편견이 깨지는 어셈블리 프로그래밍 – 최적화 강좌 1 – 2

[어셈블러] 편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 3 – 3

편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 3 – 3       VC++의 최적화 VC ++나 델파이와 같은 고급 언어들의 컴파일 옵션에 보면 거의 포함되어 있는 메뉴가 최적화 메뉴다. 한때에는 고급 언어들의 성능 및 코드 생성 효율이 당시 하드웨어의 성능을 원활하게 끌어내기에는 부족했기 때문에 어셈블리어로 프로그램을 제작하기도 했었다. 하지만 현재는 높아진 하드웨어 성능과 많아진 […]

Read More [어셈블러] 편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 3 – 3

[어셈블러] 편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 3 – 2

편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 3 – 2       배열대신 포인터를! 반 복분기 작업이 필요하도록 만드는 것 중 하나가 배열일 것이다. 배열로 인해 고급 언어들은 프로그래머가 여러 개의 데이터를 처리하기 편하도록 만들고 있다. 하지만 조금이라도 속도를 늘리기를 원한다면 우리는 코드를 작성하는 손을 조금 더 번거롭게 해야 할 필요가 있다. <리스트 4>와 […]

Read More [어셈블러] 편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 3 – 2

[어셈블러] 편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 3 – 1

편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 3 – 1       지금까지 2회에 걸쳐 최적화에 대한 이론과 함께 몇 가지 예를 들어 보았다. 코드를 제작하는 방법에도 여러 가지가 있듯이 최적화 방식에도 여러 가지가 있다. 다양한 코드에 알맞은 최적화 방식을 찾는다는 것은 많은 경험과 실험이 필요하다. 시작이 반이라고 했다. 이번 연재를 계기로 최적화의 시작에 […]

Read More [어셈블러] 편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 3 – 1

[어셈블러] 편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 2 – 4

편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 2 – 4       < 리스트 5>는 정렬된 메모리 블럭을 Win32 API(CopyMemory), DtCopyMemory, DtCopyMemoryMacro, 일반 복사 이렇게 네 가지 방법으로 복사를 한 후 각 방법별 소요 클럭 수를 출력한다. <리스트 5> DummyCopy.cpp 각 함수들을 테스트하기 위한 메인 코드(정렬된 주소) …. 생략 …. void CopyTest (int iMaxLength) […]

Read More [어셈블러] 편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 2 – 4