我很困惑。我对FLD m64fp指令有一些疑问,但我不知道从哪里开始。因为这是一项家庭作业,我不是特意要求答案,而是解决问题的方法。任何建议或想法,将不胜感激。关于程序集FLD指令困惑m64fp
内存中的八个连续字节包含十六进制值01,00,00,00,00,00,00,00.FLD m64fp指令被执行。它的参数是这八个连续字节中第一个的地址。由于FLD指令的结果,在ST的值(0)现在是:
1) 2^(-1075)
2) 2^(-1074)
3) 2^(-1023)
4) 2^(-1022)
另外,如果我有这下面的汇编代码
│0x8048384 <main> lea 0x4(%esp),%ecx │
│0x8048388 <main+4> and $0xfffffff0,%esp │
│0x804838b <main+7> pushl -0x4(%ecx) │
│0x804838e <main+10> push %ebp │
│0x804838f <main+11> mov %esp,%ebp │
│0x8048391 <main+13> push %ecx │
│0x8048392 <main+14> fldpi │
│0x8048394 <main+16> fsqrt │
│0x8048396 <main+18> fld1 │
│0x8048398 <main+20> fsubrp %st,%st(1) │
│0x804839a <main+22> mov $0x0,%eax │
│0x804839f <main+27> pop %ecx │
│0x80483a0 <main+28> pop %ebp │
│0x80483a1 <main+29> lea -0x4(%ecx),%esp │
│0x80483a4 <main+32> ret
如何找出值会在主返回之前在ST(0)? 谢谢。
浮点数由一个'符号位',一个偏向'指数'和一个'重要/尾数'组成。第一个问题的复杂情况是x86是小端,所以在这种情况下浮点数将是一个反常规。 – EOF