게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
포니가 타자와 컴퓨터를 쓰는법
게시물ID : pony_21461짧은주소 복사하기
작성자 : 버물리의꿈
추천 : 5
조회수 : 436회
댓글수 : 4개
등록시간 : 2012/12/22 21:19:20



3버튼 타자기


타자기 타격부도 2개

컴퓨터할때 쓰는 1버튼 마우스


방법은 바로 기계어에 있습니다

아래는 기계어에대한 엔하위키미러



이 세상에서 최고로 난해한 프로그래밍 언어지만, 이건 실제로 쓴다!


컴퓨터, 정확히는 CPU에게 던져주면 바로 해독할 수 있는 유일한 언어 되시겠다. 비트단위로 표기하기 때문에 0과 1로만 표현된다. 

그 때문에 간단한 연산문도 작성하면 옆으로 길게 늘어져 개떡같은 가독성을 자랑한다.

 좀 더 보기 쉽게 16진수로 변환하여 보여주기도 하는데 약간 보기 편하다는 것뿐이지 거지같은 가독성은 마찬가지, 

어떤 기계어의 경우 오히려 가독성이 더 떨어지기도 한다. 물론 ASCII나 유니코드로 변환하면 이 거지같은 가독성은 극단을 달린다. 

그리고 궁극적으로 코드를 던져줘도 "그래서 하고 싶은 말이 뭐냐?"란 반응이 나올 정도로 해독하기가 심히 골룸스럽다. 

하지만 고대(그러니까, 컴퓨터 시대 초창기)에는 이걸 컴퓨터처럼 해독하는 작자들도 많이 있었다고 한다. 대표적으로 이 아저씨라거나. 

이 의사분, 물론 이 분야의 원조 굇수는 기계어가 아닌 다른 언어를 쓰는 것조차 못마땅해했다.

유니코드나 아스키 코드같은 코드와는 또 다르다. 

이런 코드는 데이터를 지정하는 일련번호에 해당하는 숫자를 정의한 거다.

사실 컴퓨터 아키텍쳐를 연구하는 사람이 아니라면 직접 접해볼 기회는 거의 없다. 

다만 매트릭스에서처럼 영상에서 뭔가 디지털스러움(?)을 어필하고 싶을때 배경에 촤르륵 하며 흘려보내는데 쓰이긴 한다.

가독성은 0에 수렴하고 배우기도 힘들고 생산성도 심하게 낮다. 

또 CPU 종류, CPU의 아키텍처에 따라서 같은 동작을 수행하는 코드라고 할지라도 완전히 다른 0과 1의 나열이 될 수 있기 때문에 이식성도 거지같다 

간단히 CPU 바꾸면 기존에 작성한 기계어 코드가 안 돌아갈 수도 있다. 

아주 기본적인 연산자들은 서로 호환이 되는 편이라서 운이 좋으면 돌아갈 수도 있으나 어지간한 수준의 프로그램들의 경우 호환될 확률이 한없이 0에 수렴한다. 

이 때문에 CPU를 제작하는 업체에서는 새로운 CPU 아키텍쳐를 공개하고나면 기계어 코드를 함께 뿌린다. 일반인이 알아들을 수 있게 비유하자면,

 NDS 게임을 에뮬레이터 없이 PC에서 돌릴 수 없는 것과 같은 이치다

이 문제를 커버하기 위해서 등장한 것이 어셈블리어. 

어셈블리어의 경우에는 모든 기계어 코드와 1:1로 대응되는 형태로 되어있다. 

문제는 어셈블리어도 상당히 난해하고 생산성이 떨어지다보니 점점 사람이 보고 이해하기 쉽고,

 생산성이 높은 프로그래밍 언어들이 개발되기 시작하였다,



배울 수 있는 방법 


전문적으로 기계어를 가르치는 학교나 학원은 존재하지 않는다. 

시대가 어느땐데 정 배우고 싶다면 해당 CPU제조사의 홈페이지의 메뉴얼에 아주 자세하게 서술되어있으므로 그걸 보고 공부하도록 하자.

물론 영어다


대학교에서 컴퓨터 전공이라면 컴퓨터 아키텍쳐에 관해 배울 때 맛만 보는 수준으로 배울 수 있다. 

그리고 학교에 시스템 프로그래밍과 관련된 과목이 있으면 상당히 친숙해지게 된다. 

이런 것들을 하다보면 C언어가 세상에 존재하는것은 신의 축복이었단 사실을 깨닫게 된다. 

물론 이 생각은 컴파일러를 배울때 깨진다.


기계어의 간단한(?) 예


x = 10+2

y = x+4

이 표현을 MIPS라는 아키텍처의 기계어로 옮기면 다음과 같다.


001001 11101 11101 1111111111111000

001000 00001 00000 0000000000001010

001000 00001 00001 0000000000000010

101011 11101 00001 0000000000000000

001000 00010 00001 0000000000000100

101011 11101 00010 0000000000000100

001001 11101 11101 0000000000001000

토나온다.

가독성을 높이기 위해서 보통은 4자리씩 끊어서 16진수로 표현한다. 그래서 그렇게 써보자면 다음과 같다.


27BDFFF8

2020000A

20210002

AFA10000

20410004

AFA20004

27BD0008

보기는 좀 편하지만 그래봤자 여전히 뭔 소린지 알 수 없다. 이걸 빠르게 읽어나갈수 있다면 당신은 머리안에 CPU가 장착된 자렘인일지도 모른다...

참고로 안철수씨가 만든 V3백신의 토대인 V1은 어셈블리어로 개발되어있다

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호