cpu-registers

    0热度

    1回答

    假设我在bl寄存器中有一些8位数据,并且我想将它放在eax的最右边8位。有没有办法直接做到这一点?我假设答案很简单,我只是没有找到答案。 很明显,我可以乘以FFFFFFh ebx,但后来我必须重新排列我的寄存器,因为结果会进入eax。

    0热度

    3回答

    在iPhone开发中使用plain C时,编译器是否将声明为register的变量放在CPU寄存器中?

    1热度

    1回答

    在Ubuntu Linux操作系统,32位x86处理器,配气编译 我碰到一个很奇怪的问题,其中%ebx寄存器的内容不被返回我的程序的状态代码时,我使退出系统调用。这是相关的代码。这里只是系统调用前寄存器的转储: eax 0x1 1 ecx 0x804a00c 134520844 edx 0xff 255 ebx 0x159 345 esp 0xbffff3bc 0xbf

    7热度

    1回答

    EAX用于在32位平台中存储函数的返回值,我只是想知道函数返回值的大小是否大于4字节,eax如何处理它?在这种情况下,OS可以将返回值保存在堆栈中,并将堆栈的地址存储在EAX中,但OS如何判断存储在EAX中的值是返回值的地址还是实际上是返回值本身?

    1热度

    1回答

    我一直在教自己编写漏洞,最近有shellcode,很多guides/books声称我们可以猜测堆栈开始的位置,从而有一点工作猜测我们的shellcode在什么地址开始。 为什么栈的起始地址是可预测的?不应该从内存中的某个随机地址开始堆栈吗? 如果堆栈的地址开始只是虚拟地址空间中的某个固定偏移量,那么为什么它会因机器而异? 不同平台之间的误差幅度和栈起始地址是多少? 相关:"the stack be

    0热度

    1回答

    弄得我拆开这个代码 int main{ vector<string> temp; } 结果是这样的 LEA ECX, %16I64X DWORD PTR[EBP + temp] CALL std::vector<std::basic_string<char, std::char_traits<char>, std:: 我的问题是: 什么%16I64X在这里做。 行“std ::

    5热度

    1回答

    如何找出支持SSE的处理器上的XMM寄存器数量? 例如,在Intel X5550上。

    2热度

    2回答

    我有一个问题,关于我在工作的AGC/SPI控制器的奇怪行为。它在Verilog中完成,针对Xilinx Spartan 3e FPGA。控制器是依靠外部输入启动的FSM。 FSM的状态存储在state_reg中,未被明确初始化,因为我认为未初始化的寄存器将默认为零。当我实施控制器时,FSM不会运行。监测SPI总线我没有观察到任何活动。为了监控FSM,我将state_reg路由到一个输出总线,该输出

    5热度

    2回答

    如果我理解正确,程序计数器指向要执行的指令的地址,并且在大多数情况下,您将向程序计数器添加四个值以前进到下一个指令地址。但是假设你有一个程序计数器指向内存中的一个单词(例如单词15),并且你想前进到下一条指令,那么你是否应该直接将15加到15以获得下一条指令?任何解释将不胜感激

    1热度

    1回答

    汇编语言是相当简单,但我关于如何使用寄存器例如困惑: section .data msg db "Hello, world!",0xa len equ $ - msg section .text global _start _start: ;write our string to stdout mov edx,len mov ecx,msg mov eax,4