값을 스택으로 푸시하면 ESP 레지스터가 감소하고 (증가하는 것과 반대), 값을 팝하면 ESP 레지스터가 증가합니다 (감소한 것과 반대) ? 이것은 현재 나에게 직관적이지 않습니다.ASM - 푸시/팝
2
A
답변
6
스택이 위에서 아래로 "자라기"때문에 스택이 아래쪽으로 할당 된 힙에 반대합니다.
주소 공간이 제한적인 아키텍처에서 이것은 설계상의 결정 이었으므로 둘 다 더 유연하게 사용할 수 있습니다. 할당 된 두 메모리 영역의 합이 특정 제한을 초과하면 안됩니다.
요즘 스택 및 힙 주소 공간은 별도의 메모리 영역에 보관되지만 어쨌든 스택은 거꾸로 늘어나기로 결정했습니다.
1
다소 임의적 인 디자인 선택입니다. 스택 포인터는 push에서 증가하고 pop에서 감소 할 경우 똑같이 잘 작동합니다. 일부 언어에서는 텍스트가 왼쪽에서 오른쪽으로 쓰는 대신 오른쪽에서 왼쪽으로 쓰여지며 특정 방향으로 언어가 더 좋거나 나쁘지는 않습니다.
1
단일 메모리 시스템을 그대로 사용하면서 많은 환경에서 여전히 프로그래머가 직면하면 낮은 주소에서 높은 주소로 힙이 커지고 메모리 주소의 위쪽에서 아래쪽으로 스택이 커집니다 주소를 사용하여 충돌없이 해당 메모리 사용을 극대화합니다. 둘 다 자라면 고통스럽고 추악한 방식으로 뛰어 넘을 필요가 있거나 사용 가능한 여유 공간이 있음에도 불구하고 어느 하나가 제한 될 것입니다. 여러 프로세서에서 malloc을 다시 작성하거나 자신 만의 스택을 만들 수 있으며 스택이 자라날 수 있습니다 (일부 명령어 세트는 임의의 방법으로 일부 작업을 수행 할 수 없음). 흐름을 따라 가면서 스택을 자라게하고 힙을 자라게하는 것이 더 좋습니다.
관련 문제
- 1. ASM
- 2. 8086/386 asm with bcc5 : asm proc
- 3. Eclipse의 ASM 파일
- 4. ASM to C translator
- 5. ASM x86 관련 JMP
- 6. asm 프로그램에서 재귀
- 7. VB.NET에서 asm 사용
- 8. ASM 바이트 코드로 테스트
- 9. ASM : 0xFFFFFFFF를 추가하십시오.
- 10. 어떤 ASM API를 사용해야합니까?
- 11. VC++ ASM 생성 이해
- 12. 번호 저장 PIC ASM
- 13. asm/atomic.h 컴파일 오류
- 14. ASM : LoadLibrary & GetProcAddress
- 15. 이/ASM-일반적인 포함/'?
- 16. IDA 프로 ASM 지침
- 17. 정렬 인라인 asm 명령어
- 18. x86 asm 디스어셈블러 라이브러리
- 19. syscall wrapper asm C
- 20. ASM 질문, 2의 보수
- 21. ASM 인라인 의심
- 22. ASM 문자열은 코드가
- 23. 모노 ASM 생성
- 24. ASM - "%"란 무엇입니까?
- 25. ASM 메소드 실행 리스너
- 26. ASM : Stateful Transformation
- 27. Asm 코드 설명
- 28. Asm ClassReader accept
- 29. C++ 인라인 ASM 루프
- 30. ASM 스택 사용
두어 번으로 * 성장한 스택을 가지고 작업해야했지만, * 그 *는 매우 직관적이었습니다. :) – harold