Game-Proejct BombBoom 2009. 3. 15. 01:35
개발시작 계기

  - 우연히 같은 고교 동창생인 친구들과 함께 맥주를 먹다 나온이야기가 이야기의 시작.
    "우리 전부다 컴공인데, 게임한번 만들어볼까??!" 여기에서 시작된 프로젝트.
  - 그리고는 각자 맡은 파트에 대한 공부를 개별적으로 시작
     민조 : 서버 & 툴     준영 : D3D & WINAPI    세문 : D3D     성우 : 3DSMAX

  - 각자 하드코더라는 강한 프라이드는 있었으므로 코딩에는 자신이 있었으나,
    테크니컬한 면이 부족했음. 그리고 게임 기획쪽의 책을 읽어본적도 없거니와
    단순히 어릴적에 즐기던, 편하고 재밌게 즐기던 기분을 되살려 B&B 3D로 결정
    게임 제목을 정하다가 넥슨의 크.아(Crazy Arcade)가 계속 매치되어 먼가
    간단하면서도 어필하고픈 제목으로 짓기로 하다 폭탄이 터지는 음에 착안하여
    Boom & Bomb (붐 앤 범) 줄여서 붐붐 이라고 짓기로 했다.

  - 기존의 게임과 차별성을 가하고, 3d인 점을 어필하고자 높이 개념...즉 층의 개념을 도입
    하기로 자체 회의중 결정. 각종 스테이지 정보저장을 위한 자체 포맷을 정하고 익스포터 및
    컨버터 제작에 돌입 및 기본적으로 사용될 툴을 직접 제작함.

  - 서버의경우 유닉스(리눅스)기반의 소스코드로 작성되던중 테스트에 어려움을 겪고,
    윈도우즈용으로 포팅함.

  - 클라이언트의 경우 DirectX 9.0b 버젼을 기반으로 작성되었고 컴파일러는  vc++6.0을 기반으로
    작성되었으며, 사운드의 경우는 직접 라이브러리를 짤만한 시간적 여유가 없었기에 공개 사운드
    엔진을 사용함. (Irrichit 엔진중 사운드 엔진만 사용)

  - 모델 데이터의 경우 직접 자체 데이터 포맷을 만들 능력이 되질않아 DirectX에서 제공하는
     모델 데이터 파일인 .x 타입으로 제작하여 다이렉트 내장 클래스를 이용하여 매시 애니메이션
     을 구현.

  - 게임의 배경음악은 직접 곡을 만들어서 사용했음. 원래 테마별로 다 만들려고 했었으나,
    코드 작성 및 테스트, 내부 회의 등에 많은 시간을 빼앗겨 결국 그렇게되지는 못했음.

  - 약 2달간의 개발기간을 거쳐 프로토모델에 가까운 버젼이 나옴.
  - 그 후 개강을 하게 되어, 각자 학업에 매진함으로 프로젝트는 무기한 연기됨.
  - 사실상, 프로젝트 중단

  - 사실상 일반 학부생이 경험할 수 없는, 타대생과의 교류적인 그런 프로젝트를 진행했다는
     점에 대해 높게 평가하며 만족하는 프로젝트임.
posted by Sense.J
:
OpenGL 2009. 3. 11. 03:09

#include <glut.h>
#include <gl.h>
#include <glu.h>

void dispaly(void)
{
// 초기화
 glClear(GL_COLOR_BUFFER_BIT);  
// 폴리곤을그리는 부분. Z축은 0으로써 고정.
 glBegin(GL_POLYGON);
  glVertex3f(-0.5f, -0.5f, 0.0f);
  glVertex3f( 0.5f, -0.5f, 0.0f);
  glVertex3f( 0.5f,  0.5,  0.0f);
  glVertex3f(-0.5f,  0.5,  0.0f);  
// 그리기 종료
 glEnd();

// Flush시킴으로써 화면에 드로잉이 이루어진다.
 glFlush();
}

int main(int argc, char argv[])
{
// Window를 생성한다.
 glutCreateWindow("OpenGL Test Window Example!");
// 디스플레이 펑션을 콜백함수로 등록한다.
 glutDisplayFunc(dispaly);
// 루프를 작동시킨다.
 glutMainLoop();
 return 0;
}


