'분류 전체보기'에 해당되는 글 97건
- 2017.06.13 :: cure.exe 소스공개( gcc버전으로 리뉴얼 ) 2
- 2015.07.21 :: 컴파일러 NCC 최종소스
- 2014.05.13 :: DirectFB 시작
- 2013.10.20 :: Smi Parser 70% 정도?
- 2013.09.17 :: 간만에 거대 프로젝트 시작...... 1
- 2013.08.14 :: 백만년 만에 들린 프갤...재미나네..
- 2013.08.13 :: 심플 웹서버 2
- 2013.07.24 :: JVM INTERNAL 2
- 2013.06.14 :: 안드로이드 앱을 필요에 의해 개발하면서... 2
- 2013.03.10 :: SHIMOS 시작.
인터넷에 떠도는 Cure GCC버전( Windows 용 ) 소스입니다.
인터넷에 하도 떠돌며 사라지질 않길래, 이게 뭐라고........
그냥 소스 당시 로직 거의 그대로 새로 짜서 공개합니다.
원래 코드는 turbo C 로 작성하였었습니다만..... 시대도 변했고 gcc를 개인적으로 좋아하는지라 gcc버전으로 작성했습니다.
( gcc cure.c -o cure.exe )
적당한 재귀호출 이랑 API사용법 외에는 별 내용이 없습니다.
재미삼아 보세요.
atrrib -h -s *.* 과 같은 스크립팅으로도 가능하지만, 당시 전산실에서는 path설정이 풀려서 해당 커맨드가 잘 먹질 않아서 굳이 30분 코딩해서 바이너리로 만들었던 기억이 납니다.
코드에 대한 퀄리티 지적은 사절합니다.
코딩을 거의 하지 않거든요.
부산대학교 컴퓨터공학과 권혁철 교수님의
컴파일러 수업에 제출했던 최종 텀 프로젝트 소스입니다.
2009년 제출된 소스입니다
당시 성공한 조가 몇 없었으며, 실기는 최상위권 레벨이었던걸로 기억합니다.
masm을 이용하며, exe파일을 생성합니다.
코드는 순수 직접 다 작성하였습니다.
가져다 써서 본인이 만든 척 하다 걸리시면.....가만있지 않겠습니다.
( 이전에 그런 경우를 봤거든요.... )
아래의 심플한 수준의 c문법을 지원합니다.
[지원기능]
printf
함수호출
조건문( if , else )
변수 선언
for루프
while루프
break
continue
사칙연산, 나머지연산
컴파일 에러시에 라인번호 별로 에러 내용 출력 및 에러코드 출력
일부 코드 최적화기능( 간단한것들 몇개 )
[이름]
NCC ( Ncc is not a C Compiler : 그냥 외국인들이 좋아하는 회귀문 장난질로 이름 지었습니다. )
졸업한지 오래되기도 했거니와, pc에 저장해놓다가 날려먹을까봐 블로그에 백업삼아 올립니다.
코드가 개 난장판 입니다.
대략 2주만에 완성한 코드이니 감안해주시길 바라며, 필요하신분은 참조하시기 바랍니다.
[참고한자료]
asmrt 라이브러리 ( 각종 crt관련 기능을 가져다썼습니다 )
c언어 문법정의 ( 옛날 버젼이며, 인터넷에 돌아다니는 표준 정의파일을 사용하엿습니다. )
그외 참고한 책은 용이 불뿜고 있는 책, 외국 대학들의 강의 자료 파일을 참고하였습니다. ( intermidiate opcode 생성을 위해 스터디 하였습니다. )
[주의]
1. 과제 제출용도로 그대로 쓰다가 적발되시면 강한 대응 하겠습니다.
2. 가져 가실때에는 댓글이나 방명록에 글을 남겨주세요.
3. 이 자료를 참조하신경우라면 가져가신 분의 고민의 결과도 본인의 블로그에 공유해주세요.( 공유정신 )
[참고]
gcc, g++, bison, flex 가 필요하오니 알아서 설치해서 돌려보세요.
윈도우즈에서 작성되고 빌드 하였던 코드입니다.( windows7 )
PNU CSE 2009 Compiler( 03 심민조, 김호철 ).zip
우분투에서 directFB 예제 빌드 및 실행방법
root 권한으로 apt-get install directfb* 로 DirectFB관련 라이브러리 및 소스 설치
//----------------------------------------------------
//소스 파일명 : a.c
//----------------------------------------------------
#include <stdio.h>
#include <unistd.h>
#include <directfb.h>
// entry point
static IDirectFB *g_pDirectFb = NULL;
// primary surface
static IDirectFBSurface *g_pPrimarySurface = NULL;
static int nScreenWidth = 0;
static int nScreenHeight = 0;
/*
* An error checking macro for a call to DirectFB.
* It is suitable for very simple apllications or tutorials.
* In more sophisticated applications this general error checking should not be used.
*/
#define DFBCHECK(x...) \
{ \
DFBResult err = x; \
\
if (err != DFB_OK) \
{ \
fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ ); \
DirectFBErrorFatal( #x, err ); \
} \
}
int main(int argc, char **argv)
{
// create surface description
DFBSurfaceDescription dsc;
DFBCHECK( DirectFBInit(&argc, &argv) );
// create super interface.
DFBCHECK( DirectFBCreate(&g_pDirectFb) );
DFBCHECK( g_pDirectFb->SetCooperativeLevel(g_pDirectFb, DFSCL_FULLSCREEN) );
// set flags
dsc.flags = DSDESC_CAPS;
dsc.caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING;
// create surface
DFBCHECK ( g_pDirectFb->CreateSurface(g_pDirectFb, &dsc, &g_pPrimarySurface) );
// get surface size
DFBCHECK ( g_pPrimarySurface->GetSize(g_pPrimarySurface, &nScreenWidth, &nScreenHeight) );
printf("Width: %d, Height: %d\n", nScreenWidth, nScreenHeight);
// clear surface
DFBCHECK ( g_pPrimarySurface->FillRectangle (g_pPrimarySurface, 0, 0, nScreenWidth, nScreenHeight) );
// set surface color
DFBCHECK ( g_pPrimarySurface->SetColor(g_pPrimarySurface, 0xff, 0x00, 0x00, 0xff) );
printf("Draw Rectangle\n");
// draw rectangle
DFBCHECK ( g_pPrimarySurface->FillRectangle (g_pPrimarySurface, 100, 100, 440, 280) );
printf("Update Surface\n");
// update surface
DFBCHECK ( g_pPrimarySurface->Flip(g_pPrimarySurface, NULL, 0) );
sleep(5);
// clean up
g_pPrimarySurface->Release( g_pPrimarySurface );
g_pDirectFb->Release( g_pDirectFb );
return 0;
}
-------------------------------
~/.directfbrc 내용 생성
-------------------------------
mode=640x480 system=x11
[ 빌드방법 ]
gcc a.c -I/usr/include/directfb -ldirectfb
이후 실행 확인.
끝.
smi parser alpha 버젼의 class 데모테스트
통합자막 잘 인식된다...
내부적으로는 리스트를 따로관리하게 되어있고......필요한 메소드들
좀더 생각해서 구조화해서 리팩토링 하고나서 공개해야겠다......
만들기 귀찮으면 누군가 갖다쓰겠지? 일단 내가 필요한곳에 좀 쓰고.ㅋㅋㅋㅋ
Mr. Choi와 하는 프로젝트는 개별로 하고......
개인 프로젝트로 Android FFmpeg Player.......뭐 이미 좋은거 많다만은.......
나는 뭐 그렇네.....
내 넥서스7(2013)에서 내가 영화 볼려니 내가 필요한것만 뙇 있으면되는디....
부가옵션이 너무 많으네....
딱 심플하게 폰트 정도만 세팅하면 누구나 쓸수있게 하나 만들어야 쓰것어......
ffmpeg, smi parser, CC demuxer, Renderer, yuv to rgb convertor, audio player 등.......
만들어야할 코드가 어마어마 하구만................
하나하나 하면 되것제?
누가 똥을 언제 던질지 모른다
그러므로 우린 그 똥을 피하기 위해 방어코딩 해야된다.
와.......진짜 명언이네....
물론....나도........똥을 좀 많이 던졌겠지만...이젠 안 던지도록 노력해야겠네.
심플한 웹서버를 구현해 보았다. 간단하다.
http request에 대해서 정해진 response를 통해 웹브라우저에 텍스트를 출력하게 한다.
물론 심플예제지만, 해당 부분을 잘 수정하면 하이브리드 앱을 구현하기 위한 인터페이스로서의 역할도 할수 있을것도 같고......
간단한 웹웹 개발시에 외부와의 통신을 위한 중간개체로서의 역할도 할수있을것만 같다.
소스를 첨부한다.
VS2012에서 빌드를 확인 하였으며, 해당 코드 빌드이후 실행
웹브라우저에서 http://localhost라고 치면 결과를 확인할 수 있다.
귀찮은 스트링 처리하는 클래스만 붙이고, STL 조금 사용하면 DB없이도 웹 중개가능한 웹서버를 만들 수 있을 것 같다. ( 물론 보안은 취약하겠지....... )
그냥 이래저래 밑바닥을 직접 만들고 싶은 마음이랄까......
( 캐슁 처리 및 자잘한 예외처리 추가)
개인적으로 네이버 웹툰을 매우 즐겨본다.
내 핸드폰 기종은 프라다3.0 이다.
이 폰에서 (ics 4.04) 네이버웹툰앱을 동작시키면 매우 느리다.
이유는 모르겠다..gpu강제 가속을 켜게되면 동작속도가 꽤 개선되지만, 이미지편집앱, 지하철 앱이 충돌나서 켤수가없다.
왜그렇게 만들었는지 모르겠지만....만화를 볼때의 그 긴장감과 다음장면을 빨리 보고싶어하는 독자로써 참맛(?)을 느끼는것에 있어서는 매우 거슬린다.....
뭐 기능이 많고 UI를 꾸미느라 느린거지 싶다.
개인개발자들이 만든 만화뷰어들도 다운로드 받아 써 보았으나,
이런저런 꾸밈을 하느라 반응속도다 더뎠다.
(그중에는 그나마 꽤 괜찮은 앱들도 있었다. 기능도 많고 성능도 좋고....단지 내가 만족하는 그 반응속도가 안나왔을 뿐이다.)
안드로이드 안자도 모르는 내가 답답해서, 책 찾아가며 웹서핑해가며 직접 코디을 해보니....이해가 되질않는다.....왜 느리게 짠건지..
전반적으로 처음에 그냥 작성해서 돌려보아도.....빠르고...최적화해서 짜니까 더 빨랐다.
개인적으로는 프로그램을 짤때는 기능성과 동작과 관련되어 가볍게 동작해야 한다고 생각한다.
무겁다면 그사람의 로직 혹은 코딩 테크닉에 문제가 있는 것이다.
조금 더 가볍게 할 수 없을까? 이 기법이 문제가 있는 것인가? 라는 고민을 계속 되뇌이며 작성할 필요가 있을듯 하다.
요즘은 누구나 모바일 앱을 개발하지만 좀....공부를 좀 하고 만들면 좋지않을까 싶다........
진입장벽이 낮은것도 좋지만, 너무 낮음으로 인해서 구현측면에서의 퀄리티가 떨어지는 점은.....참 그렇다..내가 만든것도 잘만든건 아니지만....고작 4일 공부해서 만든게 퍼포먼스가 잘 나올정도라면.....이건 좀.......;
앱을 만드는 api를 공부하는게 중요한건지 사실 난 잘 모르겠다.
단지 기초가 충실해서 무언가를 구현해도 차근차근 고려하는 사고가 필요한데, 요즘은 그런 개발자가 줄어드는거같다......컴공출신들만봐도.....뭐.....기초보다는 눈에보이는 모바일에 관심을 더 갖는 친구들이 많으니까.......대세가 그렇다는건 어쩔수가없지..
안드로이드 마켓의 앱 퀄리티가 구리다는걸 보면서 느낀 주저리.......(내것도 물론 구리다..........ㅎㅎ)
준비하던 작업을 이제서야 시작하게 됐다.
일단 부트로더 부분부터...실제 커널 이미지가 없어서 무한대기상태이지만..
로딩 메시지 출력까지 됐다!
하나하나 올려야지~!