Существует ряд ошибок, связанных с синтаксисом, вызывающих вашу проблему.
"эта инструкция не может быть скомпилирована"
Вы помещаете данные в раздел кода. Определите вашу переменную вне блока newmem и внутри отдельного блока памяти. Вы пытаетесь определить блок памяти с помощью «val:», но вы не выделили эту память. Вы также не можете ссылаться на него, не зарегистрировав символ.
Для определения обычного числа с плавающей запятой вы используете 4-байтовую переменную, а не 8-байтовую переменную, поэтому вы используете «dd», а не «dq», во-вторых, вам нужно «привести» его к float.
Ваша инструкция, которую вы хотите поместить в стек FPU, является следующей:
поле dword ptr [val]
Создайте шаблон впрыска, как вы делали ранее, а затем вставьте этот код вверху и продолжайте то, что вы делали, в нем есть все, что я отметил в ответе, и я проверил его работу:
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
alloc(val,8)
val:
dd (float)93.5
registersymbol(val)
newmem:
fld dword ptr [val]
Имейте в виду, что вам нужно будет использовать оставшуюся часть сгенерированного шаблона, это просто код для исправления ошибок, обнаруженных в вашем вопросе.