Download i960 Jx Microprocessor Developer`s Manual

Transcript
INSTRUCTION SET REFERENCE
ldib:
dst[7:0] = read_memory(effective_address)[7:0];
if(dst[7] == 0)
dst[31:8] = 0x000000;
else
dst[31:8] = 0xFFFFFF;
ldos:
dst = read_memory(effective_address)[15:0];
# Order depends on endianism. See
# section 2.2.2, “Byte Ordering” (pg. 2-4)
dst[31:16] = 0x0000;
if((effective_address[0] != 02) && unaligned_fault_enabled)
generate_fault(OPERATION.UNALIGNED);
6
ldis:
dst[15:0] = read_memory(effective_address)[15:0];
# Order depends on endianism. See
# section 2.2.2, “Byte Ordering” (pg. 2-4)
if(dst[15] == 02)
dst[31:16] = 0x0000;
else
dst[31:16] = 0xFFFF;
if((effective_address[0] != 02) && unaligned_fault_enabled)
generate_fault(OPERATION.UNALIGNED);
ldl:
if((reg_number(dst) % 2) != 0)
generate_fault(OPERATION.INVALID_OPERAND);
# dst not modified.
else
{ dst = read_memory(effective_address)[31:0];
dst_+_1 = read_memory(effective_address_+_4)[31:0];
if((effective_address[2:0] != 0002) && unaligned_fault_enabled)
generate_fault(OPERATION.UNALIGNED);
}
ldt:
if((reg_number(dst) % 4) != 0)
generate_fault(OPERATION.INVALID_OPERAND);
# dst not modified.
else
{ dst = read_memory(effective_adddress)[31:0];
dst_+_1 = read_memory(effective_adddress_+_4)[31:0];
6-71