На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Модераторы: Qraizer
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> включение ассемблерных вставок , '__asm' not supported on this architecture
    Специально установил eMbedded Visual Tools. Вот что он мне выдал под ARM:
    ExpandedWrap disabled
          .verstamp   3 10
          .option pic0
          .file   1 "C:\programmer\projects\test\test002\sep_func.cpp"
          .data   .drectve
          .align  2
          .align  0
      __drectve:
          .ascii  "-defaultlib:corelibc.lib -defaultlib:coredll.lib "
          .text  
          .align  2
          .file   1 "C:\programmer\projects\test\test002\sep_func.cpp"
          .globl  ?min_func@@YAHHH@Z
          .loc    1 1
      #line 1 "C:\programmer\projects\test\test002\sep_func.cpp"  int min_func(int a, int b) {
          .ent    ?min_func@@YAHHH@Z 2
      ?min_func@@YAHHH@Z:
          .option O0
          .option foo
          .option foo
          sw  $4, 0($29)
          sw  $5, 4($29)
          .frame  $29, 0, $31
          .prologue   0
          .bgnb   9
          .bgnb   0
          .loc    1 2
      #line 2 "C:\programmer\projects\test\test002\sep_func.cpp"     return a-b;
          lw  $14, 0($29)
          lw  $15, 4($29)
          subu    $2, $14, $15
          b   $32
          .loc    1 3
      #line 3 "C:\programmer\projects\test\test002\sep_func.cpp"  }
          .endb   0
      $32:
          .endb   0
          b   $33
      $33:
          .livereg    0x2000FF0E,0x00000FFF
          j   $31
          .end


    Добавлено
    Хотя нет, стоп, это под MIPS :)

    Добавлено
    А вот это под ARM:
    ExpandedWrap disabled
          TTL C:\programmer\projects\test\test002\sep_func.cpp
       
          AREA    |.drectve|, DRECTVE
          DCB "-defaultlib:coredll.lib "
          DCB "-defaultlib:corelibc.lib "
       
          EXPORT  |?min_func@@YAHHH@Z|            ; min_func
       
          AREA    |.pdata|, PDATA
      |$T223| DCD |?min_func@@YAHHH@Z|
          DCD 0x40000703
      ; File C:\programmer\projects\test\test002\sep_func.cpp
       
          AREA    |.text|, CODE
       
      |?min_func@@YAHHH@Z| PROC               ; min_func
       
      ; 1    : int min_func(int a, int b) {
       
          mov       r12, sp
          stmdb     sp!, {r0, r1}  ; stmfd
          stmdb     sp!, {r12, lr}  ; stmfd
      |$M221|
       
      ; 2    :    return a-b;
       
          ldr       r3, [sp, #8]
          ldr       r2, [sp, #0xC]  ; 0xC = 12
          sub       r0, r3, r2
       
      ; 3    : }
       
          ldmia     sp, {sp, pc}  ; ldmfd
      |$M222|
       
          ENDP  ; |?min_func@@YAHHH@Z|, min_func
       
          END


    Добавлено
    А вот это под ARM:
    ExpandedWrap disabled
          TTL C:\programmer\projects\test\test002\sep_func.cpp
       
          AREA    |.drectve|, DRECTVE
          DCB "-defaultlib:coredll.lib "
          DCB "-defaultlib:corelibc.lib "
       
          EXPORT  |?min_func@@YAHHH@Z|            ; min_func
       
          AREA    |.pdata|, PDATA
      |$T223| DCD |?min_func@@YAHHH@Z|
          DCD 0x40000703
      ; File C:\programmer\projects\test\test002\sep_func.cpp
       
          AREA    |.text|, CODE
       
      |?min_func@@YAHHH@Z| PROC               ; min_func
       
      ; 1    : int min_func(int a, int b) {
       
          mov       r12, sp
          stmdb     sp!, {r0, r1}  ; stmfd
          stmdb     sp!, {r12, lr}  ; stmfd
      |$M221|
       
      ; 2    :    return a-b;
       
          ldr       r3, [sp, #8]
          ldr       r2, [sp, #0xC]  ; 0xC = 12
          sub       r0, r3, r2
       
      ; 3    : }
       
          ldmia     sp, {sp, pc}  ; ldmfd
      |$M222|
       
          ENDP  ; |?min_func@@YAHHH@Z|, min_func
       
          END


    Добавлено
    Т.е. тебе нужно:
    ExpandedWrap disabled
         TTL имя
         EXPORT  |?min_func@@YAHHH@Z|                    ; min_func
       
         AREA    |.text|, CODE
       
      |?min_func@@YAHHH@Z| PROC                               ; min_func
       
         mov         r12, sp
         stmdb       sp!, {r0, r1}
         stmdb       sp!, {r12, lr}
         sub         sp, sp, #4
       
         // тут код
       
         ldr         r0, [sp]
         add         sp, sp, #4
         ldmia       sp, {sp, pc}
       
         ENDP  ; |?min_func@@YAHHH@Z|, min_func
       
         END
      trainer, а проектик тогда выслать можешь?
      я сейчас пытаюсь реализовать - просто бывает что он просто не компилирует asm

      Цитата
      error LNK2019: unresolved external symbol "int __cdecl min_func(int,int)" (?min_func@@YAHHH@Z) referenced in function main


      пока вот что выдает
      Сообщение отредактировано: Fireman -
        Я бы выложил, но не получается. Вылазит Zero-sized reply :)
        Давай e-mail в приват

        Добавлено
        В общем добавил я в проект .asm, сделал для него Custom Build, в параметрах указал:
        armasm -cpu StrongARM1 -32 $(InputDir)\$(InputName).asm $(IntDir)\$(InputName).obj
        И все. Компилируется и собирается на ура.

        Добавлено
        У тебя возможно другие параметры для запуска ассемблера. Да может и Custom Build делать не надо.
          Цитата
          1>------ Build started: Project: test002, Configuration: Debug Windows Mobile 5.0 Pocket PC SDK (ARMV4I) ------
          1>Performing Custom Build Step
          1>Microsoft ® ARM Macro Assembler Version 14.00.50725
          1>Copyright © Microsoft Corporation. All rights reserved.
          1>error A0049: only one source file can be assembled: Mobile
          1>Project : error PRJ0019: A tool returned an error code from "Performing Custom Build Step"
          1>Build log was saved at "file://d:\test002\Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\Debug\BuildLog.htm"
          1>test002 - 1 error(s), 0 warning(s)
          ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


          если не указывать Custom Build то выбрать можно только MASM
            Ну он тебе пишет: "Только один исходник может быть ассемблирован."
            Цитата
            error A0049: only one source file can be assembled: Mobile

            Ты Custom build сделал только для .asm-файла или для всего проекта?
              Цитата trainer @
              Ты Custom build сделал только для .asm-файла или для всего проекта?

              Для .asm
              А где для всего проекта то? Ведь в Custom Build я же выставлял именно чем asm файл компилировать и как
                Цитата Fireman @
                А где для всего проекта то?
                Можно ведь менять параметры как для всего проекта, так и для конкретного файла. Зависит от того, на чем правую кнопочку мыши нажмешь в Solution explorer'е.
                  ну да
                  но счелкая на asm файле я выставляю Custom Build указываю armasm и ключи
                  а что с остальными делать? Где еще Custom Build выставлять и что ты под этим понимаешь
                    Цитата Fireman @
                    Где еще Custom Build выставлять
                    Больше нигде. Только для конкретного asm-файла.
                      Так я так и сделал - но ошибка то осталась
                      Вот и не знаю как с ней бороться
                        Файл с самим проектом(makefile-подобный) выложи
                          вот все что есть
                          Прикреплённый файлПрикреплённый файлtest002.rar (151.85 Кбайт, скачиваний: 158)
                            Понятно. Туго ассемблеру с именами папок/файлов, содержащими пробелы. Попробуй изменить на такое:
                            ExpandedWrap disabled
                              armasm -cpu StrongARM1 -32 "$(InputDir)\$(InputName).asm" "$(IntDir)\$(InputName).obj"
                            Или замени имя цели на что-нибудь, не содержащее пробелов
                              Действительно, дело было в этом - заменил строку на которую ты привел - все заработало. Спасибо
                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0.0989 ]   [ 16 queries used ]   [ Generated: 1.07.26, 05:50 GMT ]