이 명령어는 정확히 무엇을 수행합니까? 특정 숫자의 배수로 데이터 정렬을 시도하지만이 작업을 수행해야하는 이유는 무엇입니까? 다른 어셈블러에 동등한 명령어가 있습니까?MIPS의 'align'명령어
답변
일반적으로 성능을 향상시키기 위해 데이터를 정렬합니다. 대부분의 프로세서에서 메모리 액세스는 특정 바이트 경계에 액세스하지 않을 때 약간의 불이익을 갖습니다. 다른 어셈블러의 경우에는 종종 pseudo-op.align
일종입니다. 대부분의 컴파일러는 데이터 구조를 정렬합니다 (디버그 목적으로는 사용할 수 없지만).
기타 참조 : Wikipedia entry
정렬되지 않은 메모리 셀에 액세스하려고하면 에뮬레이트되지 않은 MIPS 시스템이 중단 될 수 있습니다 (here 및 here 참조).
다른 어셈블러에는 동등한 지시가 있습니까?
MASM가 정렬 지침이 있습니다 http://msdn.microsoft.com/en-us/library/dwa9fwef(VS.80).aspx이
그것은 두 가지의 n 번째 전력에 이르기까지 모든 정렬을. exampe에 대한 지침
의 사용에 관해서는로 번역됩니다 아니고 명령, 자사의 지침 :
MIPS32 명령은 32 비트 길이 항상. 따라서 각 명령어는 단어 경계에서 시작해야합니다. 코드 시작 전에 .align 지시문을 추가하면 32 비트로 정렬됩니다. 이것은 명령의 가져 오기에 대해 1 개의 메모리 액세스 만 필요하고 명령 캐시에는 이점이 많다는 등의 많은 이점이 있습니다.
스택에 double float을 저장하는 것은 어떻습니까? 8 바이트 정렬이 필요합니까? –
예, 2 배가 64 비트로 정렬됩니다. – Tom
외부 링크의 추가 설명을 보내 주셔서 감사합니다. –