임베디드 프로그래밍 책에서 "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로 공부한것이 다행이었다(?)