cpu-registers

    0热度

    1回答

    我很难理解x86程序集中的寄存器,我知道EAX是完整的32位,AX是低16位,然后AH和AL是AX的高位和低位8位,但我正在做题。 如果AL = 10和AH = 10 AX的值是多少?我的想法是将10转换为二进制(1010),然后将其作为AX的高位和低位(0000 1010 0000 1010),然后将其转换为十进制(2570)正确的答案在这里,还是离开?

    0热度

    1回答

    我想存入两个16位register.For例如无符号长值,如果我有长期价值(-2,147,483,648 to 2,147,483,647)然后我用公式,如: v[0] = myValue % 65536 v[1] = myValue/65536 要获得价值注册 outVal = reg0 + (reg1 * 65536) 但如何为无符号长,其取值范围在0 to 4,294,967,29

    1热度

    2回答

    看着这个事实,我开始想知道寄存器如何在GPU中工作?在知道这个之前,我认为越来越高于分层内存梯形图,大小不断下降(这是直观的(延迟减少,尺寸减小))。 GPU中寄存器的用途是什么?为什么它们的尺寸大于L2/L1缓存? 谢谢。

    2热度

    1回答

    我正在学习逆向工程的基础。虽然倒车的crackme它发生在我身上看到这种模式在几乎每一个函数的开头:在 0x08048766 pushl %ebp movl %esp, %ebp pushl %ebx # because ebx is a callee-saved register subl $0x14,%esp # of course $0x14 changes

    6热度

    2回答

    我试图在程序集中制作一个子程序,它将在屏幕上绘制一个正方形。我不认为我可以像在C++中那样将参数传递给子程序,所以我认为我可以使用堆栈来存储和访问参数(我不能使用公共数据寄存器,因为变量太多通过)。 问题是(我记得在某处读到),当我使用call命令将当前“程序”的地址保存在堆栈中时,这样当它使用“ret”命令时,它会知道在哪里回来。但是,如果我在堆栈中存储了一些东西,然后调用该函数,我将不得不在地

    0热度

    2回答

    我有16位寄存器,它包含在LSB和MSB一些值: LSB: 在位0 ... 1个的值是0 在比特2个的值是0 MBS: 在MSB我需要写值20 所以应该在寄存器写入的值是0 + 0 + 20 = 160 当我在读注册我做它是这样的: 对位的第1个值[0 ... 1]: firstVal = (valFromReg & (((1 << 2)-1) << 1)/2) secondVal = (val

    2热度

    1回答

    如何在现代ARMv7 32位上将一系列浮点寄存器推送(然后弹出)到堆栈上?特别地,我有兴趣保存并恢复暂存(易失性)浮点寄存器d0-d7(或s0-s15,假设它们占用处理器中的相同空间)。 我看到这个方法http://www.cl.cam.ac.uk/~fms27/teaching/2001-02/arm-project/02-sort/apcs.txt与SFM和LFM,但它似乎只适用于很老的ARM

    1热度

    1回答

    执行以下行后,EAX中的值是什么? mov eax, 1002FFFFh inc ax 答案是1002000h。 我的问题是,为什么答案不是1003 0000h或1002 0000h考虑到我们最初是从32位开始,答案是32-4位。

    2热度

    1回答

    我在Raspberry Pi上进行性能测量,并希望获得更高的分辨率,然后只是clock_gettime()。 因此,我需要启用CPU寄存器PMUSERENR。 根据我的Raspberry Pi上的/ proc/cpuinfo,我有一个“ARMv7处理器rev 5(v7l)”。所以,我下载的架构参考手册,发现我必须使用: CRn的= C9,OPC1 = 0,CRM = C14,OPC2 = 0 as

    2热度

    1回答

    gdb的$ pc寄存器与x86 32位处理器中的eip寄存器不同吗? gdb中有四个标准寄存器可用,如$ pc。所以如果它是不同名称的相同寄存器,那么映射是如何完成的?