Вопрос по GСС на MIPS (скорее всего к fk0)

Programs, sources, embedded, demomaking, whatsoever related to subj :)

Postby CHRV » 11 Sep 2012, 19:40

Нуно в инитиализатор воткнуть инициализацию статических классов ( .ctors) ну и при выходе вызов деструкторов (.dtors).
Я на арме асм умею писать, а вот на мипсе чето неохота учицо. fk0 вроде ваш пик-32 это мипс, напиши мне а....

вот такой текст для мипса:
Code: Select all
.text
   .extern  AppInfo
   .global  AppInfo
   .extern  __MainEntryPoint
   .global  __MainEntryPoint
   .extern  event_main
   .global  event_main
__entry:
      j       __MainEntryPoint
      j       event_main
      j       AppInfo


тоже самое но уже сделанное мной для арма:
Code: Select all
.text
   .extern  AppInfo
   .global  AppInfo
   .extern  event_main
   .global  event_main
   .extern  main
   .global  main

__entry:
      B       .main_entry
      B       event_main
      B       AppInfo
.main_entry:
/* constructors initializing */
   LDR    r0, =__ctors_start__
   LDR    r1, =__ctors_end__
ctor_loop:
   CMP    r0, r1
   BEQ    ctor_end
   LDR    r2, [r0], #4
   STMFD    sp!, {r0-r1, lr}
   MOV    lr, pc
   MOV    pc, r2
   LDMFD    sp!, {r0-r1, lr}
   B       ctor_loop
ctor_end:
   LDR r1,=0x4000007c
   LDR r2,[r1]
   CMP r2,#0
   BNE .mapp_found
.no_return_run:
   BL main
   B .main_entry
.mapp_found:
   LDR r1,=.main_entry
   CMP r1,#0x00300000
   BLO .no_return_run
   B main
Многое есть здесь: www.nedopc.com
User avatar
CHRV
Желесяка
 
Posts: 2132
Joined: 15 Apr 2007, 21:52
Group: Registered users

Postby deathsoft » 11 Sep 2012, 21:00

нафига асм то?
__attribute__((constructor)) void init()
{

}


__attribute__((destructor)) void finish()
{

}

http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html

Внутри функций init и finish вызвать все что надо в нужном порядке, ну либо налепить атрибутов ко всем функциям каким надо, но тогда надо еще параметр приоритета указать (в каком порядке эти инициализаторы вызывать).

Весь стартап можно написать на C, в котором вызвать конструкторы до мэйна, а деструкторы после мэйна, никакой ассемблер нафиг не нужен.
функция вида (псевдокод):

void entry()
{
for(i)
constructors[i]();

r = main();

for(i)
destructors[i]();

_exit(r);
}
User avatar
deathsoft
 
Posts: 4658
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby CHRV » 12 Sep 2012, 08:37

Потомучто нужно в асм, заказчик требует потомучто :)
В сях я знаю как делать есно...
Многое есть здесь: www.nedopc.com
User avatar
CHRV
Желесяка
 
Posts: 2132
Joined: 15 Apr 2007, 21:52
Group: Registered users

Postby deathsoft » 12 Sep 2012, 18:07

CHRV wrote:В сях я знаю как делать есно...

Бугага, ну компильни из Ц в сорец на асме, а дальше подредактируй руками и будет заказчику асм.
User avatar
deathsoft
 
Posts: 4658
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby fk0 » 12 Sep 2012, 19:40

+1
* Origin: зип файл! (2:5030/1559)
User avatar
fk0
 
Posts: 1533
Joined: 07 Apr 2007, 01:08
Group: Registered users

Postby CHRV » 13 Sep 2012, 06:19

во-во халтурен :)
Многое есть здесь: www.nedopc.com
User avatar
CHRV
Желесяка
 
Posts: 2132
Joined: 15 Apr 2007, 21:52
Group: Registered users

Postby jdigreze » 13 Sep 2012, 07:04

CHRV, что, совсем лениво стало полистать команды асма для мипса? ;)
Сколько меня не корми, волк всё равно в лес смотреть будет
jdigreze
 
Posts: 1478
Joined: 01 Aug 2008, 06:49
Location: Агбан
Group: Registered users

Postby deathsoft » 13 Sep 2012, 16:58

CHRV wrote:во-во халтурен

Как раз не халтурен - а чтобы ошибок ручного кодирования на асме не было, тут компилятор генернет заведомо правильный асм код (при правильно написанной программе инициализации на Ц).
User avatar
deathsoft
 
Posts: 4658
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby fk0 » 13 Sep 2012, 20:14

+1
* Origin: зип файл! (2:5030/1559)
User avatar
fk0
 
Posts: 1533
Joined: 07 Apr 2007, 01:08
Group: Registered users


Return to Coding

Who is online

Users browsing this forum: No registered users and 2 guests

cron