m*******h 发帖数: 2005 | |
Z**********g 发帖数: 14173 | |
m*******h 发帖数: 2005 | 3 不如DNA啊
【在 Z**********g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 对,主要是简单,有电就是1,没电就是0.
|
a******g 发帖数: 13519 | 4 你土鱉了!不過不怪你,畢竟是生物千老。
【在 Z**********g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 对,主要是简单,有电就是1,没电就是0.
|
T****t 发帖数: 11162 | |
S*******D 发帖数: 12188 | 6 您是不是和伟大领袖习包子一样,初中没毕业?
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 半导体这种材料只能两种状态吗?
|
m*******h 发帖数: 2005 | 7 你讲讲
【在 a******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你土鱉了!不過不怪你,畢竟是生物千老。
|
m*******h 发帖数: 2005 | 8 毕业了
不过确实不懂
你讲讲
【在 S*******D 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 您是不是和伟大领袖习包子一样,初中没毕业?
|
m*******h 发帖数: 2005 | 9 那现在的芯片或者具体某种芯片用了吗
【在 T****t 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 可以有多态的, 比如场效应管。 : 就有三种。
|
n********g 发帖数: 6504 | 10 二进制运算简单。别说乘法,三进制加法就复杂很多。这些是CS的102。当然洗脚哥也
不需要懂。
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 半导体这种材料只能两种状态吗?
|
|
|
m*******h 发帖数: 2005 | 11 三进制有没有优势
这个优势现在能不能够弥补复杂这个劣势?
【在 n********g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 二进制运算简单。别说乘法,三进制加法就复杂很多。这些是CS的102。当然洗脚哥也 : 不需要懂。
|
w***u 发帖数: 17713 | 12 别说三态八态,连模拟芯片也多得很。为了那个信噪比,还是二态的好。 |
m*******h 发帖数: 2005 | 13 以后可不可能克服多态复杂导致的劣势?
【在 w***u 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 别说三态八态,连模拟芯片也多得很。为了那个信噪比,还是二态的好。
|
c****3 发帖数: 10787 | 14 基于布尔代数的逻辑电路,所以是二进制。模拟电路就可以不是了
绝对比不上DNA,可是你们千老也搞不懂这些牛逼的东西
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 不如DNA啊
|
m*******h 发帖数: 2005 | 15 确实不懂
听你们讲讲还是能长点知识
【在 c****3 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 基于布尔代数的逻辑电路,所以是二进制。模拟电路就可以不是了 : 绝对比不上DNA,可是你们千老也搞不懂这些牛逼的东西
|
R*****5 发帖数: 4915 | 16 Boolean :true and false
物理上容易实现 |
p******g 发帖数: 8316 | 17 二进兼容的size足够大,而且有buffer,cache可以随时腾出空位来
曾经virtual memory做的很火,就是实际运行中所需的存储量没有那么多,你其实是只
干一件事的。
比如你看网页的时候,word文件和ppt文件是休息闲置的,那部分就暂时被腾出来挪用
于其他正在需求的process了。
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 三进制有没有优势 : 这个优势现在能不能够弥补复杂这个劣势?
|
n********g 发帖数: 6504 | 18 理论上是三进制的好。但成本只要高一点在CS这种scale就没有市场。
俺在国内考研的时候考虑过一位多值逻辑/模糊逻辑,也就是现在的AI+ML,的教授。
当时所有其它教授都觉得多值逻辑是浆糊骗子。
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 三进制有没有优势 : 这个优势现在能不能够弥补复杂这个劣势?
|
a******g 发帖数: 13519 | 19 世界上第一臺計算機是十進制的!千老,你們嚇趴了吧!
其實,几進制都無所謂,都各有優劣。據説還有理論證明三進制最接近人腦邏輯。
其實,我個人認爲這就是個慣性問題,跟鍵盤爲什麽設計成現在這個屌樣一樣。
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你讲讲
|
b*******t 发帖数: 4756 | 20 芯片和dna比,就是泥土和人类比。
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 确实不懂 : 听你们讲讲还是能长点知识
|
|
|
z*****g 发帖数: 75 | 21 你特么说的啥鸡巴玩意儿?
我愣是没看懂。操。
【在 p******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 二进兼容的size足够大,而且有buffer,cache可以随时腾出空位来 : 曾经virtual memory做的很火,就是实际运行中所需的存储量没有那么多,你其实是只 : 干一件事的。 : 比如你看网页的时候,word文件和ppt文件是休息闲置的,那部分就暂时被腾出来挪用 : 于其他正在需求的process了。
|
m*******h 发帖数: 2005 | |
p******g 发帖数: 8316 | 23
=====================
C++ 工程实践(4):二进制兼容性
原创 2011年03月09日 10:46:00 标签:c++ /library /interface /mfc /class /编译
器 22578
陈硕 (giantchen_AT_gmail)
Blog.csdn.net/Solstice
本文主要讨论 Linux x86/x86-64 平台,偶尔会举 Windows 作为反面教材。
C/C++ 的二进制兼容性 (binary compatibility) 有多重含义,本文主要在“头文件和
库文件分别升级,可执行文件是否受影响”这个意义下讨论,我称之为 library (主
要是 shared library,即动态链接库)的 ABI (application binary interface)。至
于编译器与操作系统的 ABI 留给下一篇谈 C++ 标准与实践的文章。
什么是二进制兼容性
在解释这个定义之前,先看看 Unix/C 语言的一个历史问题:open() 的 flags 参数的
取值。open(2) 函数的原型是
int open(const char *pathname, int flags);
其中 flags 的取值有三个: O_RDONLY, O_WRONLY, O_RDWR。
与一般人的直觉相反,这几个值不是按位或 (bitwise-OR) 的关系,即 O_RDONLY | O_
WRONLY != O_RDWR。如果你想以读写方式打开文件,必须用 O_RDWR,而不能用 (O_
RDONLY | O_WRONLY)。为什么?因为 O_RDONLY, O_WRONLY, O_RDWR 的值分别是 0, 1,
2。它们不满足按位或 。
那么为什么 C 语言从诞生到现在一直没有纠正这个不足之处?比方说把 O_RDONLY, O_
WRONLY, O_RDWR 分别定义为 1, 2, 3,这样 O_RDONLY | O_WRONLY == O_RDWR,符合
直觉。而且这三个值都是宏定义,也不需要修改现有的源代码,只需要改改系统的头文
件就行了。
因为这么做会破坏二进制兼容性。对于已经编译好的可执行文件,它调用 open(2) 的
参数是写死的,更改头文件并不能影响已经编译好的可执行文件。比方说这个可执行文
件会调用 open(path, 1) 来写 文件,而在新规定中,这表示读 文件,程序就错乱了。
以上这个例子说明,如果以 shared library 方式提供函数库,那么头文件和库文件不
能轻易修改,否则容易破坏已有的二进制可执行文件,或者其他用到这个 shared
library 的 library。操作系统的 system call 可以看成 Kernel 与 User space 的
interface,kernel 在这个意义下也可以当成 shared library,你可以把内核从 2.6.
30 升级到 2.6.35,而不需要重新编译所有用户态的程序。
所谓“二进制兼容性”指的就是在升级(也可能是 bug fix)库文件的时候,不必重新
编译使用这个库的可执行文件或使用这个库的其他库文件,程序的功能不被破坏。
见 QT FAQ 的有关条款:http://developer.qt.nokia.com/faq/answer/you_frequently_say_that_you_cannot_add_this_or_that_feature_because_it_woul
在 Windows 下有恶名叫 DLL Hell,比如 MFC 有一堆 DLL,mfc40.dll, mfc42.dll,
mfc71.dll, mfc80.dll, mfc90.dll,这是动态链接库的本质问题,怪不到 MFC 头上。
有哪些情况会破坏库的 ABI
到底如何判断一个改动是不是二进制兼容呢?这跟 C++ 的实现方式直接相关,虽然 C+
+ 标准没有规定 C++ 的 ABI,但是几乎所有主流平台都有明文或事实上的 ABI 标准。
比方说 ARM 有 EABI,Intel Itanium 有 http://www.codesourcery.com/public/cxx-abi/abi.html ,x86-64 有仿 Itanium 的 ABI,SPARC 和 MIPS 也都有明文规定的 ABI,等等。x86 是个例外,它只有事实上的 ABI,比如 Windows 就是 Visual C++,Linux 是 G++(G++ 的 ABI 还有多个版本,目前最新的是 G++ 3.4 的版本),Intel 的 C++ 编译器也得按照 Visual C++ 或 G++ 的 ABI 来生成代码,否则就不能与系统其它部件兼容。
C++ ABI 的主要内容:
函数参数传递的方式,比如 x86-64 用寄存器来传函数的前 4 个整数参数
虚函数的调用方式,通常是 vptr/vtbl 然后用 vtbl[offset] 来调用
struct 和 class 的内存布局,通过偏移量来访问数据成员
name mangling
RTTI 和异常处理的实现(以下本文不考虑异常处理)
C/C++ 通过头文件暴露出动态库的使用方法,这个“使用方法”主要是给编译器看的,
编译器会据此生成二进制代码,然后在运行的时候通过装载器(loader)把可执行文件和
动态库绑到一起。如何判断一个改动是不是二进制兼容,主要就是看头文件暴露的这份
“使用说明”能否与新版本的动态库的实际使用方法兼容。因为新的库必然有新的头文
件,但是现有的二进制可执行文件还是按旧的头文件来调用动态库。
这里举一些源代码兼容但是二进制代码不兼容例子
【在 z*****g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你特么说的啥鸡巴玩意儿? : 我愣是没看懂。操。
|
n********g 发帖数: 6504 | 24 在CS 102里有过计算。什么进制最好。最后的结果是2.几,靠近3。
是不是CS科班出身问这个就知道。
布尔代数也不一定就必须是二进制的。
【在 c****3 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 基于布尔代数的逻辑电路,所以是二进制。模拟电路就可以不是了 : 绝对比不上DNA,可是你们千老也搞不懂这些牛逼的东西
|
m*******h 发帖数: 2005 | 25 能不能换成对小学生都能明白的语言
【在 p******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ===================== : C++ 工程实践(4):二进制兼容性 : 原创 2011年03月09日 10:46:00 标签:c++ /library /interface /mfc /class /编译 : 器 22578 : 陈硕 (giantchen_AT_gmail) : Blog.csdn.net/Solstice : 本文主要讨论 Linux x86/x86-64 平台,偶尔会举 Windows 作为反面教材。 : C/C++ 的二进制兼容性 (binary compatibility) 有多重含义,本文主要在“头文件和 : 库文件分别升级,可执行文件是否受影响”这个意义下讨论,我称之为 library (主
|
l********e 发帖数: 3986 | 26 3是最接近e的整数,信息存储的最优解。
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 三进制有没有优势 : 这个优势现在能不能够弥补复杂这个劣势?
|
z*****g 发帖数: 75 | 27 你用专业语言说我没意见。
科普不是你那么胡诌的。
尼玛要是能你那么胡说八道,科普也太容易了。
【在 p******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ===================== : C++ 工程实践(4):二进制兼容性 : 原创 2011年03月09日 10:46:00 标签:c++ /library /interface /mfc /class /编译 : 器 22578 : 陈硕 (giantchen_AT_gmail) : Blog.csdn.net/Solstice : 本文主要讨论 Linux x86/x86-64 平台,偶尔会举 Windows 作为反面教材。 : C/C++ 的二进制兼容性 (binary compatibility) 有多重含义,本文主要在“头文件和 : 库文件分别升级,可执行文件是否受影响”这个意义下讨论,我称之为 library (主
|
p******g 发帖数: 8316 | 28
===================
请问WINDOWS系统是用什么语言编写的啊?
推荐于2017-10-03 08:54:51 最佳答案
如果我没有记错,根据几年前微软在美国公布的内容,WINDOWS本身属于微内核系统,
WINDOWS98总共大概不到10万行代码(具体是2万还是5万记不清了),而WINDOWS2000则
已经有20余万行代码,其中80%是用C++编写,其余部分有C和汇编,底层接口用汇编编
写。
微内核系统从概念上是指“只包括操作系统的基本功能,例如内存管理和进程管理等等
”,就连对各个文件系统的支持也不算在内,不过具体WINDOWS是不是这样设计我就不
清楚了。
所以一个微内核系统的操作系统能够有20万行代码已经很多了。
之所以微软选择了C++而不想LINUX一样选择C,其根本原因就是WINDOWS操作系统本身是
微内核系统,所以扩展性及以后的维护要求非常重要,所以C++的类的概念就能在这里
很好的利用,但是毕竟C++的效率不如标准C及汇编,所以在一些明显以效率为重的地方
用的还是标准C及汇编。
编写完毕后,WINDOWS上的其他用户态程序(包括所有驱动程序、计算器、游戏等等所
有你现在拿鼠标能够操作的东西)另行开发,例如:扫雷游戏就是用VB写的。
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 能不能换成对小学生都能明白的语言
|
z*****g 发帖数: 75 | 29 你这个跑题了
【在 p******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : =================== : 请问WINDOWS系统是用什么语言编写的啊? : 推荐于2017-10-03 08:54:51 最佳答案 : 如果我没有记错,根据几年前微软在美国公布的内容,WINDOWS本身属于微内核系统, : WINDOWS98总共大概不到10万行代码(具体是2万还是5万记不清了),而WINDOWS2000则 : 已经有20余万行代码,其中80%是用C++编写,其余部分有C和汇编,底层接口用汇编编 : 写。 : 微内核系统从概念上是指“只包括操作系统的基本功能,例如内存管理和进程管理等等 : ”,就连对各个文件系统的支持也不算在内,不过具体WINDOWS是不是这样设计我就不
|
n********g 发帖数: 6504 | 30 在CS里,简单就是最好的。任何复杂的东西都会被市场淘汰。
所以小学生也可以当码工赚大包裹。
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 能不能换成对小学生都能明白的语言
|
|
|
p******g 发帖数: 8316 | 31 你不懂那是你需要去选基础课,我没有义务让所有文盲都看得懂。
【在 z*****g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你用专业语言说我没意见。 : 科普不是你那么胡诌的。 : 尼玛要是能你那么胡说八道,科普也太容易了。
|
z*****g 发帖数: 75 | 32 我就是懂,才觉得你特么不能胡说八道。
有点职业道德好不好?
军版风气就是你们这些傻逼名媛给带坏了。
顺嘴胡说八道。
【在 p******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你不懂那是你需要去选基础课,我没有义务让所有文盲都看得懂。
|
x**m 发帖数: 637 | 33 你可以搞12进制啊!
象老祖宗的称那样, 搞16也行.... |
S*******D 发帖数: 12188 | 34 二进制的原因是电路只有通和不通两个状态
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 毕业了 : 不过确实不懂 : 你讲讲
|
m*******h 发帖数: 2005 | 35 危机上说不二袋鼠处理三种情况:是 否 与
这不是3态吗
【在 n********g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 在CS里,简单就是最好的。任何复杂的东西都会被市场淘汰。 : 所以小学生也可以当码工赚大包裹。
|
p******g 发帖数: 8316 | 36 如图。
但我感觉你像星光的马甲---特别喜欢主观评论而不去对这件事做出直接的专业讨论。
【在 z*****g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 我就是懂,才觉得你特么不能胡说八道。 : 有点职业道德好不好? : 军版风气就是你们这些傻逼名媛给带坏了。 : 顺嘴胡说八道。
|
w***u 发帖数: 17713 | 37 免不了开关电路,混合电路增加复杂性,还不如全开关电路,反正便宜,增加位数就可
以了。
【在 m*******h 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 以后可不可能克服多态复杂导致的劣势?
|
c****3 发帖数: 10787 | 38 受限于硬件技术实现。
进制多了速度快,自然界也难找到对应的东西。
吹嘘的量子计算,不是可以跳出这个概念,问题是随便一个小玩意,量子计算还得想半
天算法
【在 n********g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 在CS 102里有过计算。什么进制最好。最后的结果是2.几,靠近3。 : 是不是CS科班出身问这个就知道。 : 布尔代数也不一定就必须是二进制的。
|
p**l 发帖数: 703 | 39 你懂的你在说什么吗?
巴拉巴拉一大堆,跟本贴主题有一毛钱的关系吗?
【在 p******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 如图。 : 但我感觉你像星光的马甲---特别喜欢主观评论而不去对这件事做出直接的专业讨论。
|
z*****g 发帖数: 75 | 40 你自己看看你刚才说的啥。
尼玛,人家让你不要胡说八道,
立马就往马甲斗争上扯。
操,名媛就这德行。
【在 p******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 如图。 : 但我感觉你像星光的马甲---特别喜欢主观评论而不去对这件事做出直接的专业讨论。
|
|
|
m*******h 发帖数: 2005 | 41 唬住我已经超过100倍了 哈哈
【在 p**l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你懂的你在说什么吗? : 巴拉巴拉一大堆,跟本贴主题有一毛钱的关系吗?
|
m********k 发帖数: 1 | 42 e进制最好
所以越接近e越好
: 在CS 102里有过计算。什么进制最好。最后的结果是2.几,靠近3。
: 是不是CS科班出身问这个就知道。
: 布尔代数也不一定就必须是二进制的。
【在 n********g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 在CS里,简单就是最好的。任何复杂的东西都会被市场淘汰。 : 所以小学生也可以当码工赚大包裹。
|
N*X 发帖数: 872 | |
n********g 发帖数: 6504 | 44 有一个最新成果是20位离子纠缠量子态。打破了(潘院士的)光学10多位纠缠量子态记
录。
paper里提到的难度/瓶颈在于所使用的计算机的运算/分辨能力。O(2^20)次方现在的计
算机还能解决。
如果超过现在计算机的能力怎么办才是个问题。
【在 c****3 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 受限于硬件技术实现。 : 进制多了速度快,自然界也难找到对应的东西。 : 吹嘘的量子计算,不是可以跳出这个概念,问题是随便一个小玩意,量子计算还得想半 : 天算法
|
a******g 发帖数: 13519 | 45 我喜歡你寫的字,練的什麽體?
【在 p******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 如图。 : 但我感觉你像星光的马甲---特别喜欢主观评论而不去对这件事做出直接的专业讨论。
|
m*******h 发帖数: 2005 | |
p******g 发帖数: 8316 | 47 当然有,他问的其实是计算机系统。只不过他的问题从专业角度来看,不属于一个提的
很好的问题,因为他扯到半导体上去了,所以把你们带到沟里去了。
这个问题,不需要出国来学,你多翻网页,理论知识,随手可查
【在 p**l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你懂的你在说什么吗? : 巴拉巴拉一大堆,跟本贴主题有一毛钱的关系吗?
|
p**l 发帖数: 703 | 48 这个id所有的知识来源于google,自己屁都不懂
【在 z*****g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你自己看看你刚才说的啥。 : 尼玛,人家让你不要胡说八道, : 立马就往马甲斗争上扯。 : 操,名媛就这德行。
|
z*****g 发帖数: 75 | 49 你先说什么是二进兼容,我特么就没听说过
别东拉西扯
【在 p******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 当然有,他问的其实是计算机系统。只不过他的问题从专业角度来看,不属于一个提的 : 很好的问题,因为他扯到半导体上去了,所以把你们带到沟里去了。 : 这个问题,不需要出国来学,你多翻网页,理论知识,随手可查
|
c****3 发帖数: 10787 | 50 量子计算的原理只能用在特殊用途上,破解密码之类的。
没可能用在其它地方,比如做个操作系统或者做个界面之类。
量子计算本身就是靠概率,路径不可控的东西,只适合做暴力破解用,因为穷举法是最
合适量子计算的。
所以这玩意是个泡沫
【在 n********g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 有一个最新成果是20位离子纠缠量子态。打破了(潘院士的)光学10多位纠缠量子态记 : 录。 : paper里提到的难度/瓶颈在于所使用的计算机的运算/分辨能力。O(2^20)次方现在的计 : 算机还能解决。 : 如果超过现在计算机的能力怎么办才是个问题。
|
|
|
p******g 发帖数: 8316 | 51 真能把谷歌的知识学到自己手里,也很牛了。不过我还远远做不到这一点,你高抬我了
谷歌是给你们看的,不是给我自己看的。
【在 p**l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 这个id所有的知识来源于google,自己屁都不懂
|
p**l 发帖数: 703 | 52 学个屁,你只会copy paste
【在 p******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 真能把谷歌的知识学到自己手里,也很牛了。不过我还远远做不到这一点,你高抬我了 : 谷歌是给你们看的,不是给我自己看的。
|
s*****l 发帖数: 7106 | 53 你是pm的话 我信
你要是swe 我也真tmd无语了
【在 p******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 真能把谷歌的知识学到自己手里,也很牛了。不过我还远远做不到这一点,你高抬我了 : 谷歌是给你们看的,不是给我自己看的。
|
m*********9 发帖数: 56 | 54 2进制和16进制有一个简单换算关系,所以2进制可以用16进制表达。我记得计算机内部
用16进制运行,或者是反过来? |
l******p 发帖数: 85 | 55 这个很简单,就是2^3<3^2.
往后了就是2^5>5^2了
【在 n********g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 在CS 102里有过计算。什么进制最好。最后的结果是2.几,靠近3。 : 是不是CS科班出身问这个就知道。 : 布尔代数也不一定就必须是二进制的。
|