blob: 39dd0fa6a9a49a81ecaed02e3285e2d8c6187b47 [file] [log] [blame]
Austin Schuh208337d2022-01-01 14:29:11 -08001/*
2 * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include "output_format.h"
8#include <iostream>
9
10struct hex_output : public output_format {
11 struct factory {
12 factory() {
13 output_format::add(new hex_output());
14 }
15 };
16
17 hex_output() : output_format("hex") {}
18
19 std::string get_description() {
20 return "Raw hex output (only valid for single program inputs)";
21 }
22
23 virtual int output(std::string destination, std::vector<std::string> output_options,
24 const compiled_source &source) {
25 FILE *out = open_single_output(destination);
26 if (!out) return 1;
27
28 if (source.programs.size() > 1) {
29 // todo don't have locations any more!
30 std::cerr << "error: hex output only supports a single program input\n";
31 return 1;
32 }
33 for (const auto &i : source.programs[0].instructions) {
34 fprintf(out, "%04x\n", i);
35 }
36 if (out != stdout) { fclose(out); }
37 return 0;
38 }
39};
40
41static hex_output::factory creator;