애당초 스택이 양방향이면 좋았겠나요
흔한 콜스택을 살펴보면 이케 되어이쩌.
// stdcall
push 1
push 2
push 3
call proc
:proc
retn 12위에서 주로 ax 산술 레지스터로 반환 코드를 가져와요.
cdcall은 stdcall과 다른 retn 기본 형태로 빠져나온 다음 add esp, 12 스택을 직접 옮기는 차이가 있어요. stdcall은 인자 수가 정적이고 cdcall은 인자 수가 동적이라는 차이를 보여요. 이케 되어서 일반적을 정적 방식으로 stdcall이 빨라요. 사실 이럼 의미가 있나 ..
가끔은 프로그래머들이 함수에서 여럿 값을 반환하려고 하는거 아나요. 오버헤드가 없으려면 32bit같은 값을 나누어 여럿 값을 우겨 넣거나 c처럼 구조체를 함수에 넘겨주어 쓰여진 값을 받아요. 이럼 구조체를 정의하여야 하는 문제가 생기는가 하면 고수준 언어에서는 구조체가 없어서 대신 추가 배열을 사용하여야 하게쩌. 안그럼 콜백 함수로 값을 컨텍스트로 가져와야 해요. 레퍼런스 참조 인자를 거는 방법도 있는데 일반적이어도 쩜 그러쩌.
사실 사용된 스택을 retn 12를 지나 버렸다 하더라도 스택 메모리에는 1, 2, 3 값이 그대로 남아서 다음 call을 쳐서 스택을 덮어버리기 전까지는 읽어져요. 이렇게 하면 프로그래머에 실수가 늘어난다는 이유로 나쁜 구조라 불러요. 참조 인자는 애당초 내 컨텍스트에 있는 변수를 걸어 넘기는 거여서 다음 call을 쳤다 하더라도 값이 사라지지 않아요.
음 .. 이거는 실행한거 아니어서 완전하게 정복한거 아니지만 만악에 근원이 되는 스레드 단위가 없어져야 하는 거로 전망해요.
담에 진심으로 건드려보아야 하게쩌.
