社区
汇编语言
帖子详情
masm 的 .flat 和 保护模式模式下的两个内存模式不解
spinachrag
2009-05-25 08:16:11
intel说保护模式下有flat 和 segment 两个内存模式
masm 只有一个.flat
这是说windows 不用 segment 模式吗
初学汇编, 很菜, 不好意思
...全文
240
9
打赏
收藏
masm 的 .flat 和 保护模式模式下的两个内存模式不解
intel说保护模式下有flat 和 segment 两个内存模式 masm 只有一个.flat 这是说windows 不用 segment 模式吗 初学汇编, 很菜, 不好意思
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qqq123
2009-05-29
打赏
举报
回复
>intel说保护模式下有flat 和 segment 两个内存模式
>masm 只有一个.flat
>这是说windows 不用 segment 模式吗
对windows不用segment模式。而且现代绝大部分操作系统都不使用segment模式(包括Linux)。
BTW:如果内研究windows内核,会发现segment的概念它只是段地址区域(相当于Linux的mm_area),可以是代码段,数据段,heap, stack等等,但是和Intel的segment没有一点关系。
Tippisum
2009-05-28
打赏
举报
回复
flat是一种特殊的段设置方式:cs,ds,es,ss均默认设置为基址0,限长4GB(即完全重叠)
fs和gs默认不使用(可以用assume fs:nothing,gs:nothing)开启
不同的任务之间通过设置CR3寄存器指定不同的页映射,从而将其地址空间映射到物理内存的不同位置。
这样做的好处是使每一个程序都能够拥有独立的4GB地址空间,为程序员的开发提供方便。但同时也使得保护模式下的段保护机制几乎发挥不了什么作用。而且每一次任务切换都会刷新TLB,引发时间上的浪费。
driverstudent
2009-05-28
打赏
举报
回复
好东西
cnzdgs
2009-05-25
打赏
举报
回复
Windows应用程序中用“区”的概念,有代码区、静态区、栈区等,与段类似,程序在link的时候指定主线程栈的大小。
spinachrag
2009-05-25
打赏
举报
回复
谢谢楼上, 不过加问一下
这样设计不是存在栈过大冲毁其他段的危险吗, 为什么不用非重叠的段保护起来呢
cnzdgs
2009-05-25
打赏
举报
回复
保护模式中的段是有操作系统内核管理的,应用程序只能使用操作系统定义好的段,在Windows系统中,cs、ds、es、ss都是完全重叠的,MASM为此设计了.flat模式。如果自己写保护模式下的操作系统,就要用分段模式了。
spinachrag
2009-05-25
打赏
举报
回复
intel 说 segment mode 和 flat mode:
都用段描述表, 选择子等等, 都有32位偏移
区别是 flat mode 所有段都从0开始, limit 都是4G, 所有的段都overlapping, 不同段只是权限不一样
segment mode 则各段不同
windows 不用segment mode 吗?
BAYNPU
2009-05-25
打赏
举报
回复
32位WINDOWS程序只能采用平展模式(Flat),16位DOS只能采用segment.
大熊猫侯佩
2009-05-25
打赏
举报
回复
flat是平坦内存模式。
windows也用段模式,但是和实模式下的段模式是有区别的。
建议看一下Real mode 和 PM之间的区别。
masm
32
第一课 基本概念 翻译:Lxx,校对:LuoYunBins Win32 ASM Pagehttp://asm.yeah.net 我们先假设您已知道了如何使用
MASM
。如果您还不知道的话,请下载 win32asm.exe ,并请仔细研读其中所附带的文档资料。好
win32 009
masm
32
签:model语句, 使用
MASM
,
内存
模式
, 指令集 Win32汇编 使用
MASM
01 让编程改变世界 Change the world by program 使用
MASM
经过上一讲的准备工作,相信大家已经搭建好了 Win32 汇编的工作环境,并已经知道编译、链接一个程序的过程和原理了。 现在,我们让例子回归到经典:
masm
32汇编基础
写在前面的话 笔者机器环境:Win10 + VS2017 环境配置参考:https://moddemod.blog.csdn.net/article/details/102858284 .386 .model
flat
, stdcall option casemap:none MessageBoxA PROTO :dword, :dword, :dword, :dword MessageBox equ <MessageBoxA> Includelib user32.lib NULL equ
汇编语言全接触-1.基本概念
STDCALL是C约定和PASCAL约定的混合体,它规定参数的传递是从右到左,恢复堆栈的工作交由被调用者。<译者注:实际上,分段并不是象在 Dos 下一样,为不同的段分别指出不同的段寄存器,因为 Windows 下只有一个 4GB 的段,Windows 程序中的分段表现在当程序装载时,赋予不同的分段不同的属性,比如说当你的程序加载时,对于 Ring3 程序来说,.code 段是不可写的,而 .data 段是可写的,如果你尝试象在 Dos 下一样写自己的代码部分,你会得到一个蓝屏错误>
Iczelion的Win32汇编教程读书笔记1
第一课 基本概念我们先假设您已知道了如何使用
MASM
。如果您还不知道的话,请下载 win32asm.exe ,并请仔细研读其中所附带的文档资料。好,如果您已准备就绪,我们这就开始吧!理论:WIN32 程序运行在
保护
模式
下的,
保护
模式
的历史可以追溯到 80286。而今 80286 已成为了历史。所以我们将只把精力集中于 80386 及后续的X86 系列 CPU。Windows
汇编语言
21,500
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章