cpu-registers

    2热度

    2回答

    林试图以下列NASM码相乘两个16位数字: mov ax, [input1] mov bx, [input2] mul bx 先前代码被存储在DX的结果:AX 进出口试图使用来自单独库“print_int”的函数将整数打印到屏幕上。但是print_int要求整数必须在EAX寄存器中。 我怎样才能把32位整数在EAX寄存器中? 更新 我想出了这个 mov cx, dx ;move upper

    1热度

    1回答

    我对CPU任务调度的时间片算法有一些清晰的认识,但是我对最短的工作优先算法有一些困惑。 例如: 我有两个程序。 一个程序无限循环,另一个程序有限循环。在这种情况下,CPU如何通过使用最短作业来确定执行任务。 CPU只有在执行这些程序时才了解这种情况(无论是无限的还是有限的)。 请指引我走出这个问题... 感谢&问候, Saravanan.P

    6热度

    2回答

    我正在做一些x86-64程序集试验。已经编译这个虚拟函数: long myfunc(long a, long b, long c, long d, long e, long f, long g, long h) { long xx = a * b * c * d * e * f * g * h; long yy = a + b + c + d + e + f +

    4热度

    1回答

    我想用gdb在Linux中调试我的程序。 我想验证在Linux中的特定帧的寄存器值,并为此我运行两个命令; info reg和info frame 我发现不同寄存器的“info reg”命令显示的值不同于这种情况下保存命令“info frame”的寄存器的值。寄存器rbp,rsp,rip对我很重要。 这些命令有什么区别?当它说“保存寄存器”时,这意味着什么以及这些寄存器在什么位置保存?

    3热度

    2回答

    以下是我想在运行“Red Hat Enterprise Linux 5.5(Tikanga)内核2.6.18-194.el5xen x86_64”的机器上使用的源代码示例。 OS。 一般的想法是,我想要回溯一些线程,所以我为该线程引发SIGUSR1信号,并且一个处理程序执行backtrace()调用。 在我的场景如下,FrameTwo函数在循环中调用malloc和free。每当为这个特定的线程产生

    18热度

    2回答

    刚开始学习x64程序集,我有一个关于函数,参数和堆栈的问题。据我所知,函数中的前四个参数在Windows中传递给rcx,rdx,r8和r9寄存器(以及用于浮点数的xmm0-xmm3)。因此,与将四个参数一个简单的相加功能如下: add: mov r10, rcx add r10, rdx add r10, r8 add r10, r9 mov ra

    7热度

    1回答

    我写了一个程序,试图读取和写入控制寄存器。 程序编译得很好,但是当内联程序集即将被执行时,它会产生分段错误。 代码: void instructions(int val) { int i; int value; for(i = 0; i < val; i++) __asm__("mov %cr0, %eax"); } 我用GDB和通过每个流水线阶梯

    4热度

    5回答

    我有一个现有的代码基础为没有操作系统的嵌入式系统。我试图用x86 gcc而不是交叉编译器来构建它,作为在主机上进行单元测试的第一步。不幸的是,直接的寄存器读取和写入遍布整个地方,而不是使用提供的抽象层。当然有一个选择是解决这个问题;用调用GPIO访问函数替换直接寄存器访问。我希望能得到了通过引入一个宏(仅在x86版本使用)重新定义的代码片段就像 myvar = (GPIOC->IDR >> 6)

    4热度

    1回答

    我想知道是否有意义在栈帧中推送函数的返回值。 我知道返回值大部分存储在寄存器(eax for gcc)中,但是仅用于性能? 谢谢!

    4热度

    3回答

    我完全没有关于硬件寄存器的经验或知识,以及如何通过代码与它们进行交互。然而,我目前的C#项目需要我从SMBus上的芯片读取温度,而且我认为我必须弄脏自己的手。如果您想知道,温度传感器是华邦W83793G。 我还有很长的路要走,但我已经通过第5页上看着这个文件开始: smbus.org/specs/smbb10.pdf 看来第一步完成我的任务是写入以下硬件寄存器:AX,BH,BL,CH,CL,并从以