这是我在一篇文章中看到的图片。
我百度查了下,内存中的栈,高位地址在上,每次压栈(int这类),都会将地址减去1个字节,然后将值放入栈。
高位地址在上
但是这张图,在对操作数栈做压栈操作的时候,却从底下往上放了。不知道是我理解错了,还是作者的一个失误。
操作数栈
却从底下往上放了
谢谢指点
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
이 글에 다른 사진을 봤는데 操作数栈 관련 사진은 모두 아래에서 위로
먼저 스택에 int a와 int b가 연속적으로 저장된다면 b의 메모리 주소는 a의 주소보다 1바이트가 아니라 4바이트 커야 합니다!
빅엔디안 모드나 리틀엔디안 모드는 바이너리부터 시작하겠습니다. 스택의 최소 데이터 저장 단위는 바이트이며, 리틀엔디안 모드에서는 바이트 단위의 저장이 고정되어 있습니다!
리틀 엔디안 모드에서는 동일한 16진수 데이터 0x3F00이 00 3F 순서로 저장되고, 빅 엔디안 모드에서는 저장 순서가 3F 00으로 저장됩니다. 직설적으로 말하면, 하위 바이트가 먼저 저장되는지 아니면 상위 바이트가 먼저 저장되는지를 의미합니다.
Java의 저장 모드는 컴퓨터의 CPU와 관련이 있지만 빅엔디안이든 리틀엔디안이든 관계없이 저장 모드와 분석이 반대이므로 동일한 int는 실행 여부에 관계없이 동일한 계산 결과를 갖게 됩니다. 빅엔디안 또는 리틀엔디안으로 저장됩니다.
답변에 오류나 누락이 있으면 정정해주세요
이 글에 다른 사진을 봤는데
操作数栈
관련 사진은 모두 아래에서 위로먼저 스택에 int a와 int b가 연속적으로 저장된다면 b의 메모리 주소는 a의 주소보다 1바이트가 아니라 4바이트 커야 합니다!
빅엔디안 모드나 리틀엔디안 모드는 바이너리부터 시작하겠습니다. 스택의 최소 데이터 저장 단위는 바이트이며, 리틀엔디안 모드에서는 바이트 단위의 저장이 고정되어 있습니다!
리틀 엔디안 모드에서는 동일한 16진수 데이터 0x3F00이 00 3F 순서로 저장되고, 빅 엔디안 모드에서는 저장 순서가 3F 00으로 저장됩니다. 직설적으로 말하면, 하위 바이트가 먼저 저장되는지 아니면 상위 바이트가 먼저 저장되는지를 의미합니다.
Java의 저장 모드는 컴퓨터의 CPU와 관련이 있지만 빅엔디안이든 리틀엔디안이든 관계없이 저장 모드와 분석이 반대이므로 동일한 int는 실행 여부에 관계없이 동일한 계산 결과를 갖게 됩니다. 빅엔디안 또는 리틀엔디안으로 저장됩니다.
답변에 오류나 누락이 있으면 정정해주세요