включение ассемблерных вставок
, '__asm' not supported on this architecture
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.217.58] |
|
|
| Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
включение ассемблерных вставок
, '__asm' not supported on this architecture
|
Сообщ.
#16
,
|
|
|
|
Специально установил eMbedded Visual Tools. Вот что он мне выдал под ARM:
![]() ![]() .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: ![]() ![]() 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: ![]() ![]() 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 Добавлено Т.е. тебе нужно: ![]() ![]() 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 |
|
Сообщ.
#17
,
|
|
|
|
trainer, а проектик тогда выслать можешь?
я сейчас пытаюсь реализовать - просто бывает что он просто не компилирует asm Цитата error LNK2019: unresolved external symbol "int __cdecl min_func(int,int)" (?min_func@@YAHHH@Z) referenced in function main пока вот что выдает |
|
Сообщ.
#18
,
|
|
|
|
Я бы выложил, но не получается. Вылазит Zero-sized reply
![]() Давай e-mail в приват Добавлено В общем добавил я в проект .asm, сделал для него Custom Build, в параметрах указал: armasm -cpu StrongARM1 -32 $(InputDir)\$(InputName).asm $(IntDir)\$(InputName).obj И все. Компилируется и собирается на ура. Добавлено У тебя возможно другие параметры для запуска ассемблера. Да может и Custom Build делать не надо. |
|
Сообщ.
#19
,
|
|
|
|
Цитата 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 |
|
Сообщ.
#20
,
|
|
|
|
Ну он тебе пишет: "Только один исходник может быть ассемблирован."
Цитата error A0049: only one source file can be assembled: Mobile Ты Custom build сделал только для .asm-файла или для всего проекта? |
|
Сообщ.
#21
,
|
|
|
|
Цитата trainer @ Ты Custom build сделал только для .asm-файла или для всего проекта? Для .asm А где для всего проекта то? Ведь в Custom Build я же выставлял именно чем asm файл компилировать и как |
|
Сообщ.
#22
,
|
|
|
|
Цитата Fireman @ Можно ведь менять параметры как для всего проекта, так и для конкретного файла. Зависит от того, на чем правую кнопочку мыши нажмешь в Solution explorer'е. А где для всего проекта то? |
|
Сообщ.
#23
,
|
|
|
|
ну да
но счелкая на asm файле я выставляю Custom Build указываю armasm и ключи а что с остальными делать? Где еще Custom Build выставлять и что ты под этим понимаешь |
|
Сообщ.
#24
,
|
|
|
|
Цитата Fireman @ Больше нигде. Только для конкретного asm-файла. Где еще Custom Build выставлять |
|
Сообщ.
#25
,
|
|
|
|
Так я так и сделал - но ошибка то осталась
Вот и не знаю как с ней бороться |
|
Сообщ.
#26
,
|
|
|
|
Файл с самим проектом(makefile-подобный) выложи
|
|
Сообщ.
#27
,
|
|
|
|
вот все что есть
Прикреплённый файл test002.rar (151.85 Кбайт, скачиваний: 158)
|
|
Сообщ.
#28
,
|
|
|
|
Понятно. Туго ассемблеру с именами папок/файлов, содержащими пробелы. Попробуй изменить на такое:
![]() ![]() armasm -cpu StrongARM1 -32 "$(InputDir)\$(InputName).asm" "$(IntDir)\$(InputName).obj" |
|
Сообщ.
#29
,
|
|
|
|
Действительно, дело было в этом - заменил строку на которую ты привел - все заработало. Спасибо
|