Fiz um BubbleSort em assembly (MIPS) para rodar no simulador Logisim

Estou fazendo a matéria de Arquitetura e Organização de Computadores e o trabalho final era implementar algum algoritimo em alto nivel, converter para assembly e depois em hexadecimal. Optei por escrever um BubbleSort em assembly (MIPS) pra rodar em um Caminho de Dados Monociclo que fiz no simulador Logisim, e cara, ficou foda demais de ver ele rodando em tempo real

image

Uau, não pensei que o MIPS era tão complexo assim! Eu já brinquei de assembly com o z80 e outros computadores de mentira, e pensei que fosse mais parecido com eles. Essas estrutura de If e for é desse compilador/assembler em especifíco?

Não sei como é nos outros assemblers, mas no MIPS não existe especificamente o IF e FOR, o que existe são comandos como o **beq** (Branch equals), que faz um salto para uma parte do código caso os dois registradores sejam iguais, e o **slt** (Set on less than), e aí juntamos os dois para comparar se um número é menor ou igual ao outro, por exemplo, e faz o salto para a parte do código marcada com o Label (nome seguido de dois pontos, tipo **for1:**)
Calma, eles são só labels?? Eu fui enganado?? 🤣. Ficou muito legal a maneira que você colocou eles! Existem assembler que te dão estruturas assim, eu acho que o da microsoft para x86 dá umas abstrações assim. Mas no caso tudo vira *branches* e *jumps* no final, não é nada especifico da arquitetura
são hahahaah, oloco, que massa, não sabia que os outros tinham essas facilidades. Mas eles já são CISC né, ou são RISC ainda?
Esse da microsoft é sim para CISC, mas não impede de fazer isso para um RISC. Talvez tenha algums assemblers de mais alto nível nesse estilo para ARM por exemplo, só não conheço mesmo por não precisar. Porque no final elas só são macros mesmo. Ex do MASM: ``` .if eax == 1 .elseif eax !=10 .elseif eax >= 11 .else .endif ```
saquei, que dahora mano, não conhecia não