정태영

지난 주에는 SoC 아카데미에 잡혀있어야 했는데, 인터넷도 안되고 깔려있는 프로그램도 몇 가지 없어서 너무너무 심심하더군요. 흑;; 결국 지뢰찾기에 매진하게 되었고, 달인의 경지에 오를려는 찰나! ‘이 정도는 나도 만들 수 있겠다!’ 란 생각이 들었습니다.

바로 Visual Studio 를 실행시키고 -_-; 한 두 시간 정도 뚝딱뚝딱 거린 끝에 결국 콘솔용 지뢰찾기를 완성하기에 이르렀습니다. GUI 버젼으로도 만들어볼까 하는 생각이 있어서 게임 코어와 인터렉션 부분을 분리시켜 놓기는 했는데 구차니즘 말기인 요새 상황으로 볼때 GUI 버젼이 정말 나올까 하는 걱정이 조금 –;;

코드는 아래 url 로 가시면 볼 수 있고, Visual Studio 와 gcc (linux/Windows) 에서 정상적으로 컴파일되는 것을 확인했습니다. :) standard c function 을 제외하곤 별 다르게 사용한 게 없어서 아마 다른 플랫폼에서도 잘 실행될거라 생각합니다.

http://trac.unfix.net/browser/snippet/console_mine

p.s) 콘솔에 찍기에는 9×9 사이즈 이상은 너무나도 커져버려서 사이즈를 고정해놨는데 gui 로 옮기게 되면 저 부분에 관련해서 좀 업데이트를 해야겠네요.

정태영

어제 술을 꽤 많이 마신데다가 아침에 일이 있어서 잠을 좀 못잤더니 머리가 아프다.

데스크탑은 여전히 화면이 나오질 않고, A/S 를 받기 위해선 메인보드를 들어내야 할 것 같은데 너무나도 귀찮다. 내가 왜 이런 짓을 해야하는 생각이 들었고, 데스크탑 관련된 것들을 전부 팔아버리고 15인치급 x86 노트북을 사서 쓸까 하는 생각까지 들고 있다. 연구실 형 한 명이 맥북 프로를 사신 관계로 요새 간간히 맥북 프로를 구경해보고 있는데 역시나 매력적이다.

문제는 그걸 지를만한 여유자금이 있지는 않다는 거…

동기들 중에 벌써 컨퍼런스에 낼 논문을 쓰고 있는 사람들이 나오기 시작했다. 난 아직 실험도 채 다 못했는데… 정확하겐 아이디어 검증조차 –;;

왠지 뒤쳐지고 있는 것 같아서 조급해진다.

HCI 수업에서 벌써 과제가 하나 나왔다. 이미지를 읽어서 특정 각도만큼 돌리는 프로그램을 작성하는 것등 3D rotation 과 관련된 것들인데, 오랫만에 코드를 짜보니 재밌다. 물론 짜야했던 코드 양이 많지 않았고 (7줄 남짓; ) 에러 없이 한 번에 구현을 성공해서 더 재밌었는지도 모르겠다. 한동안 프로그래밍과 멀어져 있었는데 아직 녹슬지는 않은 거 같아서 다행이다.

임베디드 소프트웨어 수업과 내장형 시스템 수업에서는 ARM 의 conditional execution[1] 과 관련된 내용을 들었는데, 참 흥미롭다. Computer Architecture 상에서 Conditional branch 가 일어나게 되면 pipeline hazard 가 발생하게 되고, 실제 성능에 큰 악영향을 끼치게 되는데 conditional execution 을 통해 분기를 줄이는 동시에 더 적은 양의 코드로 똑같은 동작을 수행할 수 있도록 만드는 기법이 참 재밌어 보인다.

그 외에도 Havard Architecure 와 폰노이만 아키텍쳐의 차이 등 어설프게 알고 있던 내용들이 좀 정리되는 것 같어서 나름 재밌다. 컴퓨터 아키텍쳐에 관한 내 짧은 지식을 가지고 상상해봤던 내용들이 실제 구현되어 있는 것들과 나름 비슷하다는 사실이 너무나도 신기하다. 이 쪽으로 전공을 했어도 재밌었을 거 같다는 생각이 들기 시작한다.

그나저나 내장형 시스템이랑 임베디드 소프트웨어 이 두 과목이 모두 ARM 수업이다 보니 내용이 많이 겹친다. 월요일에 듣고 수요일에 리뷰 받는 기분이랄까 -_-; 뭐 엄한 시간표를 짠 대신 약간의 보상이라고 생각해야겠다.

그냥 심심해서 잡담겸 포스트… 오늘의 수다 끝!!!

[1] Conditional execution 의 예를 들어보면 아래와 같음.
pseudo code:
if( R0 == 0 ) R1 = 1; else R2 = 2;   Re=3;

Without conditional execution
cmp r0, 0 jnz IDX_ELSE mov r1, #1 jmp IDX_END IDX_ELSE: mov r2, #2 IDX_END: mov r3, #3

With conditional execution
cmp r0,0 movz r1, #1 movnz r2, #2 mov r3, #3