2009-06-20 6 views
7

이 명령어는 정확히 무엇을 수행합니까? 특정 숫자의 배수로 데이터 정렬을 시도하지만이 작업을 수행해야하는 이유는 무엇입니까? 다른 어셈블러에 동등한 명령어가 있습니까?MIPS의 'align'명령어

답변

9

일반적으로 성능을 향상시키기 위해 데이터를 정렬합니다. 대부분의 프로세서에서 메모리 액세스는 특정 바이트 경계에 액세스하지 않을 때 약간의 불이익을 갖습니다. 다른 어셈블러의 경우에는 종종 pseudo-op.align 일종입니다. 대부분의 컴파일러는 데이터 구조를 정렬합니다 (디버그 목적으로는 사용할 수 없지만).

기타 참조 : Wikipedia entry

정렬되지 않은 메모리 셀에 액세스하려고하면 에뮬레이트되지 않은 MIPS 시스템이 중단 될 수 있습니다 (herehere 참조).

+0

외부 링크의 추가 설명을 보내 주셔서 감사합니다. –

0

그것은 두 가지의 n 번째 전력에 이르기까지 모든 정렬을. exampe에 대한 지침

의 사용에 관해서는

로 번역됩니다 아니고 명령, 자사의 지침 :

MIPS32 명령은 32 비트 길이 항상. 따라서 각 명령어는 단어 경계에서 시작해야합니다. 코드 시작 전에 .align 지시문을 추가하면 32 비트로 정렬됩니다. 이것은 명령의 가져 오기에 대해 1 개의 메모리 액세스 만 필요하고 명령 캐시에는 이점이 많다는 등의 많은 이점이 있습니다.

+0

스택에 double float을 저장하는 것은 어떻습니까? 8 바이트 정렬이 필요합니까? –

+0

예, 2 배가 64 비트로 정렬됩니다. – Tom