Gast
#3650476
Hi, Ich programmier gerade einen Code, der sowohl auf einem STM32F4 als auch F0 und vermutlich später ein paar mehr laufen soll. Zum optimieren des ganzen würde ich gerne ein paar inline Assembler Befehle nutzen, allerdings wären das je nach Coretex andere Befehle. Zum Beispiel ein Bitswap: Also bit0 -> bit31 bit1 -> bit30 , ... , bit31 -> bit0 Verwendet habe ich dazu den Code von hier: http://graphics.stanford.edu/~seander/bithacks.html#BitReverseObvious
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
GCC weiß allerdings nicht, dass es sich dabei um einen Bitswap handelt, also wird auf einem Cortex M4 nicht RBIT und bei einem M0 zumindest die Hälfte mit einem REV "abgekürzt" (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489h/Cihjgdid.html) Habe noch ein paar andere Fälle, in denen ich die DIV Operation anders behandeln könnte, wenn es diese (beim M0) nicht gibt. Also jetzt zu meiner Frage, Gibt es die Möglichkeit in GCC schon über Preprozessor-Anweisungen nach den unterstützen Befehlen zu Fragen? Ich könnte natürlich auch Fragen, ob es sich um einen Cortex M0 oder M4 handelt, dann müsste ich das aber für jeden Prozessor machen, der später dazu kommt. Oder wäre das die allgemeine Vorgehensweise.