我用C语言编写了以下代码,以便从中创建汇编代码并学习有关汇编器的知识。

我当然从一个“hello world”开始,在一行中,有以下内容:

    mov DWORD PTR[esp], OFFSET FLAT:.LCO

关于LC0,它说:
    .string "Hello World!"
    .text
    .globl main
    .type main,@function

因此,我问自己,OFFSET FLAT:.LCO行的含义是什么?
我说对了,把指向字符串的指针之类的东西赋予esp吗?这样esp现在也指向字符串hello世界了吗?

是对的吗?因为这是合乎逻辑的。

最佳答案

mov DWORD PTR[esp], OFFSET FLAT:.LCO

将4个字节(即指定的.LCO地址)移至ESP指定的存储位置。
  • .LCO是字符串“Hello World!”的内存地址。众生。
  • ESP是堆栈的顶部,此代码假定ESP中的值是内存位置
  • “FLAT”是指地址空间:http://en.wikipedia.org/wiki/Flat_memory_model
  • .text 表示代码段的开始:http://en.wikipedia.org/wiki/Code_segment
  • 关于assembly - 以下汇编代码行的含义是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20557613/

    10-12 07:34