이 코드는 C에서의 Hello World와 같다고 할수 있다.
glut 라이브러리를 이용하여 창을 생성하고 간단히 사각형을 그리는 예제이다.
매우 심플하다.

한동안 OpenGL을 공부하면서 중간중간 과정을 올릴 생각이다.
나중에 보면 도움이 되겠지?

posted by Sense.J
:
프로그래밍 관련자료 2009. 2. 5. 03:13

  #ifdef _Test
           출력할 내용(테스트 출력용)
  #endif

- 디버그 모드일때만 출력할것을 위와 같이 한다음에
stdafx.h 헤더 파일이나 또는 위 *.cpp 파일에 포함되어지는 헤더파일에 아래와 같이 한다.

  #define _Test

 그리고 출력하지 않을 때는   #define _Test를 주석처리한다.

 또는
 #ifdef _DEBUG_MODE            
 #define _Test
 #endif

  이렇게 하면 디버그 모드일때만 _Test가 선언된다.

posted by Sense.J
:
3-2학기 2009. 1. 22. 15:29

2008년도 2학기에 진행되었던 프로젝트 텀이다.

우리들은 시리얼통신이 가능한 보드를 직접 디자인 & 납땜 으로 개발하고
그 위에서 돌아가는 펌웨어를 작성, 그 펌웨어를 이용하는 리눅스상의 어플리케이션을
작성하여 같은 프로토콜을 갖는 다른조와 통신하는 텀 프로젝트를 진행하였다.

사용된 인터페이스카드는 PCI9030카드, CPU는 ARM7_TDMI(삼성에서 제조된모델이다)
DPRAM에, MAX232모듈을 사용한 RS232통신을 하였다.

리눅스<->PCI9030<->보드<->MAX232<->선<->MAX232<->보드<->PCI9030<->리눅스

위와같은 흐름이다. 물론 중간의 메커니즘은 뺴고 대략적인 흐름만 볼때말이다.

MAX232에서 수신한 바이트 정보는 DPRAM에 저장하고(영역을 구분한다) 전송이 완료되었다고 판단되면 그제서야 그에 대한 인터럽트를 PCI9030에 발생시킨다. 그리고 그 인터럽트 정보를 통해 리눅스에서는 정보를 수신하여 가져오는 것이다. 이러한 구조로 통신을 한 결과는 성공적이었다.


어플리케이션의 경우, 단순한 채팅 + 타자배틀게임 이었고 상대방 조와의 원활한
협조로 인해 순조롭게 잘 진행되었다.

보드의 경우 김태성군이  밤을 새어가며 납땜을 하며 고생을 해주었으나, 잘못구성되어
다시 김태성군이 고생을하여 여러번 고치고 새로 만들어 결국 제대로된 보드를 만들었다.
또한 여학우 임에도 불구하고 한승혜양이 납떔하느라 고생을 조금 한듯하다.

PCI9030카드와의 세팅 및 점검은 김지훈군이 도맡았고, 연결확인 및 점검은 한승혜, 김지훈군이
도맡다 시피했다.

내가맡은 부분은 어셈블리 펌웨어 부분 100%및 C코드로 작성된 펌웨어의 70~80%정도 이다.
초창기에 어셈블리어를 알고있는 조원이 나 하나 뿐이었기에 중 후반부 까지는 거의 혼자 펌웨어 작업을 진행하였다. 도큐먼트 서칭 및 계산은 김지훈 군과 내가 같이 진행하였다.
후반부는 각종 실험외 개인적 문제로 패닉에 빠진 나 대신 김지훈군이 잘 마무리 해주었다.

사용된 리눅스 배포버젼은 우분투 8.10 이고 커널벼전은 모르겠다..
GUI작성을 위해 QT4라이브러리가 사용되었다.
QT어플리케이션 작성은 김태성군이 도맡았고,  패킷정의 및 패킷을 위한 모듈 라이브러리 작성은
내가 일부 작성하여 모듈을 넘겨주었다.


이 실험은 통신 보드를 작성하고, 직접 드라이버레벨을 컨트롤하며 어플리케이션까지 만들어보는
진정한 의미의 첫 임베디드 프로젝트라 할수 있다. 시리얼이 비록 보잘것 없어 보일지 모르나, 그 단순한 작동을 위해 필요한 여러가지 조건들을 깨달을 수있었고 직접 도큐먼트를 보며 구현하며 하나하나 배울수 있었던 좋은경험이라 생각한다.

