프로세스 제작시 만들어지는 명령어 자체가 하드웨어 기능을 위해서 추가 되거나 효율적으로 되거나 아키텍쳐에 따라서 달라지기 때문에 명령어를 같게 만들기가 힘듭니다.
예를들어 한 클럭에 3바이트의 메모리를 읽고 저장하는 기능을 가진 프로세서가 있다면 이 기능을 지원하기 위해서는 명령어가 하드웨어 종속이 될수밖에 없습니다.
그리고 아키텍쳐 구조상 레지스터가 매우 많은 프로세서와 레지스터 수가 상대적으로 부족한 프로세서 간에 명령어가 같기는 힘듭니다.
그렇다고 서로 호환되게 서로간에 없는 명령어를 에뮬레이션 하는 명령어를 추가한다는 것 자체도 가격상승의 요인이므로 사실적으로 불필요합니다..
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
이 질문에 대한 대답이었습니다.
말씀하신데로 3개의 어셈블러가 동일한 아키텍쳐 어셈블러라면 사실 같아도 상관은 없습니다.
어셈 명령어(add, sub, push 등..)는 동일한테니까요..
하지만 위에 다른 분들도 말씀하셨듯이 표준이 따로 없다보니..
어셈블러마다 기본적인 어셈코드이름은 같지만 매크로와 같은 확장기능과 몇몇 메모리 지정하는 문법들이 다를수 밖에 없습니다.. 왜냐하면 3개의 어셈블러 제작자들이 서로 같게 작성하자고 약속하진 않았을테니까요..
지금부터라도 동일한 아키텍쳐에 대한 어셈블러의 문법을 동일화 하자는 표준안이 생긴다면 앞으로는 같은 아키텍쳐 어셈블러는 동일하게 작성이 될 가능성은 있습니다. 하지만 제 사견으로는 시중에는 많은 프로세서들이 존재하고 각각 자기들만의 아키텍쳐를 가지고 있으므로 이런 표준을 정할려면 새로운 아키텍쳐가 나오거나 같은 아키텍쳐라고 해도 새로운 명령어가 추가되거나 하는 경우에 그때마다 표준에 반영하고 지원하는 컴파일러들이 나올려면 엄청난 시간이 걸릴거 같습니다..
그러니 표준이 나와도 어셈블러 제작자들이 표준을 안따르고 그냥 만들지 않을까 싶네요..
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
어셈블리는 표준을
어셈블리는 표준을 만들어내는 통일된 그룹 자체가 없었고, 지금도 없습니다. 논의되는것도 없는 걸로 압니다.
어셈블러 제작자가 명령 이름을 뭐라 짓고 하건 간에 이것을 통제할 수 있는 장치가 없다는거죠.
C나 C++은 표준을 만들어내는 그룹이 있고, 컴파일러 구현할때 그걸 따라야죠.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
프로세서 마다
프로세서 마다 지원하는 명령이 다르니 표준을 정하기는 힘들지 않을까요?
물론 공통적인 부분만 표준화하는 것은 가능하겠지만 너무 제한적일 것입니다.
프로세스 제작시
프로세스 제작시 만들어지는 명령어 자체가 하드웨어 기능을 위해서 추가 되거나 효율적으로 되거나 아키텍쳐에 따라서 달라지기 때문에 명령어를 같게 만들기가 힘듭니다.
예를들어 한 클럭에 3바이트의 메모리를 읽고 저장하는 기능을 가진 프로세서가 있다면 이 기능을 지원하기 위해서는 명령어가 하드웨어 종속이 될수밖에 없습니다.
그리고 아키텍쳐 구조상 레지스터가 매우 많은 프로세서와 레지스터 수가 상대적으로 부족한 프로세서 간에 명령어가 같기는 힘듭니다.
그렇다고 서로 호환되게 서로간에 없는 명령어를 에뮬레이션 하는 명령어를 추가한다는 것 자체도 가격상승의 요인이므로 사실적으로 불필요합니다..
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
저기요 질문있어요..
masm,gas,nasm 컴파일러들의 각기다른 아키텍처을 지원하는거는 아니지않나요??
masm 에서 a라는 아키텍처을 코딩할때하고 b라는 아키텍처을 코딩할때 명령어가 틀리다는것은 이해하겠는데요...
a,b,c 라는 아키텍처가 있다면 masm 는 a만 지원하고 gas는 b 만 지원하고 이러지는 않는거같은데..?
그러니깐 masm,gas,nasm 의 문법의 동일해도 상관이없는거 아닌가요??
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
Re: chadr 님의 글은..
모든 아키텍쳐에서 다 통용되는 어셈블리 표준을 만들 때
나타날 수 있는 문제를 이야기하시는것 같습니다.
제가 인용을
제가 인용을 잘못했군요..
이 질문에 대한 대답이었습니다.
말씀하신데로 3개의 어셈블러가 동일한 아키텍쳐 어셈블러라면 사실 같아도 상관은 없습니다.
어셈 명령어(add, sub, push 등..)는 동일한테니까요..
하지만 위에 다른 분들도 말씀하셨듯이 표준이 따로 없다보니..
어셈블러마다 기본적인 어셈코드이름은 같지만 매크로와 같은 확장기능과 몇몇 메모리 지정하는 문법들이 다를수 밖에 없습니다.. 왜냐하면 3개의 어셈블러 제작자들이 서로 같게 작성하자고 약속하진 않았을테니까요..
지금부터라도 동일한 아키텍쳐에 대한 어셈블러의 문법을 동일화 하자는 표준안이 생긴다면 앞으로는 같은 아키텍쳐 어셈블러는 동일하게 작성이 될 가능성은 있습니다. 하지만 제 사견으로는 시중에는 많은 프로세서들이 존재하고 각각 자기들만의 아키텍쳐를 가지고 있으므로 이런 표준을 정할려면 새로운 아키텍쳐가 나오거나 같은 아키텍쳐라고 해도 새로운 명령어가 추가되거나 하는 경우에 그때마다 표준에 반영하고 지원하는 컴파일러들이 나올려면 엄청난 시간이 걸릴거 같습니다..
그러니 표준이 나와도 어셈블러 제작자들이 표준을 안따르고 그냥 만들지 않을까 싶네요..
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
댓글 달기