求助 反汇编代码分析 的几点困惑
if @Version gt 510.model FLAT
else
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS ENDS
_TLS SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS ENDS
CRT$XCA SEGMENT DWORD USE32 PUBLIC 'DATA'
CRT$XCA ENDS
CRT$XCU SEGMENT DWORD USE32 PUBLIC 'DATA'
CRT$XCU ENDS
CRT$XCL SEGMENT DWORD USE32 PUBLIC 'DATA'
CRT$XCL ENDS
CRT$XCC SEGMENT DWORD USE32 PUBLIC 'DATA'
CRT$XCC ENDS
CRT$XCZ SEGMENT DWORD USE32 PUBLIC 'DATA'
CRT$XCZ ENDS
shared SEGMENT DWORD USE32 PUBLIC ''
shared ENDS
FLAT GROUP _DATA, CONST, _BSS, CRT$XCA, CRT$XCU, CRT$XCL, CRT$XCC, CRT$XCZ, shared
ASSUME CS: FLAT, DS: FLAT, SS: FLAT
endif
VC6 得到的反汇编代码总是由上面这部分,这是不是说明
(1)在以前,_TEXT, _DATA, CONST, _BSS, CRT$XCA, CRT$XCU, CRT$XCL, CRT$XCC, CRT$XCZ, shared等段是由相应的 DWORD USE32 PUBLIC '****'指定,但是现在对于版本高于Version 510 的则在 .model FLAT 中定义了各个段地址?
(2)好像FLAT就是在386以后的机子上才使用的一个标号,为什么需要在 版本号 小于 Version 510 的时候也需要对齐定义,难道是为了程序的向后兼容性?
[[it] 本帖最后由 vfdff 于 2008-11-3 01:02 编辑 [/it]]