-#include "casl2.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "cerr.h"
+#include "cmem.h"
+#include "hash.h"
#include "assemble.h"
-int labelcnt = 0; /* ラベル数 */
-LABELTAB *labels[LABELTABSIZE]; /* ラベル表 */
+static int labelcnt = 0; /* ラベル数 */
+static LABELTAB *labels[LABELTABSIZE]; /* ラベル表 */
-/* プログラム名とラベルに対応するハッシュ値を返す */
+/**
+ * プログラム名とラベルに対応するハッシュ値を返す
+ */
unsigned labelhash(const char *prog, const char *label)
{
HKEY *keys[2];
return hash(i+1, keys, LABELTABSIZE);
}
-/* ラベル表からアドレスを検索する */
+/**
+ * プログラム名とラベルに対応するアドレスをラベル表から検索する
+ */
WORD getlabel(const char *prog, const char *label)
{
assert(label != NULL);
return 0xFFFF;
}
-/* プログラム名、ラベル、アドレスをラベル表に追加する */
+/**
+ * プログラム名、ラベル、アドレスをラベル表に追加する
+ */
bool addlabel(const char *prog, const char *label, WORD adr)
{
assert(label != NULL);
return true;
}
+/**
+ * ラベルを比較した結果を返す
+ */
int compare_adr(const void *a, const void *b)
{
return (**(LABELARRAY **)a).adr - (**(LABELARRAY **)b).adr;
}
-/* ラベル表を表示する */
+/**
+ * ラベル表を表示する
+ */
void printlabel()
{
int i, asize = 0;
}
}
-/* ラベル表を解放する */
+/**
+ * ラベル表を解放する
+ */
void freelabel()
{
int i;
for(np = labels[i]; np != NULL; np = nq) {
nq = np->next;
if(np->prog != NULL) {
- free(np->prog);
+ free_chk(np->prog, "np.prog");
}
- free(np->label);
- free(np);
+ free_chk(np->label, "np.label");
+ free_chk(np, "np");
}
}
}