你好.假设您有32位处理器.8位char和16位short int类型比原生32位慢int吗?那么使用64位long long int呢?
默认情况下硬件是否支持此数据类型,或者通过使用其他指令将它们全部转换为32位数据?
如果我必须存储少量的字符,将它们存储为整数是不是更快?
这个帖子还可以. 如何获得处理器和主板ID?
我想使用不使用WMI或任何第三方库的C++代码获取处理器ID.
或者计算机上的任何东西都是独一无二的.有一件事是以太网ID,但在某些机器上又可以移除.我想主要用于许可目的.
处理器ID是否唯一且可在所有主要处理器上使用?
我正在64位Linux机器上用C编译一个hello world程序.我正在使用GCC ARM嵌入式工具链在带有ATMEL AT91SAM9G20处理器的FOX G20 V板上交叉编译我的程序.
在第一次拍摄时,我在编译时遇到了一些错误,因为程序无法识别printf,return等函数(标准C函数).所以我决定在函数之间建立联系,我认为这些函数是在libc.a库中定义的(如果我错了,请纠正我),arm-none-eabi-gcc -o hello hello.c libc.a但是结果仍会导致错误:
libc.a(lib_a-exit.o): In function `exit':
exit.c:(.text.exit+0x16): undefined reference to `_exit'
libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
libc.a(lib_a-writer.o): In function `_write_r':
writer.c:(.text._write_r+0x10): undefined reference to `_write'
libc.a(lib_a-closer.o): In function `_close_r':
closer.c:(.text._close_r+0xc): undefined reference to `_close'
libc.a(lib_a-fstatr.o): In function `_fstat_r':
fstatr.c:(.text._fstat_r+0xe): undefined reference to `_fstat'
libc.a(lib_a-isattyr.o): In function `_isatty_r':
isattyr.c:(.text._isatty_r+0xc): undefined reference to `_isatty'
libc.a(lib_a-lseekr.o): In function `_lseek_r':
lseekr.c:(.text._lseek_r+0x10): undefined reference to `_lseek'
libc.a(lib_a-readr.o): In function `_read_r': …Run Code Online (Sandbox Code Playgroud) 据我所知,C代码被编译为某人机器上的机器(汇编)代码,它变成了一个可以在许多不同处理器(机器)上运行的exe文件.但是由于不同的处理器有自己独特的汇编代码,这个代码怎么运行?编译后的exe只能在一种处理器上运行吗?
我正在研究Shamir的秘密共享方案的C++实现.我将消息拆分为8位块,并在每个块上执行相应的算术运算.基础有限域是Rijndael的有限域F_256 /(x ^ 8 + x ^ 4 + x ^ 3 + x + 1).
如果Rijndael的有限域计算有一些众所周知的扩散库(例如OpenSSL或类似的),我快速搜索,但没有发现任何.所以我从头开始实现它,部分是作为编程练习.然而,几天前,我们大学的一位教授提到:"现代处理器支持无进位整数运算,因此特征-2有限域乘法现在运行得很快."
因此,由于我对硬件,汇编器和类似的东西知之甚少,我的问题是:在构建加密软件时,如何实际使用(在C++中)所有现代处理器的指令 - 无论是AES,SHA,上面的算术还是其他什么?我找不到任何令人满意的资源.我的想法是构建一个包含两者的库:"现代方法快速实现"和后备 "纯C++无依赖代码",让GNU Autoconf决定在每个相应的主机上使用哪一个.有关此主题的任何书籍/文章/教程建议将不胜感激.
所以我把我的手机超频到了1.664ghz,我知道有些应用可以测试你的手机的CPU性能和修饰器,但我想自己做一些.真正让CPU工作的最佳方法是什么?我只是想做一个for循环做一百万次迭代做一些耗时的数学......但这不起作用,因为我的手机在几毫秒内做到了我认为......我尝试了数万亿次迭代......应用程序冻结,但我的任务管理器甚至没有显示应用程序使用的CPU.通常压力测试应用程序显示为红色并说cpu:85%ram:10mb ...那么我怎样才能真正让我的处理器认真思考?
是否有任何此类处理器具有绕过特定数据缓存的指令?这个问题也有一个答案,表明SSE4.2指令绕过缓存.有人可以启发我吗?
答案者已经知道的东西,但在这里,无论如何都要显示我的思考过程:
从HLL到机器代码,这里发生了大量的事件(有连接器和其他东西,但是现在让我们忽略它):
HLL - >编译器 - >汇编程序---->机器代码
根据我购买的硬件,它可能有不同的处理器(Intel,SPARC,ARM等).汇编语言是特定于处理器的.因此,当代码来自Compiler - > Assembler时,生成的汇编代码是特定于处理器的.
切入点:
例如:我的硬件上有Windows操作系统.而且,我得到'用于Windows 7 64位的C编译器'.而且我在同一硬件上也有Ubuntu,我得到'Ubuntu 64位的C编译器'.
我可以在具有不同处理器架构的不同硬件上使用相同的OS,或者在相同硬件上使用不同的OS(如上例所示).当我下载C编译器时,为什么编译器被列为特定于操作系统?而不是处理器特定?由于编译器的重点是将HLL转换为Assembly,这是特定于处理器体系结构而不是特定于操作系统.
假设1.事情是如何完成的,当我下载适用于Windows 7和Ubuntu的编译器时,编译器如何知道要生成哪个特定于处理器的汇编代码?编译器是否附带各种特定于处理器的汇编程序?
compiler-construction assembly processor processor-architecture
这是困难的一个。
我需要使用命令从我的服务器输出确切数量的内核。
我的测试:
X:在具有 4 个处理器(插槽)和 2 个内核的 Windows 服务器上,每个内核都没有 HT。Y:在具有 2 个处理器(插槽)和 6 个内核的 Windows Server 上,每个内核都带有 HT。GetSystemInfo只为我提供安装的处理器数量:X 为 4,Y 为 2。
| | X: 8 cores | Y: 12 cores |
| | 4x2 (no HT) | 2x6 (HT) |
|----------------|-------------|-------------|
| Desired output | 8 | 12 |
| GetSystemInfo | 4 | 2 |
Run Code Online (Sandbox Code Playgroud)
%NUMBER_OF_PROCESSORS%是一个很好的,但它考虑到了HT。它告诉我 X 为 8,Y 为 24(因为它有 HT,我需要它显示 12)。
| | X: 8 cores | …Run Code Online (Sandbox Code Playgroud) 这个问题可能有一个更好的论坛,所以我愿意接受建议来移动它。
如果我使用的是 2017 年 15" MacBook Pro(2.9 GHz Intel Core i7)并且我在 Chrome DevTools 中将 CPU 节流到慢 4 倍,我在模拟什么样的硬件?它是否像将时钟速度除以 4 一样简单, 我想不是...
我正在努力确定这种限制级别是否与我正在开发的应用程序相关。