PE 파일의 섹션간에 정렬이있는 이유는 무엇입니까? IMAGE_SECTION_HEADER.SizeOfRawData에서 섹션의 정확한 크기를 지정할 수 있기 때문에 섹션간에 이러한 "틈"을 사용하지 못합니다.PE 파일 섹션 정렬
key/filealign에 대한 MSDN 설명서에서 "유효한 값은 512, 1024, 2048, 4096 및 8192입니다." 이유는 무엇입니까/filealign : 0 컴파일러에 의해 금지되어 있습니까?
PE 파일의 섹션간에 정렬이있는 이유는 무엇입니까? IMAGE_SECTION_HEADER.SizeOfRawData에서 섹션의 정확한 크기를 지정할 수 있기 때문에 섹션간에 이러한 "틈"을 사용하지 못합니다.PE 파일 섹션 정렬
key/filealign에 대한 MSDN 설명서에서 "유효한 값은 512, 1024, 2048, 4096 및 8192입니다." 이유는 무엇입니까/filealign : 0 컴파일러에 의해 금지되어 있습니까?
정렬이 0이 될 수없는 실제적인 기술적 이유가 있거나 (512보다 훨씬 작은 값 - 4, 8 또는 16보다 작은 값으로 데이터 정렬과 관련하여 문제가있을 수 있음) 컴파일러가 전체 섹션이 너무 작게 정렬 된 것에 의존하는 코드를 생성하면 잘못 될 수 있습니다. 그러나이 기능이 특정 사용 케이스를 해결하기 위해 도입 된 것으로 예상되며, 대부분의 경우이 옵션을 사용할 필요가 없습니다. . 나는 그것을 나 자신을 사용한 적이 있다고 말할 수있다. 그러나
, 의미를 많이 만들 것 4096를 사용하여,이 섹션이 다른 섹션과 페이지를 공유하지 않는 것을 의미하기 때문이다.
을 나는 또한 의심 티 hat/filealign : 0은 "기본 정렬"을 의미합니다.
나는 또한 코멘트를주의 할:
대부분의 개발자는이 옵션을 사용할 필요가 없습니다
filealign은 in-memory 레이아웃과 아무 관련이 없으므로 in-file 레이아웃과 관련이 있습니다. 512 이외의 값은 거의 없습니다. 개요를 설명하는 이유로 인 메모리 레이아웃의 최소 정렬은 4k입니다. – avakar
매트 Pietrek이의 다음 기사는 RAM에, 섹션이 정렬해야 함을 나타냅니다 페이지 경계 (x86 구조에서 4096 바이트). 섹션 정렬은 PE 파일에이 제약 조건을 갖지 않으므로 더 짧을 수 있습니다.
아키텍처의 페이지 크기를 확인하려면 위키 백과 문서를 참조하십시오. http://en.wikipedia.org/wiki/Page_(computer_memory)
매트 Pietrek이 기사 : http://msdn.microsoft.com/en-us/magazine/cc301805.aspx
은 어떻게 든 나는이 훨씬 느린 디스크 최적화의 유물 생각 - 디스켓있다. 512는 일반적인 섹터 크기였습니다. 검색 및 읽기는 특정 섹션의 첫 번째 바이트를 버퍼의 첫 번째 바이트에 놓습니다. –
글쎄, 사실/filealign : [number가 512보다 낮습니다]로 소스를 컴파일 할 수는 있지만 그 PE 파일을 실행하려고하면 항상 오류가 발생합니다. – Peter
저는 이것이 XY 문제라고 생각합니다. 당신은 실제로 어떤 문제를 해결하려고합니까 (아니면 궁금합니까?)? –