어셈에서 call명령은 그다음 실행할 명령어를 스택에 저장하고 그함수로 가잔아?
그런데만약 그함수로갔는데 거기서 만약 어떤것이 push되고 그리고 함수가 종료된다면
어떻게되는거야?
그 다음 실행할 명령어는 그함수에 push된것에의해 최상단에 존재하지않을텐데 이런경우 이거는 그함수의 코드가 잘못된건가?
어셈에서 call명령은 그다음 실행할 명령어를 스택에 저장하고 그함수로 가잔아?
그런데만약 그함수로갔는데 거기서 만약 어떤것이 push되고 그리고 함수가 종료된다면
어떻게되는거야?
그 다음 실행할 명령어는 그함수에 push된것에의해 최상단에 존재하지않을텐데 이런경우 이거는 그함수의 코드가 잘못된건가?
ret 만날때 pop ebp, pop eip 를 해줄텐데 스택정리 안되어있으면 잘못된 값을 pop 하겠지..
ㄴ 내가지금 어셈공부중인데 코드에는 그함수의 끝에 ret이없음... 근데 컴파일러가 자동으로 ret해준다고들음,, 맞나?
?? ret이 없진 않을텐데.. ㅠㅠ
모르겠음.. 컴파일러가 ret이없으면 자동으로 ret해준다고 들음 그리고 이함수에서는 esi,ebx를 push함...
컴파일러는 c코드를 기계어로 만들어주는거고.. ret을 안해주는게 아니라.. 그냥 call을 안하고 jmp형식으로 코드를 바꾼게 아닐까 -_-.. 누가 컴파일러가 ret이 없으면 자동으로 ret해준다고 함.. ㄷㄷ;
뭔 이상한말을..
근데 여기는 call 하고 함수로 가보니까 끝에 ret이없음... 이거 뭐지?;; ㅠㅜ
실제 돌아가는 어셈을 보고 있는건가요?
간단히 visual studio 에서 프로그램 하나 짜서 디버깅모드로 들어가서 디스어셈블리코드 봐도 확인할수 있어요
그건 잘모르겠고 책에서 저자가 쓴 예임...
nasm이라 비쥬얼이 될려나 비쥬얼은 masm으로 알고있어서...
아니면 pop ebp, pop eip 이런거 없나요?
아.. 그러면 또 모르겠음.. nasm은 안해봤음 ㅈㅅ..
전혀 없음 오로지 push만있고 pop ret없음.. ㅠㅠㅠㅠㅠㅠㅠㅠㅠ nasm이 어렵구나..
인터넷에 다른 사람들이 짠 소스는 ret 해주는데용..
http://www.rohitab.com/discuss/topic/38715-nasm-help-linking-win32-api/
그런데 왜여기는 없지? ㅠㅠ
아 병림픽한듯... ㅠㅠ 그함수다음 이어지는 함수에 ret이있음 ㅠㅠ ㅈㅅ...
넹 즐공하세요~