MIPS 시뮬레이터의 버그

학교에서 컴퓨터구조 수업을 듣는 중입니다.
IA-32(교수님 표현을 빌리자면 걸레-_-) 구조가 아닌 간단한 MIPS 아키텍처에 대해 배우고 있는데 MIPS Instruction set 을 이용해서 간단한 ASM 프로그래밍을 과제로 내주셨기에 어제 열심히 했더랍니다. 시뮬레이터로는 PCSpim 이라고 하는 윈도우즈 기반(이 것부터 잘못일지도 몰라요-_-) 시뮬레이터를 썼습니다. SPIM 은 Unix/Linux 기반의 콘솔 환경에서 사용할 수 있는 도구입니다. PCSpim은 그를 윈도우즈의 GUI 환경으로 만든거구요.

그런데! 아무리해도 원하는대로 답이 안나오는 겁니다!

답이 안나오면 가장 먼저 의심하는건 접니다-_-;; PC는 거짓말을 하지 않잖아요?
이거 뭔가 이상하다고! 컴파일러가 잘못되었다고! 외쳐봐야 나중에 보면 결국 자기 탓이기 마련입니다.

그런데 어제는 아니더군요.(컴파일러는 아니니 그럴 수 있는 건지도 모르겠지만요~ 😉 )
코드를 열심히 들여다보고, 내 능력이 이 거 밖에 안되나~ 한숨도 쉬어보고, 다시 아무리 코드를 들여다보면서 돌려봐도 안되는 겁니다. 난감하더군요.
결국 차례차례 나눠서 한 스텝씩 진행해보았습니다. 자세히 한스텝씩 진행하며 살펴보니 이 PCSpim 이란 놈이 자기 멋대로 Stack Pointer Register 값을 바꿔버리고 있더군요. 그래서 $SP 의 값을 가지고 리턴하는 부분에서 엉뚱한 곳으로 리턴하면서 Exception을 툭툭 뱉어내고 있는 것이었습니다.

사용자 삽입 이미지
jump전의 $SP값

사용자 삽입 이미지
$SP값이 제멋대로 바뀌었다!

그래서 바로 리눅스로 재부팅하고! 우분투의 소스리스트에 있는 SPIM 을 설치하려고 했으나 제대로 동작하지 않길래 소스를 받아다가 소스 컴파일하고 설치를 했죠.

바로 결과가 나오더군요-_-… 아까운 제 3시간은 그렇게 흘러갔습니다. 버젼이 7.3이나 되는 놈이 이럴 줄은 몰랐답니다ㅠㅠ

추가 : 다른 컴퓨터에서는 제대로 돌아가길래 PCSpim을 재설치하고 다시 해보았는데도 안됩니다. 그래서 뭔가 이상하다 생각하고는 Simulator 메뉴의 Settings… 에 있는 옵션들을 건드려보았는데 Delayed Branches 와 Delayed Load를 체크상태로 두면 (제 노트북에서만) 제대로 동작하지 않습니다. 이게 어떤 역할을 하길래 $SP 값을 마구 바꾸는 건지 모르겠네요. 게시판에 질문을 올렸는데 답변이 오면 또 추가하도록 하겠습니다.

저는 정부 문서의 ODF 채용을 지지합니다!

위에 걸린 두개의 배너가 보이시나요?
“정부 문서의 ODF 채용을 지지합니다” 란 문구가 보이시나요? ㅎㅎ(클릭하시면 KLDP의 서명운동 페이지로 이동하실 수 있습니다. 부탁드려요!)

배너를 보시고 ODF 가 무엇인지 궁금하신 분들도 있으실 겁니다. ODF가 무엇인고 하니 “Open Document Format”의 약자입니다. 자세한 것은 여기를 참고해보세요~

간략히 설명드리자면 MS Office나 한글2005와 같은 프로그램에 종속적인 파일 형식이 아닌 모두에게 규격, 구현 방법 등이 공개된 파일 형식을 말합니다. 한글 시리즈의 HWP나 MS Word의 DOC, MS Excel의 XLS 등의 파일 형식은 각각 회사가 비공개하고 있기 때문에 각 파일 형식을 지원하려면 회사와 계약을 한다던지 하는 것을 해야겠죠.(이는 당연히 비용 문제로 이어집니다.)