팀원들간의 조합도 매우 좋고, 상대편 조와의 조합도 매우좋아 협동도 잘되었고 서로 의논도 잘되어 최상의 팀워크를 자랑했다고 생각한다.

아마도 가자힘든점은 롬을 매번 구우러 가야된다라는 사실과, 문제가생기면 이게 하드웨어 설계의 문제인지, 납땜의 문제인지, 펌웨어의 문제인지, 어플리케이션의 문제인지, 아니면 하드웨어자체의 불량인지를 가늠하기가 쉽지 않다라는 점이다.




말끔한(??) 보드 레이아웃 및 작동어플(우리조, 상대조)

사용자 삽입 이미지

사용자 삽입 이미지
사용자 삽입 이미지





<상대방조가(호철이네) 작성한 어플리케이션>
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

posted by Sense.J
:
3-1학기 2009. 1. 22. 15:18
파일구조 텀 프로젝트로 나왔던 압축유틸리티 이다.
말이 압축유틸리티 이지, 파일병합, 해제 유틸이라고 할수 있다.
사실 압축기능을 단순하게나마 구현하였으나, 압축이 되는경우는 극히 적었고
거의 용량이 좀더 커지는 경우가 발생하여, 압축기능을 빼버리고 파일을 병합/해제
하는 기능을 구현하였다.
파일의 속성상태도 복구되며, 파일을 멀티 디렉토리안의 데이터도 모두 복구가 가능하다.
사용된 랭기지는 Ms VC++6가 사용되었고, MFC를 사용하여 작성되었으며
그외에 사용된 특이한 라이브러리는 없다.(표준 라이브러리를 이용하였고, 대부분 C언어의 표준함수들을 사용하였다.)
혹자는 C++로도 구현할수 있지않느냐라고 하지만, 개인적으로 C컴파일러의 성능이 더 좋다고 믿음이 있기에 C코드로 작성하였다.

사용자 삽입 이미지


개발기간은 대략 1주일 정도 소모되었고, 파일 병합시에 속도는 빠르나 파일 해제시에 속도가 조금 느리다는 단점이있다. 이는 병합시에 코드에는 블럭단위를 고려하여 작성하였으나, 병합해제시에는 이를 고려하지 못하였기에 이러한 결과를 가져온다. 구현이 힘든것은 아니나, 시간이 촉박했던 일정이었기에 저정도선에서 구현을 완료하였다.

2010. 4. 17 추가....
하도 할일이 없어서 저걸 래핑해서 클래스로 팩킹, 언팩킹, 팩킹된걸 바로 접근하여 파일포인터 반환하는걸 만들었으나, 좀더 이쁘게 다듬은 다음에 공개할라고 하고있네요....너무 민망할정도로 쉬운코드라서...
뭔가 압축기법이 들어가야 그럴싸한데 압축기법되면 공개할께요/....      :)
posted by Sense.J
:
2-1학기 2009. 1. 22. 15:11
제대 직후 복학한 이후 처음 진행된 텀 프로젝트이다.
Ncurses를 기반으로 한 터미널 상에서의 텍스트 머드 게임을 모토로 만들었다.
예전 하이텔,나우누리 세대때의 그 시절의 향수를 추억하며 만들었다.
게임을 위한 전체 디자인은 내가 직접 진행하였고, 서버코드의 전체는 내가 작성했다.
클라이언트의 코드중 20%정도 역시 내가 작성했고, 나머지는 팀원들이 작성하였다.
일정 역시 내가 조정하였고, 팀의 리더를 맡게 되었던 프로젝트이다.


특징 :
다중 전투를 지원(다수의 유저와 하나의 몬스터와 전투가능)
아이템을 지원한다.
맵상에서의 타 유저의 이동상황을 실시간으로 반영한다.
Map의 Zone개념을 도입하였다.
Npc의 대화시스템기능도 구현하였다.
레벨업 기능역시 지원된다.
레벨업에 따른, 전투의 난이도의 상대적 조정역시 지원된다.
창의 다중분할로 유저의 인터페이스를 최대한 편하게 구성하였다.

