CPU는 정확하게 2진수 바이러리를 인식합니다
01010001110 이런식의 바이너리를 인식하는것이죠
그리고 C언어는 int a; 이런식으로 코딩을 하는데요
CPU는 int a 이런게 뭔지 모릅니다
그래서 int a; 을 어셈블리어로 변환해주고 그리고 어셈블리를 바이너리 기계어로
번역을 해줍니다
근데 2진법은 우리 사람들이 알기 어렵기 때문에
디버그에서 해당 소스를 볼때 16진법을 사용합니다 ( 0-9,A-F)
그래서 c 언어이든 뭐든 코딩을 a=1+2 라고 했다면?
이걸 어셈블리어로 변경 mov ax,1;mov bx,2
어셈블리어를 기계어로 변경 01 23 ee 02 22 ef 이런식으로 바뀌는거죠
그래서 이 기계어를 CPU가 읽고 실행하는것입니다
즉 , C언어 실행하면? 내부적으로 어셈블리어로 변경후 다시 기계어로 최종변경이 되고
이 기계어는 CPU를 따라가기 때문에 intel 용이라면? risc 등에선 실행이 안됩니다
또한 같은 인텔cpu라고 해도 64비트 전용 cpu용 기계어라면? 당근 32비트 전용cpu에선 해당 기계어가
실행이 안됩니다!