問題タブ [armclang]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
stm32 - Breakpoint instruction inside ARM v6 compiler startup code
I am developping a new project for STM32 on Keil MDK 5.28, using ARM compiler V6 (the "new" armclang compiler). It's the first time I'm using armclang.
My reset handler is calling the __main
symbol. As expected, this is executing some startup code of the Keil C library and then is calling my main
function (later on, I will remove the calls to the startup code but right now I want to understand the issue).
The problem is the following: there is a BKPT instruction inside one of the C library function (_sys_open
). I didn't set this breakpoint and it doesn't appear in the breakpoint list. I cannot remove it (tried obviously to rebuild everything). So I cannot start a debug session without breaking at this location.
I also tried to uncheck the option "Run to Main".
Do you know where this BKPT instruction comes from and how to remove it ?
arm - armclang/armcc は copy-elision のオプションを提供しますか?
copy-elision の gcc に関するドキュメントをいくつか読みましたが、copy-elision を無効にするオプション「-fno-elide-constructors」が提供されています。アームもこれをサポートしているかどうか疑問に思っています。アームのユーザーガイドとリファレンスガイドで答えが見つかりませんでした...
c++ - armclang は必要なすべてのレジスタを属性 ("IRQ") でスタックに保存しますか?
Keil ARMCompiler 6.15 (armclang.exe) を使用していますが、生成されたアセンブラ コードの正確性に疑問があります。属性 'interrupt("IRQ")' が無視されているようです。私にとっては、r1 と r2 もスタックに保存する必要があります。「使用済み」属性を削除すると、完全な機能が削除されます(最適化)。
私が犯した過ちや忘れたことを誰かに見られますか?
もともとコードは gcc 用に作成されました。
割り込みルーチンに使用される属性:
C++ コード:
アセンブラー コード: