This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

__asm inline selective disable optimization

Hi,
I'm an mixing assembly with C code using Keil uV 4.6
When I have optimization Level 3 (-O3) turned on, the compiler skips alot of assembly function memory reads & writes. I need every line to be executed for this particular function.

 __asm
    {
        MOV r1,#0x0041000
        MOV r2,#0x0040000
        ...
    }


I have tried intrinsic commands like __nop(), __force_store(), __schedule_barrier, etc, and have tried to make variables volatile. I know i must be missing something...
Any suggestions

Parents
  • Thanks for the great suggestions.
    #pragma O0 (letter O, zero) did fix it.

    I would like to learn how to do an separate asm function call.
    I have been doing a little searching and haven't found any good examples how to call a function in a separate asm file from C. I've looked in the dissassembly and its pretty easy to pass the variable back through R0. I just don't know what the file header or other steps to take to make it work.

    Thanks,
    Ben

Reply
  • Thanks for the great suggestions.
    #pragma O0 (letter O, zero) did fix it.

    I would like to learn how to do an separate asm function call.
    I have been doing a little searching and haven't found any good examples how to call a function in a separate asm file from C. I've looked in the dissassembly and its pretty easy to pass the variable back through R0. I just don't know what the file header or other steps to take to make it work.

    Thanks,
    Ben

Children