Y
yodathegreat
Guest
Hi all,
Hoe te converteren GCC deze code aan ADS ARM C-code?.
met vriendelijke groet# define portSAVE_CONTEXT () \
(\
extern vluchtige void * vluchtige pxCurrentTCB; \
\
/ * Push R0 als we hier gaan gebruiken, het register.* / \
asm volatile ( "STMDB SP!, (R0)"); \
\
/ * Stel R0 te wijzen op de taak-stack pointer.* / \
asm volatile ( "STMDB SP, SP () ^"); \
asm volatile ( "SUB SP, SP, # 4"); \
asm volatile ( "LDMIA SP!, (R0)"); \
\
/ * Duw het retouradres op de stack.* / \
asm volatile ( "STMDB R0!, LR ()"); \
\
/ * Nu hebben we opgeslagen LR we kunnen gebruiken in plaats van R0.* / \
asm volatile ( "MOV LR, R0"); \
\
/ * Pop R0 dus we kunnen slaan op het systeem-modus stack.* / \
asm volatile ( "LDMIA SP!, (R0)"); \
\
/ * Duw alle systeem-modus registers op de taak stack.* / \
asm volatile ( "STMDB LR, (R0-LR }^"); \
asm volatile ( "SUB LR, LR, # 60"); \
\
/ * Duw de SPSR op de taak stack.* / \
asm volatile ( "MEVROUW R0, SPSR"); \
asm volatile ( "STMDB LR!, R0 ()"); \
\
/ * Bewaar de nieuwe top van de stack voor deze taak.* / \
asm volatile ( "LDR R0,% 0": "M" (pxCurrentTCB)); \
asm volatile ( "STR LR [R0]"); \
)
Hoe te converteren GCC deze code aan ADS ARM C-code?.
met vriendelijke groet# define portSAVE_CONTEXT () \
(\
extern vluchtige void * vluchtige pxCurrentTCB; \
\
/ * Push R0 als we hier gaan gebruiken, het register.* / \
asm volatile ( "STMDB SP!, (R0)"); \
\
/ * Stel R0 te wijzen op de taak-stack pointer.* / \
asm volatile ( "STMDB SP, SP () ^"); \
asm volatile ( "SUB SP, SP, # 4"); \
asm volatile ( "LDMIA SP!, (R0)"); \
\
/ * Duw het retouradres op de stack.* / \
asm volatile ( "STMDB R0!, LR ()"); \
\
/ * Nu hebben we opgeslagen LR we kunnen gebruiken in plaats van R0.* / \
asm volatile ( "MOV LR, R0"); \
\
/ * Pop R0 dus we kunnen slaan op het systeem-modus stack.* / \
asm volatile ( "LDMIA SP!, (R0)"); \
\
/ * Duw alle systeem-modus registers op de taak stack.* / \
asm volatile ( "STMDB LR, (R0-LR }^"); \
asm volatile ( "SUB LR, LR, # 60"); \
\
/ * Duw de SPSR op de taak stack.* / \
asm volatile ( "MEVROUW R0, SPSR"); \
asm volatile ( "STMDB LR!, R0 ()"); \
\
/ * Bewaar de nieuwe top van de stack voor deze taak.* / \
asm volatile ( "LDR R0,% 0": "M" (pxCurrentTCB)); \
asm volatile ( "STR LR [R0]"); \
)