[問題] 組合語言請求解釋

作者: 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