개발기간 :
실질적 디자인 기간은 2주가량 걸렸고, 코드 작성에 소요된 시간은 1주일 하고도 5일정도 된다.
개발된 시스템은 페도라7 리눅스 상에서 개발되었고, 테스틑 Putty터미널 상에서 실행되어
테스트 하였다. 사용된 컴파일러는 gcc 컴파일러이고, 사용된 라이브러리는
Ncurses, unixStandard라이브러리, 그리고 tcp와 관련된 라이브러리 들이다.

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

수많은 테스트를 거쳤지만 약간의 버그들은 존재하며, 지금역시 그 원인은 모른다.
당시 코드 작성에 소요된 시간이 짧았기에 그만큼 코드의 측면에서의 퀄리티는 좋지못하다고 생각하나, 옛 향수의 게임을 내손으로 직접 구현해 보았다는것에 대하여 높게 평가하는 텀 프로젝트이다.

비하인드.....게임이름이 뮤젠인데.......당시 조원들과 게임이름을 고민하다....스피커 이름이 뮤젠이길래 그냥 아무생각없이 정했던 이름이다.....작명센스하고는...ㅠ-ㅜ;
posted by Sense.J
:
Game-Proejct BombBoom 2008. 10. 27. 03:36
다들 바빠서 이이상 진행을 하진못했지만

나에게 좋은 경험을 하게해준 의미있는 프로젝트이다.

언제 이런 경험을 할수 있으며, 이런경험을 한자는 몇명이나될까?

나에게는 수많은 의미를 부여하고싶은 그런 소중한 프로젝트이다.

Boomb&Bomb Project.....비록 미완성된 프로젝트이지만 이 프로젝트로

한명은 SSM에 가입했고, 한명은 게임업체에 취직(??, 군복무대신...)했다...

그만큼 수준은 뒤 떨어어지지 않는다는것 같았고, 모 게임개발담당 팀장으로부터 취직제의도

들어왔었다. 아무튼.....좋은 경험이었고 추억이다.....

왠만한 음악작업은 내가했다. 서버쪽 디자인 및 프로그래밍도 내가했다.

경험도 부족했고, 허접하지만 그래도 얼추 돌아간다는것에대해서 만족한다.

몇몇 친구들이 소스코드를 보여달라고 했지만, 사절이다.

남이보긴 볼라도 나에겐 소중한 자식같은 녀석이기 떄문이다....

언제가 될진 모르겠지만, 나는 Mac, Linux, Windows 3개의 운영체제에서 똑같이 동작하는

RPG엔진을 생각하고있다. 구현이 언제될련지는 모른다. 차근차근 진행되다가 지금은 중단했지만

다시 재개될 날이, 내가 40이 넘어서일수도있고, 현업에서 일할때일수도 있다.

언제가 될지 장담할 순없지만, 플랫폼으로부터 자유롭게 개발되어 다시 예전처럼

공개용 게임의수준이 높아지고, 그걸 즐길수 있는 그런시절이 왔으면 좋겠다..

그렇다고해서 나는 게임개발에 뜻이있는건 또 아니다....;;(??)

나는 소프트웨어개발에 관심이 있을뿐......암튼 그렇다.;

posted by Sense.J
:
3-2학기 2008. 10. 27. 03:22
학과에서 텀과제가 난이도가 높기로 꽤 정평이 나신 탁성우 교수님의 과제로 나온

ActiveX기반으로 작동하는 방화벽 시스템 이다.

우선 이 시스템은 커널 레벨의 Hook Driver(by DDK)를 이용하여 작동한다.
tcp/ip 프로토콜 계층으로 신호를 넘기기 전에, 훅된 드라이버로 먼저 패킷을 넘겨받아 처리한후
tcp/ip 프로토콜 계층으로 데이터를 넘기기에 가능해지는 원리이다.
이를 구현하기위해서는 DDK(Driver Development Kit)이라는 라이브러리가 필요하다.
드라이버는 network 계층과 transport계층 사이에 위치하게 되고, 이정보를 어플리케이션이
컨트롤 하게되면 방화벽이 작동하게 되는 원리이다.

