在微处理器和/或操作系统的情况下,16位,32位和64位架构意味着什么?
在微处理器的情况下,它是指General Purpose Registers的最大尺寸或s的大小Integer或数量Address-line或s的数量Data Bus line或者是什么?
说" DOS is a 16-bit OS"," Windows in a 32-bit OS"等是什么意思?
我正在使用Ubuntu 13.04并使用安装了mingw-w64 apt-get install mingw-w64.我可以使用以下命令编译和链接我的程序的64位工作版本:
x86_64-w64-mingw32-g++ code.cpp -o app.exe
Run Code Online (Sandbox Code Playgroud)
这会生成一个64位的app.exe文件.
我使用什么二进制或命令行标志来生成32位版本的app.exe?
我刚收到并阅读了Google Play的时事通讯,提到从明年开始,该商店"将要求使用原生库的新应用和应用更新提供除32位版本之外的64位版本".
对于尚未阅读的人,它说:
2019年的64位支持要求
Android 5.0中引入了对64位体系结构的平台支持.今天,超过40%的在线Android设备具有64位支持,同时仍保持32位兼容性.对于使用本机库的应用程序,64位代码通常提供更好的性能,附加寄存器和新指令.
由于预计未来仅支持64位代码的Android设备,Play控制台将要求使用本机库的新应用和应用更新除了提供32位版本之外还提供64位版本.这可以在单个APK内,也可以作为发布的多个APK中的一个.
我们没有删除32位支持.Google Play将继续支持32位应用和设备.不包含本机代码的应用程序不受影响.
此更改将于2019年8月生效.我们今天提前通知,以便为尚未支持64位的开发人员提供充足的时间来规划转换.请继续关注未来的帖子,我们将深入了解Android上64位本机库的性能优势,并查看NDK的CPU和架构指南以获取更多信息.
在适用的情况下,我们需要做出哪些实际的改变才能完全符合这一新要求?
我喜欢我读过很多关于D.的内容.
然而:
所以基本上D适用于只有几兆字节(有时小于一兆字节)的嵌入式系统,不运行操作系统,其中必须在编译时知道最大内存使用量(每个要求),并且可能在小于32位的情况下处理器?
我对一些功能非常感兴趣,但我得到的印象是针对桌面应用程序开发人员.
具体是什么使它不适合16位实现?(假设16位架构可以处理足够的内存来保存运行时,无论是在闪存还是RAM中.)仍然可以计算32位值,尽管比16位慢,并且需要使用库代码进行更多操作.
在3238嵌入式Linux(ARMLinux)的C代码中处理时间的正确方法是什么,以确保代码在2038年1月19日03:14:07 UTC之后继续正常工作(当有符号的32位time_t溢出时)?鉴于time_t在我必须使用的系统上签名32位,有哪些替代方案?
大量的谷歌搜索没有发现任何实际用途.每个人似乎都认为到那时我们都将使用64位操作系统,但这显然不适用于嵌入式系统.
在我需要使用的系统上,__kernel_time_t定义为a long.这可能意味着64位时间没有内核工具.uClibc的版本是0.9.29.
我不敢相信我是唯一有这个问题的人,我不想重新发明轮子.
在我维护的应用程序中,我们遇到了影响stdlib的文件描述符限制的问题.此问题仅影响标准库的32位版本.
我已经设计了一个修复我的代码,并希望实现它,但只有在编译32位可执行文件时.我可以#ifdef使用什么预处理器符号来确定是为32位还是64位目标编译代码?
编辑
对不起,没提,代码是跨平台,linux,windows,solaris和其他一些unix风格,大多使用GCC进行编译.我可以跨平台使用任何事实上的标准吗?
编辑2
我发现了一些似乎可能有用的定义"__ILP23"和"__LP64"... 这里的讨论解释了unix平台的背景.任何人都有使用这些定义的经验吗?这会有用吗?
我刚刚开始阅读Hacker's Delight,它将abs(-2 31)定义为-2 31.这是为什么?
我尝试printf("%x", abs(0x80000000))了几个不同的系统,我在所有系统上都找到了0x80000000.
根据我使用Windows 7(64位)和Java的经验,32位JRE使用更少的内存并且运行速度明显快于64位JRE(假设您不需要或从拥有大量内存中获益).我想同样的事情也适用于Mac OSX(和其他平台).
我目前正在运行OSX Lion(v10.7),我已经安装了标准的Java应用程序.在Java Preferences下,我看到"Apple Inc."中的"Java SE 6" 对于两种CPU类型"32位"和"64位"版本"1.6.0_26-b03-383".我已经更改了首选顺序,将32位版本置于64位版本之上,希望这会使32位版本成为默认版本.
但"java -version"仍然说:
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511c)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-383, mixed mode)
Run Code Online (Sandbox Code Playgroud)
是否可以默认使用32位版本?如何?
此外,是否有人有关于32/64位版本之间的速度和内存效率的经验/比较测量?
我需要确定特定系统是否安装了32位Java.我正在进行远程查询,只允许我访问文件系统和注册表,因此我无法尝试运行java.exe或运行任何Java代码.
我还想确保我检测到IBM和Sun Java以及任何其他发行版,这些发行版似乎将文件放在文件系统和注册表中的不同位置.
我提出的最好的方法是检查C:\ Windows\SysWOW64\java.exe.这是测试32位Java存在的可靠方法,还是某些版本不会将java.exe放在该文件夹中?
更新:我仍然在寻找更加健全的答案.为了清楚起见,我无法访问命令提示符.此外,无论发布者是谁,安装了什么版本号,以及用户选择安装它的路径,我都想检测Java.
C:\ Windows\SysWOW64\java.exe似乎符合这些要求,但是我希望得到更多知识渊博的人的确认,即每个Java安装程序确实会将该可执行文件放在那里.
我在32位Windows XP上使用32位Intellij,内存为4 GB.
我试图将intellij xmx增加到1.5GB:-Xmx1500m
所以我知道JVM在32位系统中支持1.5GB的RAM.
但是这个错误从JVM抛出:
The JVM could not be started. The maximum heap size (-Xmx) might be too large ...
Run Code Online (Sandbox Code Playgroud)
我不能增加intellij Xmx超过900MB
请帮帮我!