컴공 일기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를 선물하세요.
-
내 나이 맞추면 만오천덕 드림 21 1
1명만
-
도와줘야 하나 말려야 하나 3등급이면 되는데 수학 1이면 4여도 되고
-
수학쌉허수 뉴런 시작한다 2 2
완강은 글러먹었으니 다들 동냥하는 거지 돕는 심정으로 인상 깊게 남은 회차만 알려주시면 줍줍할게여…
-
7덮 결과 시발 뭔데 0 0
언미영 87 86 87 참고로 수학은 3점 2개 나감
-
전대실모 생2 41 ㅅㅂ 0 2
샤가프 왜 틀리고 젖당은 왜 기 나온거야
-
꿈이 발명가면 이상함? 0 0
진지하게
-
아침에 호프 보고 학원 등원함 0 1
재밋더라.. 근데 너무 길더라 루즈한부분잇슴 6천원 할인 쿠폰(선착순임)...
-
매달키스 대체 0 0
키스키마 키스로직까지 다 했는데 매달키스 기출편만 하려고 했는데 지금 시작하면 수능...
-
집중안될때마다 0 0
4시간 안쉬고할때 집중안되거나 막힐때마다 책5권씩 돌아가면서 풀다가 결국...
-
41점인데 이거 생각보다 백분위 괜찮을듯 ㅋㅋ.....1은 아니여도 근데 언매 4개...
-
길가다 새똥맞음 4 1
억까 진짜 하
-
18년생 태그까지 만들어주세요 3 1
10년 젊어질래
-
내 인생의 멘토 1 1
악어오름
-
늙크크면서 늙크크 티내기 싫어서 고의로 09년생 10년생 태그 쓰고 다님
-
맘에 드는 여자애랑 밥먹기로 했는데 21 2
코디 추천좀요 177 63임
-
다상다독 피드백 이거 뭐냐 2 9
여기다가 이번년도 강e분 n제를 수록하면 어쩌잔거임? 강e분 n제 돈주고 산사람은...
-
전대실모 화작 60 확통 37 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 2 1
사설이니까 그러려니는 니미 ㅈ댓내 6모보다 확떨어짐 9모에 33 만들수잇을가
-
확통 좀 도와주세요 ㅠㅠ 4 0
작수 미적 80점 받고 과감하게 확통으로 바꿨는데요 확통하기 싫어서 공통만 하다보니...
-
서바 출제진님 한 판 떠요 7 0
최고차항 계수 생긴게 어우
-
2506영어 다시 풀어봤는데도 2 0
90점 겨우 턱걸이하네 아오
-
추천 부탁합니다
-
사문은 재미따 1 0
어제 덮 생윤 35점 박고 뭔가 ㅈ같애서 사문 공부를 햇음 오르비에 올라와잇는...
-
7덮 화작 85 2 0
2뜨나? 애들은 쉬웠다는데 나만 어려웠나보네,,
-
한의대 목표로 확통런 1 0
확통 2학년 때 내신으로 해보고 안했는데 지금 반수 시작해요 어떤식으로 공부하면...
-
이게토요일이아니내 6 0
왠지 주말하루를 더 번 느김이야 이얏호
-
아이디어랑 뉴런중에 추천 4 0
개정 시발점1회독후 수분감 스텝1하고 있는데 스텝1에서 막히는 문제 조금 있고 6모...
-
국어중간3에다가 3 0
영어2 수탐만점이면 서성한공대 가능한가 참고로 화작확통사탐
-
08 현역 반수 가능할까요 3 0
일반고 2.7이고 아주대 간판 따는게 목표였는데 그냥 정시로 돌려서 아주대 인하대...
-
더프 생윤 윤사 등급컷 4 0
생윤 44 윤사 31인데 각각 몇등급정도 나오나요?
-
솔직히 4 0
본인이 이어폰 끼다가 귀지가 마이크 구멍 막아서 고장난 적 있다 손
-
대부분 시험보면서 군대 갔다왔을거 같은데
-
의외로 충격적인 사실 5 2
아직도 그양반은 버거를 뿌리지 않음....
-
늙캬캬 0 0
JOAT
-
피곤해서 그론가 2 0
수학 폼 ㅈ박음..
-
ㅇㅈ 14 1
오존
-
믿고 거르는 서울대 1 3
서울대 출신 중에 인성 좋은 사람 못봤음
-
안녕 9 1
이제오르비와도익숙한사람이거의없네
-
지구를 버릴지 말지 머리아프네 4 0
지구 이신혁 단과 끊엇는데 어떡하지 생명버리고 생윤하는건 확정이고 사문할지 지구할지...
-
우린 빨려 들어가 이 블랙홀 0 0
사랑을 살인한 스나이퍼도 끝내 맘 속에서 다시 그대와 살고 있어
-
제 생일은 3/5
-
초등학교 학생회장 선거 결과를 조작한 교사가 검찰에 넘겨졌습니다. 군산경찰서는 작년...
-
나도 서울대 곰도리... 21 1
곰도리이.....
-
됐다됐다 3 0
2일동안 끊임없이 고열상태라 바보됏엇슴 37도대에 진입햇다!
-
7덫 수학 어려움? 2 0
ㅡㅡ
-
NI EKO NOOY 0 1
이거 뭔지 아는 사람?
-
옛날에 이걸로 지문 냈는데 1 1
비타민 K처럼. 근데 요즘 그런 것을 풀 필요가 없다는 생각이 듦...
-
김범준 스블 질문이요 0 0
오타 어느정도 있는거 이미 알고 정오표 확인했었는데 이거 6모 이후에 새책으로...
-
흠 뭔가 수학이 더 끌리긴하는데

오랜만입니다
앙냥세용