mini-llvm 0.1.0
Loading...
Searching...
No Matches
RISCVAddressDirective.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <cstdint>
6#include <format>
7#include <string>
8#include <utility>
9
11#include "mini-llvm/mc/Symbol.h"
13
14namespace mini_llvm::mc {
15
16class RISCVAddressDirective final : public Directive {
17public:
19 : addr_(std::move(addr)) {}
20
21 explicit RISCVAddressDirective(Symbol baseSymbol)
22 : addr_(std::move(baseSymbol)) {}
23
24 RISCVAddressDirective(Symbol baseSymbol, int64_t offset)
25 : addr_(std::move(baseSymbol), offset) {}
26
27 const RISCVAddress &addr() const & {
28 return addr_;
29 }
30
32 return std::move(addr_);
33 }
34
36 addr_ = std::move(addr);
37 }
38
39 std::string format() const override {
40 return std::format(".dword {}", addr());
41 }
42
43private:
44 RISCVAddress addr_;
45};
46
47} // namespace mini_llvm::mc
Definition Directive.h:10
RISCVAddressDirective(RISCVAddress addr)
Definition RISCVAddressDirective.h:18
RISCVAddressDirective(Symbol baseSymbol)
Definition RISCVAddressDirective.h:21
const RISCVAddress & addr() const &
Definition RISCVAddressDirective.h:27
void setAddr(RISCVAddress addr)
Definition RISCVAddressDirective.h:35
std::string format() const override
Definition RISCVAddressDirective.h:39
RISCVAddress && addr() &&
Definition RISCVAddressDirective.h:31
RISCVAddressDirective(Symbol baseSymbol, int64_t offset)
Definition RISCVAddressDirective.h:24
Definition RISCVAddress.h:18
Definition Symbol.h:16
Definition Directive.h:8