ia-32

    3热度

    5回答

    我需要使用GCC获取寄存器中的值。 事情与此类似: EAX=00000002 EBX=00000001 ECX=00000005 EDX=BFFC94C0 ESI=8184C544 EDI=00000000 EBP=0063FF78 ESP=0063FE3C CF=0 SF=0 ZF=0 OF=0 获取32位寄存器是很容易的,但我不知道该怎么弄的标志最简单的方法是。 在这本书中的例子:

    2热度

    3回答

    我正在研究一个从表达式产生汇编代码的程序。其中一个需要的功能是棕褐色(x)的目前工程,并使用下面的代码序列(地址在运行时填写): fld [0x00C01288]; fld st(0); fsin; fld st(1); fcos; fdivp; fst [0x0030FA8C]; 不过,我想用FPTAN操作码代替,因此我尝试使用以下代码: fld [0x00C01288]; f

    5热度

    3回答

    我刚开始学习汇编在我的计算机科学类,我使用指定的舍入模式有一个分配给圆一个浮点值。我试图用fstcw,fldcw和frndint来实现这个功能。我修改舍入控制位,在数字的四舍五入,然后恢复先前的控制位(赋值的一个要求)。 当前突出的问题是,指令fld %1似乎加载错误的值到st(0)浮点寄存器(例如,如果我叫用2.6207值的函数,数-1.9427(...)电子29被装入寄存器)。这可能是由于gc

    11热度

    4回答

    我已经了解到,您无法直接将字节推入英特尔奔腾的堆栈,有谁能向我解释这一点吗? 我给出的理由是因为esp寄存器是可以字寻址的(或者,这是我们模型中的假设)并且它必须是“偶数地址”。我会假设递减一些32位二进制数的值不会混淆寄存器的对齐,但显然我不太了解。 我已经尝试了一些NASM测试,并提出如果我声明一个变量(咬数据库123)并将其推到堆栈上,esp递减4(表示它推送32位?)。但是,“推字节咬”(

    2热度

    1回答

    溢出如何在ia-32中工作? 例如,下面的代码会发生什么?它会抛出什么标志? movl $0x1, %eax addl $7fffffff, %eax 谢谢!

    1热度

    2回答

    我创建了一个变量,它存储了一个16位变量,并且我将这个上半部分存储在一个8位变量中。 我该怎么做? 编辑:其对IA-32,我不认为我可以使用寄存器 EDIT2:我允许使用的寄存器。