Skip to content

Commit 75c8547

Browse files
committed
ss write addded
1 parent 2c7bd9f commit 75c8547

File tree

3 files changed

+96
-8
lines changed

3 files changed

+96
-8
lines changed

3-Lab/.vscode/settings.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
"xutility": "cpp"
6767
},
6868
"C_Cpp.codeAnalysis.clangTidy.checks.disabled": [
69-
"clang-diagnostic-error"
70-
]
69+
"clang-analyzer-*"
70+
],
71+
"cmake.generator": "Sublime Text 2 - MinGW Makefiles"
7172
}

3-Lab/ElfParser.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ void ElfParser::parse() {
6262
// SYMBOL TABLE
6363
symTableEntries = new SymTabEntry[symTabEntriesCount];
6464
std::stringstream bufferStream;
65-
bufferStream.rdbuf()->pubsetbuf(buff + symTabAddress - bufferOffset, bufferSize - (symTabAddress - bufferOffset));
65+
// bufferStream.rdbuf()->pubsetbuf(buff + symTabAddress - bufferOffset, bufferSize - (symTabAddress - bufferOffset));
66+
bufferStream.write(buff + symTabAddress - bufferOffset, bufferSize - (symTabAddress - bufferOffset));
67+
bufferStream.seekg(0);
6668
for (int i = 0; i < symTabEntriesCount; i++) {
6769
symTableEntries[i].fill(bufferStream);
6870
if (symTableEntries[i].info % 0b00010000 == STT::FUNC) {
@@ -92,11 +94,11 @@ void ElfParser::printSymtab(FILE* out) const {
9294
SymTabEntry curEntry = symTableEntries[i];
9395

9496
fprintf(out, "[%4i] 0x%-15X %5i %-8s %-8s %-8s %6s %s\n",
95-
i, curEntry.value, curEntry.size,
96-
toStringSTT(static_cast<STT>(curEntry.info % 0b10000)).c_str(),
97-
toStringSTB(static_cast<STB>(curEntry.info >> 4)).c_str(),
98-
toStringSTV(static_cast<STV>(curEntry.other)).c_str(),
99-
toStringSHN(static_cast<SHN>(curEntry.shndx)).c_str(),
97+
i, curEntry.value, curEntry.size,
98+
toStringSTT(static_cast<STT>(curEntry.info % 0b10000)).c_str(),
99+
toStringSTB(static_cast<STB>(curEntry.info >> 4)).c_str(),
100+
toStringSTV(static_cast<STV>(curEntry.other)).c_str(),
101+
toStringSHN(static_cast<SHN>(curEntry.shndx)).c_str(),
100102
getStringFromStrTab(curEntry.name).c_str());
101103
}
102104
}

3-Lab/resources/newOut.s

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
.text
2+
00010074 <main>:
3+
10074: ff010113 addi sp, sp, -16
4+
10078: 00112623 sw ra, 12(sp)
5+
1007c: 034000ef jal ra, 000100b0
6+
10080: 00c12083 lw ra, 12(sp)
7+
10084: 00000513 addi a0, zero, 0
8+
10088: 01010113 addi sp, sp, 16
9+
1008c: 00008067 jalr zero, 0(ra)
10+
10090: 00000013 addi zero, zero, 0
11+
10094: 4025d513 srli a0, a1, 1026
12+
10098: 00100137 lui sp, 1048576
13+
1009c: fd9ff0ef jal ra, 00010074
14+
100a0: 00050593 addi a1, a0, 0
15+
100a4: 00a00893 addi a7, zero, 10
16+
100a8: 0ff0000f unknown_instruction
17+
100ac: 00000073 ecall
18+
000100b0 <_Z4mmulv>:
19+
100b0: 00011f37 lui t5, 69632
20+
100b4: 1b0f0513 addi a0, t5, 432
21+
100b8: 65450513 addi a0, a0, 1620
22+
100bc: 1b0f0f13 addi t5, t5, 432
23+
100c0: fd018293 addi t0, gp, -48
24+
100c4: e4018f93 addi t6, gp, -448
25+
100c8: 02800e93 addi t4, zero, 40
26+
100cc: fec50e13 addi t3, a0, -20
27+
100d0: 000f0313 addi t1, t5, 0
28+
100d4: 00028893 addi a7, t0, 0
29+
100d8: 00000813 addi a6, zero, 0
30+
100dc: 00088693 addi a3, a7, 0
31+
100e0: 000e0793 addi a5, t3, 0
32+
100e4: 00000613 addi a2, zero, 0
33+
100e8: 00078703 lb a4, 0(a5)
34+
100ec: 00069583 lh a1, 0(a3)
35+
100f0: 00178793 addi a5, a5, 1
36+
100f4: 02868693 addi a3, a3, 40
37+
100f8: 02b70733 mul a4, a4, a1
38+
100fc: 00e60633 add a2, a2, a4
39+
10100: fea794e3 bne a5, a0, 000100e8
40+
10104: 00c32023 sw a2, 0(t1)
41+
10108: 00280813 addi a6, a6, 2
42+
1010c: 00430313 addi t1, t1, 4
43+
10110: 00288893 addi a7, a7, 2
44+
10114: fdd814e3 bne a6, t4, 000100dc
45+
10118: 050f0f13 addi t5, t5, 80
46+
1011c: 01478513 addi a0, a5, 20
47+
10120: fbff16e3 bne t5, t6, 000100cc
48+
10124: 00008067 jalr zero, 0(ra)
49+
00010128 <_Z9factoriali>:
50+
10128: 00200713 addi a4, zero, 2
51+
1012c: 00100793 addi a5, zero, 1
52+
10130: 00200693 addi a3, zero, 2
53+
10134: 00e50e63 beq a0, a4, 00010150
54+
10138: 00050713 addi a4, a0, 0
55+
1013c: fff50513 addi a0, a0, -1
56+
10140: 02e787b3 mul a5, a5, a4
57+
10144: fed51ae3 bne a0, a3, 00010138
58+
10148: 00179513 slli a0, a5, 1
59+
1014c: 00008067 jalr zero, 0(ra)
60+
10150: 00200513 addi a0, zero, 2
61+
10154: 00008067 jalr zero, 0(ra)
62+
63+
.symtab
64+
Symbol Value Size Type Bind Vis Index Name
65+
[ 0] 0x0 0 NOTYPE LOCAL DEFAULT UNDEF
66+
[ 1] 0x10074 0 SECTION LOCAL DEFAULT 1
67+
[ 2] 0x10158 0 SECTION LOCAL DEFAULT 2
68+
[ 3] 0x111B0 0 SECTION LOCAL DEFAULT 3
69+
[ 4] 0x0 0 SECTION LOCAL DEFAULT 4
70+
[ 5] 0x0 0 SECTION LOCAL DEFAULT 5
71+
[ 6] 0x0 0 FILE LOCAL DEFAULT ABS test.cpp
72+
[ 7] 0x119B0 0 NOTYPE GLOBAL DEFAULT ABS __global_pointer$
73+
[ 8] 0x11980 800 OBJECT GLOBAL DEFAULT 3 b
74+
[ 9] 0x111B0 0 NOTYPE GLOBAL DEFAULT 2 __SDATA_BEGIN__
75+
[ 10] 0x10128 48 FUNC GLOBAL DEFAULT 1 _Z9factoriali
76+
[ 11] 0x0 0 NOTYPE GLOBAL DEFAULT UNDEF _start
77+
[ 12] 0x111B0 1600 OBJECT GLOBAL DEFAULT 3 c
78+
[ 13] 0x11CA0 0 NOTYPE GLOBAL DEFAULT 3 __BSS_END__
79+
[ 14] 0x111B0 0 NOTYPE GLOBAL DEFAULT 3 __bss_start
80+
[ 15] 0x10074 28 FUNC GLOBAL DEFAULT 1 main
81+
[ 16] 0x100B0 120 FUNC GLOBAL DEFAULT 1 _Z4mmulv
82+
[ 17] 0x111B0 0 NOTYPE GLOBAL DEFAULT 2 __DATA_BEGIN__
83+
[ 18] 0x111B0 0 NOTYPE GLOBAL DEFAULT 2 _edata
84+
[ 19] 0x11CA0 0 NOTYPE GLOBAL DEFAULT 3 _end
85+
[ 20] 0x117F0 400 OBJECT GLOBAL DEFAULT 3 a

0 commit comments

Comments
 (0)