OberonCore https://forum.oberoncore.ru/ |
|
Компилятор Oberon → ARMv6-M, ARMv7E-M https://forum.oberoncore.ru/viewtopic.php?f=137&t=5232 |
Страница 9 из 9 |
Автор: | Artyemov [ Четверг, 13 Апрель, 2017 15:28 ] |
Заголовок сообщения: | Re: Компилятор Oberon → ARMv6-M, ARMv7E-M |
Александр, продолжаю разбираться (комментарий вставлен в 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 0000200000003FF0H и точка входа по сбросу 000000400000021BH - не многовато? В самый раз (: - 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 |
Автор: | Alexander Shiryaev [ Четверг, 13 Апрель, 2017 20:00 ] |
Заголовок сообщения: | Re: Компилятор Oberon → ARMv6-M, ARMv7E-M |
Artyemov писал(а): 1) если известен стартовый адрес, то может быть (хотя я в этом 100% уверен) вместо номеров строк выводить адрес? Это не номера строк, а номера команд Trumb16Artyemov писал(а): 2) строки 0, 1 и 2, 3 поначалу обескуражили: исходное значение SP 0000200000003FF0H и точка входа по сбросу 000000400000021BH - не многовато? В самый раз (: - 16-разрядные числа. Ведущие нули всё же ни к чему. 32-разрядное значение состоит из двух подряд идущих 16-разрядных.В данном случае начальное значение равно 20003FF0H, вектор сброса 0040021AH+1 (Thumb). Artyemov писал(а): 3) строки 282, 283: смещение в комментарии. Лучше номер строки явно, а ещё лучше адрес (привет из п.1). До ";" значение в команде Thumb16, после ";" -- номер команды, понятный для человека.Artyemov писал(а): 4) (: строки 277 и 279: комментарий. Какая часть O7 написана на Ц? Надо было сделать, чтобы писалось 2000H вместо 0x2000...
|
Автор: | Alexander Shiryaev [ Четверг, 13 Апрель, 2017 20:04 ] |
Заголовок сообщения: | Re: Компилятор Oberon → ARMv6-M, ARMv7E-M |
Artyemov писал(а): И не сочтите за труд: что значат type descriptors, data, strings и проч? Об этом написано здесь, в 12-м разделе.
|
Автор: | Artyemov [ Пятница, 14 Апрель, 2017 16:21 ] |
Заголовок сообщения: | Re: Компилятор Oberon → ARMv6-M, ARMv7E-M |
Таблица векторов прерываний только в ОЗУ и механизмы работы с прерываниями из ARMv7MTraps? |
Автор: | Иван Денисов [ Суббота, 15 Апрель, 2017 01:46 ] |
Заголовок сообщения: | Re: Компилятор Oberon → ARMv6-M, ARMv7E-M |
Artyemov писал(а): Таблица векторов прерываний только в ОЗУ и механизмы работы с прерываниями из ARMv7MTraps? Про то, как работать с прерываниями, смотрите заметку: https://wiki.oberon.org/ob/o7/debug |
Автор: | Alexander Shiryaev [ Суббота, 15 Апрель, 2017 08:03 ] |
Заголовок сообщения: | Re: Компилятор Oberon → ARMv6-M, ARMv7E-M |
Artyemov писал(а): Таблица векторов прерываний только в ОЗУ и механизмы работы с прерываниями из ARMv7MTraps? Только в ОЗУ, но механизм работы может быть любым. |
Страница 9 из 9 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |