У меня есть этот IA32 ассемблерный код, который я пытаюсь преобразовать в Y86 код сборки:Как конвертировать инструкции от IA32 к Y86
bubble_a:
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
pushl %ebx
movl 8(%ebp), %edx
movl 12(%ebp), %edi
subl $1, %edi
testl %edi, %edi
jg .L11
jmp .L8
.L9:
movl 4(%edx,%eax,4), %ecx
movl (%edx,%eax,4), %ebx
cmpl %ebx, %ecx
jge .L4
movl %ebx, 4(%edx,%eax,4)
movl %ecx, (%edx,%eax,4)
.L4:
addl $1, %eax
cmpl %edi, %eax
jne .L9
.L7:
subl $1, %edi
je .L8
.L11:
movl $0, %eax
testl %edi, %edi
jg .L9
jmp .L7
.L8:
popl %ebx
popl %esi
popl %edi
popl %ebp
ret
Я изо всех сил, чтобы перевести инструкции MOVL в .L9
movl 4(%edx,%eax,4), %ecx
movl (%edx,%eax,4), %ebx
movl %ebx, 4(%edx,%eax,4)
movl %ecx, (%edx,%eax,4)
Я знаю, что нет никакой инструкции, которая сделает это, но я не могу понять, какой набор инструкций заменит их в Y86.
Благодарим за помощь.
Наверняка это не то, что намеревался ваш учитель. Выбросьте этот код и напишите свой с нуля. –
Знаете ли вы, что означают инструкции x86, и задаетесь вопросом, есть ли подобная инструкция; или вам просто нужна помощь в разборе инструкций x86? Я не знаю вашего набора инструкций, но у вас наверняка будут команды add и mul type, которые могут реплицировать то, что x86 делает за один шаг. – gnometorule