2012-11-16 3 views
0

일부 초기화 된 데이터가 있습니다.Zero 초기화 데이터로 ARM Fromelf 출력 바이너리 만들기

스 캐터 파일에서 실행 영역을 할당했습니다.

Some_Execution_Region +0 
{ 
    stuff.o (+RO, +RW, +RI) 
} 

하지만 난 AXF 파일에서 변환 할 fromelf 사용 후 결과 바이너리 제로 초기화 된 데이터의 세그먼트를 볼 수 없습니다.

바이너리 파일은 초기화 된 0 데이터가 시작되기 바로 전에 중지됩니다.

그래서 질문은 바이너리 파일에서 0으로 초기화 된 데이터에 대해 fromelf가 빈 영역을 생성하도록 만드는 방법입니다.

나는 ARM 사이트를 찾아보고 행운이 없었다. 난 단지 일부 옵션을 찾았습니다 0 초기화 데이터를 비활성화합니다. (이 옵션을 사용하지 않으므로이 의미가 아니니 내 바이너리에서 제로 초기화 된 데이터를 가져와야합니까?)

저는 현재 fromelf.exe --bin --output=binary.bin elffile.axf을 실행 했으므로 0 데이터가 생성되지 않습니다.

답변

1

바이너리에 실제로 모든 0을 저장할 필요는 없습니다. C를 사용하는 경우, 기본값은 다른 값으로 명시 적으로 초기화되지 않은 정적 변수를 0으로 초기화하는 것입니다. C 런타임 코드는 실행 파일에서 RAM으로 0을 복사하지 않고, RAM 부분의 시작 및 끝 주소 만 가져옵니다. 시작시 변수를 0으로 설정해야한다는 링커에 알리는 일반적인 방법은 변수를 .bss (공백으로 채워진 정적 저장소) 세그먼트에 넣는 것입니다. 그러나 어셈블리 코드를 작성하지 않으면이 작업을 명시 적으로 수행 할 필요가 없습니다.

+0

이 적합합니다. 다행히도, 나는 그것이 월요일에있는 경우임을 알게 될 것이다. 그렇다면 답을 수락하겠습니다 :) 감사합니다. –

+0

늦게 접수하여 죄송합니다 ... 지금 허용됩니다! –