Александр, продолжаю разбираться (комментарий вставлен в LOG копи-пастой)
Код:
(* ============================================================
MODULE HelloWord;
VAR
A, B :INTEGER;
BEGIN
A := 5;
B := 11;
B := A + B;
END HelloWord.
============================================================= *)
O7ARMv7MTool 19.9.2014
decode HelloWord.hex
00400000H:
0 00003FF0 SUBS r7, #240
1 00002000 MOVS r0, #0
2 0000021B LSLS r3, r3, #8
3 00000040 LSLS r0, r0, #1
4 00000001 MOVS r1, r0
253 00000000 MOVS r0, r0
254 00000000 MOVS r0, r0
255 00000000 MOVS r0, r0
256 0000BF00 NOP
257 0000B500 PUSH {LR}
258 00002005 MOVS r0, #5
259 0000F8D6 ...
260 00003000 LDR.W r3, [r6]
261 00006018 STR r0, [r3]
262 0000200B MOVS r0, #11
263 00006058 STR r0, [r3, #1] ; 4
264 00006818 LDR r0, [r3]
265 00006859 LDR r1, [r3, #1] ; 4
266 00001840 ADDS r0, r0, r1
267 00006058 STR r0, [r3, #1] ; 4
268 0000BD00 POP {PC}
269 0000F643 ...
270 000076FC MOVW r6, #16380 ; 0x3FFC
271 0000F2C2 ...
272 00000600 MOVT r6, #8192 ; 0x2000
273 00001F30 SUBS r0, r6, #4
274 00002100 MOVS r1, #0
275 00006001 STR r1, [r0]
276 0000F643 ...
277 000070F0 MOVW r0, #16368 ; 0x3FF0
278 0000F2C2 ...
279 00000000 MOVT r0, #8192 ; 0x2000
280 00006030 STR r0, [r6]
281 0000F7FF ...
282 0000FFE6 BL -52 ; -26
283 0000E7FE B -2 ; -1
start linear address: 00400001H
1) если известен стартовый адрес, то может быть (хотя я в этом 100% уверен) вместо номеров строк выводить адрес?
2) строки 0, 1 и 2, 3 поначалу обескуражили: исходное значение SP 00002000
00003FF0H и точка входа по сбросу 00000040
0000021BH - не многовато? В самый раз (: - 16-разрядные числа. Ведущие нули всё же ни к чему.
3) строки 282, 283: смещение в комментарии. Лучше номер строки явно, а ещё лучше адрес (привет из п.1).
4) (: строки 277 и 279: комментарий. Какая часть O7 написана на Ц?
И не сочтите за труд: что значат type descriptors, data, strings и проч?
Код:
O7ARMv7MTool 19.9.2014
decode HelloWord.a7m
HelloWord DEDCBD1B 1 72
imports:
type descriptors
data 8
strings
code
0 0000BF00 NOP
1 0000B500 PUSH {LR}
2 00002005 MOVS r0, #5
3 83000003
4 00FFFFFD
5 00006018 STR r0, [r3]
6 0000200B MOVS r0, #11
7 00006058 STR r0, [r3, #1] ; 4
8 00006818 LDR r0, [r3]
9 00006859 LDR r1, [r3, #1] ; 4
10 00001840 ADDS r0, r0, r1
11 00006058 STR r0, [r3, #1] ; 4
12 0000BD00 POP {PC}
commands:
entries
4
pointer refs
fixP = 0
fixD = 3
fixT = 0
entry = 4