=====================================================================
                           ARMCCˑ
                                  Last Modified: 2012 Jan 19 20:13:08
=====================================================================

Tv

ARMCCˑɂ́CARMCCpăJ[lRpC邽߂ɕKvȃt@
CuD


rĥ߂̃t@C̃Rs[

Make(GNU)ɂARMCCp̃J[lrh邽߂ɂ́Cȉ̓
̃t@COɃRs[KvD

 $cp ./arch/armcc/Makefile.sample ./sample
 $cp ./arch/armcc/makedep         ./utils
 
 
Makefile̕ύX_

E.Sɑ΂郋[.sxɕύXD
EOBJEXT  axf ɕύX
EÑIvVCFLAGStȂ悤ύX
EŏIIuWFNg̐
 EV{o͂̂߂̃IvV̒ǉ
 ENMĂяoȂD
 Eobjcopÿ̕ύX   
Ecfg1_out̐
 ENMĂяoȂD
 Eobjcopÿ̕ύX   
EJc[̃R}harmcc̃c[QɕύX
ELINKCCarmlinkɕύX


ARMCCLR[h̋Lq@

ARMCCƋLR[h́C̃[ɏ]ăR[hLqKvD

1.oA(__memory_changed())̃}N

^[Qbgˑ |[eBOKCh(1-6-2)(c)ɂ́Ĉ悤ɋLq
ĂD

-----
(c) NeBJZNV̏o̖{IȕC}NCC
	֐ďoŎĂꍇɂ́CNeBJZNVɓ鏈
	̍ŌƏo鏈̐擪ɁCAsm("":::"memory")ƂLqD
-----

GCCAsm("":::"memory")́CARMCCł̓RpCgݍ݊֐ł
__memory_changed()ŋLqKvC݊ȂD̋Lq
́C̃}NŋLqƁCRpCɓK؂ȃoA߂ɒu
D

  ARM_MEMORY_CHANGED

2.CN[h@

^[Qbgˑ |[eBOKCh1.5ɂ́Ĉ悤ɋLqĂD

-----
̑̃wb_t@ĆCu#include "..."vɂCN[hDwb
_t@CCJgfBNgCN[ht@CƓfB
NgȊÕfBNgɒuĂꍇɂ́Ĉ悤ɃpXw
sD
-----

GCCˑARMCCˑŃwb_t@CLłȂꍇɂ́Cꂼ
œÕt@CDāCRpCIvVŃCN[h
ׂt@CɎw肵ĂD̂߁CARMCCƋLt@C
̃t@CCN[hꍇɂ́Cu#include "..."vł͂ȂC
u#include <...>vŋLqC΃pXł͂Ȃt@Ĉ݂Lڂ邱
ƁD

3.AZufBNeBu

GCCARMCC̃AZufBNeBu͌݊ȂD̂߁CARMCC
Lt@C͎Ɏ}NfBNeBuŋLq邱ƁD

}NfBNeBu     ARMCCfBNeBu
 ASECTION(name)           area |name|, code
 ATEXT                    area |.text|, code
 AGLOBAL(name)            global name
 AALIGN(x)                align x
 ALONG                    dcd
 ALABEL(label)            label
 AOR                      :OR:
 ATHUMB(name)             thumb


4..sxt@C

WindowsłARMCCł́C.S̊gq̃t@C̓vvZX{ȂD
̂߁CARMCCGCCł̃AZut@Cgpꍇɂ́C.sx̊g
q̃t@C쐬Cȉ̏ǉARMCCGCCł̃AZut
@C(gq.S)CN[h邱ƁD

 Eextern錾̒ǉ
 EPRSERVE8fBNeBu̒ǉ
 EENDfBNeBu̒ǉD

t@Cꗗ

Earmcc.txt
Emakedep
EMakefile.sample
EMANIFEST
Etool_asm.inc
Etool_stddef.h


ARMCCΉ

݌vj
E\ȌGCCłƃ\[XR[hL
 EAZũR[hLD
 Eifdef͋ɗ͎gpȂ

ELR[hGCCł̕ɎD

http://www.is.nagoya-u.ac.jp/admission/
o[W
ARMCCt
ERVDS
 EARMRpCEfobK̃pbP[W
 EARMCC̃o[W : v4
 EfobKRealViewDebugger
EDS-5(RVDŠp)
 EK͂MCU(Coretex-Ax, ARM11)̊J
 ELinux(Android)̊JȑΏۂƂĂ
 E3ނ̃GfBVCŏʂProfessional̂ARMCC܂ށiGNUj
 EARMCC̃o[W : v5
 EfobKEclipsex[X
EMDK-ARM
 EK͂MCU(Cortex-Mx,ARM7,ARM9)̊J
 EARMCC̃o[W : v4
 EfobK̓Vison
 
E
 EV4.1 or V5.0
  EV5.0̐V@\
    EGCC tH[obN[hT|[g
      EARMCCŎsꍇGCCĂяoiRpCt@X 3-194j
        ->gpȂ   
        
E_      
 EV5.0̐V@\̓J[l̎ɂ͉eȂ߁C v4.1v5.0̗
   T|[gD

GNUc[Ƃ̌݊
EGNUc[݊@\
 E--gnuw肷邱ƂɂGNUg@\gp\D
  ELinux̃AvP[VJ邱ƂړIɓĂ

 ETOPPERSJ[lɊւ鎖
  Easm keyword
   Eۑ肪TOPPERSJ[lł͎gpłȂiqj
  EZero-length arrays
  EInline functions
   Estatic inline gp\
  EGNUldXNvg͉\
   Eۑ肪TOPPERSJ[lł͎gpłȂiqj

 EQ 
   ERpCt@X 4.45
   EWhich GNU language extensions are supported by the ARM Compiler?
      http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka14717.html
     
EJXNvǧ݊
 EGNUldXNvg͉\ 
 ELinux̃Av̊JΏۂƂĂ邽߁Cȉ̐񂪂CTOPPERS
   ̊Jł͎gpłȂ
   EVMA = LMA ̂݃T|[g
   ExA^͖T|[gł
    Q : J̎gp 9.1
 E_
   EXLb^t@Cgp

Ec[̑Ή
 GNU     ARMCC
  gcc     armcc 
  g++     armcc 
  as      armasm 
  ld      armlink 
  ar      armar 
  nm      armlink -symdefs=file    ARMCC Jt@X 2.147͎Q 
  ranlib  armar -s                                          
  objcopy fromelf 
  gcc     armlink   


CCAZü
E
 1. CCAZu (OR[h܂ߍœKΏہACCWJΏ)
   ->GNUASM
 2. gݍ݃AZu (œK ΏہAACCWJΏ) 
    ->֐ŜAZuƂ
 3. RpCgݍ݊֐ (ARMCC(*);œKACCWJ) 

 ECCg݃AZugCRpCg݊֐̎gp
   𐄏
   Ql:ARMCC}jA RpC̎gp 8 ŏ̒    
  
 ECCAZuȉɑΉĂȂD
    -Thumb AZu
    -Thumb-2 AZu
    -ARMv7 
    -VFP 
    -NEON 
   Ql:ARMCC}jA RpC̎gp 8.3

 ERpCg݊֐
    Q:ARMCC}jA RpCt@X 5.102
    )
       __schedule_barrier()
       __memory_changed()
     RpCɑ΂qg
       __schedule_barrier()
       __memory_changed()
  Eۑ
    ECPSRRv̑삪łȂD
    
 EOtWX^ϐ  
   EcpsrRv̑ɎgpD
   Q:RpCt@X 5.152
        RpC̎gp 5.15

E_
  ERpCgݍ݊֐ƖOtWX^ϐ𕹗pD
    
AZut@Č݊
EGNUƂ̈Ⴂ
 E@ꕔقȂ
  E| ł͂Ȃ OR g悤ɌxłD
  Ecpsrł͂Ȃcpsr_cxsfg悤ɃG[ł(spsrl)D
  EEXTERNKv
  EENDKv  
Egq̈
  EWindowsł.S̃t@Cɂ̓vvZX{ȂDvvZ
    X{ɂ́Cgq.sxƂKvD
E}Nł͏肭ȂP[X
   #define ASECTION(name) area |name|, code  
   ASECTION(.vector) Ə
   area |. vector|, code
   ƂȂD
  
E
 1.GNUƓƗt@CƂD
 2.ϊvO쐬
 3.}Nɂt@CL
 
E_
 E}Nɂt@CLD
 EARMCCˑ.sxt@C쐬āC.SCN[hD

weak definition
EGCC
 EJXNvgŎwD
    PROVIDE(hardware_init_hook = 0);
    PROVIDE(software_init_hook = 0);
    PROVIDE(software_term_hook = 0);
EARMCC
 EXLb^[ɂ͂̋@\ȂD
 EɕϐE֐weak definition@\̂łgp
   āC̊֐`D
 EĂяoI[owbhCƂfbg͂D  
 
E_ 
  E֐weak definition@\ɂCcore_support.sx Œ`D
  
RpCIvV
ʃIvV
E--apcs=/interwork  : ARM,Thumb(ARM̂)
E--diag_style=gnu   : GNU݊bZ[W

RpC
E--gnu              : GNU݊
E--bss_threadhold   : X[f[^ZNVgp

J
E--datacompressor=off : DATÄ̏lkȂ
E--no_remove          : gp̃V{폜Ȃ
                            
              
Makefile
EAZůgq.sxɕύXƂȂ邽߁CGNUJpMakefile͎g
  Ȃ߁Cʂ̃t@CƂėpӂD

makedep
EpX\\ŏo͂邽ߒuKvD
  1.7.1őΉ\D
              
ύX

2011/11/22
EVKǉ

ȏD
