저는 x86 스택과 CDECL 규칙을 읽고 혼란스러워하는 것을 읽었습니다.% esp와 CDECL 증가시키기
나열된 호출자의 책임 중에서 매개 변수를 사용하거나 매개 변수를 사용하여 매개 변수를 가져 오거나 단순히 % esp를 증가시켜 매개 변수를 제거했습니다.
마지막 파트는 어떻게 작동합니까?
예를 들어 % esp의 초기 값이 0x105000이고 현재 스택 프레임에 대해 $ 0x1c만큼 감소한다고 가정합니다. 일부 데이터를 할당 한 다음 다시 증가 시키십시오.이 경우 데이터가 여전히 메모리에 떠 다니는 것이 아닙니까? 기억은 어떻게 지워 집니까? 0x104FF4에 액세스하면 세그먼테이션 오류가 발생하며 그럴 경우 데이터가 지워졌습니까?
"맑은"기억은 어떻게 느껴 집니까? 당신은 어떻게 기억을 통해 "부유"합니까? –
Ehm, 'clear'에 의해, 나는 그 값이 심지어 존재한다면, 방금 튀어 나온 스택 프레임의 다른 값으로 설정되기 전에 보유한 기본값으로 돌아 가기 위해 사용 된 바이트를 의미한다고 생각합니다. 그리고 'float'은 팝 된 프레임에 설정된 값을 유지하기위한 바이트를 의미했습니다. – user8814
미안하지만별로 의미가 없으면 스택의 작동 방식과 힙과의 차이점을 파악하려고합니다. C에서 할당 된 구조를 해제하는 것과 비슷한 방식으로 스택을 해제해야하는지 여부를 혼란스러워했습니다. 각 요소는 먼저, 그 다음 전체 구조가됩니다. 또는 OS가 당신을 위해 그것을했는지 여부; 또는 당신이 전혀 그것을 해방 할 필요가 없는지. – user8814