Here is a list of Z-machine opcodes that may be useful in a C or JavaScript code (or possibly other programming languages too):
// Instruction mode bits: 1=predicate 2=value 4=text 8=eight-operands
A(1,"EQUAL?",1,ZIP,YZIP);
A(2,"LESS?",1,ZIP,YZIP);
A(3,"GRTR?",1,ZIP,YZIP);
A(4,"DLESS?",1,ZIP,YZIP);
A(5,"IGRTR?",1,ZIP,YZIP);
A(6,"IN?",1,ZIP,YZIP);
A(7,"BTST",1,ZIP,YZIP);
A(8,"BOR",2,ZIP,YZIP);
A(9,"BAND",2,ZIP,YZIP);
A(10,"FSET?",1,ZIP,YZIP);
A(11,"FSET",0,ZIP,YZIP);
A(12,"FCLEAR",0,ZIP,YZIP);
A(13,"SET",0,ZIP,YZIP);
A(14,"MOVE",0,ZIP,YZIP);
A(15,"GET",2,ZIP,YZIP);
A(16,"GETB",2,ZIP,YZIP);
A(17,"GETP",2,ZIP,YZIP);
A(18,"GETPT",2,ZIP,YZIP);
A(19,"NEXTP",2,ZIP,YZIP);
A(20,"ADD",2,ZIP,YZIP);
A(21,"SUB",2,ZIP,YZIP);
A(22,"MUL",2,ZIP,YZIP);
A(23,"DIV",2,ZIP,YZIP);
A(24,"MOD",2,ZIP,YZIP);
A(25,"CALL2",2,EZIP,YZIP);
A(26,"ICALL2",0,XZIP,YZIP);
A(27,"COLOR",0,XZIP,YZIP);
A(28,"THROW",0,XZIP,YZIP);
A(128,"ZERO?",1,ZIP,YZIP);
A(129,"NEXT?",3,ZIP,YZIP);
A(130,"FIRST?",3,ZIP,YZIP);
A(131,"LOC",2,ZIP,YZIP);
A(132,"PTSIZE",2,ZIP,YZIP);
A(133,"INC",0,ZIP,YZIP);
A(134,"DEC",0,ZIP,YZIP);
A(135,"PRINTB",0,ZIP,YZIP);
A(136,"CALL1",2,EZIP,YZIP);
A(137,"REMOVE",0,ZIP,YZIP);
A(138,"PRINTD",0,ZIP,YZIP);
A(139,"RETURN",0,ZIP,YZIP);
A(140,"JUMP",0,ZIP,YZIP);
A(141,"PRINT",0,ZIP,YZIP);
A(142,"VALUE",2,ZIP,YZIP);
A(143,"BCOM",2,ZIP,EZIP); A(143,"ICALL1",1,XZIP,YZIP);
A(176,"RTRUE",0,ZIP,YZIP);
A(177,"RFALSE",0,ZIP,YZIP);
A(178,"PRINTI",4,ZIP,YZIP);
A(179,"PRINTR",4,ZIP,YZIP);
A(180,"NOOP",0,ZIP,YZIP);
A(181,"SAVE",1,ZIP,ZIP); A(181,"SAVE",2,EZIP,EZIP);
A(182,"RESTORE",1,ZIP,ZIP); A(182,"RESTORE",2,EZIP,EZIP);
A(183,"RESTART",0,ZIP,YZIP);
A(184,"RSTACK",0,ZIP,YZIP);
A(185,"FSTACK",0,ZIP,EZIP); A(185,"CATCH",2,XZIP,YZIP);
A(186,"QUIT",0,ZIP,YZIP);
A(187,"CRLF",0,ZIP,YZIP);
A(188,"USL",0,ZIP,ZIP);
A(189,"VERIFY",1,ZIP,YZIP);
A(191,"ORIGINAL?",1,XZIP,YZIP);
A(224,"CALL",2,ZIP,YZIP);
A(225,"PUT",0,ZIP,YZIP);
A(226,"PUTB",0,ZIP,YZIP);
A(227,"PUTP",0,ZIP,YZIP);
A(228,"READ",0,ZIP,EZIP); A(228,"READ",2,XZIP,YZIP);
A(229,"PRINTC",0,ZIP,YZIP);
A(230,"PRINTN",0,ZIP,YZIP);
A(231,"RANDOM",2,ZIP,YZIP);
A(232,"PUSH",0,ZIP,YZIP);
A(233,"POP",0,ZIP,XZIP); A(233,"POP",2,YZIP,YZIP);
A(234,"SPLIT",0,ZIP,YZIP);
A(235,"SCREEN",0,ZIP,YZIP);
A(236,"XCALL",10,EZIP,YZIP);
A(237,"CLEAR",0,EZIP,YZIP);
A(238,"ERASE",0,EZIP,YZIP);
A(239,"CURSET",0,EZIP,YZIP);
A(240,"CURGET",0,EZIP,YZIP);
A(241,"HLIGHT",0,EZIP,YZIP);
A(242,"BUFOUT",0,EZIP,YZIP);
A(243,"DIROUT",0,EZIP,YZIP);
A(244,"DIRIN",0,EZIP,YZIP);
A(245,"SOUND",0,EZIP,YZIP);
A(246,"INPUT",2,EZIP,YZIP);
A(247,"INTBL?",3,EZIP,YZIP);
A(248,"BCOM",2,XZIP,YZIP);
A(249,"ICALL",0,XZIP,YZIP);
A(250,"IXCALL",8,XZIP,YZIP);
A(251,"LEX",0,XZIP,YZIP);
A(252,"ZWSTR",0,XZIP,YZIP);
A(253,"COPYT",0,XZIP,YZIP);
A(254,"PRINTT",0,XZIP,YZIP);
A(255,"ASSIGNED?",1,XZIP,YZIP);
A(256,"SAVE",2,XZIP,YZIP);
A(257,"RESTORE",2,XZIP,YZIP);
A(258,"SHIFT",2,XZIP,YZIP);
A(259,"ASHIFT",2,XZIP,YZIP);
A(260,"FONT",2,XZIP,YZIP);
A(261,"DISPLAY",0,XZIP,YZIP);
A(262,"PICINF",1,XZIP,YZIP);
A(263,"DCLEAR",0,XZIP,YZIP);
A(264,"MARGIN",0,XZIP,YZIP);
A(265,"ISAVE",2,XZIP,YZIP);
A(266,"IRESTORE",2,XZIP,YZIP);
A(272,"WINPOS",0,YZIP,YZIP);
A(273,"WINSIZE",0,YZIP,YZIP);
A(274,"WINATTR",0,YZIP,YZIP);
A(275,"WINGET",2,YZIP,YZIP);
A(276,"SCROLL",0,YZIP,YZIP);
A(277,"FSTACK",0,YZIP,YZIP);
A(278,"MOUSE-INFO",0,YZIP,YZIP);
A(279,"MOUSE-LIMIT",0,YZIP,YZIP);
A(280,"XPUSH",1,YZIP,YZIP);
A(281,"WINPUT",0,YZIP,YZIP);
A(282,"PRINTF",0,YZIP,YZIP);
A(283,"MENU",1,YZIP,YZIP);
A(284,"PICSET",0,YZIP,YZIP);
I was using this and posted it here in case anyone finds it useful. ZIP, EZIP, XZIP, and YZIP are constants (with values 3 to 6), while you will then define the function A that fills in the table (or you can use search/replace to give it a different name). (Another alternative use is to use it as a JavaScript code that generates a C code.) If it contains errors, you can mention it on here. I agree to release this data as public domain.