v*****x 发帖数: 8 | 1 参见MSDN对C2148的解释:
char MyArray[0x7ffffffff]; // C2148
理由如下:
32位的WINDOWS系统的理论寻址空间是2的32次方, 即4G Bytes.
可惜的是,WINDOWS系统在缺省状态下, 将高位的2G Bytes保留为系统空间. 亦即, 从0
到0x7FFFFFFF是应用程序可以使用的, 而从0x80000000到0xFFFFFFFF是系统使用的.
比如说, 你的应用程序中有一段code:
MyApp::OnUserInput(const char * input) {
if (strcmp(input, "blahblah") == 0) {
MessageBox(...);
}
}
这个MessageBox的Function Body就在高位2GB之中.
如是, Compiler抱错实际上是在你的程序运行之前帮你做了一次安全检查.
事实上, 在一般情况下, 应用程序的实际可用的连续空间是不可能有2GB的. 首先, 你
的应用程序本身需要占用空间, 比如说 100K text, 100K data ... 而且 |
|
v**u 发帖数: 20 | 2 地址空间的大小是由地址指针宽度决定的,如果你的机器是32 位的,你的OS和应用程
序当然也是编译为32位,那末你的最大寻址空间就是4G,所以你担心的事情永远不会在
32位的机器上出现。
brk()是专为调整heap size 的,mmap() 有很多别的用途,比如把I/O地址map 到用户
空间, 比如文件map 到地址空间,等等,很强大很危险。 |
|
v**u 发帖数: 20 | 3 地址空间的大小是由地址指针宽度决定的,如果你的机器是32 位的,你的OS和应用程
序当然也是编译为32位,那末你的最大寻址空间就是4G,所以你担心的事情永远不会在
32位的机器上出现。
brk()是专为调整heap size 的,mmap() 有很多别的用途,比如把I/O地址map 到用户
空间, 比如文件map 到地址空间,等等,很强大很危险。而且mmap() map 的memory是独立于heap 之外的,这用超大malloc就不用占用heap了。 哎呀,嘴笨,说不清,反正是很不同的。:) |
|
h**o 发帖数: 347 | 4 想自已写一个 matrix class并用 valarray作成员变量存储数据
现在的问题是用指向valarray的指针好还是valarray直接作变量好
CS的同学给我建议说如果要频繁寻址,用指针的话开销会比较大
请问是这样吗?
我的另一个concern是直接作变量,放在stack 上面,是不是有大小上的限制?
那在设计 member variable的时候用指针又有什么好处?
新手问题啊,多谢指教 |
|
z********8 发帖数: 1 | 5 其实原因很简单,跟便一起的优化有关。
k本身是声明为integer constant expression,因而被编译器看作常数,但你使用它的
值的时候,便一起直接使用5,而不是到内存中看。也就是汇编里的立即寻址。
内存中真正的值应该是6。
这个行为确实是未定义的,大部分编译器之所以选择这样做是为了更好的优化性能。 |
|
b*******a 发帖数: 68 | 6 完全基于不同编译器的实现,但早期的编译器好像放在第一个,因为寻址容易,某本书
上讲过的 |
|
s*******e 发帖数: 664 | 7 ☆─────────────────────────────────────☆
zlike (最终幻想) 于 (Wed Dec 2 20:59:38 2009, 美东) 提到:
比如现在的机器,如果是4G或者3G/2G的内存,到底用64位OS还是32位快点?
我看到有人说因为64位地址空间大,所以寻址要慢一些(?没搞懂,[EAX +
0x1111111111111111] 就比 [EAX + 0x11111111] 要慢?加法器都是并行的啊);
另一方面,我记得如果程序是用ULONG64的话,那么在32位compiler上会分拆成存入两
个32位的register,那么这样如果是ULONG64的数据,在32位机上就会慢一点吧?(因
为操作两个存储器)。
困扰我好久了,我那个笔记本是2.5G内存,装的64位win7,跑64位的lightroom/
photoshop的话,不晓得换成32位会不会快点...还有wow...
☆─────────────────────────────────────☆
hehehehhe (hehehehhe) 于 (Thu Dec 3 |
|
k*******d 发帖数: 1340 | 8 Effective STL里面说过,最好别用vector
如果真的是3G的话,32bit的操作系统可能无法寻址到,虽然理论上能到4G |
|
n******t 发帖数: 4406 | 9 二维数组到底难在哪里我一直没搞明白。。。
分一个一维数组自己寻址不就完了。
而且C/C++缺损库比较少,但是serious的开发都会用自己或这工业级的库函数。 |
|
d*****y 发帖数: 205 | 10 pointer 本身size这跟寻址方式有关
即便是32位系统, 全指针也要48位(16位段+32位偏移),只不过在除了驱动程序和内
核外一般用不到就是了。 |
|
V********n 发帖数: 3061 | 11 那你把下面三步合为一步,可以减少两次生成中间变量并寻址的动作,对减少时间有帮
助:
Data1 = Va * Va;
Data2 = deltaDAC * (1-exp(k/20));
DAC_Set_Value = sqrt(Data1 + Data2);
改成:
DAC_Set_Value = sqrt(Va * Va + deltaDAC * (1-exp(k/20)));
说实在的,现在的编程上很少会需要去考虑这么细微的区别。如果你真的对时间抠到纳
秒的地步,这么做也许会有点帮助。
ringing. |
|
r*****3 发帖数: 143 | 12 中文名: Intel® 64 and IA-32体系结构:软件开发人员手册
原名: Intel® 64 and IA-32 Architectures Software Developer's Manual
作者: Intel Corporation
资源格式: PDF
版本: 文字版
出版社: Intel Corporation
书号: 25462-042US
发行时间: 2012年03月
地区: 美国
语言: 英文
简介:
汇编语言和高级语言的最根本的区别在于:在汇编语言中,程序员必须掌握数据存储和
机器相关的大量细节。与高级语言相比,在声明和移动数据时,汇编器给了程序员极大
的自由。汇编器只进行很少的错误检查,但却提供了大量的操作符和寻址表达式,使程
序员几乎能够做任何事情。然而,这种自由是必须付出一定代价的。这种代价就是在开
始编写有意义的程序之前,开发人员必须掌握大量的细节知识。因而这也是《Intel&
reg; 64 and IA-32 Architectures Software Developer's Manuall》一书的功能所在。
目录:
Volum... 阅读全帖 |
|
b***i 发帖数: 3043 | 13 当时是1989年,没有internet,我看报纸杂志和书,把重点记在一个本子上。主要记键
盘的地址C000,喇叭C030,还有软开关。0页地址有啥用呢?print?
当时没有软件编译器,自己查机器码写程序。现在还记得A9 是A立即寻址,AD是绝对寻
址,20 jsr |
|
x****u 发帖数: 44466 | 14 现在主流是LBA寻址,一次读512xN字节,硬盘只接受一个块地址。 |
|
z****g 发帖数: 75 | 15 现在的通用RPC系统估计不行,得自己做RPC软件
flash disk没机械部件,就是电子信号寻址,而且可以并行,控制电路做好了,5M
IOPS没啥问题
5M IOPS 数据本身带宽不高 |
|
z****e 发帖数: 54598 | 16 java作为本科生第一门课那都是10年前的节奏了
别吹了,你自己写个php都写晕了
更何况是c++,20年前70%的项目是失败的
就是因为当时c++当道,后来java等语言出来之后
把这个数字给压到50%附近,基本上现在稳定在这个附近
这都有统计数据支持的,指针那种简单寻址方式是硬件,指令式的思考方式
对于纯粹软件,这种原始的一板一眼的思考方式其实很不利
很容易抹杀人的创造性,因为软件本身就很抽象
最喜欢倒腾硬件的日本公司在web时代举步维艰
任天堂wii u大失败,股价暴跌,这都是寻死的节奏
人要适应时代 |
|
z*y 发帖数: 193 | 17 我也觉得学cs的,指针这个概念是躲不开的。就算学编程可以绕开,但计算机体系结构
这样的课,你不了解指针,寻址,你怎么学?
★ 发自iPhone App: ChineseWeb 8.2.2 |
|
n*****t 发帖数: 22014 | 18 不用起数据库的,没必要。5M 票,切成 20 段,也就 100M 的寻址。一个 request 4
bytes 标示,我全在 memory 里处理,直接拿 24 bit map 到我的 array,剩下就是
lock/write/unlock 了。
请求的编码、出票都放在 client,谁先死还不一定呢,LOL |
|
T********i 发帖数: 2416 | 19 我基本不相信编译器的优化。尤其是有template参与的情况。
如果没有loop优化,当然*p++快很多。p[i]这种寻址要多两条指令。 |
|
b***i 发帖数: 3043 | 20 小学三年级时学校进了10台Laser 310,我爸去商场买了《娃娃电脑》,其实讲的不是
这个机器,但是是BASIC语言。打字的时候不小心把键盘蹦起来,同桌女生说,你怎么
可以这么不小心,这个很贵的,300多块呢,我家都买不起。我心想,我家万元户呢,
谁买不起。
不过小学怎么也搞不明白READ/DATA是怎么用的。有一次,好不容易把杂志上一个游戏
输入了,大家都卡在开始的一个问题哪里,是问导弹的颜色。于是,有的输入HONG,不
对,我输入GREEN,也不对。后来从省里请来的老师看了半天,输入0,对了。
初一,看到了苹果BASIC的一本书,里面有高分辨率绘图,一个寒假,在没有计算机用
的情况下,思考了很长时间,终于搞清楚了第一个参数是x坐标,第二个参数是y坐标。
然后看到了sin的泰勒展开式。寒假还自学了发声程序,是直接写机器语言,然后传入
参数执行,每隔一定时间访问扬声器一次就可以发声。为了这个,自学了6502的机器语
言指令体系,寻址方式,马上觉得和初中同学不是一个层次了。后来终于加入了计算机
小组,开始进行机器语言的实际操作,不过不知道可以用来干什么,只知道速度比
BASIC快100... 阅读全帖 |
|
o**2 发帖数: 168 | 21 Framework翻译成框架,还是挺准确的,突出了其是一个有frame/框的刚性结构。
一般来说,框架基本上都是基于Strategy和Template method之类的设计模式,这和现
有编程语言以及人思维的特性有直接的关系。
现有编程语言的特性是它们的组织结构和引用机制,比如object和reference,决定了
它们要先组成小集团、小context,然后逐步组成大集团、大context,这样一个
context外面的caller基本上就只能按该context指定的方式去访问。
这个是导致框架缺少柔性、灵活性的根本原因,从而框架间不容易合作、框架本身不容
易重组,也就是楼主提到的问题:人被框架拽下水了。
这种情况,我觉得Joe Armstrong描述得最生动: I think the lack of reusability
comes in object-oriented languages, not functional languages. Because the
problem with object-oriented languages is they’ve got al... 阅读全帖 |
|
p*u 发帖数: 2454 | 22 来自主题: Programming版 - 编程的宗派 总是有人喜欢争论这类问题,到底是“函数式编程”(FP)好,还是“面向对象编程”
(OOP)好。既然现在出了两个帮派,就有人积极地做它们的帮众,互相唾骂和残杀。
然后呢,又出了一个“好好先生帮”,这个帮的人喜欢说,管它什么范式呢,能解决问
题的工具就是好工具!
我个人其实不属于这三帮人中的任何一个。
面向对象编程(Object-Oriented Programming)
如果你看透了表面现象就会发现,其实“面向对象编程”本身没有引入很多新东西。所
谓“面向对象语言”,其实就是经典的“过程式语言”(比如Pascal),加上一点点抽
象能力。所谓“类”和“对象”,基本是过程式语言里面的记录(record,或者叫结构
,structure),它的本质就是一个从名字到数据的“映射表”(map)。你可以用名字
从这个表里面提取相应的数据。比如point.x,就是用名字'x'从记录point里面提取相
应的数据。这比起数组来是一件很方便的事情,因为你不需要记住存放数据的下标。即
使你插入了新的数据成员,仍然可以用原来的名字来访问已有的数据,而不用担心下标
错位的问题。
所谓“对象思想”(区别于“面向... 阅读全帖 |
|
s*****t 发帖数: 89 | 23 对,初学者就别上来学什么C++, 而对于C,很多人初学的时候连内存寻址的基本概念都
没有怎么可能真正理解指针呢?如果了解哪怕一点点体系结构,仅仅知道ldr之类的指
令很容易就能明白数组和各种指针的原理了。 |
|
w***u 发帖数: 17713 | 24 学C之前,必须有高级数字电路/计算机体系结构/汇编语言寻址这某一门语言的基础,
否则指针概念不清。 |
|
h*h 发帖数: 27852 | 25 http://www.yinwang.org/blog-cn/2015/04/03/paradigms
编程的宗派
总是有人喜欢争论这类问题,到底是“函数式编程”(FP)好,还是“面向对象编程”
(OOP)好。既然出了两个帮派,就有人积极地做它们的帮众,互相唾骂和鄙视。然后
呢又出了一个“好好先生帮”,这个帮的人喜欢说,管它什么范式呢,能解决问题的工
具就是好工具!我个人其实不属于这三帮人中的任何一个。
面向对象编程(Object-Oriented Programming)
如果你看透了表面现象就会发现,其实“面向对象编程”本身没有引入很多新东西。所
谓“面向对象语言”,其实就是经典的“过程式语言”(比如Pascal),加上一点抽象
能力。所谓“类”和“对象”,基本是过程式语言里面的记录(record,或者叫结构,
structure),它本质其实是一个从名字到数据的“映射表”(map)。你可以用名字从
这个表里面提取相应的数据。比如point.x,就是用名字x从记录point里面提取相应的
数据。这比起数组来是一件很方便的事情,因为你不需要记住存放数据的下标。即使你
插入了新的数据成... 阅读全帖 |
|
x****u 发帖数: 44466 | 26 你记错了
支持EMS模拟的是EMM386,这玩意实际上是让你软件跑在386的vm86模式的,就是Win16
的简化玩法
himem是打开A20地址线的,即十六位汇编理论上寻址能表示,但8086访问不了的64KB。
DOS
DOS |
|
b********s 发帖数: 20 | 27 【 以下文字转载自 Internet 讨论区 】
发信人: biophysics (带鱼), 信区: Internet
标 题: 不能无线上网,自动寻找IP总不对
发信站: BBS 未名空间站 (Sat Aug 27 03:33:25 2005)
modem 和rounter肯定没问题, XP的操作系统, 通过自动寻址找到的都是错误的IP, 不能
联上, 我自己手动输入, 可能有些值不对(我不知如何设DNS等). 还是联不上.是哪里设错
了么,或者有病毒?
先谢谢了. |
|
a*****e 发帖数: 911 | 28 "通过自动寻址找到的都是错误的IP? " details?
能
错 |
|
g****y 发帖数: 323 | 29 Windows出现“致命异常错误”的对策
文/ (2000/06/14 )
最近,经常听到一些朋友说,他们的Windows 9X老是“莫名其妙
”死机,出现“蓝屏”,并提示“致命的异常错误0E发生在......”
,使其它正在运行的软件被迫中断,给自己带来很大的损失和麻烦,
而自己又不知是何原因、如何排除,非常烦恼。下面我们就来分析一
下其中的原因,并尽量找出适当的对策。
要弄清楚出错原因,得从Windows 9X对内存的管理和使用谈起。
我们知道,Windows 9X是32位操作系统,对内存具有32位寻址能力,
可以发挥80386以上CPU所具有的保护模式功能,为每个应用程序提供
独立的4GB地址空间,但事实上,这远远超过了目前任何PC机的内存
容量,这就造成了有4GB地址空间,而无真正物理内存与之对应的问
题。于是,Windows 9X便利用CPU的虚拟内存能力,把硬盘的一部分
当作内存(硬盘交换文件)来使用,即通常所说的虚拟内存。现在很多
用户配置的硬盘容量一般较大,这下似乎有了用不完的内存,不会发
生内存不够的情况了。其实不然,首先,能作虚拟内存的必须是硬盘
上的空余空间, |
|
D*V 发帖数: 567 | 30 这种情况32位如何寻址?
version 是
而 |
|
s*******n 发帖数: 101 | 31 比如有很多4维甚至5维的数组,要进行A[1][2][3][4][5]=6这样的操作,会不会影
响很速度?另外,这种多位数组在MEX文件中怎么处理,寻址很麻烦呀.多谢。 |
|
z*****n 发帖数: 7639 | 32 为什么要两片?地址线32位,只用低28位可寻址256M。
第28位做片选,0选RAM,1选FLASH。当选FLASH时,第27位无效。
作? |
|
m*****d 发帖数: 1613 | 33 刚才说的不准确。应该是GGSN,就是一个从互联网转到无线网的路由器。下行ip包在这
里加上与移动
用户有关的包头,然后在无线网里面寻址和发送。计费也在这里完成了。上行的当然比
较简单,恢复ip
包头,转发出去就是了。
搜GGSN 和charging 可以有很多结果。 |
|
s****n 发帖数: 786 | 34 1 大多数数据操作都在寄存器中完成
2 寻址简单灵活,效率高
3 指令长度固定
这三条就可以把功耗降很多
还有一些其他特别的技术,比如所有指令可以根据前面的执行结果决定是否被执行。 |
|
b*****n 发帖数: 685 | 35 这个很明显啊,换机子的话,一般寻址方式变了,要重新编译。
b
linki |
|
|
S******y 发帖数: 1123 | 37 For simple descriptive statistics - 32位机器寻址空间的上限;
For statistical packages (involving matrix computation), it depends...
usually much smaller data size...
Just my 2 cents... |
|
h***s 发帖数: 2499 | 38 no.
说硬盘慢是说寻址慢,就是找到你要读写的轨道慢,找到以后是很快的,不比solid st
ate慢。固体硬盘就是flash u棒,读写次数有限,不适合处理数据
SSD |
|
x***1 发帖数: 20 | 39 谢谢!如果把寻址时间一起考虑,也即总耗时,固态硬盘是不是比普通硬盘快很多呢?
另外,如果这样每天100G的数据跑上两遍,是不是用不了两年固态硬盘就坏了?
st |
|
|
e******u 发帖数: 1854 | 41 图也分大小,2D/3D,储存量够不够装所有地图
充电和电池方式
最重要的是 用什么寻址芯片,对信号强弱和寻找速度很有关系
还是名牌贵一点的好,不要省那点钱
200以下只推荐mio的,大概140 |
|
e******u 发帖数: 1854 | 42 SiRF starIII是GPS的核心寻址芯片
能同时连接20颗卫星,定位速度快,信号强 |
|
t******y 发帖数: 162 | 43 1、
响当当、装洒风、旧水木、动杀机
2、
流通周转、上架、索书号
3、
吃得苦中苦、天热菜不香
5、
一次平台、鼠标拖动、选择路径、鼠标移动、访问路径、串行鼠标
鼠标驱动、鼠标记录、外带鼠标、间接寻址、鼠标失灵、鼠标操作
虚拟内存、鼠标点取、鼠标设备、图形设计 |
|