컴공 일기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학기 성적이 아예 산출이 안되는 건가요?
-
.
-
탈릅 1
선착1명 덕코
-
킬캠 난이도 0
왜이렇게 어렵지.... 해설 시작할 때 적당하다고 수능 난이도라고 멘트 얘기할 때...
-
오개념은 아니라고하심 사회학 용어에서 범위를 어떻게 보느냐에 따라 달라질 수...
-
국어: 박광일t 구주연마의 서 수학: 정병호t 현장 영어: 션티 키스에센스 예정 탐구: 독학
-
근데 집에 있어서 맘껏 코 풀어도 됨
-
으아
-
정시파이턴데 미인정지각결석이랑 내신 낮은게 대입에 영향을 줄까요? 어차피 스카이는...
-
‘죽은이로 허여금 죽는이를 묻게 하라‘는 말이 무슨 뜻일까요?
-
무려 2년동안 탐구 3개 전부 겹치는 여자애가 있음 13
2년 내내 같은 탐구과목에 같은 탐구 반 걸려서 진짜 하루에 3시간씩 같은 반에...
-
감사합니다. 0
-
선택 장애 왔음 국어는 강민철 피드백 빼고 다했고 영어는 그냥 조정식 월간지만 했었음..
-
가기 싫기도 하고 가도 아무도 안좋아할텐데 대학가서 안가도 되나여 친구 없이 지내도 상관없늠
-
23145 -> 1컷1컷133 50일만에 가능하다고 보시나요? 5
현실적으로 가능하다고 생각하세요? 화미생지일때요
-
y=x (-1<x<1) 그래프에서 교과서는 보통 최댓값 및 최솟값이 없다고...
-
"내가 존중할 수 있는 목숨에는 한계가 있어" "...안됐다고 생각했어" "네 친구...
-
이감 6-2 2
언매 75 독서 마지막 지문 시간 없어서 못 플었는데 끝나고 봐도 뒤지게 어렵당...
-
본인 E미래 샤프 제노엑스엔디(바뀐다는 그 샤프) 쿠루토가 펜텔 그래프 1000...
-
개인적인 견해지만 한은이 학군지의 의미를 좀 잘못 이해하는것같은게 학군지를 보내는...
-
22수능보다 어려울 수가 있구나
-
수능치고싶다 12
수능치는 당신들이 부러워
-
맞으려고 나왔는데 넘 오버하는건가.. 근데 코로나도 3번이나 걸렸고 독감은 2년에...
-
금주의 총정리 과제 체크리스트는 뭔가요? 본교재에 지문 분석은 혼자 해보는 건가요?...
-
고로 그림그릴거 추천받아용 히히
-
조퇴하고 쉬다가 스카가야지
-
솔직히 여성형은 누구나 예상 가능할 정도로 뻔했고 라이너 베르톨트도 생김새랑 복선을...
-
지금 해도 ㄱㅊ?
-
10월 지나면 갑자기 추워질 것 같아서 겨울 코트 샀음... 수능 끝나고 입으면 딱이다ㅎㅎ
-
왜냐면 이제부터 기다 림이 싸이버거 24시간이 넘을 싸이버거때마다대가리를 존나 쎄게...
-
실모 쳐보고 싶음 긴장감 저하 vs 사고력도 저하
-
사연자가 마이크 잡고 남중남고도 아니었는데 20년째 여자친구가 없었습니다 이러니까...
-
작수 고1 수학도 모르는 수준에 전문대에서 3개월 반수 후 화영기화1생1 순으로...
-
뭔가 뭔가 2퍼센트 꾸리꾸리한 느낌이 있는거 같은데 왜지..
-
강의실 확인 어떻게 하나요? 글고 첫날 조교한테 말해서 앞 차시 보강영상 받을수 있나요?
-
빨리 탈출이나 해야겠다
-
아 에타보니까 화나네 15
왜 나빼고 다 연애함
-
담쌤이랑 싸움 9
아침에 조퇴 빠꾸먹고 무단으로 집 가려는길에 학교복도에서 딱 마주쳤는데 내가 책가방...
-
미칠거같네 정말 답답하다 ㅠ
-
17번 천구그림만 좀 다듬으면 역대급 고트시험지 될듯 막 엄청 과한 것도 없이 1컷...
-
이젠 수능끝나고 경기도 본가로 올라가도 배달음식 같은 자극적인 맵단짠 음식은 못먹는...
-
답을 못 받아서... 이거 혹시 아시는분들 있으신가요?? 답변부탁드리겠습니다 ㅜㅜㅜ
-
이감 모의고사를 우연히 구해서 풀어봤는데 문학 - 화작 - 독서론+독서 이렇게...
-
ㅅㅂ
-
고전명곡 0
키야...
-
어서투표
-
조선의 양반이 된 기분이다
-
군침돈다
오랜만입니다
앙냥세용