public void writeOboeFile(BinaryOut outfile) { //write header outfile.putFixedString(OBOESIG, 4); outfile.putFour((uint)sections.Count); //write initial section tbl uint sectblsize = (uint)(sections.Count * SECTIONENTRYSIZE); uint sectbl = outfile.getPos(); outfile.skip(sectblsize); //write section data uint pos = outfile.getPos(); foreach (Section sec in sections) { sec.addr = pos; sec.writeOut(outfile); pos = outfile.getPos(); sec.size = pos - sec.addr; } //adjust section tbl outfile.seek(sectbl); foreach (Section sec in sections) { outfile.putFour(sec.sectype); outfile.putFour(sec.addr); outfile.putFour(sec.size); } }
//- writing out --------------------------------------------------------------- public void writeSectionTblEntry(BinaryOut outfile) { outfile.putFixedString(name, 8); outfile.putFour(memSize); outfile.putFour(memPos); outfile.putFour(fileSize); outfile.putFour(filePos); //line numbers are deprecated, we don't write them outfile.putFour(relocTblPos); outfile.putFour(0); outfile.putTwo((uint)relocations.Count); outfile.putTwo(0); uint flagval = settings.encodeFlags(); outfile.putFour(flagval); }