Assembly ADDNES和ADDSNE之间的区别

Assembly ADDNES和ADDSNE之间的区别,assembly,arm,Assembly,Arm,我在理解ARM组件中的ADDNES和ADDSNE之间的区别时遇到了困难。有人能帮我举几个例子吗?同一个指令的拼写不同。例如,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

我在理解ARM组件中的
ADDNES
ADDSNE
之间的区别时遇到了困难。有人能帮我举几个例子吗?

同一个指令的拼写不同。例如,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)

对于同一个指令,它们是不同的拼写。例如,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)

这是关于arm组装的令人困惑的事情之一,所有指令都有条件字段,一些指令有额外的内容,如添加和添加,ne、eq或mi等在哪里。在s之前还是之后?添加+ne+s地址或添加+s+ne。我希望这两种工具都能使用,但从公认的答案来看,情况比这更糟,有些工具使用一种工具,有些工具使用另一种工具。

这是关于arm组装的令人困惑的事情之一,所有指令都有条件字段,有些指令有额外的内容,如添加和添加,ne、eq或mi等在哪里。在s之前还是之后?添加+ne+s地址或添加+s+ne。我希望这两种工具都能使用,但从公认的答案来看,情况比这更糟,有些人用一种,有些人用另一种。

见表14中的最后一项(UAL代表)。见表14中的最后一项(UAL代表)。