컴공 일기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를 선물하세요.
-
잘생기고싶다 2 0
공부고뭐고잘생긴게최고야
-
내가 딸수있는 면허는 1 0
운전 면허뿐
-
생윤 누가 쉽다했냐 2 1
환경윤리 정답률이 반타작 수준인데 ㅋㅋ
-
자연대가고싶다 2 0
-
인생 첫 모의고사 만점 과목 8 2
선택국사
-
저는 집에 갈 거임 3 0
-
외지주 ㅈㄴ 웃기네 1 0
이도규 대사로 이지영 틀포티 고백 오마주 ㅋㅋ
-
나는 천문학과 갈거임 2 0
천문학적인 돈을 벌고싶거든.
-
히든카이스 난이도 0 0
작년 히카 평보니까 쉽다는 평이 지배적이던데 올해는 어떰? 히카 히든카이스 킬캠...
-
안녕하세여 8 2
반가워여
-
다같이수특피는거여그냥 8 1
대학이족같잖아 나한테 수특피고 서바 풀라고 강요하잖아 그럼 그냥 하는거여 조지면 군대가는겨
-
Im fcked off 1 0
Jae su.... 는 안된다
-
새기분 8월에 들으면 늦나요? 0 0
문학만요!
-
저질러 버렸는데 답은 맞았네요 f(t)->(0,f(0))점대칭 정도로 생각하고...
-
잘자르비 10 2
7시 반에 일어날거임
-
지금이 좋은때야~
-
46일차 5 1
4규 수2 극한 끝 어제그제 쌓아둔 오답 짬처리 간쓸개 5-1 3일차 수학 공통...
-
메디컬 가고싶긴하지만 3 1
진짜 하고싶은 일도 아니고 오직 돈과 명예땜에 (갈수만있다면) 가고싶은거 사실...
-
그냥 공대 보내주면 4 0
석사 하고 열심히 살겠습니다
-
5모 수학 4 6모 수학 4 6 1
6모 안정 3이라매.... 안정 3이라매....
-
미적하다가 28 29 30은 죽어도 못맞추겠어서 확통런했습니다 1학기 내신으로...
-
힝
-
내 커하는 고2 10모 1 0
2번째는 고1 10모 3번째는 고3 7모
-
이해원 수2 즌1 0 0
어렵네요.. 역시 물99
-
各有所道 旣知其徑 豈不能行 1 2
내가 만든 명언 의미: 저마다 각자의 도(길)가 있으니, 이미 그 길을 알았다면...
-
난 메타인지 고트라 5 2
메디컬 목표한적 단한번도 없음
-
평생 억까당해서 수학여행 못가봤고 앞으로도 못감 11 0
ㅁㅌㅊ?
-
카레맛 똥 0 0
우걱우걱우걱우걱
-
이때로 돌아가고 싶습니다 7 0
-
사탐수시는 신이다 1 1
사탐수시로 이공계도 되는곳이 있다는것을 잊지마라
-
변호사가 낳냐 회계사가 낳나 2 1
아무래도 회계사가 닭 계 鷄자 쓰니까 변호사보단 더 낳으려나
-
내인생 선택 joat 1 2
롤 시작
-
외할아버지가 설화학 출신이셔서 목표가 서울대였던 시절이 있었습니다 10 7
내신 6.9 받을 정도로 고2 때까지 아예 공부라는 것에 담을 쌓고 앰생으로...
-
후지와라 치카;;;;; 5 0
-
내인생선택joat 8 0
나에겐 수시가더쉽다는거알면서 내신버린거ㅠㅠㅠㅠㅠ 3일의기적 ㅇㅈㄹ한거 얘땜에365일의기적 또하고잇음
-
손을 깨끗하게 씻고, 이물질이나 세균이 들어가지 않도록 가능한 한 깨끗한 시험지를...
-
나 지금 센치해 5 0
자꾸 건들면 곧 미리해져
-
공대 주절먹인데 0 0
제발 보내줘 제발
-
숏컷 2 0
숏컷 풀만한가요? 아니면 그냥 유기하고 엔제만 풀까요
-
이태원 프리덤~ 4 0
밤에 잘생기고 예쁜 사람들이 길거리 점거하고 담배핌 술냄새 좆됨 이태원은 찐따가 갈 곳이 아니더라
-
내가 치면 11 0
뭘 치는지는 목적어를 안말하긴 했어
-
"6모가 커로" 6 1
곧 "수능이 커로"
-
Ewc도 대진헬이네 ㅅㅂ 0 0
8강 한화 4강 AL 결승 젠지 or blg
-
금주금연 한달째임 2 0
몸이 건강해진 건 잘 모르겠음 체감 안 됨 근데 확실히 정신은 엄청 건강해짐
-
절정 모드를 사용하신다면 6 0
더 오래 "갈"수 있습니다
-
그래서 너네 나보다 롤 잘해? 5 2
나보다 탑레 높아?
-
올해는 따야지
-
김승리 현강 0 0
대치 대기 28번인데 이번달에 빠지나요?
-
나도 대깨설이어ㅛ는데 왜 의대왔냐면 17 3
설수리 졸업생이 다시 논술로 연치가는거보고 걍.. 무슨 생각이 들었게.. 서울대...

누나 멋져요
이분남자임ㅋㅋ
아?

어머 감사해요 (덜렁)ㅎㅎ 농담이에요! 칭찬해주셔서 감사드립니다 (__)

굉장히 수준높은 내용이네요예... 수준이 높다기 보다는 '고전적'이라서 지금은 공부해야 할 필요가 전연 없는 그런 컨셉이기도 하지요. 누가 요새 SPARC을 쓴다고... ㅋㅋ
기계어로 코딩을 하는 것도 굉장히 좋은 경험이라고 생각합니다. 다만... 지금 쓰고 있는 언어는 너무 낡은 감각도 없지 않아서, 다른 언어로 교수님들도 빨리 바꾸고 싶다고 하는 상황입니다.
실전을 위한 이론은 사실 굉장히 중요하겠지만, 이론을 위한 이론은 말 그대로, '이론(異論)'일 뿐입니다.