Разница между ADDNES и ADDSNE - PullRequest
2 голосов
/ 25 января 2012

У меня проблемы с пониманием разницы между ADDNES и ADDSNE в сборке ARM.Пожалуйста, кто-нибудь может мне помочь, с некоторыми примерами?

Ответы [ 2 ]

4 голосов
/ 25 января 2012

Это разные варианты написания для одной и той же инструкции. 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

Но если попытаться использовать addnse правописание в clang:

$ 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)
0 голосов
/ 25 января 2012

это одна из тех запутанных вещей, связанных со сборкой руки, все инструкции имеют поле условия, некоторые инструкции имеют дополнительные вещи, такие как add и add, куда идут ne, eq, mi и т. Д.До или после?добавить + ne + s addnes или добавить + s + ne.Я бы хотел, чтобы инструменты взяли оба, но из принятого ответа звучит так, что это хуже, некоторые берут одно, другие берут другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...