2010-04-26 3 views
-1

어셈블리어를 메모리에 저장하는 방법에 대한 질문이 있습니다. 어셈블리에서 C 코드를 컴파일하고 "단계"로 실행할 때 각 명령의 주소를 볼 수 있지만 거기에 메모리에있는 코드의 시작 주소를 변경하는 방법은 무엇입니까?어셈블리를 메모리에 저장하는 방법

두 번째 질문은 어셈블리 코드를 두 개로 나눌 수 있습니까? 즉, 두 부분을 별도의 메모리 섹션에 저장하는 방법은 무엇입니까? 할 수있는 방법이 있습니까?

기계가 어셈블리 코드를 저장하는 방법에 대해 궁금합니다. MACBOOK Pro, 듀오 코어에서 일하고 있습니다.

첫 번째 질문에 대해서는 오프셋 값을 변경할 수 있습니까? 또는 링커와 로더를 사용자가 제어 할 수 없습니까? 나는 당신의 대답으로 쓰레기를 혼동하고있다, 우리는 그것을 바꿀 수없는 것 같다?

두 번째 질문에서, 나는 여러분의 코드에서 많은 ".text"입력 섹션이 있어도 "입력 섹션"이라고 생각합니다. 조립 된 후에는 하나의 ".text"가됩니다. " 출력 섹션 ". 출력 섹션은 메모리에 저장된 실제 코드입니다. 그리고 그 위치를 제어 할 수 있는지 궁금합니다.

나는 DSP 어셈블리에 대한 지식을 사용하고 있으며, 메커니즘은 동일하다고 생각합니다.

답변

0

나는 당신의 질문에 완전히 따르지 않고 있지만 나는 추측 할 것입니다.

첫 번째로, 실행 파일이 메모리에있는 위치를 변경하는 방법을 묻는 중입니까? ELF 파일에는 링커가 먼저 사용하려고하는 기본 오프셋이 있지만 기본 오프셋을 사용할 수없는 경우 일반적으로 로더가 자유롭게 섹션을 배치 할 수 있습니다. 이미지의 위치가 변경되지 않고 원하는 오프셋을 사용할 수없는 경우 로더가 실패하고 프로그램이 실행되지 않습니다.

두 번째 질문에 대해서는 코드가 다른 섹션에 있도록 어셈블리를 수정하고 싶습니까? 이를 수행하는 방법은 사용중인 어셈블러에 따라 다릅니다.

.section new-section-name 

지정된 섹션

+0

안녕 마이클 Mrozek 될 것이다 지시를 다음의 코드는, 는 의견이 단어 제약 제한이 보인다 : 가스에서 당신은 section 의사 연산을 사용합니다. 본인의 원래 게시물에 의심의 여지가 있습니다. 설명해 주실 수 있기를 바랍니다. 감사합니다. –

관련 문제