2011-10-12 1 views
0

데이터 세그먼트에 정의한 배열에 문자열 묶음이 있습니다. 배열에서 2 개의 문자열을 가져온다면 mips에서 더 큰 값을 가진 문자열을 비교할 수 있습니까? 어떻게하면 좋을까요? 기본적으로 알파벳 순서에 따라 문자열을 재정렬하려고합니다.MIPS 어셈블리의 문자열 비교

편집 :이 문제는 특정 문제에 대한 도움을 얻으려고 시도하는 것이 아니라 코드 접근 방법에 도움이되는 일반적인 질문에 대한 것입니다. 감사!

+0

숙제 태그를 추가했습니다. 과제물이 아닌 경우 숙제 태그를 삭제하십시오. 또한 다른 사람들이보다 직접적인 도움을 줄 수 있도록 문제를 시도 할 수도 있습니다. – brc

답변

1

나인 경우 문자열에 대한 포인터 목록을 작성합니다. 즉, 각 문자열의 주소 목록입니다. 그런 다음 포인터가 주어진 두 문자열을 비교하는 서브 루틴을 작성합니다. 그런 다음 문자열을 바꿔야 할 때 실제 포인터를 바꾸기 만하면됩니다.

문자열이 서로 밀접하게 패킹되지 않으므로 메모리의 구멍을 이동하려면 많은 시프트를해야합니다. 포인터는 교환하기 쉽습니다. 문자열이 고정 된 길이 (또는 그 이하)이면 문자열을 더 쉽게 바꿀 수 있습니다. 그런 다음 메모리 구멍을 이동하는 것에 대해 걱정할 필요가 없습니다.

그러나 포인터 목록을 정렬하는 것은 정말 중요한 팁입니다.

문자열을 비교하는 가장 간단한 방법은 각 문자열의 각 문자를 반복하고 서로를 빼는 것입니다. 결과가 0이면 동일한 값입니다. 그렇지 않은 경우 결과가> 0이면 첫 번째 문자열이 다른 문자열 앞에오고, 그렇지 않으면 두 번째 문자열이 더 낮아서 스왑합니다. 다른 문자열보다 먼저 문자열이 부족한 경우 해당 문자열이 그 지점까지 동일하면 더 짧은 문자열은 더 긴 문자열보다 작습니다.

+0

각 문자열에 align 지시문을 사용하고 있습니다. 즉, 기본적으로 고정 길이이므로 각 문자열에 .align 5를 사용한다는 의미입니다. –

+0

@James Smith, 잘못된 가정입니다. – Sparafusile