git: 9front

Download patch

ref: d0bcc1dd9045ecb95037b2b6f0e3baf185c1dcf8
parent: 96a32a089394d1b756e3198423f28f2452fe2cdf
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Sat Sep 8 13:48:09 EDT 2012

libaml: implement Alias and Debug instructions

--- a/sys/src/libaml/aml.c
+++ b/sys/src/libaml/aml.c
@@ -155,9 +155,9 @@
 static Heap *hp;
 
 enum {
-	Obad, Onop,
+	Obad, Onop, Odebug,
 	Ostr, Obyte, Oword, Odword, Oqword, Oconst,
-	Onamec, Oname, Oscope,
+	Onamec, Oname, Oscope, Oalias,
 	Oreg, Ofld, Oxfld, Opkg, Ovpkg, Oenv, Obuf, Omet, 
 	Odev, Ocpu, Othz, Oprc,
 	Oadd, Osub, Omod, Omul, Odiv, Oshl, Oshr, Oand, Onand, Oor,
@@ -1068,6 +1068,15 @@
 }
 
 static void*
+evalalias(void){
+	Name *n;
+
+	if(n = FP->arg[1])
+		n->v = FP->arg[0];
+	return nil;
+}
+
+static void*
 evalmet(void){
 	Name *n;
 	if(n = FP->arg[0]){
@@ -1527,6 +1536,7 @@
 static Op optab[] = {
 	[Obad]		"",			"",		evalbad,
 	[Onop]		"Noop",			"",		evalnop,
+	[Odebug]	"Debug",		"",		evalnop,
 
 	[Ostr]		".str",			"s",		evaliarg0,
 	[Obyte]		".byte",		"1",		evaliarg0,
@@ -1539,6 +1549,7 @@
 
 	[Oname]		"Name",			"N*",		evalname,
 	[Oscope]	"Scope",		"{n}",		evalscope,
+	[Oalias]	"Alias",		"nN",		evalalias,
 
 	[Odev]		"Device",		"{N}",		evalscope,
 	[Ocpu]		"Processor",		"{N141}",	evalscope,
@@ -1608,7 +1619,7 @@
 };
 
 static uchar octab1[] = {
-/* 00 */	Oconst,	Oconst,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,
+/* 00 */	Oconst,	Oconst,	Obad,	Obad,	Obad,	Obad,	Oalias,	Obad,
 /* 08 */	Oname,	Obad,	Obyte,	Oword,	Odword,	Ostr,	Oqword,	Obad,
 /* 10 */	Oscope,	Obuf,	Opkg,	Ovpkg,	Omet,	Obad,	Obad,	Obad,
 /* 18 */	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,
@@ -1649,7 +1660,7 @@
 /* 18 */	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,
 /* 20 */	Obad,	Obad,	Obad,	Oacq,	Obad,	Obad,	Obad,	Orel,
 /* 28 */	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,
-/* 30 */	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,
+/* 30 */	Obad,	Odebug,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,
 /* 38 */	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,
 /* 40 */	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,
 /* 48 */	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,	Obad,
--