Assembly ADDNES和ADDSNE之间的区别
我在理解ARM组件中的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
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代表)。