小编Akh*_*men的帖子

在为微控制器编译C程序时,编译器放置的那些额外汇编代码是什么?

我想在C中为我的Stellaris启动板编写一段代码,以便通过将库使用保持在最低限度来打开板载LED.令我惊讶的是,编译后的代码大小约为800字节.因此,为了检查编译器放入编译代码的内容,我使用了dissambler检查了汇编代码.它有很多代码,我没有编写C代码.我想知道这些代码的用途以及它是如何进入编译器设置的.我试图了解编译器的行为以及编译器正在做的幕后事务.请帮我.

这是我的C程序:

#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/rom.h"
#include "driverlib/sysctl.h"

#define GPIOFBASE   0x40025000
#define GPIOCLK     *((volatile unsigned long *)(0x400FE000 + 0x608))
#define FDIR        *((volatile unsigned long *)(GPIOFBASE + 0x400))
#define FDEN        *((volatile unsigned long *)(GPIOFBASE + 0x51C))
#define FDATA       *((volatile unsigned long *)(GPIOFBASE + 0x3FF))

void main(void) {

    ROM_SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);

    GPIOCLK |= (1<<5);
    FDIR    |=  0xE;
    FDEN    |=  0xE;
    FDATA   |=  0xE;

while (1);

}
Run Code Online (Sandbox Code Playgroud)

我使用的唯一API调用是使用Onchip ROM库设置时钟设置.请检查此pastebin上的dissambly代码:(主要:位于0x190.)

http://pastebin.com/wNNsBdtT

c embedded microcontroller arm disassembly

1
推荐指数
1
解决办法
392
查看次数

标签 统计

arm ×1

c ×1

disassembly ×1

embedded ×1

microcontroller ×1