如何使用C应用程序访问FreeDOS中的全部内存空间

问题描述我有一个用C编写的嵌入式应用程序,运行在486/386DX风格的处理器(http://www.dmp.com.tw/tech/vortex86dx)上的FreeDOS上。这台电脑有256MB的内存,但我似乎无法使用大部分内存。我已经编写了一个简单的程序来调查(在一个循环中

发布:2022-10-16 标签:memoryx86cdos


编译器会将数据放入PE或ELF文件的.text部分吗?如果是,原因何在?

问题描述所以刚才有人问了一个问题:WhydoCompilersputdatainside.text(code)sectionofthePEandELFfilesandhowdoestheCPUdistinguishbetweendataandcode?但最上面的答案是文本部分没有

发布:2022-10-16 标签:x86cpudecompilercompiler-optimization


如何将结构显式加载到L1d缓存中?在带/不带超线程的隔离内核上使用CR0.CD=1的INVD出现奇怪的结果

问题描述我的目标是将静态结构加载到L1D缓存中。之后,使用这些结构成员执行一些操作,并在操作完成后运行invd以丢弃所有修改后的高速缓存线。因此,基本上我希望在缓存中创建一个安全的环境,以便在缓存中执行操作时,数据不会泄漏到RAM中。为此,我有一个内核模块。在那里我给结构的成员设

发布:2022-10-16 标签:x86ccpu-architecturelinux-kernelcpu-cache


如何查看最后一级缓存中有多少片?

问题描述我在一篇论文中读到关于末级缓存的介绍。在引言中,有人说末级缓存有很多片。每个片就像一个传统的集关联缓存。根据集合索引和切片ID找到对应的缓存集合(如下图所示)。我想检查我的服务器有多少个切片。以及每个片的信息(多少个缓存组、每个缓存组中有多少缓存行)。我在Google上搜

发布:2022-10-16 标签:cachingx86intelcpu-architecturecpu-cache


CPU中的新指令集

问题描述每一代新CPU都会引入一些新的指令集,如MMX、3DNOW、SSE等。我有几个关于它们的一般性问题:如果某些程序使用例如SSE指令,它是否可以在不支持SSE的CPU上运行?如果是,是否意味着这些指令将更改为更多更简单的指令?如果没有,这是否意味着这些新指令的真正性能影响将

发布:2022-10-16 标签:x86cpuinstruction-setsimd


使用INT 16h的刷新键盘缓冲区x86组件

问题描述我有疑问,因为我的代码不工作。我正在实现一个运行下面代码的引导加载器,当我尝试加载它时,它只在少数情况下有效,如下所述。我的代码是下一个:ChangeGameState:movcx,00H;HereImakeadelaymovdx,3240H;.movah,86H;.in

发布:2022-10-16 标签:x86assemblynasmbootloader


有没有办法在没有底层操作系统的情况下驱动当今的计算机网卡?

问题描述我想写一个IO密集型应用程序,没有底层操作系统,运行在x86体系结构上,并驱动任何现代网络接口控制器。通过查看Linux的驱动程序源代码,我知道驱动Intele1000e千兆控制器需要数千行代码。我认为这样的代码很难从Linux源代码中提取出来。您知道有什么解决方案/项目

发布:2022-10-16 标签:linuxiox86kerneldrivers


Skylake在一个周期内可以执行多少个1字节NOP

问题描述我将分支目标与NOP对齐,有时CPU执行这些NOP,最多15个NOP。Skylake一个周期可以执行多少个1字节的NOP?其他英特尔兼容的处理器,比如AMD呢?我不仅对Skylake感兴趣,而且对其他微体系结构也感兴趣。执行15个NOP的序列可能需要多少个周期?我想知道添

发布:2022-10-16 标签:optimizationx86assemblyalignmentnop


快速硬件整数除法

问题描述用于整数除法的硬件指令在历史上一直非常慢。例如,对于64位输入,Skylake上的DIVQ延迟为42-95个周期[1](倒数吞吐量为24-90)。不过,也有性能更好的较新处理器:Goldmont有14-43个延迟,而Ryzen有14-47个延迟[1],M1的吞吐量显然是每

发布:2022-10-16 标签:performancex86cpu-architecturearminteger-division


为什么使用PUSH/POP而不是SUB和MOV?

问题描述当我在https://godbolt.org上尝试不同的编译器时,我注意到编译器生成如下代码是非常常见的:pushraxpushrbxpushrcxcallrdxpoprcxpoprbxpoprax我知道每个push或pop做两件事:将操作数移入/移出堆栈空间递增/递减堆

发布:2022-10-16 标签:x86x86-64assemblymicro-optimizationcpu-architecture