鱼C论坛

 找回密码
 立即注册
查看: 2077|回复: 3

一个操作系统实现里面汇编看不懂

[复制链接]
发表于 2012-11-21 10:09:33 | 显示全部楼层 |阅读模式
5鱼币
%macro Descriptor 3
 dw %2 & 0FFFFh    ; 段界限1
 dw %1 & 0FFFFh    ; 段基址1
 db (%1 >> 16) & 0FFh   ; 段基址2
 dw ((%2 >> 8) & 0F00h) | (%3 & 0F0FFh) ; 属性1 + 段界限2 + 属性2
 db (%1 >> 24) & 0FFh   ; 段基址3
%endmacro ; 共 8 字节

%macro Gate 4
 dw (%2 & 0FFFFh)    ; 偏移1
 dw %1             ; 选择子
 dw (%3 & 1Fh) | ((%4 << 8) & 0FF00h) ; 属性
 dw ((%2 >> 16) & 0FFFFh)   ; 偏移2
%endmacro ; 共 8 字节
我以前学过汇编  但这个汇编我从来没看过
%1 、%2、%3 是什么意思
&    这个又是什么意思
>>   这个又是什么意思
dw %2 & 0FFFFh                还有这个%2 & 0FFFFh 什么意思
dw ((%2 >> 16) & 0FFFFh)还有这个什么意思

或者把这些汇编GDT结构 用C语言方式 表示 比如 mov ax,5  相当C语言  ax=5


最佳答案

查看完整内容

这是一个宏,是个很巧妙的手法,将分散存储的段基址、段界限、段属性很好的统一了起来,便于查看。 %macro是NASM里的多行宏标识。 这里的意思是定义一个名为Descriptor的标识,存在3个参数,一般默认就是%1~%3. 至于为什么是那个结构,那是因为描述符就是那个样子的,关于描述符是什么书里有说到吧?(GDT或LDT的一个表项)。 %macro Gate 4说明定义了一个Gate标识,有四个参数。这个宏很好的说明了门描述符的结构。 最后,建 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-21 10:09:34 | 显示全部楼层
这是一个宏,是个很巧妙的手法,将分散存储的段基址、段界限、段属性很好的统一了起来,便于查看。
%macro是NASM里的多行宏标识。
这里的意思是定义一个名为Descriptor的标识,存在3个参数,一般默认就是%1~%3.
至于为什么是那个结构,那是因为描述符就是那个样子的,关于描述符是什么书里有说到吧?(GDT或LDT的一个表项)。
%macro Gate 4说明定义了一个Gate标识,有四个参数。这个宏很好的说明了门描述符的结构。
最后,建议lz学点基础性的知识,目前这些不适合你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-7 22:46:04 | 显示全部楼层
这个Linux下的AT&T的汇编吧,楼主可以自己去看一下,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-10 13:12:40 | 显示全部楼层
慢慢看,没有什么不懂的 保护模式a.rar (6.15 KB, 下载次数: 4)


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 06:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表