via Ego君의 인터넷놀이터
SPARC Assembly programming 하다가

이번에 Asssembly과제를 2시간 만에 다하였다.

예전에 썼던 글 처럼 단순히 0!부터 10!까지 보여주는 C언어 코드
#include <stdio.h>
main() {
int i = 0, temp = 1;
while (i <= 10) {
printf("%d! = %d\n",i++, temp);
temp *= i;}}
를 역 어셈블리 명령어를 쳐서 쉽게 숙제하려고 하였다. 그러나 괴상망측한 코드가 나와서 OTL
관련 포스팅 : SPARC Assembly programming 하다가
엄청난 nop의 압뷁에다 이해할수 없는 명령어가 -_-;;

SPARC Architecture, Assembly Language Programming, and C란 책을 보면서 50분동안 고민했더니..

머릿속에서 코드가 나왔습니다. (자료구조 숙제할때 머릿속에서 코드가 나왔으면 좋겠는데 말이다.)

Linux로 부팅하여 (지금 이 글을 쓰는 시점에서 Windows XP를 다시 깔아아 하므로 -_-;;) 과제를 금방 뚝딱 다해버렸다.

이번 숙제는 워밍업이라고 할까나 좀 쉬었다. 단지 곱하기할때 쓰는 명령어
call .mul
와 printf를 쓸때 쓰는 명령어
set fmt, %o0
mov %lo, %o1
mov %l1, %o2
call printf
쓸때 레지스터에 있는 서브루틴으로 보내는 %oX 명령어만 써야 한다는 것 때문에 짜증이 났다만
그리고 nop명령어 없애는 것도 좀 힘들었다.

지금 현제 nop명령어를 많이 지웠다.

(여기서 적은 Assembly Code는 SUN사의 SPARC Machine에서 쓰는 것입니다. IBM 8051 Assembly가 아님에 유의)


자자 숙제를 다하고 확인까지 다해서 제출을 하려고 다시 gcc로 컴파일 하려는데 -_-;;
[10/03(화) 04:46 cea5XXX@sol1] ~/assem/hw1$ gcc -g hw1.s -o hw1
Undefined first referenced
symbol in file
test /var/tmp//ccnLGgNA.o
ld: fatal: Symbol referencing errors. No output written to hw1
collect2: ld returned 1 exit status
[10/03(화) 04:46 cea5XXX@sol1] ~/assem/hw1$

이런게 왜 나오나 ㅠ_ㅠ

이거 해결하는 방법은 제가 Label을 잘못 설정했기 때문입니다.
왜 내 실수를 인정안하고 컴퓨터 탓으로 돌리다니 노트북이 약간 맛이 가서 그런지 그 여파로 서버 탓을 한 것 같습니다.

참 컴퓨터가 숙제하는 것을 다 막습니다. Windows XP 날려먹어서 그동안 했던 숙제 다시 하고 있고 SUN Solaris에 gcc는 사람 속터지게 하고 -_-;;


지금 제 상태는



젠장 -_-;;
Buy me a coffeeBuy me a coffee

+ Recent posts