Я пытаюсь изучить ассемблер с помощью Mac OSX, но у меня invalid operand
ошибки. В настоящее время я пытаюсь создать простой for
цикл до 10 в сборке, эквивалентный следующему в c++
:
for(int i = 0; i < 10; i++){
}
Моя текущая сборка (simpleloop.s
):
.globl _main
_main:
pushq %rbp
movq %rsp, %rbp
subq $16, %rsp
movl $10, %cx
loop:
dec %cx
jnz loop
leave
ret
Однако, когда я запускаю этот фрагмент с помощью gcc simpleloop.s
, я получаю следующее сообщение об ошибке:
ошибка: недопустимый операнд для инструкции
Movl $ 10,% cx
Я понимаю, что вопросы о создании циклов for в сборке задавались много раз в StackOverflow, однако я не могу найти ни одного вопроса или ответа относительно циклов for со сборкой, специфичной для Mac OSX. Может кто-нибудь объяснить, почему я получаю ошибку и как ее можно исправить? Мне кажется, что Mac OSX принимает только x86
с использованием синтаксиса «AT & T». Может кто-нибудь сказать мне, почему это?