能力值:
( LV2,RANK:10 )
|
-
-
2 楼
memcopy 直接copy结构体赋值,超方便! 不过 对于不对齐的也可以。。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
呵呵 我试着解答一下 说错勿怪 这个跟地址总线和数据总线有关 大概是在内部只能访问对齐的地址 如果是没对齐的地址 需要读2次数据 比如要取 0x33处的dword 则需要访问0x32 和0x36这2个地址的两个dword 然后调整成0x33处的dword 大概是这个意思 也不知道说错没。。。。具体可以去看 intel微处理器这本书 上面说的很明白 还有后面那个自然边界 意思应该就是 word地址与偶数对其 dword地址与4的倍数对齐
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
主要是现在的系统都设计成按一定的大小读取数据,你读取“a”和读取“ab”是一样的。因为保存的时候,剩余的部分空间也不保存数据了。比如你定义了。“abc”= 3*8 = 24bit 则存储的假设按32位的存贮还剩。32-24=8个bit。则这个也不保存数据了,直接为0。你想要这个字符串的第一个元素b。则不会只读取b。而是直接把abc0共32个bit直接读取,然后移位操作,得到b。是不是比你算出b的地址简单的多。可以参考一下书的章节是怎么个结构,你看到第二章紧贴着第一章的吗?一般没有。都是在新的一页开始第二章,在目录上第二章是独立的一个页,那个页数和内存地址一个意思。。
硬盘里文件你新建一个TXT文档,就一个字母a,也是512K(这个大小跟你的磁盘格式有关系。FAT16,32,NTFS大小都不一样)大小,你写的内容只要不超过512K的文字都是512大小。你写了513K的文件,则也占用1024K大小。。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
为什么要数据对齐 因为系统是有位宽限制的 不管你在你的函数里面 还是外面声明的 char 或者 byte 当不满祝4字节的时候 会自动补齐4字节 但是你实际使用的过程中只使用了 1字节 剩余的3个字节被丢弃 但是当你使用 命令参数对齐的时候 那么类型是几字节就是几字节 除非你弄数组或指针 另外请注意你在局部声明变量类型不同的时候 esp每次减去的值 是多少 有什么关系你就明白了
|
|
|