Hallo Leute,
ich programmiere den MSP430F123 und verwende dabei den IAR C/C++ 
Compiler. Mein Code besteht aus einem *.s43 Assemblerfile, für 
zeitkritische Routinen, und einem *.c File.
Aus meinem C-Code heraus rufe ich div. Assemblerroutinen, z.B. 
sleep_msp, auf.
Der Aufruf sieht folgendermaßen auf:
1  |    sleep_msp( 8 ); /* Aufruf der Assemberroutine sleep_msp */
  | 
Zur Vollständigkeit hier noch die ASM Routine:
1  | sleep_msp:
  | 
2  |    DINT
  | 
3  |    CLR     &TACTL
  | 
4  |    MOV     #TASSEL0+MC1+TACLR,&TACTL
  | 
5  |    MOV     R12,&TACCR0
  | 
6  |    MOV     #LPM3+GIE,SR
  | 
7  |    JMP     RET
  | 
Nun meine eigentliche Frage ;-)
Der C-Compiler verfrachtet die Übergabeparameter (hier 8) immer an 
Register R12 (aufsteigend).
Wie bringe ich den Compiler dazu, Übergabeparameter an eine von mir 
favorisierte Stelle, z.B. R13, zu legen?
Geht das überhaupt?
Der Hintergrund meiner Frage.
Die verwendeten Assemblerroutinen sind zum Teil vorgegeben und verwenden 
nicht immer R12 als Arbeitsregister. D.h. ich muss vor dem Aufruf der 
Routine den Übergabeparameter explizit (z.B. mit Inline Assembler) ins 
entsprechende Register mappen, was meinen Code nicht unbedingt 
verständlicher macht.
Gruß Klaus