어셈블러에서 옵티마이즈??

chsuk의 이미지

안녕하세요. 항상 질문만 하네요....

gcc를 이용해서.. 어셈블리어를 실행파일로 만들고 있습니다.

그런데..제가 어셈블리어에 몇가지의 추가적인 코드.. nop를 6개 넣었습니다.

원본 어셈블리어 코드 와 6개 추가된 명령어된 어셈블리어의 실행 파일의 명령어 갯수를 비교해보면 약 40개의 차이를 보이네요.
브랜치 등을 비교해도 많이 차이가 나구요.

제가 알기로는 어셈블러는 1:1로 기계어로 바꿔주는 것으로 알고 있는데.. 옵티마이즈... 생각해보면 가능할 것 같기도 하지만..ㅜ.ㅜ;;;

결과가 저렇게 나와서 당황스럽네요.

디어셈블러도 역으로 뽑아서 확인을 해봤는데 몇 군데에서 엉겨있더군요..

질문 드립니다.

어셈블리어도 옵티마이즈 하나요? 만약 옵티마이즈를 한다면 못하게 막는 방법은 없나요?

감사합니다.

SoulreaveR의 이미지

여담으로 어느 디어셈블러를 사용하셨는지는 모르겠지만, objdump와 같은 linear sweep을 쓰는 것은 그 정확도가 평균 65-70%정도라고 합니다. 완전 신뢰하는것은 좋지 않다고 생각되네요.

chsuk의 이미지

실행파일에서 실행시키면서 명령어를 읽어들여서 분석하는 게 있어서 분석했더니 40개 정도차가 났구요..
이상해서 objdump로 다시 읽어들여 봤더니 비교해봤더니 엉겼더군요... 일단 감사드리구요..

as에서 optimization level을 어떻게 지정할 수 있나요?
관련 자료라던지 링크라던지... 검색 키워드라도... 어딜 찾아봐야 하나요?

gcc 옵티마이즈는 많은데.. as는 찾아도 못찾겠네요..

감사합니다.

SoulreaveR의 이미지

man as 하시면 자세한 사항이 설명되어 있습니다.

chsuk의 이미지

아쉽게도 원하는 옵션은 없는것 같네요..

어쨋든... 답변 감사드립니다.

http://www.rt.com/man/as.1.html

drinkme의 이미지

c내에서 인라인 어셈을 사용하셨다면, 최적화 합니다.
그냥 as로 하셨더라도, 최적화 합니다.
-n 옵션을 줘서, code alignment관련 최적화를 꺼 보시죠.

댓글 달기

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