[완료]어셈블리언어는 표준작업이 없었나요??

등짝을보자의 이미지

그러니깐...C언어을 보면 컴파일러마다 function 같은거는 틀릴수도있지만...
문법은 거의 통일되어있잖아요....

근데 왜 asm 은 다 틀린가요?? 표준통합작업같은게 없었나요??

masm , gas , nasm 문법 다 틀리잖아요...-_-;
왜 복잡하게 다 틀리게 만든건지 궁금하네요..

아키텍쳐마다 문법을 다르게 만들 이유같은게 있었나요??

Necromancer의 이미지

어셈블리는 표준을 만들어내는 통일된 그룹 자체가 없었고, 지금도 없습니다. 논의되는것도 없는 걸로 압니다.
어셈블러 제작자가 명령 이름을 뭐라 짓고 하건 간에 이것을 통제할 수 있는 장치가 없다는거죠.

C나 C++은 표준을 만들어내는 그룹이 있고, 컴파일러 구현할때 그걸 따라야죠.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

kewlbear의 이미지

프로세서 마다 지원하는 명령이 다르니 표준을 정하기는 힘들지 않을까요?
물론 공통적인 부분만 표준화하는 것은 가능하겠지만 너무 제한적일 것입니다.

chadr의 이미지

프로세스 제작시 만들어지는 명령어 자체가 하드웨어 기능을 위해서 추가 되거나 효율적으로 되거나 아키텍쳐에 따라서 달라지기 때문에 명령어를 같게 만들기가 힘듭니다.

예를들어 한 클럭에 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.

OpenSnake의 이미지

그리고 아키텍쳐 구조상 레지스터가 매우 많은 프로세서와 레지스터 수가 상대적으로 부족한 프로세서 간에 명령어가 같기는 힘듭니다.

masm,gas,nasm 컴파일러들의 각기다른 아키텍처을 지원하는거는 아니지않나요??

masm 에서 a라는 아키텍처을 코딩할때하고 b라는 아키텍처을 코딩할때 명령어가 틀리다는것은 이해하겠는데요...

a,b,c 라는 아키텍처가 있다면 masm 는 a만 지원하고 gas는 b 만 지원하고 이러지는 않는거같은데..?

그러니깐 masm,gas,nasm 의 문법의 동일해도 상관이없는거 아닌가요??

--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.

kslee80의 이미지

모든 아키텍쳐에서 다 통용되는 어셈블리 표준을 만들 때
나타날 수 있는 문제를 이야기하시는것 같습니다.

chadr의 이미지

제가 인용을 잘못했군요..

Quote:
아키텍쳐마다 문법을 다르게 만들 이유같은게 있었나요??

이 질문에 대한 대답이었습니다.
말씀하신데로 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.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.