컴공 일기204
게시글 주소: https://orbi.kr/00059914575
개발 공부를 하다보면, 가끔 이런 생각을 하게 될 때가 있습니다. '아, 평소에 내가 말이라는 것을 너무 쉽게 한 것 아닌가?' 라는 것 말입니다. 컴퓨터에게 내가 생각하는 논리를 명령하기 위해서는, 굉장히 치밀하게 한 줄 한 줄의 의미를 밝혀써주어야 합니다. 그렇지 않고서는, 절대로 내가 하고 싶은 말을 컴퓨터에게 들려줄 수가 없으니까요. 바로 에러를 띄워버리고 맙니다. '네가 하는 얘기가 도대체 뭔 소리냐?'라고 하면서요.
다음 예제는 컴퓨터에 직접적인 명령을 내리는 Assembly Language로, 발생된 난수 중 최솟값 구하는 프로그램을 짜본 것입니다. 파이썬이나, JAVA같이 상위레벨의 언어로 짰다면 50Line 내외로 컷 가능한, 그리고 전공자/비전공자에게 모두 익숙한 예제지요. 하지만, 이것을 Low-Level 그러니까 하드웨어와 직결된 어셈블리어로 짠다면 얘기가 달라집니다. 이제까지, 컴파일러가 하던 것을, 내가 직접 다 작성해주어야 하니까요. 반환은 어떻게 할 것이며, 스택은 어디까지 늘릴 것인지, 메모리는 어디까지 관리할 것인지, 어떤 레지스터에 어떤 변수를 집어넣을 것인지... 그런 전체적인 구조를 모르면 접근하기가 굉장히 까다로워 집니다. 더군다나, 시간도 더 많이 걸리구요. 50Line이면 될 것을, 얘는 150Line 정도를 잡아먹고 있습니다.
그래서인지 개발자들이 기계어로 코딩을 하는 경우는 거의 없습니다. 몇몇 분야를 제외하고는요. 다만, 이런 어셈블리는 사실 실무 능력보다는, 여러가지 고급 이론의 기초와 기반을 다지는 데 도움이 됩니다. 어셈블리로 레지스터 하나하나 찝어가면서 코딩을 해보면, C언어의 포인터 문법이 왜 그렇게 밖에 나올 수 없는지 자연스레 깨닫게 됩니다. 함수 호출 스택, 함수 프롤로그/에필로그 코드, 스택 프레임과 프레임 포인터에 대한 자연스러운 이해는 말할 것도 없구요. 일종의 컴퓨터 구조적인 이론을 굉장히 디테일하게 요구하는 언어이기 때문에, 구조를 익히는 과정에선 상당히 많은 도움이 된다는 것이지요.
num_s = -48
.text
.global main
main: save %sp, -152, %sp
ba outer_test
mov 0, %l0
inner:
call rand
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 min
nop
mov %o0, %o1
set str, %o0
call printf
nop
ret
restore
min :
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
bge 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"
.align 4
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
영어 2인데 인강 들어야하나
-
캬 4
-
ㅇㅈ은 4
알 사람은 이제 다 알아서 하지 않아,,
-
그때 막 초등저학년 이런애들은 빅뱅이 메이드로 유명해진 그룹이구나 ㄷㄷ이래서...
-
불가능이라기보다는 현실성이 없?다고 보는게 맞을거같네요 사탐런의 가장 끝판왕 대학...
-
ㅅ벌 ㅋㅋㅋㅋ
-
휴,, 인증완 2
ㅋㅋ
-
한번더 ㅇㅈ 10
물론 이번엔 AI
-
신성규t 0
작수 4 3덮3 3모 2 4덮 무보정3인데 들어도 되나요? 특히 신기해 미적은 그렇게 어렵다던데
-
진짜로... 교정도 하고 근데 교정은 군대 다녀와서 해야됨
-
시스루댄디? 슬릭컷?
-
뷰끄러 ㅎㅎ 펑!!
-
30분 전에 공부 시작했다는 과외생... 무슨 생각일까...
-
평범은 되는 줄 알고 살았는데 ㅅㅂ
-
다른 수업에 정지훈도 있음 페이커 vs 쵸비 미쳤다.
-
내일 갈지 말지 결정해야해서 혹시 좌석이 지정석인가요? 앞자리 걸리면 자습도 못하고 곤욕인데
-
n제나 자료분석 강의 투커리 탈 건데 괜찮나요?
-
몇 문제 정도인지 아시는 분 계신가요?
-
이상혁 5
이상혁
-
초성퀴즈 8
pdf machine babo saki 뭘까요
-
N수 해서 진짜 힘들게 들어간 대학이라 과 생활도 열심히 해보고 그러려고 했는데...
-
이상형 12
어딘가 글러먹었다는 듯한 취급을 하는 연하츤데레
-
좋아하면 그래도 내 눈엔 예뻐 보임 물론 완전 못생기고 관리도 안한다 이건 아니지만...
-
이상형 1
여자.
-
이상형 3
형
-
밤새는 거 낭만 있긴 해
-
. 0
배고파 ...자야겠네 세수 하고 맨날 똑같은
-
이상형 0
프사
-
이상형 0
새벽 4시에 잠자는거 깨우고 "제육볶음 해온나" 하면 군말없이 자작자작한 제육볶음...
-
중간고사... 14
-
원래 국어 고정 2에 수학 1컷인데 이번 방학에 공부법 조금 바꾸고 제대로 하니까...
-
내가보기에도 매력적이면 다른사람이 보기에도 매력적이기 때문에 이미 애인이 있음
-
제 이상형 4개 13
-수능 매년치는 사람 -오르비하는 사람 -서점에서 문제집같이 볼 수 있는 사람...
-
님들아 질문 점 4
길가다가 아님 소개팅에서 갑자기 이 사람 맘에 든다 아니면 완전 내 스타일이다 라는...
-
에너지드링크 할머니를 투하
-
사실 아이패드로 읽어도 충분히 되긴 하는데.. 고민이 좀 된다
-
공부하는 시간만 합하면 590분 러셀이랑 똑같음 근데 러셀 너무 불규칙적오로 존내...
-
삼가 고오르비언의 성불을 빕니다
-
. 13
.
-
어떤분이 오르비는 수험생말고 수험생이 아닌사람이 하는게 맞다고 했는디 4
전 이말 개소리라고 생각해요.. 왜냐면 수험생이 아닌사람이 오르비를 하면 수능을...
-
지금부터는 제가 정리한 글을 보면서 이야기하겠습니다. 9
너 임마 개이 씨
-
전에 어떤분이 오르비는 수험생말고 수험생이 아닌사람이 하는게 맞다고 하셨던것같은데,...
-
차단 목록 ㅇㅈ 8
-
슬슬 자야겠군요.. (진)
-
노래잘하면 외모+2티어정도 효과있음 ㄹㅇ
-
ㄴㅁㅎㅇㅈ 3
ㅇㅇ
-
얘네는 시부럴 뭔 홍차에도 보드카를 타마셔 미친놈들이야
-
머가 더 나을까ㅜ
-
술 말고 차 먹자 몸에도 좋자나 홍차 녹차 말차 보라차 둥글레차 마테차 홍삼차 다...
오랜만입니다
앙냥세용