[问题] 组合语言请求解释

楼主: adam77x (韩吉)   2014-11-18 14:11:48
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
keil C 4
问题(Question):
板上大大好
小弟最近在写有关四轴飞行器的控制板
上网参考了CODE
其中有一段程式码(如下
这段内嵌组合语言似乎是用AT&T的语法写的
想请问一下如果要转换为intel的语法
可否教学该如何写呢?
小弟在程式上还很浅
还请各位大大不吝赐教...
程式码(Code):(请善用置底文网页, 记得排版)
int strcmp(const char *a, const char *b) __attribute__ ((naked));
int strcmp(const char *a, const char *b)
{
__asm__(
"strcmp_lop: \n"
" ldrb r2, [r0,#1] \n"
" ldrb r3, [r1,#1] \n"
" cmp r2, #1 \n"
" it hi \n"
" cmphi r2, r3 \n"
" beq strcmp_lop \n"
" sub r0, r2, r3 \n"
" bx lr \n"
:::
);
}
作者: carylorrk (carylorrk)   2014-11-18 14:17:00
有 ASM 版,还有这看起来比较像是 ARM?
楼主: adam77x (韩吉)   2014-11-18 14:28:00
对阿~这是ARM 这样就看的出来!!
作者: carylorrk (carylorrk)   2014-11-18 14:30:00
所以 ARM 还有分 AT&T 和 Intel 的 syntax 吗- -?
作者: dirkc (3781615)   2014-11-18 14:31:00
推飞行器!
楼主: adam77x (韩吉)   2014-11-18 14:33:00
这原本的作者似乎是用GCC编译的 可是我现在是在window上
作者: carylorrk (carylorrk)   2014-11-18 14:34:00
最近专题好像很流行 ardunio + 四轴 XD
楼主: adam77x (韩吉)   2014-11-18 14:34:00
所以好像会有语法上的问题?
作者: carylorrk (carylorrk)   2014-11-18 14:36:00
我记得 keil c 支援 __attribute__,所以跟 gcc 无关你想说的是,你要 x86 的 asm? 还是你的开发板是啥?
楼主: adam77x (韩吉)   2014-11-18 14:39:00
我想要x86的ASM 喔对了我的板子是STM32F4~^^
作者: carylorrk (carylorrk)   2014-11-18 14:41:00
为啥板子是 arm,你却要 x86 的 asm..还有直接用 keil的 strcmp 有什么问题吗 - -?
楼主: adam77x (韩吉)   2014-11-18 14:52:00
我直接用 可是compiler到这一段就会有语法上的问题...因为我不知道这一段是在干嘛...想请各位大大帮忙说明一下
作者: azureblaze (AzureBlaze)   2014-11-18 15:24:00
所以是什么语法问题
作者: saxontai (黑暗,点缀孤零零的星)   2014-11-18 16:08:00
这问题应该到 ASM 版问。还有你需要的是 Windows 版的GNU Tools for ARM Embedded Processors,而不是把那段组语转译成 Intel CPU 的组语。=.=https://launchpad.net/gcc-arm-embedded如果你想要有IDE,可以试 Eclipse 或 Em::Blocks
作者: carylorrk (carylorrk)   2014-11-18 17:21:00
这么说来,keil C 的 inline asm 语法好像不太一样
作者: saxontai (黑暗,点缀孤零零的星)   2014-11-18 17:46:00
原PO想继续用Keil C的话,Google "keil c armcc inlineassembly" 看看囉
楼主: adam77x (韩吉)   2014-11-19 12:19:00
感谢各位大大 我会照各位建议试试看~
作者: spencer222 (ddd)   2014-11-21 01:07:00
Arm的thumb2组语 上网找一下"it section"

Links booklink

Contact Us: admin [ a t ] ucptt.com