ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
693421 Топик полностью
Mahagam (16.08.2016 22:18, просмотров: 247) ответил Точка опоры на А по каким ключевым словам можно раскурить ман на эту тему?
копайтесь в исходнике, что ниже. писалось это почти 8 лет назад, так что разъяснить что и как я уже и сам не смогу так сразу. помню что имена и указатели на них и что-то там ещё собиралось в памяти по подсекциям. вообще весь код аццкий хак, потому что иных средств получить подобное я не знаю (и тем более чтобы без применения сторонних средств). но в тоже время - всё в пределах документации на gcc. ////////////////////////////////// // MACRO for adding new html resource ////////////////////////////////// #ifdef BOOTLOADER .section .data #else .section .rodata #endif .global resources .global resource_count resource_count: .subsection 0 .long (def_size2 - def_size1)/16 resources: .subsection 1 def_size1: .subsection 2 def_size2: .macro newresource name mode .subsection 1 .long \name .long l\name .long d\name .long \mode .subsection 2 .align 1 \name: .asciz "\name" .subsection 3 l\name: .incbin "../resources/\name" d\name: .endm .macro newresourceh header name mode .subsection 1 .long \name .long l\name .long d\name .long \mode .subsection 2 .align 1 \name: .asciz "\name" .subsection 3 l\name: .incbin "../resources/\header" .incbin "../resources/\name" d\name: .endm .macro newalias name aliasname mode .subsection 1 .long \name .long l\aliasname .long d\aliasname .long \mode .subsection 2 .align 0 \name: .asciz "\name" .endm .macro spacealias name mode .subsection 1 .long space .long l\name .long d\name .long \mode .subsection 2 .align 0 space: .asciz " " .endm // mode bits description: // .0 - authorisation needed // .1 - AJAX request text ////////////////////////////////// // here we can add a new resource in one string ////////////////////////////////// #ifndef BOOTLOADER NEWRESOURCEH "200_ok.header", "ajax.js", 0 NEWRESOURCE "auth.header", 0 NEWRESOURCEH "200_ok.header", "config.html", 1 #ifndef TRUNCATED NEWRESOURCEH "200_ok.header", "favicon.ico", 0 NEWRESOURCEH "gzip.header", "jquery.js", 0 NEWRESOURCEH "200_ok.header", "sample.html", 1 NEWRESOURCEH "200_ok.header", "power.png", 0 NEWRESOURCEH "200_ok.header", "vol_down.png", 0 NEWRESOURCEH "200_ok.header", "vol_up.png", 0 NEWRESOURCEH "200_ok.header", "dots.gif", 0 NEWRESOURCEH "200_ok.header", "logo.png", 0 NEWRESOURCEH "200_ok.header", "sample.css", 0 NEWRESOURCEH "200_ok.header", "gradient.png", 0 NEWRESOURCEH "200_ok.header", "gradien2.png", 0 NEWRESOURCEH "200_ok.header", "loader.gif", 0 NEWRESOURCEH "200_ok.header", "ip_change.html", 0 NEWRESOURCEH "gzip.header", "jq.smodal.js", 0 NEWRESOURCEH "200_ok.header", "wait.gif", 0 NEWALIAS "AR", "sample.html", 3 SPACEALIAS "sample.html", 1 #else // TRUNCATED NEWRESOURCEH "200_ok.header", "ex2.html", 0 NEWALIAS "AR", "ex2.html", 3 #endif // TRUNCATED #else // BOOTLOADER NEWRESOURCEH "200_ok.header", "logo.png", 0 NEWRESOURCE "auth.header", 0 NEWRESOURCEH "200_ok.header", "update.html", 1 NEWRESOURCEH "200_ok.header", "favicon.ico", 0 NEWRESOURCEH "200_ok.header", "reboot.html", 1 SPACEALIAS "update.html", 1 #endif // BOOTLOADER ////////////////////////////////// // End of list marking // code: while (p->get_string != 0) { .subsection 1 .long 0 ////////////////////////////////// .section .text .global boot_to_main .thumb_func boot_to_main: ldr r1, [r0] mov sp, r1 add r0, #4 ldr r1, [r0] blx r1 .end