ARM 어셈블리코드로 작성한 부동소수점 수(Floating point number) 퀵정렬(Quicksort)
- 최초 등록일
- 2016.12.19
- 최종 저작일
- 2016.12
- 압축파일
- 가격 3,000원
소개글
ARM에서 제공하는 IDE인 Keil을 이용해 어셈블리어로 구현한 Quicksort입니다. keil을 사용하지 않으시면 어셈블리 코드파일인 .s 을 참조하시면 됩니다. 이해하기 쉽게 레지스터별 주석까지 달아놓았고 자세한 설명은 보고서를 참고하시면서 디버깅해보시면 이해하기 쉬우실 겁니다.
-----------보고서 Introduction-------------
본 보고서는 어셈블리 프로그램 설계 및 실습 과목의 프로젝트 결과 보고서이다. Arm 32bit 명령어를 사용하였고 little endian 방식으로 코드를 작성하였다. 지금까지 배운 여러가지 명령어를 이용해 1000개 정도의 input number (floating point number) 중에서 최소값, 최대값, 최빈값, 중간값을 구하는 것이 목표이다. 이를 위해 sorting은 필수적이다. Performance를 최대한으로 높이기 위해 여러가지 고려해야할 사항이 있다. 그 중 가장 많은 영향을 줄 수 있는 부분이 sorting방법이다. 따라서 sorting 방법 중 어떤 것이 가장 효과적인지 생각해 보아야한다. Performance에 영향을 주는 건 메모리 접근하는 Load/Store 명령어이다. 메모리 접근 명령어는 일반 명령어들보다 state수가 훨씬 더 많이 걸리기 때문에, loop 내에서 메모리 접근 명령어가 많을 경우 performance에 굉장히 많은 영향을 미친다. 따라서 불필요한 메모리접근은 최소화하고 최대한 모아서 한꺼번에 처리해야 한다.
위와 같은 사항을 항상 염두해두고 프로젝트를 진행하였고, 몇 번의 code review를 통해서 최적화를 하기위해 노력하였다.
컴파일 실행환경
IDE : Keil uVision4, 프로세서 : ARM , OS: window10
압축파일 내 파일목록
project.uvproj
project_Target 1.dep
결과보고서.docx
memory.ini
project.axf
project.build_log.htm
project.d
project.htm
project.lnp
project.lst
project.map
project.o
project.s
project.uvgui.태훈
project.uvgui_태훈.bak
project.uvopt
참고 자료
없음