[어셈블리 ]ORG 디렉티브는 왜?

dalant019의 이미지

어셈블하면 기계어에 보이지 않는지요?

어쨋든 CPU가 다음 명령어를 가져오기 위해 pc와 같이 사용하는 기준 주소의 값을 바꾸려면(org가 이 일을 하는 거 맞죠?) 이에 해당하는 명령이 cpu에 전달되야 가능하잖아요.(제 부끄러운 상식선에선요 ㅜㅜ)

org의 레퍼런스를 보면 어셈블러가 여차 여차 알아서 한다고 나와있는 거 같은데... 그런데 부팅할 때를 생각해보면(어셈블러가 개입하지 못하는 상황) 처음 512 바이트를 메모리에 읽오온 뒤 하나 하나 실행하는 거니깐 이때에는 이에 해당하는 명령이 있어야 될 거 같은데요??? 왜 그런거죠???

제 짧은 지식이 여러분을 괴롭히네요... 죄송합니다...

JuEUS-U의 이미지

부트로더...
부팅하는데 당연히 어셈블러 안들어갑니다만....
런타임에서도 어셈블러 안들어갑니다= _=;;;
어셈블러는 컴파일할 때 쓰이는 녀석입니다.
동적 링커하고 햇갈리신것 같네요.

...

ORG 디렉티브,,, 어셈블러에서 처리하는 녀석입니다.
기계어에 대응되는 명령이 아닙니다 = ㅅ=);;;
그 뒤 코드의 segment offset을 변경하는 녀석으로,
상황에 따라서 "그냥 그런거임", 혹은 "패딩질 필요함" 등등으로 해석이 됩니다.

그리고 PC를 변경하는게 아니라
어셈블러 작동시에 location counter라고, 코드 줄을 기억하는 녀석을 변경시킵니다.

Necromancer의 이미지

세그먼트 시작지점(코드 중간에 start니 뭐니로 설정한 프로그램 실행시작지점 말고, 세그먼트시작 지점)의 오프셋이 0이 아닌 org로 선언한 값이라는 뜻입니다.
부트로더도 쓰이고 있고요
도스의 EXE가 아닌 COM파일 같은 경우에는 시작오프셋이 무조건 0x100으로 고정되어있습니다. 이런넘들 만들때 씁니다.

그리고 이런 환경은 이미 주소가 고정되었다는 것을 가정하고 만들기 때문에 링커 필요 없습니다.

어셈블러에 만들어낸 코드 실행시키면 그대로 다 됩니다.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

댓글 달기

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