최종 보고가 프로젝트 시작으로부터 4주 뒤였기에, 4주간 개발을 진행하였다.
실질적인 기능 작동은 2주 정도 후부터 작동하기 시작했다.

드라이버의 개발은 내가 맡았고, ActiveX를 이용한 어플리케이션 작성 및 연동은
한승혜 양이 맡았다.
어플리케이션과 드라이버를 연결하는 커넥팅 부분은 내가 직접 구현을 하였다.

커널레벨의 드라이버를 구현함에 있어 속도저하없이 Rule을 삽입하기위해, 링크드 리스트를 직접
구현하였는데 그 방식을 단순화시켜 속도를 극대화하였다.
삽입시에는 제일 앞에 삽입하여 삽입하는데 소요되는 시간은 O(1)이 되게 하였다.
이렇게 한 이유는 커널레벨의 malloc시에 시간이 소모되므로, 네트웤 속도에 최대한 영향을 안미치기위해 고안한 방법이다.

커널레벨에서 작동하는 Hook Driver는 매우 민감하여 메모리참조 오류가 발생할경우 블루스크린을 띄우고 윈도우가 작렬히 사망한다. 이러한 문제로 윈도우즈 파일시스템이 망가져 고생하는 다른 팀원들도 많았다. 이 점이 방화벽을 만드는데 있어 가장 힘들게 하는 점이기도 하다.
개인적으로는 Vmware에 XP를 설치하고 작업하는것을 추천한다.

구현된 기능으로는 간단할 정도의 방화벽 시스템으로써

1.IP/PORT방어,
2.전송량제어
3.단어제어
4..패킷모니터링(그래프 출력)
5.세션제어
6.실시간 프로세스를 인식하여 taskmgr처러 보여주는 기능
위와 같은 기능들이다.

약간의 문제가 있는 부분은 패킷모니터링 부분인데 약간의 꼼수로 구현을 해놓았다.
일정 타이밍주기로 전송량을 읽어와서 화면에 출력하게 했는데 이는 정석이 아니다.
정석으로 구현한 사람은 주변에 최모군이 구현을 했는데 그 방식은 다음과 같다.
업로드나 다운로드시에 드라이버 레벨에서 인터럽트를 발생시키고, 어플리케이션은 그 인터럽트를 캐치하면 드라이버에 전송양을 요구하여 전송양을 읽어오는것이다. 이렇게 하면  굉장히 아름다운(?) 어플을 짤수 있을것이다. 나도 시도는 해보았지만 MSDN에서 그러한 정보를 찾아내는것을 실패하여 끝내 구현하지 못한부분이다.


교수님이 처음에 올려주신 샘플코드에 중요한 결함이 있어 커널레벨의 드라이버가 불안정하여 프로그램이 작동하다가 블루스크린을 출력하여 죽어버리는 경우가 있었는데 아직도 원인은 모르겠다. 하지만 아예 구조를 분석하고 드라이버 틀 생성기(Quick SYS)를 이용하여 틀을 생성한후, 나머지 모든 부분을 직접 설계하고 작성한 이 방화벽 시스템은 안정성을 보장하였으나, 교수님이 올려주신 소스를 그대로 이용하여 시작한 조들은 모두다 시연도중 오작동하는 결과를 보였다.

몇몇 팀들은 한해전 선배들의 코드를 그대로 받아와 제출한 조도 있었다고한다.
이는 자신의 경험을 져버리는 행위라고 생각한다. ....물론 나는 아니다.....

이 방화벽 시스템을 ActiveX로 구현할 사람이 누가될지는 모르겠다.
부산대학교 정보컴퓨터 공학부 후배들이 될수도 있고, 타학교의 컴공생일지 모르겠지만
한번쯤 해볼만한 경험이라 생각한다.

같은학기, 다른 분반의 다른팀은 4명이서 방화벽시스템을 구현하려고 시도하려다, 끝내 실패하고 패킷캡쳐 라이브러리를 이용하여 유사한 시스템을 구현한것을 본적이 있다.  이는 거의 구현하는부분은 없다고 봐도 무방하다.  팀원이 훨씬많은데도 말이다.

