![]()  | 
  
    GNU PROLOG with UTF8 support
    
   | 
 
#include <stdio.h>#include <string.h>#include <stdarg.h>
Macros | |
| #define | STRING_PREFIX ".LC" | 
| #define | UN | 
| #define | OK_FOR_SIMM13(x) ((unsigned) ((x) + 4096) < 8192) | 
| #define | MK_IMM22(x) (((x) >> 10) & 0x3fffff) | 
| #define | MK_SIMM10_13(x, want10) ((x) & ((want10) ? 0x3ff : 0x1fff)) | 
| #define | MAX_ARGS_IN_REGS 6 | 
| #define | BEFORE_ARG | 
| #define | STACK_BIAS 2047 | 
| #define | STACK_OFFSET(offset) (STACK_BIAS + 176 + ((offset) - MAX_ARGS_IN_REGS) * 8) | 
| #define | AFTER_ARG | 
| #define | MAX_FP_ARGS_IN_REGS 16 | 
| #define | BEFORE_FP_ARG | 
| #define | AFTER_FP_ARG | 
Functions | |
| void | Delay_Printf (char *op, char *operands,...) | 
| int | Delay_Flush (void) | 
| void | Source_Line (int line_no, char *cmt) | 
| void | Asm_Start (void) | 
| void | Asm_Stop (void) | 
| void | Code_Start (char *label, int prolog, int global) | 
| void | Code_Stop (void) | 
| void | Label (char *label) | 
| void | Ensure_PIC_Helper (void) | 
| void | Reload_E_In_Register (void) | 
| void | Synthetize_Setx (long value, char *tmpreg, char *dstreg) | 
| void | Load_Long_Into_Reg (PlLong x, char *reg) | 
| void | Load_Mem_Into_Reg (char *mem_base_reg, int displ, int adr_of, char *reg) | 
| void | Store_Reg_Into_Mem (char *reg, char *mem_base_reg, int displ) | 
| void | Pl_Jump (char *label) | 
| void | Prep_CP (void) | 
| void | Here_CP (void) | 
| void | Pl_Call (char *label) | 
| void | Pl_Fail (void) | 
| void | Pl_Ret (void) | 
| void | Jump (char *label) | 
| void | Move_From_Reg_X (int index) | 
| void | Move_From_Reg_Y (int index) | 
| void | Move_To_Reg_X (int index) | 
| void | Move_To_Reg_Y (int index) | 
| void | Call_C_Start (char *fct_name, int fc, int nb_args, int nb_args_in_words, char **p_inline) | 
| int | Call_C_Arg_Int (int offset, PlLong int_val) | 
| int | Call_C_Arg_Double (int offset, double dbl_val) | 
| void | Load_Mem_Base_Into_Reg (char *label, int displ, char *reg) | 
| int | Call_C_Arg_String (int offset, int str_no) | 
| int | Call_C_Arg_Mem_L (int offset, int adr_of, char *name, int index) | 
| int | Call_C_Arg_Reg_X (int offset, int adr_of, int index) | 
| int | Call_C_Arg_Reg_Y (int offset, int adr_of, int index) | 
| int | Call_C_Arg_Foreign_L (int offset, int adr_of, int index) | 
| int | Call_C_Arg_Foreign_D (int offset, int adr_of, int index) | 
| void | Call_C_Invoke (char *fct_name, int fc, int nb_args, int nb_args_in_words) | 
| void | Call_C_Stop (char *fct_name, int nb_args, char **p_inline) | 
| void | Jump_Ret (void) | 
| void | Fail_Ret (void) | 
| void | Move_Ret_To_Mem_L (char *name, int index) | 
| void | Move_Ret_To_Reg_X (int index) | 
| void | Move_Ret_To_Reg_Y (int index) | 
| void | Move_Ret_To_Foreign_L (int index) | 
| void | Move_Ret_To_Foreign_D (int index) | 
| void | Cmp_Ret_And_Int (PlLong int_val) | 
| void | Jump_If_Equal (char *label) | 
| void | Jump_If_Greater (char *label) | 
| void | C_Ret (void) | 
| void | Dico_String_Start (int nb_consts) | 
| void | Dico_String (int str_no, char *asciiz) | 
| void | Dico_String_Stop (int nb_consts) | 
| void | Dico_Long_Start (int nb_longs) | 
| void | Dico_Long (char *name, int global, VType vtype, PlLong value) | 
| void | Dico_Long_Stop (int nb_longs) | 
| void | Data_Start (char *initializer_fct) | 
| void | Data_Stop (char *initializer_fct) | 
Variables | |
| char | asm_reg_bank [20] | 
| char | asm_reg_e [20] | 
| char | asm_reg_b [20] | 
| char | asm_reg_cp [20] | 
| int | w_label = 0 | 
| char | cur_fct_label [1024] | 
| int | pic_helper_ready = 0 | 
| char | buff [1024] | 
| int | delay_active = 0 | 
| char * | delay_op = NULL | 
| char | delay_operands [1024] | 
| int | can_produce_pic_code = 1 | 
| char * | comment_prefix = "!" | 
| char * | local_symb_prefix = "L" | 
| int | strings_need_null = 1 | 
| int | call_c_reverse_args = 0 | 
| char * | inline_asm_data [] = { NULL } | 
| #define AFTER_ARG | 
| #define AFTER_FP_ARG | 
| #define BEFORE_ARG | 
| #define BEFORE_FP_ARG | 
| #define MAX_ARGS_IN_REGS 6 | 
| #define MAX_FP_ARGS_IN_REGS 16 | 
| #define STACK_BIAS 2047 | 
| #define STACK_OFFSET | ( | offset | ) | (STACK_BIAS + 176 + ((offset) - MAX_ARGS_IN_REGS) * 8) | 
| #define STRING_PREFIX ".LC" | 
| #define UN | 
| void Asm_Start | ( | void | ) | 