그러나 파일 형식의 모든 것이 공개되어 있다면 그 파일을 이용하기 위해서 꼭 특정 회사의 프로그램을 사용하지 않고도 그 파일 형식을 지원하는 다른 어떠한 프로그램으로도 이용할 수 있게 되는 것입니다. 자, 그래서! 여기서 말하는 모두에게 공개된 파일 형식이 바로 ODF입니다.

정부문서와 같은 공공 문서는 국민 누구나가 어떠한 제약없이도 사용할 수 있어야 합니다. 그러나 정부 문서가 특정 회사의 프로그램을 이용한다면 정부의 문서를 이용하기 위해서 그 특정 회사의 프로그램(예를 들면 마이크로소프트 오피스나 한글)을 구매하여야 합니다.(지금 한번 오피스나 한글의 가격을 검색해보세요!) 정부문서는 구매할 능력이 없는 사람에게 “못사면 안쓰면 그만 아니오?”라고 할만한 성격의 것이 아닙니다.

그러므로 당연히 정부의 문서들은 공개된 파일 형식인 ODF가 되어야 함이 마땅합니다.

ODF가 되면 기존의 수많은 문서들은 어떻게 할 것인가에 대한 걱정이 앞서신다면, 미래의 일을 다시 한번 곰곰히 생각해보세요. 현재까지의 문서들에 대해서 그런 걱정이 된다면 앞으로 계속 쌓여나갈 문서들 역시 특정 회사에 목매게 되지 않을까요? 이제라도! 더 늦기전에 ODF로 전환하여야 합니다.

ODF는 공개되어 있으므로 어떤 프로그램에서도(MS Office나 한글에서도!) 구현될 수 있습니다. 이는 나중에 어떠한 프로그램으로도 전환할 수 있다는 것을 뜻하며 무료 프로그램이 있다면(!) 비용 부담 없이도 무료로 이용할 수 있음을 뜻합니다. 능력이 된다면 직접 만드셔도 되요! 🙂

여기 제가 말한 것 말고도 정부 문서를 공개 파일 형식인 ODF로 하였을 때 얻을 수 있는(언급한 특정 회사에는 타격이 될 수도 있겠지만) 이익은 수도 없이 많습니다. 국민 모두의 이익이죠!

더 망설일 필요가 무엇입니까? 어서 ODF로 전환하자구요!

서명운동에 동참하시고 싶으시다면 여기를 누르시거나 상단의 배너를 꾸욱 눌러주세요!

SW Engineering – 2007.3.15

Examples of emrgent properties

– Volume
– Reliability
– Security
– Reparibility
– Usability

Type of emergent property

– Finctional properties
   – transportation device
– Non-functional emergent properties

System reliability enginerring

– 컴포넌트의 내부 의존성때문에 오류는 전체 시스템에 퍼진다.
– 컴포넌트만으로 전체 특성을 설명할 수 없다.
– 컴포넌트 관계의 모든 결합을 예측하는 것은 거의 불가능
– Software reliability 측정은 잘못된 System reliability 그림을 보여준다.

Influences of Reliability

– Hardware reliability
   – 하드웨어 고장
   – 고치는 데 걸리는 시간
– Software reliability
   – incorrect output을 발생할 확률
   – hardware failure에 비해 software does not ware out.
   – Bathtub curve(하드웨어 수명)
– Operator reliability
   – 운영자가 에러를 일으킬 확률

Reliability relationships

– Hardware failure can generate spurious signals that are outside the range of inputs expected by the software.
– Software errors -> operator errors.

The ‘shall-not’ properties

– Properties such as performance and reliability can be measured.
다음과 같은 properties 는 should not exhibit even though after integration
– Safety – 에러를 일으켜도 그 영향이 제한된 시스템
– Security – not permit unauthorised use.
– 평가하기 어려운 시스템

SW Engineering – 2007.3.13

Issues of professional responsibility

– Confidentiality
– Competence
– Intellectual property rights
– Computer misuse

ACM/IEEE Code of Ethics(윤리 강령)

1. Public
   SE shall act consistenty with the public interest.
2. Client and Employer
3. Product
   가능한한 표준에 맞춰 개발해야 한다.
4. Judgment
5. Management
6. Profession
7. Colleagues
fair, supportive
8. Self

Ethical dilemmas