이는 개인 능력의 차이도 있을거라 생각하지만, 준비성의 부족이라고 생각한다.
MSDN을 통한 정보검색, 웹서핑을 통한 커널레벨의 특성 등을 제대로 파악하고, TCP/IP에 대해서 약간의 공부를 한다음 시작한다면 무리없이 2주안에 기본적인 방화벽은 작성할수 있을거라
생각한다.

사용자 삽입 이미지

사용자 삽입 이미지
                                                        <문제의 화면>


ActiveX로 배포하기위한 패키징 툴을 올린다.
내가 쓰던 패키징 배포파일이 포함되어 있다. step1,step2.bat파일을 잘 보고 조절하며
firewall.inf 파일을 잘 수정하길 바란다. 이거 찾느라고 예전에 고생을 좀 했었는데
필요하신분은 가져다 쓰길바란다.




추가로 혹시나 방화벽으로 검색해서 들어오신분이 계실것 같아 내용추가합니다.

Visual Studio 6.0에서 작동하는 DDK(링크)
http://download.microsoft.com/download/9/0/f/90f019ac-8243-48d3-91cf-81fc4093ecfd/1830_usa_ddk.iso

현재 위의 링크는 홈페이지상에서는 안보이지만 저링크로 다운받을수 있다.
아마 저 버젼이 6.0에서 억지로라도 컴파일이 가능한 마지막버젼인듯하다.

약간의 디파인값들을 수정하여 주면 6.0에서도 잘 컴파일된다.
비쥬얼스튜디오2005이상에서는 그냥 컴파일되므로 편할대로 하면된다.
아래의 링크를 참조하면 해결가능하다..(본인이 사용했던방법)
http://blog.naver.com/fruach?Redirect=Log&logNo=150018484930



또한 커널 레벨에서 디버그 메시지를 출력할수있는데 이는 드라이버 디버깅시에
매우 유용하다.  다운로드 링크는 아래와같다
http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
자세한 사용법은 웹서핑해보길바란다.


VM안의 WInXP에서 개발하는것이 안전할걸로 예상된다.
하지만 나는 그냥 xp환경상에서 시도했으며 별문제는 없었다.
타조원은 윈도우즈를 여러번 재설치했다...이는 액티브엑스가 등록되어
삭제할줄몰라 그랬던것이다.. 간혹 커널이 깨진경우도있으나 대부분 등록문제이다.
이는 레지스트리를 통해 해결이 가능하다. 궁금하면 연락을 주면 알려주겠음.


DDK사용을 위한 VC6.0 환경세팅
1. vs6.0 설치
2. 서비스팩6설치 <----매우 중요
3. (3790.1830) WIN SERVER 2003 SP1 다운로드
4. SDK설치
5. INC폴더(WXP, DDK\WXP, CRT 를 세팅)
6. LIB폴더 세팅
7. 링킹옵션 폴더세팅
8. BASEDIR환경변수 경로 세팅
9. CLT+F7누른후 디버그 모드일때 커스텀빌드 칸의 모든정보를 삭제
10. 디버깅모드로 컴파일 & 링크

위의 과정을 거치면 DDK환경 설정은 얼추될거임.

업무적으로 필요해서 저도 기록을 참고하는데 설렁설렁 3일이면 방화벽 기본적인 기능은 다 구현이되더군요.....
혹시나 도전하시는분들은 겁먹지 마시고.....화이팅....ㄲㄲ
posted by Sense.J
:
2-2학기 2008. 10. 27. 03:11

시스템 소프트웨어라는 과목에서 텀 프로젝트로 진행되었던 SIC/XE 어셈블러 이다.
사실상 이때 처음으로 MFC로 덩치가 조금 있는 프로그램을 작성 하였다.
MFC를 이용한 GUI구현에는 다른 팀원이 맡았고, MFC로 UI구현시에 막히는 부분은 내가 직접 다 처리했다.(UI구현의 한 15%정도 된다고 생각한다.)
팀의 리더는 내가 맡았고, 코드 작성의 80%정도는 내가 작성하였다.

(애야라시 소속의 김우성과 그 어디에도 속하지않은 정재훈이가 같이한조 였음.  둘다 고생많았다..)

2PASS ASSEMBLER를 구현하였고, PASS1, PASS2 부분을 대부분 내가 다 구현하였다.
(디버그 메시지 출력을 위한 처리 부분을 말고는 다 내가 작성하였다)

