컴공 일기205
게시글 주소: https://orbi.kr/00059933475
어셈블리어 과제 해결. 약 9시간 걸리지 않았나 한다. 컴파일러가 알아서 처리하던 흐름과 분기를 직접적으로 따져가면서 코드를 짰기 때문에. 그 과정에서 말도 안 되는 실수도 범했고, 빙빙 돌아간 감각도 없지 않아 있지만, 무엇보다 재미있었다. 9시간 동안 공을 들여서, 성과와 성취를 만들어 낸다는 것. 내가 코딩과 컴공, 그리고 공학을 사랑하는 가장 원초적인 이유일 게다.
1. 100이하의 자연수 내, 12개의 난수(RandomNumber) 생성.
2. 3 by 4 Matrix에 해당 난수값 저장.
3. 이중반복문을 토대로, 12개의 값들 중 최댓값 특정.
4. 최댓값을 printf 함수로 출력.
걸핏보면, 상당히 간단한 과정이다. C언어로 짜봐도, 파이썬으로 짜봐도.. 길어봐야 50라인을 넘기지 못하겠지.
그런데, 이 4가지의 절차를 어셈블리어로 표기한다면 시간이 생각보다 많이 걸린다. 교수께서 subroutine을 요구하셨기 때문에 매개변수에 대한 부분, 함수 호출 부분, 그리고 분기 제어 부분이 문제가 된다는 것이다.
이 모든 것은 원래 "컴파일러가 알아서 잘 처리"해주지만, 어셈블리는 그런 것 없다. 그냥 맨땅에, 내 손으로 하드웨어에 명령하는 수밖에 없는 것이다.
num_s = -48
.text
.global main
main: save %sp, -152, %sp
ba outer_test
mov 0, %l0
inner:
call rand
nop
mov %o0, %l2
mov %l2, %o0
mov 100, %o1
call .urem
nop
mov %o0, %l2
sll %l0, 2, %o0
add %o0, %l1, %o0
sll %o0, 2, %o0
add %fp, %o0, %o0
st %l2, [%o0 + num_s]
ld [%o0 + num_s], %l3
set str, %o0
mov %l3, %o1
call printf
nop
inner_inc : add %l1, 1, %l1
inner_test :
cmp %l1, 4
bl inner
nop
outer_inc :
add %l0, 1, %l0
outer_test :
cmp %l0, 3
bl,a inner_test
mov 0, %l1
nop
add %fp, num_s, %o0
call max
nop
mov %o0, %o1
set str2, %o0
call printf
nop
max :
save %sp, -152, %sp
mov 12, %l2
ld [%i0], %l1 ! min : %l1 초기화
ba fortest
mov 1, %l0
for :
sll %l0, 2, %o0
add %i0, %o0, %o0
ld [%o0], %o0
cmp %o0, %l1
ble keep
nop
mov %o0, %l1
keep: add %l0, 1, %l0
fortest:
cmp %l0, %l2
bl for
nop
mov %l1, %i0
ret
restore
.data
str: .asciz "value = %d\n"
str2: .asciz "maximum = %d\n"
.align 8
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
얼버기했지만 3
더자야겠다... 공부때려쳐
-
지금까지 좋아했던 사람들 보면 다 비슷한 결이네 갠적으로 외모도 외모지만 지적이고...
-
여기 있는 애들 그거 할 시간에 공부해야돼
-
오늘 할 일 0
오전 과외 중간고사 공부 EBS 고전시가 3회독 시작
-
사람들 많을때 하나하나 꺼내야지 재밌다 히히 건전한 토론 좋아요 철학자들만 이런...
-
그동안 공.떡 앱이랑 사이트 여러개 쓰면서.. 나름 어디가 좋았는지 정리해 볼 겸...
-
국어에서 배운거 토론할 때 사용하는거 엄청 좋은거 같음 8
예를들어 A는 B다라는 명제를 반박하는 빙법 중에 A자체가 참이 아니다라고 반박하는...
-
안녕하세요 0
감사합니다
-
가즈아!!!
-
iq 100인 사람도 정시로 의대 가는데 공부가 왜 재능임? 공부에서의 재능은...
-
얼버기 3
-
오늘 할 것. 2
중학 영단어 500개 읽기 나비효과 5~14강 까지 보기. 항상 그랬듯 인강 쌤들은...
-
얼버기 2
-
난 06이고 과외쌤은 00 공부하다보니까 쌤한테 호감도 생기고 막 그래 ㅠ 뭔가 더...
-
김치나베우동 할때 나베가 냄비였구나
-
안녕하세요 배고픔에 굶주려있는 정시러입니다. 일단 어그로 죄송합니다 여러분의 작은...
-
프사확인용 0
ㅇㅇ
-
얼버기 0
좀 늦게출발
-
닉변함 0
킥킥킥
-
왜 자꾸 운행대기래..! 죽고시퍼?
-
궁금한것이애요
-
얼버기 2
사실 까먹고 지금 씀
-
조금이라도 보이면 정상 오른쪽처럼 되면 폐,심장 질환있을수도있음 보닌 16살때부터...
-
고1, 고2때 놀아버려 수학 개념이 없는상태인데 학교에선 수1수2 문제 풀고 있고...
-
일주일에 휴일이 두 개지요.
-
이러면 안되는데 아
-
하야크 집으로!
-
뇌는 굳어버렸고 성격은 망가져버린지 오래인듯
-
하는 사람이 있긴 한가요??
-
그때로 돌아가고싶다
-
그래도 쪽팔림을 무릅쓰고 오르비에 공부 기록 올리는 게 인생에 도움되겠죠? 기출 >...
-
난 능지가 딸리는 듯 .. 현타가 옵니다
-
자자 0
-
안녕! 난 재수를 거쳐 시립대 상경에 입학한 04야 수능치고 입학하기전까지만 해도...
-
몯요일밤 영상에서 댓글 곱창난거 첨보네 ㅋㅋㅋㅋ
-
최근에 유행했던 문제라던데 유행 다 지나서야 알았네요... 다들 답 아시나요? 해설...
-
안자는사람있나 4
다들 모하세요
-
독서를 해볼게요 2
히히
-
토 나온다 1
사람 못 믿겠다
-
쥐엔쟝 6
4시야
-
개잘쏘네 ㄷㄷ 1
물론 내가
-
그대로 안나오면 버려야지
-
한번만 더... 일본에서 찍은 사진임...
-
에전에 ㄹㅇ 아침에 참새가 짹짹짹대는것 지나가다 들은것 마냥 ㄹㅇ 어쩌다 지나가다...
-
자라 1
라유 유산슬
-
토나온다
-
얼버기 0
미라클~
-
보통 ㅇㅈ 7
보통 ㅇㅈ할때 사진 몇분동안 올리나요?
-
본교재가 작년에 비해 얇아진거 빼면 달라진 점 없나요??
누나 멋져요
이분남자임ㅋㅋ
아?
ㅎㅎ 농담이에요! 칭찬해주셔서 감사드립니다 (__)
예... 수준이 높다기 보다는 '고전적'이라서 지금은 공부해야 할 필요가 전연 없는 그런 컨셉이기도 하지요. 누가 요새 SPARC을 쓴다고... ㅋㅋ
기계어로 코딩을 하는 것도 굉장히 좋은 경험이라고 생각합니다. 다만... 지금 쓰고 있는 언어는 너무 낡은 감각도 없지 않아서, 다른 언어로 교수님들도 빨리 바꾸고 싶다고 하는 상황입니다.
실전을 위한 이론은 사실 굉장히 중요하겠지만, 이론을 위한 이론은 말 그대로, '이론(異論)'일 뿐입니다.