via Ego君의 인터넷놀이터
SPARC Assembly programming 하다가
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;}}
를 역 어셈블리 명령어를 쳐서 쉽게 숙제하려고 하였다. 그러나 괴상망측한 코드가 나와서 OTLmain() {
int i = 0, temp = 1;
while (i <= 10) {
printf("%d! = %d\n",i++, temp);
temp *= i;}}
관련 포스팅 : 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 명령어만 써야 한다는 것 때문에 짜증이 났다만mov %lo, %o1
mov %l1, %o2
call printf
그리고 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$
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는 사람 속터지게 하고 -_-;;
지금 제 상태는
젠장 -_-;;
'컴퓨터' 카테고리의 다른 글
어머, 배터리 리콜대상이군요. (6) | 2006.10.08 |
---|---|
후지쯔, 소니 배터리 28만7천개 리콜? (3) | 2006.10.08 |
printf도 엄청나게 큰 프로그램??? (8) | 2006.09.26 |
SPARC Assembly programming 하다가 (6) | 2006.09.26 |
오버라이딩과 오버로딩 (1) | 2006.08.15 |