웹서핑을 통해 레퍼런스 코드를 구하였고, 해당 코드를 분석하여 돌아가지 않는 부분들을 수정 추가, 보완작업을 하였다. ( 한 40%는 다 뜯어내고수정한듯 하다.)


메모리 맵 출력 기능 역시 지원하는데, 메모리상에 임의로 매핑, 절대위치에 매핑, 상대위치에 매핑 출력 하는 모든 기능을 다 지원하게 작성하였다.

어셈블링 과정에서의 중간과정역시 표기되며, LINK를 이용한 오브젝트 코드의 연결 역시 지원된다.

한가지 아쉬운 점이라면, 어드레스를 소스코드상에서 다중괄호를 이용한 수식으로 표기하게 되면, 어셈블러가 이를 인식하지 못한다. 이 점을 미리 생각하지 못하여 구현하였던 결과이기도하다.
그 점을 제외하고는 책에 포함된 샘플코드의 대다수가 작동 하였다.

개발환경:
사용된 언어 : Visual C++ 6.0

개발기간:
분석 및 디자인 : 1주
코드 작성 및 테스트 : 2주 + 4일정도

사용자 삽입 이미지

2007-PNU-CSE-SIC.XE-simminjo.rar



유입경로 확인을 해보니 SIC/XE 로 검색해서 들어오신분이 많이들 계신듯한데.....
현재 우리학교의 시스템소프트웨어 과목에서 SIC/XE의 구현은 이제 텀프로젝트 과제로 시행하지 않으므로, .... 내가 작성하였던 소스코드와 데이터 파일을 공개함.
PNU CSE 정기동 교수님이 안하시고, 김길용 교수님은 하시는군요.....몰랐음....

이미 공개해버린거.......다 들고있으면 어차피 똑같이 못낼텐데;......ㅎㅎ

많은 도움이 되길 바래요~!
Visual C++ 6.0에서 컴파일 하시면 잘 될겁니다.

이 소스코드에 대한 그 어떤 문의도 받지 않습니다.

필요하신분은 참조용으로만 사용하시길 바라며, 소스코드자체가 엉성하며 완벽하지않음을 미리 말합니다~!


2010.4.24 추가...

많은 분들이 SIC/XE 어셈블러로 제 블로그에 들리시는걸 알고있습니다.

제가 오픈한 소스코드로 많은 도움 받으셨다면은, 여러분이 얻게된 지식도 블로그를 통해 공유 합시다.  :D

사소한 정보가 모르는이에게 엄청 큰 도움이 될수 있지않을까요? 서로 도움을 주고받다보면 

우리 모두가 고수가 되어있겠죠..??    ^_^

덧...저번학기인가요...PNU CSE 시소 수업텀에 제 소스에 이름만 바꾸어서 제출하신분이 있다는 제보를 받았습니다..
조교가 동기거든요......그러지 맙시다......그러자고 올린 소스가 아니예요..후배님들.....(PNU후배가 아니라면 죄송...)

해피캠퍼스나 이런데에 올려서 껌값 버는거보다...걍 공유하는게 낫지않나요.. 돌이켜보면 개판으로 짠 코드들이니까요...mi 변수, mj 변수 미안해요...

짤땐 의미가 다 있었던 변수들인데 기억이 안나요..

mj변수는 제 이름 이니셜이에요...일종의 시그니쳐 랄까요.... 누가 가져가도 고치기 힘들게 만든 변수인데 이젠 저도 기억이 안나요.....허허허

posted by Sense.J
:
자료구조 첫 숙제가나왔다.

뭐 예전에도 이런거 한번 해볼라고 덤벼본 기억이있어서..생각보다 빨리 ..끝냈지만....

그래도 대략 3시간은 삽질한듯하다...뭐 3시간만에 바로끝냈으니 나름.만족.....

순서에 유의만하면 그리 까다롭진않은거같다..단지 처음에 코드에 손대기가

약간 두려워지는게 조금 있다는거?? 스택을 쓰면 쉽다는사실만 알면

바로 풀리는 문제이기도하다..... 생각의 깊이가 더 깊어진거같아 기쁘다....

다음문제는 멀까 벌써 기대된다...
posted by Sense.J
: