ADDNES和ADDSNE之间的区别

时间:2012-01-24 22:18:44

标签: assembly arm

我无法理解ARM程序集中ADDNESADDSNE之间的区别。有人可以通过一些例子来帮助我吗?

2 个答案:

答案 0 :(得分:4)

对于同一指令,它们是不同的拼写。例如,Clang在反汇编时只能处理addnes格式,但otool输出addsne

示例:

$ cat example.s
  addnes r0, r0, #1
$ clang -arch arm -c -o example.o example.s
$ otool -tV example.o 
example.o:
(__TEXT,__text) section
00000000    12900001    addsne  r0, r0, #1  @ 0x1

但是如果尝试在clang中使用addnse拼写:

$ cat example.s
  addsne r0, r0, #1
$ clang -arch arm -c -o example.o example.s
example.s:1:bad instruction `addsne r0,r0,#1'
clang: error: assembler command failed with exit code 1 (use -v to see invocation)

答案 1 :(得分:0)

这是关于手臂组装的令人困惑的事情之一,所有指令都有条件字段,一些指令有额外的东西,如添加和添加,ne或eq或mi等在哪里去。在s之前还是之后?添加+ ne + s addnes或添加+ s + ne。我希望这些工具能够兼顾两者,但是从接受的答案中可以看出它比这更糟糕,有些人拿另一些拿走另一个。