[어셈블리언어] E06. C언어 내부에서 어셈블리어 사용하기
*상*
다운로드
장바구니
소개글
과제목적 : C/C++ 안에서 어셈블리언어 함께 사용하기(Inline , Obj, Library) Assembly in C/C++.
사용목적 :
C/C++ (High Level Language) : 생산성↑
Assembly Language : 하드웨어 제어, 공간의 효율성, 메모리 직접접근
C와 어셈블리언어를 함께 사용하는 것에 대한 예제 프로젝트 4개입니다.
수준 높게 사용한다면 상당히 효율적이므로 익혀둡시다.
소스 참고를 위해서는 상관 없지만 실행을 해보려면, 약간의 공부가 필요합니다.
소스 실행을 위해서는 IrvineExamples6thVS2008.exe 라는 파일이 필요하며
VS2008이 필요합니다. sln 파일을 실행해주세요.
http://www.kipirvine.com
목차
1. 실습환경(OS, 장소)2. 구현의 접근방법
3. Pragma?
4. Inline
6. Object 이용
7. Library 이용
8. Library2
9. 공통 결과
10. 후기
본문내용
2. 구현의 접근방법이번 Practice06의 목적은 C/C++과 어셈블리어를 함께 사용해보는 것이다. C코드 내에 어셈블리 코드를 삽입하는 방법으로는 __asm 명령어를 사용하는 방법, Obj파일을 이용하는 방법, Library로 이용하는 방법 등이 있다.
인라인 어셈블리 방법에서는 __asm 명령어를 이용하여 직접적으로 어셈블리어를 안에 집어 넣는 방법을 사용하였다. 그런데 c코드로 짠 프로젝트는 프로그램을 실행해 버린 뒤 사용자에게 디버그 환경을 제공 하는지 다른 방법과는 달리 디스어셈블리 창으로 들어가지지 않았다.
오브젝트를 사용하는 방식에는 헤더파일을 이용하여 Plus와 Minus를 지정해 준 뒤 cpp소스에서 Plus와 Minus를 사용하였다.
라이브러리 1,2에서는 asm 파일을 라이브러리로 지정하여 cpp소스에서 불러들여 Plus, Minus를 사용하였다.
인라인은 확인해 보지 못했지만, 디스어셈블 하여 비교해 보았더니 모두 동일한 결과와 동일한 과정을 보여주었다.
참고 자료
어셈블리 언어 : 인텔 기반 컴퓨터를 위한 (제5판) KIP R.IRVINE 저http://www.kipirvine.com
압축파일 내 파일목록
P06.doc
PlusMinus_Inline/Debug/BuildLog.htm
PlusMinus_Inline/Debug/main.obj
PlusMinus_Inline/Debug/mt.dep
PlusMinus_Inline/Debug/Project.exe
PlusMinus_Inline/Debug/Project.exe.intermediate.manifest
PlusMinus_Inline/Debug/Project.ilk
PlusMinus_Inline/Debug/Project.pdb
PlusMinus_Inline/Debug/vc90.idb
PlusMinus_Inline/main.cc
PlusMinus_Inline/Project.ncb
PlusMinus_Inline/Project.sln
PlusMinus_Inline/Project.suo
PlusMinus_Inline/Project.vcproj
PlusMinus_Inline/Project.vcproj.ASM.Kip.user
PlusMinus_Inline/Project.vcproj.user
PlusMinus_Lib/Debug/BuildLog.htm
PlusMinus_Lib/Debug/Lib.lib
PlusMinus_Lib/Debug/main2.obj
PlusMinus_Lib/Debug/mt.dep
PlusMinus_Lib/Debug/plusminus.obj
PlusMinus_Lib/Debug/Project.exe
PlusMinus_Lib/Debug/Project.exe.intermediate.manifest
PlusMinus_Lib/Debug/Project.ilk
PlusMinus_Lib/Debug/Project.pdb
PlusMinus_Lib/Debug/vc90.idb
PlusMinus_Lib/header.h
PlusMinus_Lib/Lib.vcproj
PlusMinus_Lib/main2.cpp
PlusMinus_Lib/plusminus.asm
PlusMinus_Lib/Project.ncb
PlusMinus_Lib/Project.sln
PlusMinus_Lib/Project.suo
PlusMinus_Lib/Project.vcproj
PlusMinus_Lib/Project.vcproj.ASM.Kip.user
PlusMinus_Lib/Project.vcproj.user
PlusMinus_Lib2/Debug/BuildLog.htm
PlusMinus_Lib2/Debug/Lib.lib
PlusMinus_Lib2/Debug/main2.obj
PlusMinus_Lib2/Debug/mt.dep
PlusMinus_Lib2/Debug/plusminus.obj
PlusMinus_Lib2/Debug/Project.exe
PlusMinus_Lib2/Debug/Project.exe.intermediate.manifest
PlusMinus_Lib2/Debug/Project.ilk
PlusMinus_Lib2/Debug/Project.pdb
PlusMinus_Lib2/Debug/vc90.idb
PlusMinus_Lib2/header.h
PlusMinus_Lib2/Lib.vcproj
PlusMinus_Lib2/main2.cpp
PlusMinus_Lib2/plusminus.asm
PlusMinus_Lib2/Project.ncb
PlusMinus_Lib2/Project.sln
PlusMinus_Lib2/Project.suo
PlusMinus_Lib2/Project.vcproj
PlusMinus_Lib2/Project.vcproj.ASM.Kip.user
PlusMinus_Lib2/Project.vcproj.user
PlusMinus_Obj/Debug/BuildLog.htm
PlusMinus_Obj/Debug/main2.obj
PlusMinus_Obj/Debug/mt.dep
PlusMinus_Obj/Debug/plusminus.obj
PlusMinus_Obj/Debug/Project.exe
PlusMinus_Obj/Debug/Project.exe.intermediate.manifest
PlusMinus_Obj/Debug/Project.ilk
PlusMinus_Obj/Debug/Project.pdb
PlusMinus_Obj/Debug/vc90.idb
PlusMinus_Obj/header.h
PlusMinus_Obj/main2.cpp
PlusMinus_Obj/plusminus.asm
PlusMinus_Obj/Project.ncb
PlusMinus_Obj/Project.sln
PlusMinus_Obj/Project.suo
PlusMinus_Obj/Project.vcproj
PlusMinus_Obj/Project.vcproj.ASM.Kip.user
PlusMinus_Obj/Project.vcproj.user
PlusMinus_Inline/Debug/BuildLog.htm
PlusMinus_Inline/Debug/main.obj
PlusMinus_Inline/Debug/mt.dep
PlusMinus_Inline/Debug/Project.exe
PlusMinus_Inline/Debug/Project.exe.intermediate.manifest
PlusMinus_Inline/Debug/Project.ilk
PlusMinus_Inline/Debug/Project.pdb
PlusMinus_Inline/Debug/vc90.idb
PlusMinus_Inline/main.cc
PlusMinus_Inline/Project.ncb
PlusMinus_Inline/Project.sln
PlusMinus_Inline/Project.suo
PlusMinus_Inline/Project.vcproj
PlusMinus_Inline/Project.vcproj.ASM.Kip.user
PlusMinus_Inline/Project.vcproj.user
PlusMinus_Lib/Debug/BuildLog.htm
PlusMinus_Lib/Debug/Lib.lib
PlusMinus_Lib/Debug/main2.obj
PlusMinus_Lib/Debug/mt.dep
PlusMinus_Lib/Debug/plusminus.obj
PlusMinus_Lib/Debug/Project.exe
PlusMinus_Lib/Debug/Project.exe.intermediate.manifest
PlusMinus_Lib/Debug/Project.ilk
PlusMinus_Lib/Debug/Project.pdb
PlusMinus_Lib/Debug/vc90.idb
PlusMinus_Lib/header.h
PlusMinus_Lib/Lib.vcproj
PlusMinus_Lib/main2.cpp
PlusMinus_Lib/plusminus.asm
PlusMinus_Lib/Project.ncb
PlusMinus_Lib/Project.sln
PlusMinus_Lib/Project.suo
PlusMinus_Lib/Project.vcproj
PlusMinus_Lib/Project.vcproj.ASM.Kip.user
PlusMinus_Lib/Project.vcproj.user
PlusMinus_Lib2/Debug/BuildLog.htm
PlusMinus_Lib2/Debug/Lib.lib
PlusMinus_Lib2/Debug/main2.obj
PlusMinus_Lib2/Debug/mt.dep
PlusMinus_Lib2/Debug/plusminus.obj
PlusMinus_Lib2/Debug/Project.exe
PlusMinus_Lib2/Debug/Project.exe.intermediate.manifest
PlusMinus_Lib2/Debug/Project.ilk
PlusMinus_Lib2/Debug/Project.pdb
PlusMinus_Lib2/Debug/vc90.idb
PlusMinus_Lib2/header.h
PlusMinus_Lib2/Lib.vcproj
PlusMinus_Lib2/main2.cpp
PlusMinus_Lib2/plusminus.asm
PlusMinus_Lib2/Project.ncb
PlusMinus_Lib2/Project.sln
PlusMinus_Lib2/Project.suo
PlusMinus_Lib2/Project.vcproj
PlusMinus_Lib2/Project.vcproj.ASM.Kip.user
PlusMinus_Lib2/Project.vcproj.user
PlusMinus_Obj/Debug/BuildLog.htm
PlusMinus_Obj/Debug/main2.obj
PlusMinus_Obj/Debug/mt.dep
PlusMinus_Obj/Debug/plusminus.obj
PlusMinus_Obj/Debug/Project.exe
PlusMinus_Obj/Debug/Project.exe.intermediate.manifest
PlusMinus_Obj/Debug/Project.ilk
PlusMinus_Obj/Debug/Project.pdb
PlusMinus_Obj/Debug/vc90.idb
PlusMinus_Obj/header.h
PlusMinus_Obj/main2.cpp
PlusMinus_Obj/plusminus.asm
PlusMinus_Obj/Project.ncb
PlusMinus_Obj/Project.sln
PlusMinus_Obj/Project.suo
PlusMinus_Obj/Project.vcproj
PlusMinus_Obj/Project.vcproj.ASM.Kip.user
PlusMinus_Obj/Project.vcproj.user
이 자료와 함께 구매한 자료
[파일처리]AVL트리 삽입 소스입니다~! 0페이지
파일처리 - 다단계 합병 0페이지