Эти операнды выглядят как MIPS l.d
, а не x86.
x86 fld
в синтаксисе AT & T выглядит как fld 0(%esi)
, с неявным назначением st0
.
x87 Имена регистров стека: st0..st7.x86 + x87 не имеет регистров с именем f2.
С другой стороны, MIPS имеет регистры целых чисел / указателей r0..r31, а регистры FP f0..f31 и imm16 + register
с этим синтаксисом.(классический) единственный режим адресации MIPS.
Но это также не MIPS, потому что fld
не является мнемоникой MIPS (это x87) , и большинство ассемблеров MIPS используют$
в качестве префикса для имен регистров.
Как и l.d $f2, 0($4)
или 0($a0)
- это обычный синтаксис MIPS, который будет собираться с GAS или с MARS.(И l.d
- это псевдоинструкция для загрузки с двойной точностью в 2 регистра.)
Фактическая машинная инструкция, которую вы хотите для MIPS, равна ldc1 $f2, 0($4)
, для 64-битной загрузки, необходимой для выравнивания в$ f2 и $ f3.
Если это для какого-либо реального ISA, это, вероятно, не MIPS или x86, но я не узнаю конкретный.
Но независимо от этого синтаксис asm довольно универсален: Это загрузка в регистр FP и адрес источника 0 + Rx