얼마전에 지식in 에서 올라 올 글 중에 C언어를 mip 전용 어셈코드로 변환할 수 있는지 물어보는 글이 있었다. 그게 가능한지는 모르겠지만, C 언어를 어셈코드로 변환하는 것은 gcc 나 visual c 로 충분히 가능하다. 우선 gcc 에서는 컴파일 옵션 -S (대문자) 하나 붙여준면 된다.
ctest.c 라는 파일이 있을 때,
gcc -S ctest.c 라고 하면 확장자 s 라는 파일을 만들어 주면서 어셈블리어로 변환해 준다. 이 것은 내가 Dev-Cpp 안에 있던 컴파일로 실험해 본 결과 이다. 리눅스에서도 충분히 가능하리가 본다. visual c 에서는
visaul C 에서도 이럴 것을 할 수 있다. Visaul C 를 기본으로 깔았다면 C:Program FilesMicrosoft Visual StudioVC98Bin 로 설치될 것이다. ( 나는 Visual C++ 6.0을 쓰고 있습니다. 다음 버전에서도 가능하리라고 봅니다..)
그 폴더안에 cl 이라는 파일이 있다. 이게 gcc 와 하는 일이 유사하다.
컴파일 할 때 "C:Program FilesMicrosoft Visual StudioVC98BinCL.EXE
" /FA test.c 이런 식으로 해주면 확장자 asm 파일을 보여준다. 물론 debug 할 때 어셈블리어를 볼 수 있는 방법으로도 가능하다. (아직 큰 차이는 모르겠다. 내가 설명한 방식이 릴리스 모드의 어셈코드인지는 확신이 가지 않는다...)
ctest.c 라는 파일이 있을 때,
gcc -S ctest.c 라고 하면 확장자 s 라는 파일을 만들어 주면서 어셈블리어로 변환해 준다. 이 것은 내가 Dev-Cpp 안에 있던 컴파일로 실험해 본 결과 이다. 리눅스에서도 충분히 가능하리가 본다. visual c 에서는
visaul C 에서도 이럴 것을 할 수 있다. Visaul C 를 기본으로 깔았다면 C:Program FilesMicrosoft Visual StudioVC98Bin 로 설치될 것이다. ( 나는 Visual C++ 6.0을 쓰고 있습니다. 다음 버전에서도 가능하리라고 봅니다..)
그 폴더안에 cl 이라는 파일이 있다. 이게 gcc 와 하는 일이 유사하다.
컴파일 할 때 "C:Program FilesMicrosoft Visual StudioVC98BinCL.EXE
" /FA test.c 이런 식으로 해주면 확장자 asm 파일을 보여준다. 물론 debug 할 때 어셈블리어를 볼 수 있는 방법으로도 가능하다. (아직 큰 차이는 모르겠다. 내가 설명한 방식이 릴리스 모드의 어셈코드인지는 확신이 가지 않는다...)