Is the address register an FP register?
No. The base rs1 is an integer register; only the data source/destination is an FP register.
Load 64-bit double-precision FP from memory into f register.
FLD uses opcode 0000111 (0x07), funct3 011. The rs1 field selects the integer base register, the immediate provides a byte offset, and rd selects the destination floating-point register.
FLD loads a 64-bit double-precision FP value from memory into f[rd] using base+offset addressing (I-type format). 12-bit signed immediate offset, base address in x[rs1]. The loaded value may be a NaN-boxed single-precision value. Only guaranteed atomic when naturally aligned and XLEN≥64. Bits are transferred unmodified; non-canonical NaN payloads preserved.
FLD is a floating-point load/store instruction. It forms the effective address from integer register rs1 plus a signed 12-bit offset and transfers the bit pattern between memory and an FP register.
Understand this scenario with real code like «fld f0, 0(x10)».
No. The base rs1 is an integer register; only the data source/destination is an FP register.
The offset is a signed 12-bit immediate, encoding -2048 to 2047 bytes.