問題タブ [code-size]
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.
assembly - `mov` を使用するよりも `xor` を使用する方がバイト数が少ないのはなぜですか?
x をゼロ (x = 0) に設定するには、csapp book で 2 つの方法が示されています。
初め:
2番:
また、最初の 1 つは 3 バイトしか使用しないが、2 番目の 1 つは 7 バイトを使用することも示しています。
2 つの方法はどのように機能しますか? 最初のものは 2 番目のものよりもバイト数が少ないのはなぜですか?
c - Code Composer Studio コンパイラで 64 ビット除算を無効にする
現在、Code Composer Studio (CCS) V7.4.0.00015 を使用して C でプログラムを作成しています。このプログラムには、Byte、unsigned int、float 除算を実行するいくつかの自己作成ライブラリがあります。
ブートローダに適合する十分なスペースを確保するために、コード サイズを縮小する必要があるプロジェクトの段階に達しました。
私の .map ファイルを見ると、CCS が自動的にインクルードするランタイム サポート オブジェクトがいくつかあることがわかります。これらのいくつかは、次のとおりです。
div64u.obj
--> 846 バイトdiv64s.obj
--> 316 バイト
これらのオブジェクトは、rts430x_lc_sd_eabi.lib
私の質問は次のとおりです。これらの 64 ビット除算オブジェクトが含まれているのはなぜですか (特に、プログラムに 64 ビット浮動小数がない場合)。さらに重要なことに、それらを無効にする (または CCS がそれらを含めないようにする) ことはできますか?
私は数日間、さまざまなサイトをグーグルで調べたり、トロールしたりしましたが、これらのオブジェクトやそれらを無効にする方法に関する多くのドキュメントを見つけることができませんでした.
編集: 実際には、long long int を使用する関数が 1 つあることがわかりました (SLLONG として typedef されています)。
新しい質問:
- long long 整数を使用する必要がないように (精度を損なうことなく)、関数を再配置する方法を誰かが見つけ出すことができますか?
- または、より具体的には、その長い長い除算を別の方法で行う方法、つまり以下に示す行を誰かが理解できますか?