1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
/* SPDX-License-Identifier: BSD-2-Clause */
/* Copyright 1996-2016 The NASM Authors - All Rights Reserved */
/*
* rdstrnum.c
*
* This converts a NASM string to an integer, used when a string
* is used in an integer constant context. This is a binary conversion,
* not a conversion from a numeric constant in text form.
*/
#include "compiler.h"
#include "nasmlib.h"
#include "nasm.h"
int64_t readstrnum(char *str, int length, bool *warn)
{
int64_t charconst = 0;
int i;
*warn = false;
if (length > 8) {
*warn = true;
length = 8;
}
for (i = 0; i < length; i++)
charconst += (uint64_t)((uint8_t)(*str++)) << (i*8);
return charconst;
}
|