Использование регистра RRX armv8
В одном из моих домашних заданий меня попросили написать программу armv8, которая считает количество 1-бит в регистре. Вот моя реализация:
.arch armv8-a // specifies the ARMv8 Architecture
.text
.align 2 // align to a multiple of 4 (1<<2)
.global start // arm64_emu.sh starts execution at start
.type start, %function
start:
movz x0, #8
movz x10, #0
movz x1, #0
loop:
rrx x0, x0 //rotate x0 and put the last bit into carry
bcs skip
add x10, x10, 1
skip:
cmp x1, #3
bne loop
svc 0 // dump registers
svc 999 // stop the emulation
.size start, .-start
Хорошая блок-схема с этого сайта дает хороший обзор моей программы: http://www.8085projects.info/Program21.html
Тем не менее, это дает мне эту ошибку:
zl5022@enterprise:~$ arm64_emu.sh c.s
c.s: Assembler messages:
c.s:11: Error: unknown mnemonic `rrx' -- `rrx x0,x0'
Согласно http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204j/Cjacbgca.html, rrx принимает два регистра в качестве входных данных, так что я что-то здесь упустил?
0 ответов
Инструкция поворота ARMv8 - это ROR.
ROR Xd, Xm, #uimm
Rotate Right (immediate, 64-bit)