0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-10-10 00:25:06 -04:00
Files
nasm/asm/assemble.h
H. Peter Anvin 23ce05f906 treewide: replace verbose copyright headers with SPDX tags
SPDX is an international standard for documenting software license
requirements. Remove the existing headers and replace with a brief
SPDX preamble.

See: https://spdx.dev/use/specifications/

The script used to convert the files is added to "tools", and the
file header templates in headers/ are updated.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2025-10-01 11:45:31 -07:00

56 lines
1.4 KiB
C

/* SPDX-License-Identifier: BSD-2-Clause */
/* Copyright 1996-2025 The NASM Authors - All Rights Reserved */
/*
* assemble.h - header file for stuff private to the assembler
*/
#ifndef NASM_ASSEMBLE_H
#define NASM_ASSEMBLE_H
#include "nasm.h"
#include "iflag.h"
#include "asmutil.h"
extern iflag_t cpu, cmd_cpu;
void set_cpu(const char *cpuspec);
extern bool in_absolute; /* Are we in an absolute segment? */
extern struct location absolute;
int64_t increment_offset(int64_t delta);
void process_insn(insn *instruction);
bool directive_valid(const char *);
bool process_directives(char *);
void process_pragma(char *);
/* Is this a compile-time absolute constant? */
static inline bool op_compile_abs(const struct operand * const op)
{
if (op->opflags & OPFLAG_UNKNOWN)
return true; /* Be optimistic in pass 1 */
if (op->opflags & OPFLAG_RELATIVE)
return false;
if (op->wrt != NO_SEG)
return false;
return op->segment == NO_SEG;
}
/* Is this a compile-time relative constant? */
static inline bool op_compile_rel(const insn * const ins,
const struct operand * const op)
{
if (op->opflags & OPFLAG_UNKNOWN)
return true; /* Be optimistic in pass 1 */
if (!(op->opflags & OPFLAG_RELATIVE))
return false;
if (op->wrt != NO_SEG) /* Is this correct?! */
return false;
return op->segment == ins->loc.segment;
}
#endif