我刚刚浏览了Linux内核源代码树并阅读了文件tools/include/nolibc/nolibc.h。
我syscall在这个文件中看到了 use %r8,%r9以及%r10在 clobber 列表中。
还有一条评论说:
rcx 和 r8..r11 可能会被破坏,其他的则被保留。
据我所知,syscall只有 clobbers%rax和%rcx(%r11和记忆)。
有没有syscall真实%r8的例子%r9?%r10
我正在尝试在我的ubuntu 14.04中安装PHP和apache2.我通过以下命令安装了PHP和apache2
$sudo apt-get install php5-cli
$sudo apt-get install apache2-bin
Run Code Online (Sandbox Code Playgroud)
现在我只想在ubuntu系统上重启apache2服务器.但是我在重启apache2时遇到"失败"错误.我在下面提到了错误
AH00558:apache2:无法使用127.0.1.1可靠地确定服务器的完全限定域名.
全局设置"ServerName"指令以禁止显示此消息
谁能帮我解决这个错误?
我需要在ubuntu 14.04上重启我的apache2服务器.
在反汇编中,我经常看到正在使用字符串操作指令而不考虑方向标志(DF)的状态,如下所示:
or ecx, 0FFFFFFFFh
xor eax, eax
mov edi, ebp
repne scasb
Run Code Online (Sandbox Code Playgroud)
CLD或者STD在函数开始后没有找到指令,也没有其他可能影响DF标志的指令.
那么,编译器在程序启动后,假定程序运行时,假定程序运行时保持预定义状态,并且在程序运行时保持不变?
我目前正在尝试将抗锯齿合并到我的线条绘制算法(DDA 和 Bresenham)中,教授指示我任何抗锯齿技术都是允许的,所以我做了一些研究,似乎未加权区域采样是一个很好的选择要去的路线。
我通读了它的工作原理的基础知识,我想说我已经理解了大约 70-80%,但我不明白决定应该在多“远”处寻找抗锯齿的潜在像素的基本概念或者只是着色以提供抗锯齿效果。
使用未加权区域采样,我们“想象”一个围绕我们希望绘制的线的 1 像素宽度的矩形,并且落在该想象的矩形内的任何像素都将使用与其覆盖的区域成比例的颜色进行着色。
所以我的具体问题是:
如果我当前位于像素 (x1, y1) 上并且我决定要点亮 (x1+1, y) 处的像素,我如何“发现”该新像素周围应该抗锯齿的像素?
接续问题1,我如何知道一个像素是在我们想象的矩形范围之内还是之外?
[编辑]
我读过某处用户暗示您可以合并 Bresenham 中使用的中点算法来执行此未加权采样,但我无法理解如何进行。
我们都知道,在查看源代码时,可以安全地假设方向标志清晰.方向标志的概率非常低.
我想了解其他旗帜的可能性.这就是为什么我编写了一个测试程序,它单步执行我现有的一些软件,为前12个EFLAGS位中的每一个增加一个计数器.
结果证实了关于方向标志(DF)的假设,并且毫不奇怪地表明溢出标志(OF)的概率非常低.
但其他旗帜怎么样?进位标志(CF),辅助标志(AF),零标志(ZF)和符号标志(SF)似乎稳定在25%,但奇偶校验标志(PF)跳出超过50%.
我想知道为什么CF,AF,ZF和SF的概率如此之低.
对于PF,我自己的两分钱解释告诉我,鉴于所有可能的8位位模式中的奇偶校验偶数和奇偶校验的50-50分布并且意识到一些最常用的数字(0和-1)具有甚至平价,超过50%的机会是合理的.
首先:我知道有很多网页(包括 stackoverflow 上的讨论)讨论了数据声明之间的差异.bss和数据声明的差异,但我有一个具体的问题,不幸的是我没有在这些页面上找到答案,.data所以我在这里问:-)。
我是汇编方面的大初学者,所以如果问题很愚蠢,我深表歉意:-)。
我正在 x86 64 位 Linux 操作系统上学习汇编,但我认为我的问题更笼统,可能不特定于操作系统/架构。
.bss我发现和部分的定义.data有点奇怪。我总是可以声明一个变量,然后从我的代码(部分).bss中移动该变量中的值,对吧?那么,当我知道在本节中声明的变量会增加可执行文件的大小时,.text为什么要在该节中声明变量呢?.data
我也可以在 C 编程的上下文中问这个问题:如果声明它未初始化然后在代码开头为其赋值更有效,为什么我应该在声明变量时初始化它?
我认为我的内存管理方法很幼稚而且不正确,但我不明白为什么。
我用Turbo C++搭建了一个DOSBox开发环境,打算和朋友们一起制作一个游戏。
我正在使用 C 代码,并且想知道如何将二进制数据链接到 EXE 中。(我以前使用 C 的所有经验都是 libGBA,很抱歉,如果这实际上不可能像我想象的那样。)
如果不可能,那么嵌入二进制数据的替代选项是什么?(我真的不想在游戏目录中需要一堆二进制文件......)
找不到太多关于 Turbo C 的第三方文档,特别是考虑到我正在使用其他受支持的但不是我的 IDE 的主要语言,该语言最后一次更新是在 2000 年代初完全转移到另一个操作系统之后。
经过认真的发展,CPU 获得了许多核心,在多个小芯片、numa 系统等上获得了分布式核心块,但数据仍然不仅必须通过 L1 缓存(如果在同一核心 SMT 上),而且还必须通过一些原子/互斥同步未经硬件加速的原始过程。
我想知道为什么英特尔或 IBM 没有想出这样的东西:
movcor 1 MX 5 <---- sends 5 to Messaging register of core 1
pipe 1 1 1 <---- pushes data=1 to pipe=1 of core=1 and core1 needs to pop it
bcast 1 <--- broadcasts 1 to all cores' pipe-0
Run Code Online (Sandbox Code Playgroud)
使其比其他方法快得多?GPU 支持块级快速同步点,例如barrier()或__syncthreads()。GPU 还支持本地阵列的并行原子更新加速。
当 CPU 增加 256 个核心时,此功能是否不会为在核心到核心带宽(和/或延迟)上遇到瓶颈的各种算法提供严重的扩展?
当IF标志被清除时(中断表未准备好),所有可屏蔽中断被禁用。
问题是:
div除零)我知道有一些测量程序功耗的工具,例如 powerTOP、RAPL 等。
但是,我想知道是否存在某种基准测试,例如 Agner Fog 的 CPU 基准测试https://www.agner.org/optimize/instruction_tables.pdf来测量每条指令的能耗?
假设我有以下说明
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
movq -8(%rbp), %rdx
movq -16(%rbp), %rax
cmpq %rax, %rdx
setb %al
Run Code Online (Sandbox Code Playgroud)
我只想查看诸如 、 之类的指令movq,cmpq并setb估计程序的功耗。我使用的是 Intel i5 10400 处理器,但我可能正在寻找不同微架构的更广泛的基准测试。
这可能吗?