컴공 일기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를 선물하세요.
-
한번이라도 나를 그리워했니 0 0
그땐 몰랐지만 난 너의 중독자야 for your love
-
이상과 현실의 간극이 너무 큼 3 0
생각보다 현실은 정직한곳이 아니고 노력과 능력이 결과로 직결되지 않는다는것을 점점...
-
도저히출근못하겟다 2 0
침대와나는결합법칙
-
ㅇㅈ 1 0
어 형이야
-
잘게요 2 1
야말한테 월드컵 갖다놔라
-
오랜만에 웹툰 보니까 2 0
뭔가 머리 좋아진거 같음 고등학교 배경에 머리 똑똑한 애들이 나오는 웹툰 두개...
-
내가 뭘 할 수 있지... 7 4
20살의 나는 이런 나를 기대하지 않았겠지... 미안하다 난괜찮아난괜찮아
-
근데 a_n 찾는 문제 0 1
그건 어떻게 하나요 막 역추적?이런게 있다던데 걍 다 나열하는건가요
-
밤낮 바꿀려고 밤샐예정 2 0
반수 할라면 바꿔야함
-
이대는 환산시 진로과목도 환산해서 등급이 높아지던데 이 발표자료는 환산내신인가요...
-
작년과 올해 언어이해+추리논증 합산 원점수는 같습니다. 아마 표준점수로...
-
근데 AI 완전히 믿으면 안됨 4 0
알루미늄의 E2/E1이 마그네슘의 E2/E1보다 작다고 아주 자연스럽게 구라치는거...
-
수특에 있는 그림임 기하아아아아아악
-
뚱냥이 2 1
-
ㅇㅈ 12 1
제 여친입니다
-
시발 나만 못생겼지 2 0
ㅗㅗㅗㅗㅗ 다 뒤져
-
여기 인논 합격자 있나 0 1
?
-
ㅇㅈ 4 2
민간인
-
확통엔제 4 0
기출 회독 vs 엔제
-
7/19 공부인증 6 0
수학 수학적 귀납법으로 an 제한범위 만들고 제한범위 생겼으니 샌드위치 정리로 an...
-
여기는 인증메타구나 2 0
오늘은 인증메타보다 재밋는게있어서 패스
-
이거 뭔데 계속 인스타에 뜸? 7 1
흠..
-
앙 0 0
앙
-
진짜 수능판에 아직 9 2
03있을까
-
내가 지금까지 한 공부량 7 2
대략적인 추정 참고로 실모는 그냥 귀찮아서 n제화해서 푼게 많음 국어 실모 약...
-
수능날 영어시간에 자본사람 3 1
나 모고때 항상 조는데 수능날에도 존 사람 있니
-
28수학은 뭔가 6 1
1~18, 22~26은 쉽게 주고 19확통 27수1 28수2를 약간 어렵게 내고...
-
나도 21년에는 뉴르비였는데 1 0
시간이 진짜 빠르구낭
-
인강을 첨 들어보는데.. 2 0
그냥 1강씩 들어나가면 되는 건가요..? 대종쌤 인셉션 독해에요 ㅠㅠ
-
씁
-
지1 실모를 보면 4 0
90%는 점수가 42~45에서 바뀌질 않는데 더 올릴려면 뭘 해야하지 ㅅㅂ 실모도...
-
13번까지도 쉽게나오는거 찾아봐도 ㄹㅇ 교육청 사관학교말고없는거같아서요
-
생기부 활동 1 0
내일 다 제출하면 드디어 끝이다 그럼 이제 수능공부 빡세게 해야지
-
인증해줘 0 0
인증메타놓폇러
-
진짜 ㅇㅈ마렵네 2 0
진짜 ㅇㅈ마렵네
-
포토샵 유머 1 0
-
내가 현역에서 0 0
서울대 수시 납치되거나 정시로 의치한 붙으면 30분동안 인증 올려둠 죽어도 안 올리겠다는 뜻
-
3시간자고 월드컵 ㄱ 0 0
원래 안볼라그랬는데 도저히 참을수가없어... 3시간뒤에만나요
-
사문 킬러 단원 10 0
사문러분들 와주세요 지금 개념책보고 기출몇개 풀고 내일 테스트겸 킬러 풀만한지...
-
제곧내
-
영어 칠때 안 자는 법 6 0
진짜 제발 안자고 싶음 그래서 항상 찍맞 포함 2초뜸..
-
강k 지구가 0 1
난도는 평가원과 비슷한것 같은데 점수가 잘 안나옴 낚이는게 많아서 그런가 내가...
-
근데 교도관이라는 직업어떰? 4 1
-
디플러스 기아가 드디어 ㅠㅠㅠ 0 0
ㅠㅠㅠㅠㅠㅠㅠㅠㅠ
-
08허수의 공부 인증 8 2
다 현장응시입니다
-
지1 실모 15개를 풀었는데 3 2
최저점 39 최고점 47 평균 44 정도인듯 개털림 ㅅㅂ
-
공부인증(08) 10 2
지1 실모 15개 정도 (근데 개털림) 이감 5-1
-
딮기우승ㅠㅠ 0 1
외화벌어야해
-
작수 언확생윤사문 53245 1 0
6모 언미생윤사문 12235 7덮 91 84 2 44 38 굉장히 많이 오른거죠?…

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

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

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