[英]Assembly: data segment when called from C or created as an independent program
我对此感到困惑; 我不认为这两种情况都应该有任何区别,该程序最终以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 }
还可以: x86内存分段
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.