2014-12-17 4 views
1

어셈블리 수준의 코딩에 익숙하지 않아서 .align이하는 일이 다소 혼란 스럽습니다. 나는 그것이 많은 곳에서 무엇을하는지 보았다. https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ok05.html이 링크에서 .align에 대한 설명은 페이지의 오른쪽에있는 빨간색 상자에 표시됩니다. 내가 심판 한 또 다른 곳은 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Babecdje.html입니다. 주소가 4 바이트 정렬 또는 8 바이트 정렬된다는 것은 무슨 의미입니까? 내 코드에서 다음 명령어를 사용하면ARM 아키텍처의 .align은 무엇입니까

.align 4 
pattern: 

나서 패턴에 할당 된 어드레스는 형태 4의되는 것은 않음 * N 16 * N (2^4 = 16).

+3

사용중인 어셈블러 프로그램을 언급하는 것을 잊었습니다. 어셈블러에 따라 위에서 언급 한 두 가지 가능성 중 하나 일 수 있습니다. 적절한 매뉴얼을 참고하십시오, 무작위로 google을하지 마십시오;) – Jester

+0

어셈블리 코드를 컴파일하기 위해 arm-linux-gnueabi-as 명령을 사용합니다. – Aditya

+4

그런 다음 [gnu as manual] (https://sourceware.org/binutils/docs-2.20/as/Align.html)을 참조하십시오. 팔에'2^n' 정렬을 할 것이라고합니다. – Jester

답변

5

어드레스는 N이 의해 나누어 만약 "정렬 -bytes N"이라고한다.

이 또한 다음과 같이 표현 될 수있다 "는 우측 m 비트가 모두 0 인 경우를 어드레스 정렬 2 m -bytes이다".

정렬은 매우 일반적인 요구 사항입니다. 즉, 하드웨어는 프로그래밍 모델의 일부로 특정 정렬 요구 사항이 항상 존중되어야합니다. 그렇게하지 않으면 심각한 오류가 발생할 수 있습니다. 즉 프로세서가 중지됩니다.