임베디드 프로그래밍 책에서 "Hello World!"를 출력하는 Intel 어셈블리 언어가 있어서 Test를 해봤습니다.
Test용 Machine은 학과 서버 -_-;;
Intel Assembly는 학과 linux서버로, SPARC Assembly는 학과 Solaris 서버로 했습니다.

우선 C언어로 간단하게 짠 "Hello World!" 소스입니다. (gcc에서 C99 표준에 안 맞다고 난리칩니다 -_-;;)


다음은 Intel Assembly로 짠 "Hello World!" 소스입니다.


다음은 SUN사의 SPARC Architecture상에서 SPARC Assembly로 짠 "Hello World!" 소스입니다.


소스들을 보니 학과장님의 선택이 옮다는 것을 보여줍니다. 다른 학교에서는 안배우는 SPARC Assembly를 배운다고 투덜거렸는데.. Intel Assembly는 SPARC보다 더 복잡하군요 @.@

이것이 CISC과 RISC의 차이러나?
SPARC Assembly가 아주 쉽게 느껴지네요. 처음에 Intel Assembly로 배우다간 힘들게 배울듯 하군요.

Intel Assembly는 Stack를 이용해서 push, pop을 계속 해줘야 하니 프로그램이 복잡해지면 프로그램 짜다가 언제 push, pop할지 헷갈리네요.
SPARC Assebly는 RISC방식에 Condition Code를 쓴 delay branch를 하다가, pipe line에서 어떻게하면 no operatoin을 줄일까 고민을 하는데 반해, type에 따라 alignment를 꼭꼭 맞춰줘야 하니 메모리의 낭비가 있다는 단점이 있습니다.

프로그래밍 하면서 느낀 것은 SPARC Assembly로 공부한것이 다행이었다(?)
Buy me a coffeeBuy me a coffee
  1. Favicon of http://minjang.egloos.com BlogIcon object 2006.12.23 09:33

    흠.. 간단하게 부연하자면 인텔도 CISC 형태를 띠지만 내부는 RISC적으로 처리가 됩니다. 즉, CISC x86 명령 하나가 여러개의 RISC 마이크로 오퍼레이션으로 쪼개져서 처리가 됩니다. 그러니까 ISA 레벨에서나 차이가 있지 그렇게 RISC/CISC 차이가 있는 것은 아닙니다.

    그리고 x86도 당연히 data alignment가 있으며 mis-aligned data를 읽을 때는 오버헤드가 큽니다. Alignment 때문에 메모리 낭비가 있을 수가 있지만 그것이 단점이라고는 생각하지 않습니다.

    x86은 ISA에서 지원되는 레지스터의 개수가 8개 밖에 안되는 것이 가장 단점이죠. 물론 CPU 내에서는 수십개의 실제 레지스터로 매핑이 되어 처리가 됩니다만~

  2. Favicon of http://SBforlorn.egloos.com BlogIcon 설화가람 2006.12.23 20:26

    ...DOS같은데
    저거 하다보면 참 글자만 나오니까 위화감이 든다는 ㄱ-;;;

    • ㅎㅎㅎ 2010.09.10 10:01

      도스가 아니라 리눅스입니다..

  3. Favicon of http://romancia.egloos.com BlogIcon 레이 2006.12.23 23:06

    문제는 SPARC은 도움받을데가 없다는거죠. (...)

  4. Favicon of http://dirox.egloos.com BlogIcon 역설 2006.12.23 23:59

    세상아 안녕! (.......

  5. Favicon of http://neutrino37.egloos.com BlogIcon 무한검제 2006.12.24 21:27

    인텔을 먼저 배운 저에겐 SPARC가 어려워 보이는..^^;

  6. Favicon of http://cloudree.egloos.com BlogIcon 클랴 2006.12.24 23:47

    Z80을 먼저 배운 저에겐 다 어려워 보이는..^^;

+ Recent posts