외로운 Nova의 작업실

Assembly 언어 공부 - 1(책 소개) 본문

Programming/Assembly

Assembly 언어 공부 - 1(책 소개)

Nova_ 2022. 5. 15. 14:51

여러분들 ㅎㅇ~

 

이제 저는 시스템 해킹에대해서 공부해보려고합니다..!

시스템 해킹이란 무엇인지는 Haking카테고리에서 답을 찾을 수 있습니다.

뭐 아무튼 시스템 해킹에대해 알기위해선 어셈블리어를 필수로 알아야합니다.

그래서 어셈블리어 공부를 해보려고합니다.ㅇㅇ

 

<어셈블리언어 책>

 

제가 어셈블리어 공부하려고 산 책을 소개합니다.

x86 프로세서를 위한 어셈블리언어입니다..! 

인터파크 도서에서 32,000원 주고 주문했습니다.

이 책을 열심히 읽으면서 공부해도록 하겠습니다..!!

 

그런데 어셈블리언어가 뭘까요? ㅇㅅㅇ

 

<어셈블리언어와 어셈블러>

어셈블리언어는 cpu명령어에 1대1로 대응되는 언어입니다.

그러면 왜! 어셈블리언어를 만들었냐!! 아래의 예시를 보시죠

ACU에 두개의 숫자를 넣고 더하는 명령어는 1011입니다.

하지만 인간은 1011을 기억하기 쉽지않습니다.

그래서 글로 add를 쓰면 어셈블러라는 친구가 add를 1011로 바꿔줍니다.

이때 add라는 글은 어셈블리언어입니다.

즉, 기계어를 기억못해서 어셈블리언어를 만들었습니다.

이해가 되시죠ㅛ......?....???

또한 어셈블리언어를 기계어로 바꿔주는 어셈블러는 

우리인류는 cpu를 발전시켜왔습니다.

하지만 처음에는 cpu의 명령어는 달랐습니다.

예를들어 inetl사의 cpu의 add명령어는 기계어로 1101이지만 atmel사의 cpu의 add 명령어는 1010이였습니다.

그래서 cpu에 따라서 어셈블러를 달리 써야했습니다.

하지만 intel사의 x8086 버전의 cpu가 나왔는데, 이녀석의 명령어 체계를 다른 회사들이 따라가기시작했습니다.

이때부터 거의 모든 회사들이 명령어의 기계어를 동일하게 cpu를 만들게되었습니다.

 

뭔말이야...

사실 그냥 어셈블러는 기계어와 1대1로 대응되는 언어다 라고이해합시다..ㄱㄱ

 

<어셈블러의 종류>

x8086 cpu가 나온후로 같은 기계어로 같은 기능을 할 수 있게되었습니다.

그렇다면 어셈블리언어를 기계어로 만드는 어셈블러는 무엇이 있을까요?

첫번째로 MS사에서만든 MSAM((Microsoft Macro Assembler)가 있습니다.

윈도우에서만 사용이 가능합니다.

 

두번째로는 오픈소스 어셈블러 NSAM(Netwide Assembler)이 있습니다.

리눅스, 윈도우 둘다 사용이가능합니다.

 

어셈블러도 프로그램이다보니 os마다 설치해줘야하는게 다릅니다.

특히 MSAM은 윈도우용만 나와있습니다.

 

뭐라는 거야..

이건 이해못하셔도됩니다. 나중에 차차 알게되실겁니다ㅇㅇ

 

<어셈블러의 문법>

어셈블러끼리 우리 비슷하게 문법을 쓰자!해서 나온게 2가지 있습니다.

하나는 intel문법이고, 또 다른 하나는 AT&T문법입니다.

아래는 문법이 어떻게 다른지에대한 답을 찾을 수 있는 링크입니다.

https://hardner.tistory.com/22

 

Intel 과 AT&T 차이점

Intel, AT&T 어셈블리어 문법 차이점 어셈블리언어는 Intel과 AT&T 두 가지 문법을 가지고 있다. 서로 호환되지 않는 문법이기 때문에 코드 해석에 어려움을 겪을 수 있다. 각 문법의 차이에 대한 기본

hardner.tistory.com

근데 MSAM과 NSAM은 Intel문법을 거의 따릅니다.

그냥 Intel문법만 알아도 됩니다..ㅋㅋ

 

그러면 어셈블리언어에대해서 알았으니 다음 시간에는 책을 읽고 어셈블리언어에대해서 좀 더 알아보겠습니다.

그러면 ㅂㅂ

잘가 이 바보야

 

Comments