-
-
WinDbg 帮助文档翻译 - 数值表达式语法
-
发表于:
2006-10-28 21:23
9963
-
翻译了几篇 WinDbg 的帮助文档,翻译得不好,请见谅!
刚来看雪没有权限上传文件,我把它放到了一个网络硬盘里面。
http://pickup.mofile.com/2001999207213278
下面是第一篇的一部分:
------------------------------------------------------------------------------------
MASM 数值和运算符
MASM(Microsoft 宏汇编器)表达式语法是 Debugging Tools for Windows 4.0 之前版本中的 NTSD, CDB, KD 和 WinDbg 惟一使用的语法。
MASM 表达式中的数值
MASM 表达式中的数值能够以 16, 10, 8 或者 2 为基数方式输入。
n (Set Number Base) 命令可用来设置缺省基数为 16, 10 或者 8。所有不带前缀的数值都以该基数来解释。通过指定 0x 前缀(十六进制),0n 前缀(十进制),0t 前缀(八进制),或者 0y 前缀(二进制)能够掩盖缺省基数。也可以添加一个 h 后缀表示十六进制数值。数值里面的字母可以是大写或者小写,所以 "0x4AB3", "0X4aB3", "4AB3h", "4ab3h" "4aB3H" 都表示相同意思。
如果表达式中前缀后面没有跟一个数值,它被读作 0。所以,0 可以写成三种形式:0,前缀后面跟一个 0,单独一个前缀。例如,在十六进制下,"0", "0x0" 和 "0x" 都表示相同意思。
能够以 xxxxxxxx`xxxxxxxx 格式输入 64 位的十六进制数值,或者忽略当中的重音符号(`)。包含重音符号会使得自动符号扩展无效,详细请看符号扩展。
MASM 表达式中的符号
在 MASM 表达式中,任意符号的数值都是它的内存地址。根据引用符号的不同,可以是全局变量、局部变量、函数、段、模块或者任何其它可识别标签的地址。
如果会混淆,你可以给符号添加一个模块名和一个感叹号(!)做为前缀,或者只加一个感叹号。关于符号识别,详细请看符号语法和符号匹配。
两个冒号(::)或者两条下划线(__)可以用来标志类的成员。
只有以模块名和感叹号为前缀的符号名中才能使用重音符号(`)或者撇号(')。
MASM 表达式中的数值运算符
表达式的任意组件都可以用一元运算符来修改,任意两个组件都可以用二元运算符组合起来。一元运算符优先于二元运算符。当用到多个二元运算符时,遵循已定的优先级规则。
总是可以用圆括号来掩盖优先级规则。
如果 MASM 表达式的某一部分被圆括号括住并有两个 @ 前缀 - @@( ... ) - 该部分将根据 C++ 表达式规则来解析。在两个 @ 记号之间以及和左圆括号之间不能有空格。也可以通过使用 @@c++( ... ) 或者 @@masm( ... ) 指定表达式求解器。
当执行算术运算时,MASM 表达式求解器把所有的数值和符号当做 ULONG64 类型。
一元地址运算符寻址时假定 DS 为缺省段。按运算符的优先级顺序计算表达式。如果两个相邻的运算符优先级一样,则从左往右计算表达式。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课