我对此感到困惑;我不认为应该有任何区别 在这两种情况下,程序最终都是exe文件。 如果您认为有所不同,请帮助....
让我澄清一下我的问题: 数据段定义或处理是否存在差异 当我创建一个汇编程序'独立'和我从 C 程序中调用汇编程序时?
在两种情况下,谁在定义日期段的位置或大小? 这是编译器还是操作系统? 以及在这两种情况下如何确定数据段的价值?
答案 0 :(得分:0)
取决于操作系统!
如果我们在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 memory segmentation