이번에 어셈블리 언어시간에서 배우는 SPARC Assembly Language 과제가 나왔습니다 OTL
학과장님께서 숙제를 내주시면서 쉽긴 해도 하는데에 너무나 짜증이 날 것이라고 합니다. -_-;;
시험기간중에 숙제를 내주는 학과장님의 극강의 센스(그래보았자 변모 교수님보다 심하진 않습니다 캬캬캬 - 나 완전 돌았군-_-;;)
과제는 이것입니다.
과제2 : 스택 메모리 사용 hw2.pdf
과제는 보듯이 C언어로 짜라면 아주 쉽습니다. 다만 Contril-D처리가 좀 그렇지만 -_-;;
C언어로 짜라면 대충 이렇게 짭니다.
그리고나서 꼼수를 쓸려고 했습니다. 앞의 포스팅이 있던 것 처럼 역어셈블 과정을 거쳐서 프로그램 소스를 약간 고칠려고 했습니다.
C언어 코드를 SPARC Assembly Language 로 역 어셈블
그리고 나서 ls 명령어로 stack.s 이 있는지 확인해 봅니다. :D
확인이 되면 stack.s파일을 확인해 봅시다~~~
학과장님께서 숙제를 내주시면서 쉽긴 해도 하는데에 너무나 짜증이 날 것이라고 합니다. -_-;;
시험기간중에 숙제를 내주는 학과장님의 극강의 센스(그래보았자 변모 교수님보다 심하진 않습니다 캬캬캬 - 나 완전 돌았군-_-;;)
과제는 이것입니다.
과제2 : 스택 메모리 사용 hw2.pdf
입력
- 최대 10개까지만 입력된다고 가정한다. 11번째 데이터가 입력되면 무시하고 앞의 10개의 데이터를 사용하여 계산에 들어간다.
- 한 줄에 숫자 하나씩 입력한다.
- 10개가 입력되기 전에 입력과정을 마치려면, control-d를 누른다.
출력
- 입력된 수가 없으면, 전부 0을 출력하면 된다.
- 다음은 입력을 3, 1, 5, -1 순서로 받았을 때 출력이다. "%"는 시스템의 프롬프트이다.
% 3
% 1
% 5
% -1
% ^d
N = 4
sum = 8
mean = 2
레지스터 매핑
- Number of inputs : %l0
- Sum : %i0
- mean : %o3
과제는 보듯이 C언어로 짜라면 아주 쉽습니다. 다만 Contril-D처리가 좀 그렇지만 -_-;;
C언어로 짜라면 대충 이렇게 짭니다.
#include <stdio.h>
main()
{
int stack[10];
int i = 0, sum = 0, mean = 0, var = 0;
while(i < 10)
{
i++;
scanf("%d", &stack[i]);
var = stack[i];
sum = sum + var;
mean = sum / i;
}
printf("N = %d \nsum = %d \nmean = %d\n", i, sum, mean);
}
main()
{
int stack[10];
int i = 0, sum = 0, mean = 0, var = 0;
while(i < 10)
{
i++;
scanf("%d", &stack[i]);
var = stack[i];
sum = sum + var;
mean = sum / i;
}
printf("N = %d \nsum = %d \nmean = %d\n", i, sum, mean);
}
그리고나서 꼼수를 쓸려고 했습니다. 앞의 포스팅이 있던 것 처럼 역어셈블 과정을 거쳐서 프로그램 소스를 약간 고칠려고 했습니다.
C언어 코드를 SPARC Assembly Language 로 역 어셈블
gcc -S stack.c
그리고 나서 ls 명령어로 stack.s 이 있는지 확인해 봅니다. :D
확인이 되면 stack.s파일을 확인해 봅시다~~~
OTL
'컴퓨터' 카테고리의 다른 글
Assembly 과제 완료 (2) | 2006.10.29 |
---|---|
학과 솔라리스 서버의 반란? (5) | 2006.10.17 |
친구의 숙제 도와주다가 (7) | 2006.10.11 |
어머, 배터리 리콜대상이군요. (6) | 2006.10.08 |
후지쯔, 소니 배터리 28만7천개 리콜? (3) | 2006.10.08 |