어셈에서 c 커널 호출시
글쓴이: kws4679 / 작성시간: 월, 2011/02/21 - 7:04오후
NASM 으로 어셈을 컴파일하고 gcc 로 c 를 컴파일했습니다
어셈에서 c의 내용을 특정 메모리에 복사하고
그곳으로 점프하려고 하는데요 점프를 해도 아무일이 발생하지 않습니다!!!
찾아보니까 스택 포인터 관련해서 문제인것 같은데
이런경우 스택 포인터를 어떻게 설정해 주어야할지 감이 안잡히네요
추가적으로 gcc 에서 아무런 옵션 주지않고 컴파일시 스택 프레임이 자동적으로
생성되는건가요? 만일 생성된다면 안되게 할수는 없는지... 궁금합니다!!
Forums:
어셈에서 c코드를 호출하신다고 하니..당연하겠지만
-
우선 스택의 유무때문이라면 C 함수는 스택이 있어야
우선 스택의 유무때문이라면 C 함수는 스택이 있어야 동작합니다.
따라서 mov sp 0x10000000 식으로 스택 포인터를 초기화 해주어야 합니다.
자신의 시스템의 적당한 메모리를 찾아서 넣어줘 보세요.
...
mov sp 0x10000000
...
jmp xxx // C 함수명
ret
댓글 달기