Zdravím všetkých. Hľadám, hľadám, ale nič rozumné nenachádzam, tak sa skúsim opýtať tu.
Dá sa nejako jednoducho volať assemblerovský podprogram z programu napísaného v C v prostredí Arduino IDE?
Trochu podrobnejšie: mám dosku bluepill s STM32F103 a v Arduino IDE dohrané veci okolo toho. Programovanie v C ide v pohode, aj používanie knižníc. Ale keďže ma chytá nostalgia po assembleri (ešte z doby ZX Spectra so Z80kou), rád by som si nejakú obsluhu HW napísal aj v strojáku. Zopár informácií som aj našiel, ale všetky sa týkali AVR a nie STM. Tak by som rád vedel, či je to možné nejako jednoducho vyriešiť.
Ja si to predstavujem asi takto (možno trochu naivne): podprogramy by boli umiestnené v samostatnom súbore s príponou .S a boli by stanovené nejaké pravidlá, napr.:
- R0 a R1 sa použijú na prenos hodnôt z C s obmedzením na 32bit int
- R2 až R5 sa pred použitím musia uchovať a pred návratom obnoviť
- R6 až R10 sú k dispozícii a netreba ich uchovávať
- návratová hodnota do C programu by sa prevzala z R0
Použitie by vyzeralo asi takto:
v C (bez deklarovania): a = 3; b = 4; c = sucet (a, b);
v strojáku: sucet {ADD R0, R1};
Je také niečo reálne alebo sa mám prebudiť zo sna?
Arduino IDE - STM32 spolupráca C a ASM
Moderátori: psichac, Moderátori
- lucky62
- Zaslúžilý člen
- Príspevky: 1151
- Dátum registrácie: 14 Feb 2012, 20:16
- Bydlisko: Liptovský Mikuláš, SK
Re: Arduino IDE - STM32 spolupráca C a ASM
Tak hlavne treba naštudovať vlastnosti použitého kompilátora/linkera.
Všeobecne by nemal byť problém napísať nejaký modul/funkciu v assembleri (ale aj hocijakom inom jazyku).
Je nutné to skompilovať (či už tým istým kompilátorom, alebo externým) do tvaru, aby to linker potom vedel dať dokopy.
O nejakých registroch by som neuvažoval, malo by byť napísané v dokumentácii kompilátora/linkera aký je inerface pri volaní externých funkcií.
Ešte nejaké čítanie k téme:
Programming Arduino in assembly language
Closed source *.a lib with Arduino, linking issue
Všeobecne by nemal byť problém napísať nejaký modul/funkciu v assembleri (ale aj hocijakom inom jazyku).
Je nutné to skompilovať (či už tým istým kompilátorom, alebo externým) do tvaru, aby to linker potom vedel dať dokopy.
O nejakých registroch by som neuvažoval, malo by byť napísané v dokumentácii kompilátora/linkera aký je inerface pri volaní externých funkcií.
Ešte nejaké čítanie k téme:
Programming Arduino in assembly language
Closed source *.a lib with Arduino, linking issue
0
- lucky62
- Zaslúžilý člen
- Príspevky: 1151
- Dátum registrácie: 14 Feb 2012, 20:16
- Bydlisko: Liptovský Mikuláš, SK
Re: Arduino IDE - STM32 spolupráca C a ASM
No ja som tajne dúfal, že to má Arduino IDE už nejako poriešené. Aj som niečo našiel, ale týkalo sa to klasického AVR a nie STM. A snažiť sa naštudovať spoluprácu kompiler linker kvôli pár strojákovým blbinkám je trochu masochizmus zaváňajúci problémami. Tak si to teda odpustím a tých pár (samostatných) rutiniek v strojáku pre potechu si napíšem v Keil.
0
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 10 Odpovedí
- 328 Zobrazení
-
Posledný príspevok od používateľa budvar10
-
- 6 Odpovedí
- 237 Zobrazení
-
Posledný príspevok od používateľa pocitujlasku
-
- 4 Odpovedí
- 851 Zobrazení
-
Posledný príspevok od používateľa lucky62
-
- 5 Odpovedí
- 938 Zobrazení
-
Posledný príspevok od používateľa pocitujlasku
-
- 11 Odpovedí
- 961 Zobrazení
-
Posledný príspevok od používateľa mirosne