trabbie schrieb:
> Dazu eine erste Frage: Da ich noch einige Zusatzfunktionen einbauen
> möchte, brauche ich eine Funktion, die aus zwei (unsigned) int den
> grösseren oder kleineren Wert zurückgibt. In Tasking gibt es dafür z.B.
> den Compilereigenen
> Aber nirgendwo kann ich finden, wie ich so was mit dem GNU-Compiler des
> HighTec-Systems lösen kann?!?
>
> Hättet ihr da eine Idee?
Das kann doch in normalem C ausgedrückt werden:
1 | unsigned a, b, c;
|
2 | // ...
|
3 | c = a < b ? a : b;
|
Das ist portabel und man verheddert sich nicht in Inline-Assembler.
Falls man wirklich den Code mit Assembler spicken und möglichst
kryptisch gestalten will: Die Constraints für D-Register ist "d" und für
eine unsigned 9-Bit-Konstante AFAIR "I" oder "J" (im Handbuch
nachlesen!)
1 | asm ("min.u %0, %1, %2" : "=d" (c) : "d" (a), "dI" (b));
|
Je nach Compiler-Version hat tricore-gcc auch Builtin-Funktionen wie
__builtin_minu oder so. Auch hier hilft ein Blick ins Handbuch, irgendwo
bei "Builtin Functions" oder "Intrinsic Functions".