Annotation of nono/exp/optestxp/optestxp_subr.cpp, revision 1.1

1.1     ! root        1: //
        !             2: // nono
        !             3: // Copyright (C) 2023 nono project
        !             4: // Licensed under nono-license.txt
        !             5: //
        !             6: 
        !             7: //
        !             8: // テストコード生成の共通サブルーチン
        !             9: //
        !            10: 
        !            11: #include "optestxp_subr.h"
        !            12: #include "mystring.h"
        !            13: 
        !            14: const char *testname;
        !            15: int testpos;
        !            16: std::vector<std::string> testlist;
        !            17: 
        !            18: // gentest の最初で行うことまとめ。
        !            19: void
        !            20: init(const char *testname_, const char *method)
        !            21: {
        !            22:        testname = testname_;
        !            23:        testlist.push_back(testname);
        !            24: 
        !            25:        out("test_%s:\n", testname);
        !            26:        out("   LD      HL,testset_%s\n", testname);
        !            27:        out("   JP      %s\n", method);
        !            28: 
        !            29:        testpos = 0;
        !            30: }
        !            31: 
        !            32: // テストセットのテーブルを出力。
        !            33: void
        !            34: out_testset()
        !            35: {
        !            36:        out("testset_%s:\n", testname);
        !            37:        out("   defw    testname_%s\n", testname);
        !            38:        out("   defw    testexec_%s\n", testname);
        !            39:        out("   defw    testdata_%s\n", testname);
        !            40:        out("   defb    %d\n", (strcmp(testname, "daa") == 0) ? 1 : 0);
        !            41: 
        !            42:        out("testname_%s:\n", testname);
        !            43:        std::string upper = string_toupper(testname);
        !            44:        out("   defm    \"%s $\"\n", upper.c_str());
        !            45:        out("\n");
        !            46: }
        !            47: 
        !            48: // testrun1 テスト用のデータテーブルを出力。
        !            49: void
        !            50: out_testdata_run1(uint32 dst, const hd64180flag& inflag,
        !            51:        uint32 res, const hd64180flag& flag)
        !            52: {
        !            53:        if (testpos == 0) {
        !            54:                out("testdata_%s:\n", testname);
        !            55:        }
        !            56:        out("   defb    0%02xH,0%02xH,0%02xH,0%02xH     ; %s_%02x\n",
        !            57:                dst, inflag.Get(), res, flag.Get(), testname, testpos);
        !            58:        testpos++;
        !            59: }
        !            60: 
        !            61: // testrun2 テスト用のデータテーブルを出力。
        !            62: void
        !            63: out_testdata_run2(uint32 dst, const hd64180flag& inflag, uint32 src,
        !            64:        uint32 res, const hd64180flag& flag)
        !            65: {
        !            66:        if (testpos == 0) {
        !            67:                out("testdata_%s:\n", testname);
        !            68:        }
        !            69:        out("   defb    0%02xH,0%02xH,0%02xH,0%02xH,0%02xH      ; %s_%02x\n",
        !            70:                dst, inflag.Get(), src, res, flag.Get(), testname, testpos);
        !            71:        testpos++;
        !            72: }
        !            73: 
        !            74: void
        !            75: out(const char *fmt, ...)
        !            76: {
        !            77:        va_list ap;
        !            78: 
        !            79:        va_start(ap, fmt);
        !            80:        vprintf(fmt, ap);
        !            81:        va_end(ap);
        !            82: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.