컴공 일기204
게시글 주소: https://dev.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를 선물하세요.
-
윤사 코드원 샀음 1 2
윤사 개박살 났으니까 그래도 김종익 플러스 해서 코드원까지 하려고..
-
전화하고싶다 3 0
누구든좋으니까
-
작년에 2 0
2월부터 수능까지 새르비에 항상 있었던 사람이 있음
-
소아과 의사 누구였지 6 0
오르비언 ㅇㅅㅇ
-
한 달 뒤 새르비 상황 1 3
제목:진짜 다 뒤1졌냐? 2분전 조회수 8 작성자 수능 ㅈ된 설의적표현 내용:
-
???
-
수1 자작 0 1
수열 문제입니다. 거의 국밥 유형인 케이스 분류 문제에요. 오류 발견하시면...
-
아빠 안잔다 2 1
채널 돌리지 마라
-
유튜브하나보고 1 1
마저공부해야지
-
머리 안돌아가서 인강듣는데 2 0
인강도 내용이 잘 안들어옵니다.. 이럴땐 걍 자고 내일할까요?
-
저 누군지 모름? 1 1
구름과자임;;
-
죽었다. 0 0
새르비
-
치통에 4 2
잠을못자는중이에요.. 신경치료각이내
-
유빈이 진짜 야함.. 1 1
거꾸로 하면 빈유임.. 개좋네
-
이원준쌤 문학 괜찮나요? 1 0
ㅈㄱㄴ
-
햄버거 먹음 청년 2 1
슈슈버거세트
-
1회는 13,14 잘 넘기면 어찌어찌 40 중후반대까지 갈 수는 있는데 2회 <-...
-
수행평가로 책 소개하기가 있습니다. 식자경을 희망하고 있어요 책 추천해주실수 있나요
-
실모 만들면 출제자가 시간 세팅해서 딱 올려두고 시간 되면 참여자들이 맞춰서 푼...
-
수학 강사 추천 0 0
수리논술 할거라 미적, 확통, 기하 다 할건데 김범준 VS 정병호 (김범준은 기하...
-
쿠팡플레이 F1 해설위원인 윤재수 해설위원이 서울대 화학과 출신인데... 0 0
서울대 화학부 91학번인데, 1지망을 물리학과(현 물리천문학부 물리학전공) 2지망을...
-
오르비 흰바탕이 왼눈으론 뻘겋고 오른눈으론 누럼
-
차엿어요.. 3 1
...
-
3모 예상등급 0 0
33343정도…국어는 기출 풀기 시작한지 얼마 안 됐고 수학은 미적개념 돌리는...
-
기하러분들 0 0
서프 10번 내적으로 푸시려나
-
컨디션 좋은 상태로 독서실 다시 가고싶어
-
남은게돈뿐이구나 1 0
사람도사랑도식어감…
-
당분간 사립니다
-
난너무간지나서개명신청햇어김간지 0 0
역시난비주류야킥킥
-
지금까지 과학문제집 푼거 제외로 추천하는거있나요? 2 1
기출픽 1등급만들기 오투(개념으로씀) 완자(추가) 메가스터디 N제 자이스토리...
-
맞팔구 0 0
ㅇㅇ
-
반 단톡에서 생일인 사람들 축하해 주던데 그들은 헛걸음질을 하게 될것입니다 ㅋ
-
근데 부엉이껀 챙기면 진짜 개추 ㅋㅋ
-
화작에 2사탐 기준으로요 고대가 표점본다고하긴하던데 백분위로 대충 봐주실수있으신가요...
-
예체능 재순데 올해도 수학 유기하고 수능보면 평생 아쉬울것같아서 수학 지금 시작하고...
-
하쿠 1 0
들으샘
-
내가 그러고 있음 개찐따샛기..
-
이거 대략 현 예상 내 등급 1 2
아마 11313? 아니면 11314? 일듯. 아직 영어는 안 풀긴 했지만. 설마...
-
[Zola] 3월 교육청 대비 0 2
Zola임당. 3월 교육청 대비의 의미없음에 대해서는 아래 영상에서 말씀을...
-
사탐런 고민 3 1
현역이고 작수 물지 당일에 모의수능으로 학원가서쳤을때 2/1떴었는데 사탐런하면...
-
사실 저는 어제 생일이였습니다 왜 말하지 않았냐고요? "모두가 날 신경쓰는척 행동하는게 역겨우니까"
-
옯창 리스트 2 3
-
3월 더프 미적 4 1
21 22 30 틀려서 88점이네
-
과학 문제집중에 7 2
가장 어려운거 뭐임요??
-
야 신난다!
-
자꾸 간봐서 그렇긴 한데 3모 기간이 일정이 뭐가 많아서 아무도 안 볼거면 시간...
-
진지한 국어 질문 7 1
현역때 국어 안했고, 올해 3월에 처음 시작했습니다.선택은 화작목표는 6월에 3등급...
-
[이벤트] 2027학년도 Prologue 모의고사 1회 배포 19 12
OMR 링크:...
-
이제 심판의 시간이 다가왔다 5 2
더프 수학 채점해야 함.
-
아니 개어이없네... 2 0
이게 왜 정털리는데.....

오랜만입니다
앙냥세용