2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ARMv7-MのNOP命令

Last updated at Posted at 2016-08-10

ARMv7-MのNOP命令について。

バイナリパッチを作るのに必要なので調べました。

NOP命令は"No Operation" 何もしない命令です。

ARMv7-MのNOP

ARMv7-M には 2種類のNOP命令 NOPとNOP.wがある。 どう使い分けるかは不明です。

  • NOP

  • opcode: 0xbf00

  • NOP.w

  • opcode: 0xf3af 0x8000

バイナリ書き換え例

cortex m3用のバイナリの

00002a0 2b 68 98 47 bd e8 f0 81 ff f7 fe ff bc e7 23 68
 1f8:   f7ff fffe       bl      0 <SdrControllerInit>

をNOPに書き換えてみた。

00002a0 2b 68 98 47 bd e8 f0 81 00 bf 00 bf bc e7 23 68
 1f8:   bf00            nop
 1fa:   bf00            nop

同様にNOP.wに書き換えてみた。

00002a0 2b 68 98 47 bd e8 f0 81 af f3 00 80 bc e7 23 68
 1f8:   f3af 8000       nop.w

ディスアセンブルは以下のコマンドで取得

arm-none-eabi-objdump -d hoge.o

でも、上記NOPとNOP.wだと期待した動作にならず mov r8, r8にしたら動いた。なんでだろ。

00002a0 2b 68 98 47 bd e8 f0 81 c0 46 c0 46 bc e7 23 68
 1f8:   46c0            nop                     ; (mov r8, r8)
 1fa:   46c0            nop                     ; (mov r8, r8)

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?