mips - ppm 图像的 BGR 到 RGB 的 Mips 转换
问题描述
我正在处理一项任务,我一直坚持从 BGR(蓝色、绿色、红色)到 RGB(红色、绿色、蓝色)的转换我一直在尝试反转代码的位置,注意前 2未使用十六进制代码的位,其他六对分别对应于 RGB 或 BGR。这是我一直在构建的代码:
.data
FILENAME: .asciiz "C:/Users/conta/Desktop/mario.ppm"
ERROROPEN: .asciiz "Erro ao abrir o arquivo."
STR: .space 512
.text
li $t7, 4 #Número de quebras de linhas no arquivo ppm
li $t8, 0x0a # \n
li $t9, 0 #contador
la $a0, FILENAME #Nome do arquivo a ser aberto.
li $a1, 0 #Sempre zero.
li $a2, 0 #0 para leitura 1 para escrita.
li $v0, 13 #syscall 13 (open file).
syscall
bltz $v0, end_error #menor que zero significa que nao encontrou o arquivo.
move $a0, $v0 #v0 possui o descritor de arquivo.
la $a1, STR #endereco para armazernar os caracteres lidos.
li $a2, 1 #ler apenas 1 byte.
readloopcabecalho:
beq $t9, 4, preparacao
li $v0, 14 #syscall 14
syscall
lb $t4, 0($a1)
beq $t4, $t8, cont
addi $a1, $a1, 4 #incrementa para o proximo endereco de $a1.
bnez $v0, readloopcabecalho #enquanto v0 for diferente de 0 continua.
preparacao:
la $a1, 0x10040000
j readlooppixel
readlooppixel:
beq $t5, 3, zera_pula
li $v0, 14 #syscall 14
syscall
addi $a1, $a1, 1 #incrementa para o proximo endereco de $a1.
j cont2
zera_pula:
move $t5, $zero
addi $a1, $a1, 1
j readlooppixel
cont2:
addi $t5, $t5, 1
bnez $v0, readlooppixel #enquanto v0 for diferente de 0 continua.
j preparacao2
cont:
addi $t9, $t9, 1
j readloopcabecalho
preparacao2:
la $a1, 0x10040000
j arrumandopixel
arrumandopixel:
lw $t3, 0($a1)
sw $t3, 0($a1)
addi $a1, $a1, 4 #incrementa para o proximo endereco de $a1.
bne $a1, 0x10080000, arrumandopixel
j printcabecalho
printcabecalho:
la $a0, STR #puxando STR para $a0 para aplicar o syscall
li $v0, 4 #syscall para printar o cabeçalho
syscall #porem está printando somente o primeiro caractere que foi gravado no endereço
j end
end_error:
la $a0, ERROROPEN
li $v0, 4
syscall
end:
li $v0, 10
syscall
解决方案
推荐阅读
- mysql - 执行 Mariadb 更新语句时出错
- java - Flink - 多源集成测试
- oracle - ORA-01882: 在 Liquibase Gradle 插件中找不到时区
- c - C语言中i++和(i)++的区别
- python - Tensorflowjs 转换错误:“ValueError:不支持的操作”
- batch-file - 仅当源文件夹和目标文件夹中的文件名不同(主要是名称的版本部分)时复制/替换(镜像)文件
- python - jython 的 PyCryptodome 替代品
- prolog - 事实数量规则
- reactjs - React Native HOC 和重复生命周期方法函数
- c# - .NetStandard2.0 中的 AsymmetricSecurityBindingElement 在哪里?