我对此感到困惑;我不认为这两种情况应该有任何区别,程序最终成为 exe 文件。如果您认为不同,请提供帮助....
让我澄清一下我的问题:当我创建“独立”汇编程序和从C程序调用汇编例程时,数据段定义或处理是否存在差异?
在这两种情况下,谁来定义日期段的位置或大小?这是编译器还是操作系统?以及在这两种情况下数据段的值是如何确定的?
我对此感到困惑;我不认为这两种情况应该有任何区别,程序最终成为 exe 文件。如果您认为不同,请提供帮助....
让我澄清一下我的问题:当我创建“独立”汇编程序和从C程序调用汇编例程时,数据段定义或处理是否存在差异?
在这两种情况下,谁来定义日期段的位置或大小?这是编译器还是操作系统?以及在这两种情况下数据段的值是如何确定的?
取决于操作系统!
如果我们正在寻找 IA32 下的 windows 操作系统,那么 API 会保留一些应用程序的虚拟内存地址空间,并且:
通过 FS 段访问“Win32 线程信息块”的示例:
function GetThreadId: integer;
//result := GetCurrentThreadId;
asm
mov eax, fs:[$18] //eax := thread information block
mov eax, [eax + $24] //eax := thread id
end; { GetThreadId }
Sheck 还:x86 内存分段