컴공 일기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
받고싶은 거 하나 못받아서 아쉽긴 한데 그래도 너무 좋은 시간이었다
-
대여비 드릴게용 댓글이나 쪽지 남겨쥬시면 감사하겠습니다
-
50%이상?
-
[2보] 한총리 "국립대 건의 수용…내년 의대 신입생 자율모집 허용" 1
"의료현장 갈등 해결의 실마리 마련하고자 결단" (서울=연합뉴스) 김영신 기자 =...
-
일부가 약간 과학적 성격을 띤 잡담글도 보이겠지만 사실 이것은 공학 계열 학과에서...
-
ㅋㅋ
-
쫌 누워야겠다 0
운동ㅍ 가기 전에 조금만 늘어져야지
-
솔직히 평가원은 2
공통에선 1-11(또는 12), 16-20까진 쉽게 주잖아 ㅋㅋ ㅜㅜㅜㅜㅜ
-
물론 일반화시키는 건 아닙니다만 제 주변 사례들을 봤을 때...
-
윙
-
건강 씹창남? 살찌는건 오히려 환영
-
정부 “의대 증원 50~100% 자율 모집, 총장들 건의 수용” 0
정부는 6개 국립대학 총장들이 ‘내년도 의대 증원분의 50~100% 범위 내에서...
-
ㅈㄱㄴ
-
이제 엠스킬 쥔나게 달려야겠다!! 기출을 곁들인 www
-
게이물봐야지 2
-
두창이 완전히 나락 갈듯ㅋㅋㅋ 조만간 오피셜 뜰거 같은데
-
그래서 당연히 안다고 하니까 마치 서로의 공통된 친구가 생긴것마냥 웃음 귀여벙
-
수능 영어 문풀 이런거 말고 정말 일상영어...
-
기사까지 날 일인가 흔한데..
-
요즘 문학 6
23까지는 25분 안에 푸는게 트렌드?였는데 요즘은 아닌가요 전 그때 23분정도가...
-
ㄱ선지 해설지에 독립변수가 기간 및 시간이라는데 이건 독립변수가 아니고 조작적 정의...
-
30분동안 발표할거 스크립트 쓰고있는데 화작문제에 나오는 지문같아... 자연스럽게 쓰는 방법 없나
-
미적+화작 사문+생명 하이브리드 허수 인증합니다 비문학 다 맞춰놓고 화작에서...
-
그다음 반수로 의대를 가자
-
수업 끝 1
놀고먹은자의최후
-
ㄹㅇ
-
어떤 사람은 시험장 가면 체감 안된다고 하는데 뭐가 맞는거지
-
음식도 빨리 나와 매장도 넓어 키오스크 주문이고 양도 웬만해서는 포만감 있고 맛도...
-
사랑합니다
-
오르비 눈알은 0
왠지 이거랑 비슷하게 생김
-
[단독]이준석·조국, 채상병 특검 공동 회견… “연합? 이번 건에서만” 2
19일 오후 민주당 전재수 등과 국회 회견 이준석 개혁신당 대표와 조국 조국혁신당...
-
학교수업하기싫 0
허
-
혼자 샤브샤브! 4
-
오늘 깨달은 것 둘: 10
하나. 키가 일단 180이 넘어가는 알파메일이면 아무리 사진을 ㅂㅅ같이 찍어도 그냥...
-
공부량 어떤가요 1
재수생이고 국어는 1등급 거의 나와서 수특 다하고 안하는중 수학 4규 하루...
-
수학에서 평가원이 6 9모에서 안내다가 수능에서 뒤통수친 사례가 있나요? 6
특정유형을 의도적으로 배제하는 것처럼 보이다가 수능에서 뒤통후 딱 때린 사태가...
-
[2025수특] 정지용의 '장수산 1' 분석 및 관련 기출문제 1
안녕하세요, 남윤입니다! 2025학년도 EBS 문학 연계 대비 자료를 업로드...
-
기숙사 2인실이고 룸메는 나보다 1살어림 애가 쫌 안치우고 더러움(발냄새랑 채취가...
-
자작 문제 입니다. 저녁애 답 올릴게용
-
과기원 (카이 X) 재학중인 05입니다. 스카이가 너무 가고싶어져서 정시반수를...
-
라운드 숄더 조금씩 고쳐지는게 눈에 보이는데? 개뿌듯하노 ㄹㅇ 님들운동하세요...
-
잘잤다 6
-
11kg도 이제 들만 한듯? 근데 더이상 못늘려 원판 없어
-
역쟁이 2주차 1
수인분당,경강,신분당,2호선 다 외우고 3호선 보는중
오랜만입니다
앙냥세용