| void Asm_Stop | ( | void | ) | 

| void C_Ret | ( | void | ) | 

| int Call_C_Arg_Double | ( | int | offset, | 
| double | dbl_val | ||
| ) | 

| int Call_C_Arg_Foreign_D | ( | int | offset, | 
| int | adr_of, | ||
| int | index | ||
| ) | 

| int Call_C_Arg_Foreign_L | ( | int | offset, | 
| int | adr_of, | ||
| int | index | ||
| ) | 

| int Call_C_Arg_Int | ( | int | offset, | 
| PlLong | int_val | ||
| ) | 

| int Call_C_Arg_Mem_L | ( | int | offset, | 
| int | adr_of, | ||
| char * | name, | ||
| int | index | ||
| ) | 

| int Call_C_Arg_Reg_X | ( | int | offset, | 
| int | adr_of, | ||
| int | index | ||
| ) | 

| int Call_C_Arg_Reg_Y | ( | int | offset, | 
| int | adr_of, | ||
| int | index | ||
| ) | 

| int Call_C_Arg_String | ( | int | offset, | 
| int | str_no | ||
| ) | 

| void Call_C_Invoke | ( | char * | fct_name, | 
| int | fc, | ||
| int | nb_args, | ||
| int | nb_args_in_words | ||
| ) | 

| void Call_C_Start | ( | char * | fct_name, | 
| int | fc, | ||
| int | nb_args, | ||
| int | nb_args_in_words, | ||
| char ** | p_inline | ||
| ) | 
| void Call_C_Stop | ( | char * | fct_name, | 
| int | nb_args, | ||
| char ** | p_inline | ||
| ) | 
| void Cmp_Ret_And_Int | ( | PlLong | int_val | ) | 

| void Code_Start | ( | char * | label, | 
| int | prolog, | ||
| int | global | ||
| ) | 

| void Code_Stop | ( | void | ) | 

| void Data_Start | ( | char * | initializer_fct | ) | 

| void Data_Stop | ( | char * | initializer_fct | ) | 
| int Delay_Flush | ( | void | ) | 


| void Delay_Printf | ( | char * | op, | 
| char * | operands, | ||
| ... | |||
| ) | 



| void Dico_Long_Start | ( | int | nb_longs | ) | 

| void Dico_Long_Stop | ( | int | nb_longs | ) | 
| void Dico_String | ( | int | str_no, | 
| char * | asciiz | ||
| ) | 

| void Dico_String_Start | ( | int | nb_consts | ) | 

| void Dico_String_Stop | ( | int | nb_consts | ) | 
| void Ensure_PIC_Helper | ( | void | ) | 


| void Fail_Ret | ( | void | ) | 

| void Here_CP | ( | void | ) | 

| void Jump | ( | char * | label | ) | 

| void Jump_If_Equal | ( | char * | label | ) | 

| void Jump_If_Greater | ( | char * | label | ) | 

| void Jump_Ret | ( | void | ) | 

| void Label | ( | char * | label | ) | 


| void Load_Long_Into_Reg | ( | PlLong | x, | 
| char * | reg | ||
| ) | 


| void Load_Mem_Base_Into_Reg | ( | char * | label, | 
| int | displ, | ||
| char * | reg | ||
| ) | 


| void Load_Mem_Into_Reg | ( | char * | mem_base_reg, | 
| int | displ, | ||
| int | adr_of, | ||
| char * | reg | ||
| ) | 


| void Move_From_Reg_X | ( | int | index | ) | 

| void Move_From_Reg_Y | ( | int | index | ) | 

| void Move_Ret_To_Foreign_D | ( | int | index | ) | 

| void Move_Ret_To_Foreign_L | ( | int | index | ) | 

| void Move_Ret_To_Mem_L | ( | char * | name, | 
| int | index | ||
| ) | 

| void Move_Ret_To_Reg_X | ( | int | index | ) | 

| void Move_Ret_To_Reg_Y | ( | int | index | ) | 

| void Move_To_Reg_X | ( | int | index | ) | 

| void Move_To_Reg_Y | ( | int | index | ) | 

| void Pl_Call | ( | char * | label | ) | 

| void Pl_Fail | ( | void | ) | 


| void Pl_Jump | ( | char * | label | ) | 

| void Pl_Ret | ( | void | ) | 

| void Prep_CP | ( | void | ) | 

| void Reload_E_In_Register | ( | void | ) | 

| void Source_Line | ( | int | line_no, | 
| char * | cmt | ||
| ) | 

| void Store_Reg_Into_Mem | ( | char * | reg, | 
| char * | mem_base_reg, | ||
| int | displ | ||
| ) | 


| void Synthetize_Setx | ( | long | value, | 
| char * | tmpreg, | ||
| char * | dstreg | ||
| ) | 


| char asm_reg_b[20] | 
| char asm_reg_bank[20] | 
| char asm_reg_cp[20] | 
| char asm_reg_e[20] | 
| char buff[1024] | 
| int call_c_reverse_args = 0 | 
| int can_produce_pic_code = 1 | 
| char* comment_prefix = "!" | 
| char cur_fct_label[1024] | 
| int delay_active = 0 | 
| char* delay_op = NULL | 
| char delay_operands[1024] | 
| char* inline_asm_data[] = { NULL } | 
| char* local_symb_prefix = "L" | 
| int pic_helper_ready = 0 | 
| int strings_need_null = 1 | 
| int w_label = 0 | 
 1.8.11