어셈블리언어 익히기?

ktlsu1231의 이미지

안녕하세요.
어셈블리언어의 필요성이 조금씩 느껴지고 있습니다.
어셈블리는 어떤 CPU를 기준으로 공부하는 것이 좋을까요?
좋은 책이 있을까요?
약간 시대와 좀 멀어진 어셈은 요즘에 어떤 용도로 사용되고 있나요?
감사합니다.

불량도ㅐㅈㅣ의 이미지

CPU는 x86로 배우면 될겁니다.

http://www.asmlove.co.kr/

Art Of Assembly

문근영 너무 귀여워~~

mach의 이미지

어셈블리언어는 CPU에 따라 아주 상이합니다.
이를 테면, x86의 경우에도, 8086, 80286,...,80586등까지 유사하지만 상이한 명령어집합을 가지고 있습니다. 그래서, 하나의 어셈블리언어를 배우는 것은 큰의미가 없는 일이되곤 합니다. 즉, 특정 CPU용 어셈블리언어를 배우고 나도 해당 CPU를 사용하는 업종이 아니면, 사용할 기회가 없다고 보는것이 맞습니다.

그래서, 어셈블리언어를 익힐때는 언어 자체를 익히는 목적보다는 CPU의 동작원리를 익히는 것을 목표로 삼는것이 바람직합니다. 특히, 내부연산처리부분도 문제의 쟁점이 되기도 하지만, 주로 어셈블리를 사용할정도의 시스템에서는 내부연산보다는 IO가 주 관심사가 되는 경우가 많습니다. IO 및 콘트롤 프로그램을 작성하는 것이 다반사라고 여겨집니다. 이를테면, 디바이스드라이버, 외부제어장치 콘트롤러등이겠지요. 스케쥴이라던지 모니터링등의 주요로직은 구지 어셈블리언어로 익히는 것보다는 C/C++등의 언어로 익히는 것이 바람직하다고 여겨집니다. 어셈블리언어는 IO관련 부분을 중점적으로 익히는 것이 바랍직 하다고 여겨집니다.
또한, 마이크로프로세서(CPU)가 고수준(16비트, 32비트,64비트등)이면, 보통 시스템개발을 수행할때도 어셈블리수준에서 하는 경우보다는 크로스컴파일러(C/C++크로스컴파일러)를 이용하여, 해당 시스템의 기계어 코드를 생성하는 경우가 많습니다. 최근의 개발사례로 볼때, 어셈블리언어는 특정장치의 디바이스드라이버등의 저수준개발을, 그 상위의 OS비스무리한것은 C/C++등을 이용하는 것이 많이 있다고 생각합니다.
정리하자면,
1) 어셈블리언어는 언어를 배우는 목적이 아니라 기계를 이해하는 목적으로 하는것이 옳다.(타 어셈블리언어로의 이동이 자유로와야 한다.)
2) 특히, IO관련을 익히자.
3) 고수준 로직은 C/C++같은 고수준언어로 익히고, 필요시 이를 어셈블리로 포팅하자.
이렇게 생각합니다.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

불량도ㅐㅈㅣ의 이미지

Quote:
그래서, 어셈블리언어를 익힐때는 언어 자체를 익히는 목적보다는 CPU의 동작원리를 익히는 것을 목표로 삼는것이 바람직합니다. 특히, 내부연산처리부분도 문제의 쟁점이 되기도 하지만, 주로 어셈블리를 사용할정도의 시스템에서는 내부연산보다는 IO가 주 관심사가 되는 경우가 많습니다. IO 및 콘트롤 프로그램을 작성하는 것이 다반사라고 여겨집니다. 이를테면, 디바이스드라이버, 외부제어장치 콘트롤러등이겠지요. 스케쥴이라던지 모니터링등의 주요로직은 구지 어셈블리언어로 익히는 것보다는 C/C++등의 언어로 익히는 것이 바람직하다고 여겨집니다. 어셈블리언어는 IO관련 부분을 중점적으로 익히는 것이 바랍직 하다고 여겨집니다.

그러면 각 CPU 홈페이지 가서 매뉴얼을 찬찬히 읽어봐야 되는군요.

그렇구나....

문근영 너무 귀여워~~

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.