Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
19 years ago

How to write 32bits constant into r2

Hi all,

I'm using inline asm and hope to write a 32bits constant which is defined in *.c file into register r2. I have tried the following instruction, but compiler report error:

asm("movhi r2, %hiadj(%0)" :: "i" (0x1000000));

asm("addi r2, r2, %lo(%0)" :: "i" (0x1000000));

ERROR: error: invalid `asm': operand number missing after %-letter

Anybody help?

David

3 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    you need an extra '%' :

    <span style="color:red">--- asm("movhi r2, %hiadj(%0)" :: "i" (0x1000000));

    --- asm("addi r2, r2, %lo(%0)" :: "i" (0x1000000));

    +++ asm("movhi r2, %%hiadj(%0)" :: "i" (0x1000000));

    +++ asm("addi r2, r2, %%lo(%0)" :: "i" (0x1000000));

    </span>

    Regards,

    --Scott
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Thanks very much, Scott...

    Can you guide me how to find the related information?

    Thanks again,

    David
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi David,

    > Can you guide me how to find the related information?

    See the gcc manual.

    Regards,

    --Scott