What is a system?

System Categories

– Technical computer-based systems.

– Socio-technical systems.

Socio-technical system characteristics

– Emergent properties
– Non-deterministic
   같은 Input에 대해서 늘 같은 Output을 생성해내지 못한다.
– Complex relationships with organizational objectives
   시스템 자체의 요소만 영향을 미치지는 않는다.

Emergent properties

   – 시스템 전체의 특성
   – 컴포넌트간의 관계로서 발생하게 되는 특성
   – 처음 integration 후 평가하고 측정 가능

Examples of emergent properties

   – Volume : 시스템의 배열에 따라 달라진다.
   – Reliability : 하나하나는 Realible할 수 있지만 하나로 integration되었을 때는 서로간의 iinteration에 대해서 영향을 받으므로 전체적으로는 달라질 수 있다.

리눅스 단축키

KLDP 에 리눅스 단축키…란 팁이 올라왔는데 유용할 것 같아 링크합니다.

이 글이 원글인듯 보이는데..

이 글을 보면서 느끼는 것은 워드프레스는 트랙백을 어떻게 하는걸까 하는 점입니다-_-;;;

한국어 맞춤법/문법 검사기

http://urimal.cs.pusan.ac.kr/urimal_new/ 에 가시면 오른쪽에 “한국어 맞춤법/문법 검사기”가 보입니다.
KLDP 에서 오픈오피스용 맞춤법 검사기에 관한 글을 보고 한번 눌러보았는데 꽤나 유용할 것 같아서 링크해 둡니다.

제 블로그의 글들도 한번쯤 돌려봐야겠어요. 애매하던 “몇 몇” 은 붙여쓰는 “몇몇”이 옳은 표현이라는 군요.

또 다른 네이트온 클론

제가 얼마전에 글올렸던 자테온과 Gaim 플러그인 외에 또다른 네이트온 플러그인이 있었네요!

여기에 가시면 보실 수 있습니다.

제작자는 맥사용자로 보입니다. SK에서 네이트온 서비스를 MS윈도우즈만 지원하기 때문에 맥 사용자들도 여러가지 불편을 겪었겠지요.

자테온과 같은 자바 기반의 애플리케이션인데 아직 자테온이 구현하지 못한 파일 수신(아직은 버그가 있는 듯 보입니다만) 기능도 구현되어 있는 듯 합니다. 멋지군요!

오픈소스?

개인적으로 오픈소스에 관심이 많습니다.
개발자라면 공개된 소스에 관심이 많은 것은 당연하겠죠.
저 역시 오픈 소스 커미터가 되었으면 하는 막연한 생각은 합니다. 일단 멋지지 않은가요? 😉

오픈 소스 애플리케이션을 쓰면서 소스코드에 주목하지 않는 것은 저 역시 마찬가지 입니다. 다만 뭔가 불편한 사항이 생겼을 때, 그리고 시간적 여유가 있을 때는 조금 다르죠.
오픈 소스 애플리케이션을 사용하다가 불편한 것이 있다면, 그리고 능력이 허락된다면, “에이~ 왜 이거 안돼!” 하면서 소스코드를 보면서 고쳐볼 수 있습니다.
제가 해본 유일한 경험은 우분투를 사용하면서 FTP 클라이언트인 gftp 프로그램의 파일이름의 원격인코딩이 제대로 적용되지 않는 것을 보고 gftp의 소스코드를 제맘대로 수정해서 원격인코딩을 구현해 본 것 뿐입니다.(나중에야 안 것이지만 비슷한 기능을 gftp 메일링 리스트에서 중국인이 패치한 것이 있다고 하더군요. 그래도 제 패치가 더 좋습니다. 😛 전 Upload & Download 시에도 원격 인코딩 설정에 맞춰서 파일이름을 변경하게 했거든요. 패치를 원 개발자에게 이메일로 보내긴 했습니다만, 코드의 품질 탓일까요? 반영되진 않는 것 같군요;;)

윗 글에서는 오픈 소스 커미터가 되어 보자고 권장하고 있습니다. 전체적인 질을 높이자는 것이죠. 찬성합니다! 저 역시 제 시간이 허락하는 한도 내에서 그렇게 하고 싶고, 막연히 생각하고 희망하는 “오픈 소스의 발전”에도 도움이 될 것 같아서 말이죠.(받은 만큼 돌려준다. 제 기본적인 마인드입니다.)

