programing:arm-programing:arm-unaligned-access
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン | |||
| programing:arm-programing:arm-unaligned-access [2018/04/26 13:30] – yoko | programing:arm-programing:arm-unaligned-access [2026/07/28 13:16] (現在) – 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ARMの非境界整列アドレスのデータアクセス | + | ====== |
| - | =================================== | + | |
| RISC系CPUでは、16bitや32bitのデータアクセスを行う時に、それぞれ2バイト境界や4バイト境界アドレスでないと例外トラップする仕様も多いが、ARMv6T2以降では非境界アドレスのデータアクセスもサポートされている。 | RISC系CPUでは、16bitや32bitのデータアクセスを行う時に、それぞれ2バイト境界や4バイト境界アドレスでないと例外トラップする仕様も多いが、ARMv6T2以降では非境界アドレスのデータアクセスもサポートされている。 | ||
| - | ARMv7の場合 | + | ===== ARMv7の場合 |
| - | ---------- | + | |
| ARMv7 以降では、非境界整列アクセスが義務付けられてる(デフォルト)。 | ARMv7 以降では、非境界整列アクセスが義務付けられてる(デフォルト)。 | ||
| 行 22: | 行 20: | ||
| </ | </ | ||
| - | GCCコンパイラの動作 | + | ===== GCCコンパイラの動作 |
| - | ------------------ | + | |
| GCCは、デフォルトで `-munaligned-access` が有効となっているらしく、データアクセスが境界調整されている場合、コマンドラインオプション `-mno_unaligned_access` を使って非境界整列アクセスをサポートするライブラリ関数へのリンクを避けることもできる。 | GCCは、デフォルトで `-munaligned-access` が有効となっているらしく、データアクセスが境界調整されている場合、コマンドラインオプション `-mno_unaligned_access` を使って非境界整列アクセスをサポートするライブラリ関数へのリンクを避けることもできる。 | ||
| - | 補足 | + | ===== 補足 |
| - | ---- | + | |
| - 非境界アクセスが発生すると、実際のメモリバス上は複数回のバスアクセスとなり、多少アクセス時間がかかる。 | - 非境界アクセスが発生すると、実際のメモリバス上は複数回のバスアクセスとなり、多少アクセス時間がかかる。 | ||
| - | 参考 | + | ===== 参考 |
| - | ---- | + | |
| - | 1. [[http:// | + | - [[http:// |
| - | 2. [[http:// | + | |
| - | 3. [[http:// | + | |
programing/arm-programing/arm-unaligned-access.1524717003.txt.gz · 最終更新: by yoko
