问题标签 [word-size]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
39586 浏览

c - 确定我的处理器的字长

如何确定 CPU 的字长?如果我理解正确,int应该是一个词,对吗?我不确定我是否正确。

那么仅打印sizeof(int)就足以确定我的处理器的字长吗?

0 投票
2 回答
4227 浏览

c - LP64、LLP64 和 IL32 转换

在 80 年代从 16 位过渡到 32 位期间,int是 16 位或 32 位。使用当前的 64 位转换命名法,我知道 ILP32 和 LP32 机器的分布相当均匀。当时我相信人们理解,int对于任何给定的架构,它始终遵循寄存器或指针宽度,并且long将保持 32 位。

快进 25 年,我看到 LP64 相当主流,但直到我遇到 64 位平台 [我在 2007 年发现桌面 Linux :)],我一直期望 IP64 是下一个合乎逻辑的步骤。

  1. 这(LP64)是 64 位的预期演变吗?
    • 这种关系如何char <= short <= int <= long适应这种将整数类型固定到我们留下的每个平台的新兴方案?
    • 这些过渡方案与在各种平台上使用(您选择的{l,u}caseWORD/有何关系?DWORD
    • Windows 的某些区域仍然包含INT16 位的表单。Windows 会脱离 LLP64 还是为时已晚?
    • 为什么这次int选择被抛在后面,而不是在 32 位过渡期间?
0 投票
2 回答
1096 浏览

haskell - 我可以从 Int32 和 Int64 获得什么性能?

我经常看到这样的 pprogram Int6432 位平台上绝对是性能杀手。我现在的问题是:

如果我的任务需要特定的字长(在我的情况下是 RNG),Int64在 64 位平台上是有效的还是仍然使用 C 调用?Int64将 an 转换为 an 的效率如何Int

0 投票
9 回答
76049 浏览

c - 在 C 中指定枚举类型的大小

已经阅读了这个相关的问题,但正在寻找更具体的东西。

  • 有没有办法具体告诉你的编译器你希望你的枚举有多宽?
  • 如果是这样,你怎么做?我知道如何在 C# 中指定它;在 C 中是否类似地完成?
  • 它甚至值得做吗?当枚举值传递给函数时,它是否会作为int-sized 值传递?
0 投票
4 回答
41468 浏览

c - sizeof 是否返回 C 中某个类型的字节数或八位字节数?

简单地说,在 C 和变体中(不像 wuss java 和它的虚拟机)不同目标上的原始类型的大小可能会有很大差异,除非你使用定义的固定宽度类型,否则真的不能保证stdint.h,即使那样你的实现也有支持他们。

无论如何假设(因为在大多数现代机器上,一个字节是一个八位字节,出于网络目的,我​​假设(ASCII)) sizeof 是否以字节或八位字节返回数据类型的大小?

0 投票
2 回答
19808 浏览

assembly - tword、oword 和 yword 操作数的大小是多少?

NASM / YASM 手册中使用的大小tword和操作数是多少?在相关的说明中,这些名称是否有技巧或潜在的想法?有没有办法给更大的字长赋予逻辑名称?owordyword

我知道虽然系统之间的字长可能不同,但 NASMword是 2 个字节,dword是两倍(4 个字节),qword是一个四字(8 个字节),但是......是tword一个三字(6 个字节)?而且我什owordyword想不出一个似是而非的意思。

请注意,这可能是一个简单的问题,但我找不到答案。在 NASM 和 YASM 手册中没有解释这些大小,甚至在DQ, DT, DY, RESQ, REST,RESY伪指令中也没有解释。我在某处读到 MASM 使用类似的系统,但也找不到任何东西。


编辑:根据答案,这是完整列表:

  • 1 字节(8 位):byte, DB,RESB
  • 2 个字节(16 位):word, DW,RESW
  • 4 字节(32 位):dword, DD,RESD
  • 8 字节(64 位):qword, DQ,RESQ
  • 10 字节(80 位):tword, DT,REST
  • 16 字节(128 位):oword, DO, RESO, DDQ,RESDQ
  • 32 字节(256 位):yword, DY,RESY
  • 64 字节(512 位):zword, DZ,RESZ
0 投票
2 回答
307 浏览

c - 结构大小、填充和未来

考虑以下程序

使用 MinGW 编译时,我在 32 位和 64 位系统上都得到 sizeof(Foo)=12 和 sizeof(Bar)=12(我猜在 16 位环境中,sizeof(Bar)=10)。未来这些结构的大小是否有可能是 16 以更好地适应 64 位环境?

我将结构存储在文件中,并且不想在将来添加解决方法。Doom 事物结构布局在 1993 年可能是一个不错的选择,但不是今天。

0 投票
3 回答
2992 浏览

assembly - 读取奇数地址,半个字?

众所周知,许多 CPU 架构(ARM、PPC)不能读取奇数地址,但如果强制也会产生异常,还有一些可以,但速度稍慢。(x86)

但是是否有任何 CPU 只能处理完整的 32 位(甚至更大!)字?即它不能寻址 16 位字?也许是amd64?

我正在尝试编写一个可移植但快速的 C malloc 类分配器,并希望正确对齐我的内存访问。目前我的目标是 ARM、i386 和 amd64,我可以查找这些特性,但我认为保持警惕会很好。

我想提出我的问题的具体方法是;

是否有 CPU 从地址 0x2 读取 16 位(假设为了论证,通常 0 附近的地址范围是有效的,我知道有些 CPU 不使用第一页)会产生总线错误,其中 CPU =任何 MIPS、ARM、x86、amd64、68k、88000、SH、OpenRISC、Sparc、PPC、Cell/SPE?

(顺便说一下,我是从 C 程序员的角度来看这整件事。所以我假设 C 编译器给了我所有正常的 C 类型,比如 char、uint32_t 等)

0 投票
1 回答
2502 浏览

byte - 以位为单位的字大小转换混淆

我有一个非常基本的问题,这让我有些困惑。对此进行一些复习会很棒。

每台计算机都有一个字长。字长是虚拟地址空间的最大尺寸。因此,如果我们说 a 32 bit word size,我们有一个虚拟地址空间,其范围最大为2^32 values. 在参考文献中它说2^32 bytes?为什么是以字节为单位的范围。

另外,我无法理解的是2^32可能的值如何成为可能的地址范围4GB?所以,我的困惑源于将32 bit word size变成4 byte word size,然后如何4 bytes,乘以得到2^32的困惑4GB

我试图使其合理化的一种方法如下:

2^32因此by 的连续除法2^10结果为2^2 GBor 4 GB

有人能指出 32 位字大小如何达到 4GB 页面范围吗?

谢谢

0 投票
1 回答
1851 浏览

assembly - nasm中堆栈中重复加法的乘法

我的实施结果有问题。如果你追踪它,它似乎是正确的。但是,它给出了错误的结果。如果你输入 99 和 99,它会给出 5318,但它应该给出 9801。

顺便说一句,程序接受两个 2 位数字并通过重复添加被乘数(第一个输入)来相乘,直到它满足乘数中的值(第二个输入)

我已经尝试定位问题,似乎当我使用字长除法时,它会给出随机值。word-size 最大为 65,656,但超过 255 时结果会损坏。为什么?

请注意第一个选项,即重复加法运算的乘法。

非常感谢您的帮助。