결론은 리눅스 또는 소프트웨어 개발에 관심이 있는 분들이라면 오픈 소스에 참여해 보시기를 저 역시 권하고 싶습니다.(일단 저부터 해야겠지만요; )

p.s : 윗 글의 제목과 글을 보았을 때 제목에서 나오는 오픈소스 코드가 가지는 의미는 없다는 것으로 오해할 만 하군요; 이에 관해서 KLDP 에 권순선님이 트랙백 하신 글에 달린 원 글 주인의 댓글을 인용합니다.

오픈소스코드 활용의 자유가 얼마나 큰 의미가 있고 중요하다는 것은 충분히 잘 알고 있습니다. 고객이나 주변 사람들에게 항상
그런 얘기를 하고 더 나아가 코드의 활용을 통해서 얻을 수 있는 가치가 얼마나 큰지에 대해서도 자주 강조하는 편입니다. 작년엔
마소에 “오픈소스의 소스코드는 개발자를 위한 숨겨진 보물이다”라는 내용의 글을 쓰기도 했습니다.

하지만 그런 얘기들이 점점 공허하게 느껴졌습니다.

오픈소스 제품의 사용자(많은 개발자들은 라이브러리나 프레임워크의 사용자입니다)들은 점점 자신이 사용하는 것이 오픈소스라는
것에 의미를 두지 않습니다. 소스코드의 존재여부 자체에 관심도 없습니다. Free/OSS라고 하면 대부분 “공짜”라는 것에만
관심을 둡니다.

반대로 소스코드가 뭔가 대단한 것을 줄 것이라는 환상에 빠져있는 사람도 많습니다.

의미라는 것은 결국 어떤 것이 가지는 “가치”라는 뜻입니다. 저는 의의(significance)가 없다고 한 것이 아니라
개개인에게 현실적인 의미(meaning)나 가치(value)가 없다고 얘기한 것입니다. 현실적으로 각종 차별이 견고하게 존재하는
한국에서 “평등”이라는 헌법조항이 무슨 의미가 있냐고 항변하는 것과 마찬가지 입니다. 물론 그 평등조항이 있기 때문에 넓게 보면
얼마나 큰 혜택을 받는지 알 수 있겠죠. 하지만 그것이 존재의미가 있다고 해서 현실에서 차별당하는 사람에게 “헌법에는 평등권이
있어”라고 얘기해주는 것이 현실적으로 무슨 유익이 있겠냐는 것입니다.

물론 극히 좁은 시각과 제한된 관점에서 나온 발언인 것은 인정합니다. 제 최근의 경험 때문에 그런 말을 꺼낼 수 밖에
없었습니다. 소스코드에 대해서 막연한 환상을 가지고 있다가 나중엔 그 존재 의미조차 부정할지도 모르는 사람들에게 좀 더
“현실적”이 되자는 얘기였습니다.

그리고 진정한 그 존재 의미를 이해하고 그 가치를 누리며 적극적으로 활용하는 소수의 사람들이 있겠죠. 그들을 무시한 것은 절대 아니기에 저는 이 포스트의 제목에 고쳐 쓰신 것처럼 “아무” 의미가 없다라고는 하지 않았습니다.

마지막으로 오픈소스의 소스코드는 저한테는 개인적으로는 큰 의미가 있습니다. 저는 그 가치를 충분히 누리고 있고 그 점에
대해서 항상 감사하게 생각하고 있습니다. 하지만 이제는 다른 사람에게 그렇게 너도 하라고 “강요”할 욕심은 버렸습니다.

C 코드 최적화에 관한 글

C 코드 최적화

ARM 기반의 C 코드 최적화에 대해서 다루었다고 합니다.
저 개인적으로는 회사에서 했었던 프로젝트에 적용했던 것들이 몇 개 눈에 띄네요.
17번 같은 경우는 정말 독특하군요~ 저런 방법이 있을 줄이야!
나머지들도 특정 상황에서는 꽤 도움이 될 듯 싶어 블로그에 남겨둡니다.

관심있으신 분들은 한 번쯤 읽어보세요~!
답글에 오하라 님이 남겨주신 글도 꼭 한번 봐야겠군요. 🙂