어셈블러를 만들고 있습니다. 출력형식에 관하여 문의드립니다.

San의 이미지

어셈블러에 입력되는 소스코드가

              mov ax, bx
              mov ax,DATA
data         dw 1

일때,

출력은
패스 1에서

0000:

0002:

0006: DATA       DW    1

가 되고,

패스 2에서

8b c4      

0002: 8b 07 0006

0006: 01

가 되는 것이 맞는지요?

컴퓨터란 놈이 어떤 문구를 이해하는지 그 형식을 알아야

(어셈블러가 어떤 아웃풋을 내야 그것을 로더가 이해하는지)

프로그램을 만들텐데 아웃풋이 어떻게 나와야 하는지를

잘 모르겠으니...

왼쪽의 주소 부분이 0002, 0006 같이 16진으로 쓰여져 있는것도

이해가 안가고...

주소체계에 대한 상세한 이해보다 우선 만들어야 되는 입장이 되고 보니

조언 부탁드립니다.

코드내용읜 제쳐두고 형식이 저렇게 나오면 되는 것인지..

물론, 8b c4같은 부분은 사실 10001011 11000100이겠지만 편의상..^^

ed.netdiver의 이미지

글쎄요, 우선 만드셔야 되는 입장이라고는 하셨지만,
내용을 봐서는 그 접근법이 좀 어렵지 않을지 싶군요.

우선, 주소체계에 대한 이해가 필요는 하지만, 절대주소정보로
뭘 하시겠다면, 그건 좀 다시한번 생각해보시길 권합니다.

어셈블러라고 해도, 실제로 사용하는 operand는 register와 symbol이지,
그 symbol을 저장해둔 data section의 address나
function entry의 address를 직접 쓰진 않습니다.

뭐, 전혀는 아니고, ucom programming같은경우는 그런 절대주소정보를
쓰는 경우도 있겠지만요. 그리고 써도 offset정도입니다.
그러니, 주소같은건 잊어버리시고
register file과 symbol로 range를 좁혀서, 그 좁은 영역안에서
뭘 어떻게 하면 좋을지(opcode 사용)를 고민하시면 좋지 않을지 싶습니다.

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

익명 사용자의 이미지

실행 프로그램 파일 형식은 OS(로더)에 따라 다릅니다.
Memory에 로드하기 위한 힌트가 붙지요. 예를 들면 Windows경우에는 PE Format이란 형식으로 돼 있읍니다.

로더에 따라 다르지만,
실행 파일 이미지가 아니라 단순 어셈블이라면(기계어로 번역),
DOS(2000에 있는 것은 봤읍니다.) 명령중에 Debug.exe가 있읍니다.
Debug.exe가 어셈블도 해주니까 바로 어떻게 인터프릿하는 지
확인할 수 있으실 겝니다.

댓글 달기

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