Alien-TinyCCx
view release on metacpan or search on metacpan
src/arm-gen.c view on Meta::CPAN
/* Manually free remaining registers since next parameters are loaded
* manually, without the help of gv(int). */
save_regs(nb_args);
if(todo) {
o(0xE8BD0000|todo); /* pop {todo} */
for(pplan = plan->clsplans[CORE_STRUCT_CLASS]; pplan; pplan = pplan->prev) {
int r;
pplan->sval->r = pplan->start;
/* An SValue can only pin 2 registers at best (r and r2) but a structure
can occupy more than 2 registers. Thus, we need to push on the value
stack some fake parameter to have on SValue for each registers used
by a structure (r2 is not used). */
for (r = pplan->start + 1; r <= pplan->end; r++) {
if (todo & (1 << r)) {
nb_extra_sval++;
vpushi(0);
vtop->r = r;
}
}
src/tcc-doc.texi view on Meta::CPAN
@item For architectures where arguments are evaluated in
reverse order, a first pass is done to reverse the argument order.
@end itemize
@section Types
The types are stored in a single 'int' variable. It was chosen in the
first stages of development when tcc was much simpler. Now, it may not
be the best solution.
@example
#define VT_INT 0 /* integer type */
#define VT_BYTE 1 /* signed byte type */
#define VT_SHORT 2 /* short type */
#define VT_VOID 3 /* void type */
#define VT_PTR 4 /* pointer */
#define VT_ENUM 5 /* enum definition */
#define VT_FUNC 6 /* function type */
#define VT_STRUCT 7 /* struct/union definition */
src/tccgen.c view on Meta::CPAN
/* find an identifier */
ST_INLN Sym *sym_find(int v)
{
/* #ifdef CONFIG_TCC_EXSYMTAB */
int is_extended = v & SYM_EXTENDED;
v &= ~SYM_EXTENDED;
/* #endif */
v -= TOK_IDENT;
/* Does not exist in our table! The best we can do is return null. XXX Maybe
* should warn if this happens with an extended symbol, since that would be
* a sign of an inconsistent internal state. */
if ((unsigned)v >= (unsigned)(tok_ident - TOK_IDENT))
return NULL;
/* #ifdef CONFIG_TCC_EXSYMTAB */
/* If this is an extended symbol table reference, then we need to make sure
* that the extended symbol reference callback gets fired, but only once.
* We'll modify the TokenSym's tok field and remove the flag if the callback
* has been fired, so check if the TokenSym's tok field has the flag.
( run in 0.786 second using v1.01-cache-2.11-cpan-4e96b696675 )