In einer Funktion wird S4 **pcclist definert das ist:
long int **pcclist;

Zugreifen auf die einzelnen Elemente kann ich mit a = pcclist[x][y]

Jetzt möchte ich einen Zeiger auf pcclist an eine Funktion übergeben.
Nur wie mache ich das?

In pcclist sind die Befehle meiner VM gespeichert und das Array möchte ich an den JIT Compiler übergeben. Das Programm stürzt an der Stelle wo es den Opcode ausgeben soll ab.

Aufruf mit:
Code:
jit_compiler (&pcclist, &vmreg, ARG1, ARG2);
Der JIT Compiler:

Code:
#include "global_d.h"

#include <AsmJit.h>

// This is type of function we will generate
typedef S8 (*MyFn)();

extern "C" void jit_compiler (S4 **clist, struct vmreg *vmreg, S4 start, S4 end)
{
	using namespace AsmJit;

// ==========================================================================

	S4 i;
	S8 r1, r2, r3;
	S8 r1v, r2v, r3v;
	
	printf ("JIT - START\n");
	printf ("start: %li\n", start);
	printf ("end: %li\n", end);
	
	for (i = start; i <= end; i++)
	{
		printf ("opcode: %li\n", clist[i][0]);		/* crash */
		
		switch (clist[i][0])
		{
			case ADD_L:
				printf ("ADD_L\n");
				r1 = clist[i][1]; r2 = clist[i][2]; r3 = clist[i][3];
				
				r1v = vmreg->l[r1];
				r2v = vmreg->l[r2];
				
				printf ("r1v: %lli, r1v: %lli\n", r1v, r2v);
				
// Create assembler.
				Assembler a;
	
// Log assembler output.
				FileLogger logger(stderr);
				a.setLogger(&logger);
// Prolog.
				
				a.push (nbp);
				a.mov (nbp, nsp);
				
				a.mov (rax, r1v); /* r1v */
				a.mov (rbx, r2v); /* r2v */
				
				a.add (rax, rbx);
				a.mov (nax, rax);
				
// Epilog.
				a.mov (nsp, nbp);
				a.pop (nbp);
				a.ret ();
				
				MyFn fn = function_cast<MyFn>(a.make());
				
				vmreg->l[r3] = fn ();
				
				MemoryManager::getGlobal()->free((void*)fn);
				break;
		}
	}
}
Wie übergebe ich die Adresse von pcclist richtig?