컴공 일기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를 선물하세요.
-
이감 6-2 0
교육청 1~3등급 3월 90 5월 95 7월 79(수능 준비 하기 전) 더프등...
-
문제풀려해도 하나도 안풀리고 대체 뭔소린지 모르겠고 너무 어렵고 모의고사 풀면...
-
이거하나는 내가 원탑임 캬캬
-
문과로 14211 뜬다 가정하면 어디가냐
-
먀먀 5
먀먀
-
이감상상 강k 국바 등등 사설 종류별로 다 풀어봤는데 문학은 거의 한두개밖에...
-
1. 다수의 의견에 합치되고, 법이 부당할 때 2. 다수의 의견에 위배될때 여기서...
-
몰아치기 0
하루에 원래 밸런스 맞춰서 국수탐탐 공부했었는데 뭔가 실력이 느는게 아니라 유지만...
-
진짜 싫어하고 못하는 과목을 본인 모르게 확실히 덜하는 경향이 있음 4
나한텐 그게 국어인듯
-
수상한 오르비언 11
수상해
-
지금 고2인데 현역 되도 거의 수학에 올인하는게 맞겠죠?? 국어만 조금 올려서 2:4:1정도
-
계절도 바뀌어서 그런지 더 우울하고 불안에 떠는 나날이지만 더 힘내보기로!
-
시스템도 점점 망해가는데 응대도 ㄹㅇ 싸가지 ㅋㅋㅋ 작년까지만 해도 괜찮았는데 왜...
-
고1 시발점 고2 드릴 고3 드릴 킬캠 내년엔 보지말자 우진이형..
-
남은 50일동안 해보겠음 16시간때려박기 뭐 그런 거
-
생지 6펑 33 9평44라 수능날 33이나 32는 만들어야 대학가는데 여태 탐구를...
-
블러 러시 스웨이드 하고싶은데 맨날 게이식스 실리카게이같은거 해야함 ㅜㅜ
-
개수세기+수열 =정답률 나락 ㅋㅋ
-
곧 입수해야할듯
-
해봤는데 이게 구조생각하면서 읽으니까 할만함 기축통화는 국제 거래에서 .......
-
결국 수시 써서 수영탐1으로 맞출거같은데 교과로 안정도 박아놨고 이러면 보통 국어...
-
요즘 커뮤픽 0
이원준 뿐아니라 정석민쌤도 있는듯한 뭔가 많아짐
-
수학문제 안풀릴때 티처스 나오는 실수학생 빙의해서 지금푸는거 정승제 조정식쌤이...
-
부끄럽지만 재수생이고 일년동안 잇올다니면서 공부한 재수생인데 .. 9월모고...
-
기하는 국밥집 느낌임
-
국어는 왜 맨날 공부법 강사 이런걸로 싸우는거임?? 4
국어만 유독 그런거같네
-
토모에랑 사귀고싶음 하지만 현실은 국영수…,,
-
걍 이거할 노력이면 계란말이랑 스팸 부쳐먹는게 훨씬 편함 이때 다시한번 느낌...
-
낮1~2 나오는데 시간이 부족해서 준킬러 빨리 푸는 연습 하고싶은데 추천하시는 책이나 모고 있나요?
-
설맞이 수2 구매하기
-
인기 팍 죽은거같은데 기분탓인가 예전에 실북갤에서 많이 봤는데 일본에서도 인기 떨어졌나
-
풀면다맞음그냥미친놈임... 원래 국영수 151이였는데 수학파다가 나락간 영어 되살리는중
-
?
-
야식 ㅇㅈ 9
아 사진 다른거 올렸디
-
사실 D-50부터 진짜 시작인거같음 사탐은 4->1로도 갈수있고 지금부터 하루 수학...
-
유튜브에 그 분이셨구나 한동안 내 쇼츠에 많이 나오셨는데
-
[자료]더엔얼쓰코치 2024학년도 평가원 지구과학1 현장풀이 0
이왕 자료 푸는 거 싹다 풀어버립니다 [소개] (모두 현장 응시) 2022학년도...
-
훈구쌤 현강 0
대치 훈구쌤 현강 인원 많나여? 요즘도 자리싸움 있는지 궁금해서 ,,
-
파이널이나 독해강사 ㅊㅊ해주세요
-
그 22 30 15 번급 킬러들과 입문n제 수준의 4점들을 골고루 섞어놓은 n제 딱...
-
열품타 특 0
키기 귀찮음
-
드릴이나 풀까 수학1등급받으면진짜대학갈수도있는데 응애
-
8월 중순부터 9월 초까지 정석민T 찍먹해서 비실독 리트만 프린트-> 9~10강...
-
작수 28이 난이도 중하위권에 속하는 마법
-
외모 원탑 18
-
ㅈㄴ 너무 어려운데.. 23점 받고 6등급됨 저 작수1에 6모1 9모 41인데.....
-
마침내 트라우마를 극복한 이야기를 꺼내봅니다 (장문) 1
쓰다보니 너무 길어졌는데, 좀 더 직접적으로 제가 추천하는 긍정적 사고법과 정신...
-
빡모 강x 이감수학 :)
-
16일 입고라는거 15일 20일에 한번씩 주문넣었는데 배송시작도 안됐네 아예 입고안된건가
오랜만입니다
앙냥세용