Для назначения мне нужно увеличить число до степени, введенной стандартным входом (мне нужно работать с числами с плавающей запятой). Моя идея заключалась в том, чтобы сделать циклы while со счетчиком, а если целое число отрицательное, разделить 1 на фактическое число (например, повысить его до -1). Дело в том, что я не знаю способа разделения при сборке руки, я искал, но без удачи, единственное, что я нашел, это кто-то смутно упомянул вращение. Если бы кто-то мог указать мне правильное направление, это было бы прекрасно. Кстати, я использую ARMSim v5.
Редактировать: я скомпилировал файл c с g cc -S, и в результате возникли некоторые ошибки в ARMSim, которые я не понимаю, почему:
.file "xd.c"
.text
.globl x
.data
.align 4
.type x, @object
.size x, 4
x:
.long 6
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl x(%rip), %eax
movl %eax, %edx
shrl $31, %edx
addl %edx, %eax
sarl %eax
movl %eax, x(%rip)
movl x(%rip), %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0"
.section .note.GNU-stack,"",@progbits