CPU 如何知道变量的大小以正确读取它?

发布于 2024-12-23 06:12:08 字数 167 浏览 2 评论 0原文

好吧,我在这类话题上很直率,如果我完全不合规矩的话,我很抱歉。我会尽力说清楚。

在内存中,当读取命令时,CPU 如何知道它必须读取 4 字节字符串或 10 字节字符串才能处理该命令?或者另一个命令,CPU 知道它必须读取 int64 的大小才能正确读取数据才能使用它?大小存储在某处吗?可能是计算出来的?

Well I'm quite blunt on this type of subject, so sorry if I'm completely out of line on things. I'll try to be clear.

In memory when commands are being read for say, How does the CPU know that it has to e.g. read a 4 byte string or a 10 byte string to work with for that command? or another command, the CPU knows that it has to read the size of an int64 to correctly read the data to work with it? is the size stored somewhere? possibly calculated?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

卷耳 2024-12-30 06:12:08

数据大小通常编码在指令中,或者隐式已知。以 x87 为例:

fild    word [testdata]    ; loads 16 bits

fld     dword [testdata]   ; loads 32 bits
fld     qword [testdata]   ; loads 64 bits
fld     tword [testdata]   ; loads 80 bits

The data size is usually encoded in the instruction, or is implicitly known. In for example x87:

fild    word [testdata]    ; loads 16 bits

fld     dword [testdata]   ; loads 32 bits
fld     qword [testdata]   ; loads 64 bits
fld     tword [testdata]   ; loads 80 bits
漆黑的白昼 2024-12-30 06:12:08

让我们看一下字符串来部分回答这个问题,在 C 中,必须以空值终止字符串(即以空字节或 \0 结尾),因此读取到字符串是一项简单的工作。空字节。

对于固定类型的数据(例如 int),编译器将通知 CPU 它正在处理 int,并且编译器和 CPU 将使用相同的体系结构,它们的 int 的长度相同。

Let's look at strings for a partial answer to this, in C one has to null-terminate one's strings (i.e. end it with a null byte or \0) therefore it's a simple job of reading up to the null byte.

On fixed types of data (let's say an int) then the compiler will inform the CPU that it's dealing with an int and as both compiler and CPU will be working with the same architecture, their ints will be the same length.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文