• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

잉 [충고]편, 강의와 다름

22.08.13 13:43 작성 조회수 152

0

  • - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
  • 강의에서는     int result = MultiplyBy(b, a); 부분을 어셈블리로 조사를 한다면, push부분이 나와야 하지만 나타나지 않고 대부분 어셈블리적힌 부분이 다른 거 같은데 왜 다른지 모르겠습니다.

답변 1

답변을 작성해보세요.

0

어셈블리 언어 결과물은 컴파일러가 번역한 결과이고
어떤 식으로 번역할지는 컴파일러 마음입니다. (즉 VS 버전에 따라 상이함)
스택에 넣는게 '정석'적인 방법이지만,
함수 인자가 몇 안 된다면 저렇게 레지스터에 넣어서 전달하는 것도 방법입니다.
그러나 인자가 많아지면, 레지스터 개수의 한계로 인해
어차피 스택을 이용할 수 밖엔 없습니다.

추가로 강의는 32비트 프로그램으로 진행하기 때문에 차이가 납니다.
64비트 프로그램에서는 레지스터를 최대한 활용하도록 되어 있습니다.