소개글
MIPS로 구현한 버블 소트입니다.
추가로 숫자를 Insertion과 Deletion하는 것도 더해져 있습니다.
목차
1. Program Code
2. Program Result
3. Program explain
4. discussion
본문내용
① 초기 설정
.data
data: .word 71, 77, 26, 41, 46, 68, 59, 47, 62, 30, 15, 86, 61, 48, 45, 87, 98, 94, 5, 67, 96, 32, 8, 57, 1, 63, 49, 66, 70, 7, 42, 37, 19, 39, 33, 24, 4, 36, 20, 90, 93, 73, 58, 78, 50, 2, 82, 14, 3, 72
indata: .word 100 6 80 79 60
deldata: .word 90 15 71 39 58
enter: .asciiz
...
4. discussion
-Bubble Sort는 데이터를 처음부터 하나씩 하나씩 바로 옆의 데이터와 비교해 가면서 작은 데이터부터 큰 데이터까지 정렬하는 것이다. 50개의 데이터가 주어졌고, MIPS Programming에서 최대한 Bubble Sort의 정의를 따르기 위해 노력했다. Insertion이나 deletion의 과정 역시 처음 데이터부터 하나씩 순서대로 비교하여 각각의 절차를 수행하는 방향으로 코드를 작성했다. 특히 deletion의 경우 data의 완전 삭제가 아닌, deletion하고자 하는 값을 -1로 바꾸고 출력 시에 -1을 만나면 그 값을 뛰어넘기는 방법을 사용하여 deletion과정을 수행하였다. 이 경우 -1은 임의의 값이고 사용하는 data의 범위 밖에 있는 값을 사용할 수 있다.
프로그래밍 결과 sorting도 정상적으로 수행되었고, Insertion이나 deletion의 과정 역시 특별한 이상 없이 수행되어 원하던 결과 값을 얻을 수 있었다. 하지만 전체적으로 코드를 바라보았을 때 부분부분 정리가 안되고, 약간 복잡해 보인다는 느낌을 받았다. C나 matlab에 비해 코드가 전체적으로 비슷한 면이 있고, 고급언어가 아닌 점을 감안했을 때 그런 경향이 있을 수 있다고 생각한다. 하지만 코드를 작성하면서 register사용이나 분기 명령어의 사용 등에서 어려움을 느끼면서 코드가 비효율적으로 작성된 것 같다고 여겨진다. 조금 더 주의했다면 register의 사용이나 코드 크기 면에서 좀 더 개선된 모습을 보여줄 수 있었을 것이라는 점에서 아쉬움을 느낀다. MIPS 프로그램을 많이 사용해 보지 못한 경험 미숙에 따른 프로그램 명령어의 제한된 범위에서의 사용도 프로그램 작성에 많은 어려움을 느끼게 하는 한 가지 요소였다. 다양한 명령어를 사용할 수 있다면 코드가 더 효율적으로 개선할 수 있을 것이다.
개인적으로 프로그래밍은 수많은 실습을 거치면서 빠르게 발전할 수 있다고 생각한다. 이번 프로그래밍은 처음 접해본 생소한 프로그래밍 언어였다는 점에서 많은 어려움이 있었지만, 그만큼 코드를 완성하고 제대로 작동했을 때의 만족감은 더 컸다. 아직 많이 부족하지만 약간은 자신감을 얻을 수 있는 계기가 되었다. 코드 크기나 효율성 면에서 아직 개선할 점이 많은 프로그래밍 프로젝트였지만, 전체적으로는 나름대로 만족할 만한 수준이라고 결론내리겠다.
참고 자료
없음