📄 asm_segment_c.cpp
字号:
//---------------------------------------------------------------------------
//-------- ASM_Segment_C.cpp ------------------------------------------------
//---------------------------------------------------------------------------
#include "ASM_Segment_H.h"
//---------------------------------------------------------------------------
//------ 析构器 -------------------------------------------------------------
ASM_Segment::~ASM_Segment()
{ for( register SegTriple* p;
SegTrp;
p = SegTrp->next, delete SegTrp, SegTrp = p ); // endfor
} // end destructor
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void ASM_Segment::show()const
{ printf("\n======= Segment ========");
printf("\n[SegID]=%4.4X", SegID); // 段ID
printf("\t[Name]=[%s]", (const char*)Name); // 段名, 绝对段没有段名。
printf("\t[SegType]="); // 段类型(0~4)
switch(SegType)
{ case 0 : printf("CODE"); break;
case 1 : printf("XDATA"); break;
case 2 : printf("DATA"); break;
case 3 : printf("IDATA"); break;
case 4 : printf("BIT"); break;
default: printf("?????");
} // end switch
printf("\t[RelType]="); // 再定位类型(0~5)
switch(RelType)
{ case 0 : printf("ABSOLUTE");break;
case 1 : printf("UNIT"); break;
case 2 : printf("BITABLE"); break;
case 3 : printf("INPAGE"); break;
case 4 : printf("INBLOCK"); break;
case 5 : printf("PAGE"); break;
default: printf("?????");
} // end switch
printf("\n[SegBase]=%4.4X", SegBase); // 段基址
printf("\t[SegSize]=%4.4X", SegSize); // 段大小
printf("\t[SegLc]=%4.4X", SegLc); // 段地址计数器
printf("\tSegEmpty=%d", SegEmpty); // 段空?
printf("\tOverAble=%d", OverAble); // 此段可覆盖?
printf("\n[REGused]=%2.2X", SREGused); // (#0~#3)可覆盖的段能用的寄存器组
printf("\t[next]=%8.8X", next);
printf("\t[SegTrp]");
for(register SegTriple* p = SegTrp; p; p = p->next)
{ p->show(); } // end for
printf("\n===========================");
} // end show
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void SegTriple::show()const
{ if(begin==NULL) { printf("\n begin=NULL"); } // endif
else
{ printf("\n >>> begin=#%4.4d end=#%4.4d ",
begin->GetLineNo(), end->GetLineNo() ); } // end else
} // end show
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// end ASM_Segment_C.cpp
//---------------------------------------------------------------------------
// Written by JamesyFront. ZLGmcu Dev.Co.Ltd. 2002.
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -