193得票6回答
第一款编译器是如何编写的?

我听说过关于鸡和蛋以及引导程序(bootstrapping)的问题,我有几个问题。 是谁编写了将代码转换为二进制指令的第一个编译器? 汇编语言是被编译还是被翻译成二进制指令的? ...我很难相信他们会用二进制编写编译器。

90得票4回答
什么是循环反转技术?

我正在阅读一份关于 Java 的 just-in-time compiler (JIT) 优化技术的文档。其中之一是“循环反转”。文档中说: 你可以用 do-while 循环来替换常规的 while 循环。并且将 do-while 循环置于一个 if 子句中。这种替换会导致两个跳转指令少。 ...

30得票2回答
x86_64架构中的syscall是一条指令吗?

我想检查在glibc中执行系统调用的代码。我找到了下面这样的东西:ENTRY (syscall) movq %rdi, %rax /* Syscall number -> rax. */ movq %rsi, %rdi /* shift arg1 - a...

16得票2回答
ARM7 IT(if then)指令实际上是做什么的?

我对IT指令(if then)的功能感到困惑。快速参考卡上写着: 操作:If-Then 汇编语言:IT{pattern} {cond} 作用:根据模式使最多四个后续指令有条件执行。 模式是一个由最多三个字母组成的字符串。 每个字母可以是T(然后)或E(否则)。 IT之后的第一条指令具有条件c...

14得票3回答
为什么汇编指令可以在“lea”指令中包含乘法运算?

我正在处理应用程序中非常低层次的部分,其中性能非常关键。 在研究生成的汇编代码时,我注意到了以下指令:lea eax,[edx*8+8] 我习惯于在使用内存引用时(例如[edx+4]),看到加法,但这是我第一次看到乘法。 这是否意味着x86处理器可以在lea指令中执行简单的乘法运算? 这...

13得票1回答
指令和微操作之间的区别

机器指令和微操作有何区别?我在这里找到了以下定义: 一种小型基本指令,用于串联成高级机器指令 在维基百科上发现: 在计算机中央处理器中,微操作(也称为微操作或μops)是一些设计中使用的详细低级指令,用于实现复杂的机器指令(在此上下文中有时称为宏指令)。 我理解是否正确,即...

13得票3回答
大于和大于等于之间有性能差异吗?

在现代处理器上,对于分支条件的大于和大于等于比较是否存在性能差异?如果我有一个条件可以轻松地选择其中任意一个,是否选择>或>=会稍微有点优势?(这将用于英特尔或AMD硬件上的编译语言)

12得票4回答
ASM 8086中的ADC指令

举例来说,当我使用ADC时:AL = 01 and BL = 02, and CF = 1 当我执行以下操作时:ADC AL,BL AL会是3还是4?(包括CF加法或不包括?)

11得票1回答
C++能在全局作用域中有代码吗?

在C++源文件的全局作用域中编写代码(编译为汇编指令)是否合法?以前,我认为除了Ch编程语言(C/C++解释器),你不能在C++程序的全局作用域内编写代码。代码/指令只能在函数体内部 [period]! 然而,我发现你可以通过将函数分配给全局变量来在C++中在主函数之前调用它们!这将涉及汇编...

11得票1回答
x86中长跳和短跳的区别

我读到过,当相对跳转地址小于124时应使用短跳转,否则应使用长跳转。 在x86上,这两种跳转类型在CPU操作/性能方面有何区别?