如何在os x上用汇编语言编写Arduino?

时间:2014-01-18 13:07:47

标签: macos assembly arduino

我对Arduino相当新,但不是编程。我最近买了一个Arduino Uno,尽管最初了解到它只能用c编程,我想看看我是否可以用汇编语言编程。如果有人能够告诉我如何在Mac OSx上或推荐任何教程来学习这一点,我将不胜感激。此外,如果这个问题多余,我很抱歉,但请将我的答案提交给我。

2 个答案:

答案 0 :(得分:4)

有几种选择。

  1. 您可以使用avr-as.exe或make文件进行AVR GCC。
    1. 对于Mac,我会建议AdaFruit's Mac Setup Guide完全通过。
    2. 最近的
    3. avr-gcc-4.8_2013-03-06_mingw32.zip download。您也可以使用Arduino IDE提供的4.3.2
  2. 您可以在MAC下运行以下窗口。

    1. WINAVR w / avr gcc website
    2. WINAVRASM tutortial
    3. 对于任何操作系统

      1. 带内联汇编的Arduino IDE。 (很适合在装配时弄湿脚)
      2. 后者实际上使用Arduino的IDE直接在C ++旁边进行组装,因为它使用的是GCC,具有显着优势,可以继续使用Arduino Boot加载器。

        你可以通过。\ arduino-1.5.5 \ hardware \ arduino进行grep(文件搜索)。搜索“asm”的目录看了很多例子

        示例:1

        asm("nop");//50ns on 20Mhz, 62.5ns on 16Mhz
        

        示例:2

        __asm__ __volatile__                         \
        (                                            \
            "movw  r0, %3\n\t"                       \
            "sts %0, %1\n\t"                         \
            "spm\n\t"                                \
            "clr  r1\n\t"                            \
            :                                        \
            : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
              "r" ((uint8_t)__BOOT_PAGE_FILL),       \
              "z" ((uint16_t)address),               \
              "r" ((uint16_t)data)                   \
            : "r0"                                   \
        ); 
        

        示例3:

        asm volatile ( \
          "clr r26 \n\t" \
          "mul %A1, %B2 \n\t" \
          "movw %A0, r0 \n\t" \
          "mul %A1, %A2 \n\t" \
          "add %A0, r1 \n\t" \
          "adc %B0, r26 \n\t" \
          "lsr r0 \n\t" \
          "adc %A0, r26 \n\t" \
          "adc %B0, r26 \n\t" \
          "clr r1 \n\t" \
          : \
          "=&r" (intRes) \
          : \
          "d" (charIn1), \
          "d" (intIn2) \
          : \
          "r26" \
        )
        

        http://www.nongnu.org/avr-libc/user-manual/inline_asm.html

答案 1 :(得分:0)

以下是可能会回答您问题的博文:http://forum.arduino.cc/index.php/topic,37130.0.html

但正如RuggedCircuits所说:“最后的建议:这真的不值得”

希望它有所帮助!