在你嘲笑我之前:我想问算术运算是在ALU单元还是累加器中完成的。我读了一本书,它说累加器是用于进行算术运算的寄存器。 这个累加器如下所述: 没有像累加器这样的寄存器,每次计算(加法、乘法、移位等)的结果都需要写入主存储器,可能只是为了在下一次操作中立即读取使用。 这是否意味着没有累加器仍...
我在分析一个反汇编程序时,发现了以下命令:sar %eax 这是做什么用的?我知道带两个参数的 sar 会执行右移,但我不知道带一个参数代表什么意思。 这个程序是为 Intel x86 处理器编译的。
我有两个问题: 1. 一台机器可以有两个或多个不同型号的CPU吗? 2. 如果我调用CPUID指令,不同的CPU执行时结果会有什么不同呢?(如果问题1的答案是对的,这是显而易见的)。如果确实有区别,如何通过CPUID指令获取所有CPU的信息。
假设您知道您的软件只能在补码机器上运行,其中符号溢出行为得到了很好的定义。 在C和C ++中,符号溢出仍然是未定义行为,编译器可以自由地用“ret”替换您的整个程序,引发核战争,格式化您的驱动器或使恶魔从您的鼻子里飞出。 如果您在内联汇编中存在符号溢出,那么您的程序是否仍会调用未定义行为? ...
为了我的项目,我必须使用内嵌汇编指令,例如rdtsc来计算一些C/C++指令的执行时间。 以下代码似乎在Intel处理器上可以工作,但在ARM处理器上不行:{unsigned a, d;asm volatile("rdtsc" : "=a" (a), "=d" (d)); t0 = ((uns...
我有这段代码:section .bss buff resb 1 readfromkeyboard: mov eax,3 ;specify system read mov ebx,0 ;specify standard in ...
我反汇编了一个 .exe 文件,得到了这个作为它的第一行。 push ebp 这是什么意思? 为什么要使用 ebp? 它是否与 pop 命令有关?尽管我在反汇编中没有看到它!