Page 1 of 1

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

PostPosted: 11 Sep 2012, 19:40
by CHRV
Нуно в инитиализатор воткнуть инициализацию статических классов ( .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

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

PostPosted: 11 Sep 2012, 21:00
by deathsoft
нафига асм то?
__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);
}

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

PostPosted: 12 Sep 2012, 08:37
by CHRV
Потомучто нужно в асм, заказчик требует потомучто :)
В сях я знаю как делать есно...

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

PostPosted: 12 Sep 2012, 18:07
by deathsoft
CHRV wrote:В сях я знаю как делать есно...

Бугага, ну компильни из Ц в сорец на асме, а дальше подредактируй руками и будет заказчику асм.

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

PostPosted: 12 Sep 2012, 19:40
by fk0
+1

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

PostPosted: 13 Sep 2012, 06:19
by CHRV
во-во халтурен :)

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

PostPosted: 13 Sep 2012, 07:04
by jdigreze
CHRV, что, совсем лениво стало полистать команды асма для мипса? ;)

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

PostPosted: 13 Sep 2012, 16:58
by deathsoft
CHRV wrote:во-во халтурен

Как раз не халтурен - а чтобы ошибок ручного кодирования на асме не было, тут компилятор генернет заведомо правильный асм код (при правильно написанной программе инициализации на Ц).

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

PostPosted: 13 Sep 2012, 20:14
by fk0
+1