summaryrefslogtreecommitdiff
path: root/tools/libdol2asm/data/function/small_asm.py
blob: f45d0c3b91f0627710ab64aff388ee77b29227c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

from dataclasses import dataclass, field
from typing import List

from ...builder import AsyncBuilder
from .base import *

@dataclass(eq=False)
class SmallASMFunction(Function):
    asm: bool = True
    insts: List[str] = field(default_factory=list)

    async def export_function_body(self, exporter, builder: AsyncBuilder):
        await builder.write(f" {{")
        await builder.write(f"\t// clang-format off")
        await builder.write(f"\tnofralloc")
        for inst in self.insts:
            await builder.write(f"\t{inst}")
        await builder.write(f"\t// clang-format on")
        await builder.write(f"}}")