【发布时间】:2018-06-06 20:29:22
【问题描述】:
以下C代码:
int main()
{
float f;
f = 3.0;
}
转换成如下汇编指令:
main:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
flds .LC0
fstps -4(%ebp)
movl $0, %eax
leave
ret
.LC0:
.long 1077936128
计算float 文字的.long/int 表示的正确方法是什么?
例如 1077936128 由 3.0 生成,用于上述示例
对于此示例,
gcc与-m32 -S -O0 -fno-stack-protector -fno-asynchronous-unwind-tables标志一起使用,使用英特尔设置生成程序集输出。
参考文献:
Compiler Explorer Link 带有编译标志和其他设置
【问题讨论】:
标签: c assembly floating-point x86 ieee-754