【问题标题】:Assembly language (x86) architecture汇编语言 (x86) 架构
【发布时间】:2023-03-25 05:23:01
【问题描述】:

我想了解一些汇编语言的基本概念,以便更好地理解它的架构。我学过 C# .NET、Java 等高级语言,还对汇编语言 .intel_syntax 有过一些了解。

我只是想知道一些基本的东西,比如:

1.什么是.text.data.global.code部分?

2.什么样的变量/数据/代码应该存储/写入哪个部分?

如果有人可以回答或者给我链接,我会很高兴我可以阅读和学习。

谢谢。

【问题讨论】:

  • 首先学习 ARM 架构上的汇编对您有利;如果可能的话。这更直接一点;并且没有 x86 中的怪癖。
  • 是的,x86 架构既丑陋又复杂。学习 ARM 更容易(我还记得 M68000 非常好,但现在你很难找到一个好的 M68k 设备 ;-)

标签: assembly


【解决方案1】:

.text 部分通常包含映射到内存中以供执行的代码。

.data 部分包含映射到内存的初始化数据。

我以前没有听说过.code,但通常有一个.bss 部分全为零,用于零初始化变量。

【讨论】:

  • NASM 中的.TEXT 与 MASM 中的 .CODE 相同。不要忘记.DATA?用于未初始化的数据。
  • @Sparafusile:您确定“未初始化”数据吗?因为我认为它是用于初始化(只读?)数据。请参阅this article,即使它是关于 Linux 的。 .bss 部分用于未初始化的变量 IIRC。
  • 是的,我确定。但是,我只使用了 MASM,因此您的特定汇编程序可能会有所不同。
【解决方案2】:

我发现 Iczelicon 的 Win32 Assembly tutorials 非常有用。该网站有点过时,但那里的信息应该足以让您入门。具体来说,您的问题将在第一个教程中得到深入解答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 2015-04-05
    • 1970-01-01
    • 2017-01-03
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多