본문 바로가기

컴퓨터 공학 자료(학부)

간단한 대소문자 변환 INCLUDE Irvine32.inc .data string BYTE "welcome to the ASSEMBLY world", 0 .code main PROC mov edx, OFFSET string mov esi, OFFSET string call WriteString call crlf call ChangeString mov edx, esi call WriteString exit main ENDP ChangeString PROC PUSH EBP MOV EBP, ESP PUSHAD L1: inc esi mov al, [esi] cmp al, 32 je SPACE cmp al, 0 je DONE cmp al, 'a' jb L2 jae L3 L2: add BYTE PTR [esi], 32 jmp L1 L3.. 더보기
C언어에서 인라인으로 어셈코드 이용 #include #include #include using namespace std; int main() { char container[20]; char result[20]; int count=0; ifstream fin; ofstream fout; fin.open("input.txt"); fout.open("output.txt"); fin.read(container,20); count=fin.gcount(); __asm{ cld MOV ecx, count LEA esi, container LEA edi, result REP MOVSB } for(int i =0 ; i 더보기
일리히트 게임엔진 케릭터 모델링할때 md2 파일구조 The .MD2 Model Format: md2 파일은 4가지 다른 구조로 읽어 들여야 한다. 그 4가지 구조란 파일의 header, vertex information, frame, 그리고 또 다른 vertex structure 이다. 우선 헤더의 구조에 대해 알아보자. typedef struct MD2_HEADER_TYP { int magic; int version; int skinWidth; int skinHeight; int frameSize; int numSkins; int numVertices; int numTexcoords; int numTriangles; int numGlCommands; int numFrames; int offsetSkins; int offsetTexcoords; int o.. 더보기
리눅스 arch : CPU에 따라 다르게 구현해야하는 코드들이 각 CUP의 어셈블리 코드로 작성 되어 있음 arch/i366/boot/bzImage : 컴파일된 커널 이미지 파일, 약 2MB 용량 (cpu가 x86계열일 경우) include : 헤더파일 include/linux : 커널 프로그래밍시 사용하는 헤더파일들이 있다. include/linux/kernel.h : printk() include/linux/module.h : MODULE_LICENSE() include/linux/init.h : module_init(), module_exit() kernel : 커널의 핵심 부분. 타이머, fork, 리소스관리 관련 코드, 인터럽트 처리, 시스템 콜 crypto : 암호화 라이브러리 관련 코드 driver.. 더보기
OpenGL이용한 행성의 공전,자전 구현 opengl을 이용해서 visual studio 9.0에서 행성의 자전과 공전을 구현하는 과제였다. 별건없었고 다만 행전과 공전 주기를 서로 연관되게 계산해주고 무엇보다 좌표계의 개념을 이해해서 각각의 행성이 각각의 좌표를 가지거나 혹은 서로 연관되어 위치된다는 것을 이해하는 과정이 약간 복잡했다. 개념이 약간 복잡했을뿐 구현자체는 코드길이도 길지않고 쉬웠다. 빨간색의 구로 표시된 고정된 태양이 원점(0,0,0)에 있다. 그리고 그 태양을 중심으로 반지름 r인 크기로 공전하는 지구(정육면체)가 있다. 그리고 지구를 중심으로 공전하는 인공위성(사면체)이 있다. 이 인공위성은 지구의 적도면을 기준으로 그 기울기를 계속 증가시키면서 공전한다. 그리고 지구 밖으로 태양을 중심으로 타원의 궤도를 회전하는 명왕성(.. 더보기
안드로이드 첫번째 어플 개발 나는 뭐먹지? 라는 어플을 약 한달간 개발했는데 시험기간과 겹쳐서, 그리고 실수로 중간에 프로젝트를 날리는 바람에 일시 중단. 까먹기 전에 전반적인 사항을 적어둔다. 일단 어플 기능은 사용자가 현재 가지고 있는 요리 재료를 입력하면, open API로 인터넷에서 그 요리재료들로 만들 수 있는 요리 목록들을 받아오고 현재 사용자의 위치에서 가까운 맛집을 표시해주는 기능. 간단하다. 몇 개의 액티비티들로 구성되어있고 호출은 인텐트들로 하는 단순한 구조다. 첫번째 어플리케이션이 실행되는 메인화면은 main액티비티이다. 이 액티비티에서 사용자가 '요리찾기' 버튼을 누르면 그다음 액티비티로 넘어간다. 두번째 액티비티는 사용자로부터 현재 사용자가 가지고 있는 요리 재료 목록들을 입력받아, 인터넷에서 open API.. 더보기
일리히트 비쥬얼스튜디오2008에서 사용시 첫 예제 Helloworld 실행시, 컴파일 에러는 없는데 계속 콘솔창이 잠깐 떴다 꺼지는경우. "동적 라이브러리에 있는 함수를 사용하는 프로그램인데. 그 함수를 가지고 있는 동적라이브러리 파일이 시스템에 안잡혀서 그런듯 합니다. 님이 사용하는 함수중에 윈도우 기본 dll이 아닌 특정 dll에 있는 함수가 있을 것입니다. 그 함수가 정의되어 있는 dll파일을 프로그램과 같이 배포하셔야 다른 컴퓨터에서도 동작을 할 수 있습니다. 같이 배포를 원치 않다면 함수를 static library로 exe에 포함시켜야 합니다. 링크과정에서 처리되는 것이기 때문에 링크옵션쪽에서 만져주면 됩니다." 즉 시스템에서 이 helloworld파일에서 사용된 함수에 대한 dll파일을 인식못하는 문제이므로 alt+f7에서 디버그 .. 더보기
MASM과 비쥬얼스튜디오 2008연동 윈도우 환경에서 어셈블 할 수 있는 프로그램은 많지만(ollydebug라던지) VS2008 이 익숙하기도 하고 디버깅하기도 편해서 2008과 연동해서 어셈블러 공부하기로 했다. 절차 1. kipirvine.com/asm 사이트에가서 vs2008용 어셈블러 라이브러리를 다운받는다. 2. vs2008에서 반드시 '빈프로젝트' 생성 후 alt+f7(프로젝트 속성)에서 -구성속성-링커-일반에서 '증분링크 허용' -구성속성-링커-일반에서 추가라이브러리 디렉토리를 다운받은 어셈블러 라이브러리 폴더로 지정 -구성속성-링커-입력-추가종속성에서 'irvine32.lib'추가 -구성속성-시스템-하위시스템에서 '콘솔창에서 실행' 선택 3.메인화면에서 프로젝트-사용자지정빌드규칙에서 'microsoft macro assembl.. 더보기
안드로이드 어플 개발에 앞서 깔아될것들 참 많네 1.자바 JDK 설치 후 환경변수 설정 2. 이클립스 설치 3. 안드로이드 SDK 설치 4. 이클립스-안드로이드 플러그인 세팅 - help->software updates 에서 add-sites 에 http://dl-ssl.google.com/android/eclipse 추가 후 다운 5. 이클립스에서 window-preference에서 android 선택 후 경로를 아까 다운받은 android SDK 경로로 지정 해 준다. 6.프로젝트 생성 -가끔 an sdk target must be specified라는 메시지와 안되는 경우 안드로이드 sdk를 다운받은 폴더에가서 setupsdk.exe 실행 후 직접 버전업.//버전업시에 가끔 https 프로토콜에 호환안되는 경우 접속 안되는데 이럴경우 찾.. 더보기