나는 인텔 펜티엄의 스택에 직접 바이트를 밀어 넣을 수 없다는 것을 알게되었다.펜티엄 IA-32의 스택에 바이트를 밀어 넣을 수없는 이유는 무엇입니까?
내가받은 이유는 esp 레지스터가 단어 주소 지정이 가능하기 때문입니다. (즉, 우리 모델에서는 가정입니다.) "짝수 주소"여야합니다. 몇 가지 32 비트 이진수의 값을 줄이면 레지스터 정렬이 엉망이되지 않을 것이라고 추측했지만 분명히 충분히 이해하지 못합니다.
일부 NASM 테스트를 시도해 본 결과, 변수 (바이트 DB 123)를 선언하고 스택으로 밀어 넣으면 esp가 4 씩 감소합니다 (32 비트를 밀어 넣었 음을 나타냅니다)?
test.asm : 10 : 오류 : 지원되지 않는 비 32 비트 ELF 재배치
어떤 단어 그러나 "푸시 바이트 물린"(변수 이름의 내 선택에 대한 유감은) 일종의 오류가 발생합니다 이 지친 시간 동안 지혜가 크게 감사 될 것입니다. 나는 첫 해에 학부생으로서이 모든 것에 나의 순결을 불쌍히 여깁니다.
유감 스럽지만 유감스럽게도 내가 현재의 지식으로 파악할 수있는 것보다 훨씬 위에 있습니다. –
@Tim - 이해할 수 있습니다. 아마도 빠른 읽기 가치가있을 것입니다. –
잠깐, 잠깐. 각 메모리 위치는 32 비트 폭이므로 값을 누르면 4 * 8은 32 비트이기 때문에 스택을 4 바이트 씩 감소시키고, 2 씩 감소 시키면 정렬되지 않습니다. 우주를 읽고, 파열시키는거야? 맞습니까? 그렇다면 포인트를 얻습니다. 그 PDF는 두 번째 것입니다. –