register 키워드 에 관한 질문

ssehoony의 이미지

register 키워드를 사용하여 등록할 수 있는 변수가 몇개 정도 되는지
궁금합니다. 플랫폼이나 컴파일러 등등에 따라 달라질 수 도 있을 법 한데요

제 환경은 리눅스, gcc, pentium 3 입니다.
이런 환경이라면 register 키워드를 이용해 몇개까지 등록이 가능한걸 까요?
그리고 그 변수가 reg 에 등록이 되었지는 안됐는지 알 수 있는 방법이 있나요?

그리고 레지스터에 등록된 변수의 포인터를 받아서 사용 할 수 도 있나요?

register 키워드에 사용에 대한 뭔가 좋은 자료가 있으면 좋겠네요.
뭐랄까.. 이렇게 사용하면 효율적이다 라던가 뭐 그런거요.

그럼 좋은 하루 되세요 ^^

envia의 이미지

register 변수가 반드시 레지스터에 저장되는 것은 아닙니다. register 키워드는 그냥 "이 변수 많이 쓸 거니까 왠만하면 레지스터에 넣어주라~" 라고 알려주는 겁니다.

컴파일러가 봐서 레지스터에 넣을 필요가 없거나 넣기 어려울 때, 그리고 가능한 경우보다 많은 register변수가 있을 때에는 register 키워드를 그냥 무시합니다. 따라서, 몇개의 변수라도 register 키워드를 사용해서 등록할 수 있습니다. 너무 남용하면 의미가 없어지니까, 많이 쓸 것 같은 변수에만 걸어 주면 됩니다.

레지스터 변수가 실제로 레지스터에 있지 않더라도 메모리 주소는 받아올 수 없습니다. (실제로 레지스터에 있을 수도 있으니까요...)

----

It is essential, if man is not to be compelled to have recourse, as a last resort, to rebellion against tyranny and oppression, that human rights should be protected by the rule of law.
[Universal Declaration of Human Rights]

죠커의 이미지

c언어에서 보장되지 않은 키워드들이 많습니다.

inline이나 register가 그 중의 하나이죠. inline이 된다는 보장도 없고 register가 된다는 보장도 없습니다.

그리고 register는 요즘 안 쓰는 것이 좋다고 알고 있습니다. 우리가 register를 걸어둬서 그걸 컴파일러가 보호하다 보면 정작 컴파일러가 최적화해야 할 부분이 못하게 되니깐요.

windy96의 이미지

죄송합니다만...
register 필요없습니다.
Trust Your Compiler! 입니다...
그리고 위의 분 말씀대로 경우에 따라서 쓰는게 오히려 성능이 떨어질 수도 있습니다.

정말 너무 critical한 부분이라서 register 지정이 필요하다면.. 그 부분을 assembly로 짜는 것이 좀더 확실할 겁니다.

댓글 달기

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