Pregunta sobre ensamblador

Por si alguien por aquí puede solucionarme la duda, como se codifican las instrucciones de tipo j en ensamblador? el código de operación esta claro, pero como se codifica la dirección de salto?
Si no recuerdo mal, con una etiqueta que contiene la dirección de línea del codigo
en ensamblador, los codigos funcionan de la siguiente forma:

codigooperacion_dato1_dato2

Depende mucho del procesador y de la instrucción particular....

De todas formas... foro equivocado!
Si, pero por ejemplo como codificaría la instrucción j en este ejemplo? (procesador MIPS2000)

.text 0x0040000
__start:
lw $4, 8($10)
bne $4, $5, distinto
sub $4, $4, $5
j salida
distinto: add $4 4 $5
salida: addi $5, $5, 1

a que dirección de memoria apunta la etiqueta salida? y después como codifico esa dirección en 26 bits?

PD: Si no va a qui que lo muevan al subforo que corresponda.
Supongo que dependerá del procesador que estés usando. En las prácticas de EC que hice, usábamos este tipo de instrucción:

Imagen
Eso lo tengo claro, se codifica con 26 bits la dirección y 6 para la instrucción, lo que no se es como se sabe la dirección de salto que hay que codificar.

Aquí dejo la tabla de como se codifica:
Imagen
No sé si el instruction set de MIPS aquí es del todo correcto, pero te dan 26 bits para poner direcciones.

Esto creo que estará claramente mal, pero cada instrucción ocupa un determinado tamaño en tu memoria, y como es un procesador RISC, todas las instrucciones tienen el mismo tamaño, así que nada de VLIWs o cosas maravillosamente extrañas, estará de la siguiente manera:

0x0040000 __start:    lw $4, 8($10)
0x0040004             bne $4, $5, distinto
0x0040008             sub $4, $4, $5
0x0040012             j salida
0x0040016 distinto:   add $4 4 $5
0x0040020 salida:     addi $5, $5, 1


Si no me he equivocado en el tamaño de cada instrucción, salida debería ser 0x0040020. La operación que hace j es:

PC = nPC; nPC = (PC & 0xf0000000) | (target << 2);


Por cierto, mírate este enlace Jump instruction in MIPS Assembly.

Un pequeño detalle, ¿es que hay foro de programadores en EOL? ¿Y desde cuando, si es así?
6 respuestas