#include #include #include "assemble.h" Label_Node *create_label_list() { Label_Node *head; head = (Label_Node *) malloc (sizeof(Label_Node)); head->next = NULL; return head; } Command_Node *create_mnemonic_list() { Command_Node *head; head = (Command_Node *) malloc (sizeof(Command_Node)); head->next = NULL; return head; } void add_label_element (Label_Node *node, char name [20], long value) { Label_Node *curr; curr = node; while (curr->next != NULL) curr = curr->next; strcpy(curr->name, name); curr->value = value; curr->next = (Label_Node *) malloc (sizeof(Label_Node)); curr = curr->next; curr->next = NULL; } void add_mnemonic_element (Command_Node *node, char name [4], unsigned char *mode) { Command_Node *curr; curr = node; while (curr->next != NULL) curr = curr->next; strcpy(curr->name, name); strcpy((char*) curr->modes, (char*) mode); curr->next = (Command_Node *) malloc (sizeof(Command_Node)); curr = curr->next; curr->next = NULL; } long find_label_element (Label_Node *node, char name[20]) { Label_Node *curr; curr = node; while (curr->next != NULL) { if (strcmp(curr->name, name) == 0) return curr->value; else curr = curr->next; } return 0x666666; } unsigned char *find_mnemonic_element (Command_Node *node, char name[4]) { Command_Node *curr; curr = node; while (curr->next != NULL) { if (strcmp(curr->name, name) == 0) return curr->modes; else curr = curr->next; } return NULL; }