mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-07-06 01:10:23 +00:00
Remove all _SHR
& _SHL
changes
This commit is contained in:
parent
5812433b9d
commit
f99eb27717
|
@ -1196,23 +1196,10 @@ inline uint64_t func__ror64(uint64_t value, unsigned int count) {
|
||||||
}
|
}
|
||||||
// a740g: ROR & ROL additions end
|
// a740g: ROR & ROL additions end
|
||||||
|
|
||||||
// a740g: SHL & SHR fixes start
|
// bit-shifting
|
||||||
inline uint8_t func__shl8(uint8_t value, unsigned int count) { return value << count; }
|
inline uint64 func__shl(uint64 a1, int b1) { return a1 << b1; }
|
||||||
|
|
||||||
inline uint8_t func__shr8(uint8_t value, unsigned int count) { return value >> count; }
|
inline uint64 func__shr(uint64 a1, int b1) { return a1 >> b1; }
|
||||||
|
|
||||||
inline uint16_t func__shl16(uint16_t value, unsigned int count) { return value << count; }
|
|
||||||
|
|
||||||
inline uint16_t func__shr16(uint16_t value, unsigned int count) { return value >> count; }
|
|
||||||
|
|
||||||
inline uint32_t func__shl32(uint32_t value, unsigned int count) { return value << count; }
|
|
||||||
|
|
||||||
inline uint32_t func__shr32(uint32_t value, unsigned int count) { return value >> count; }
|
|
||||||
|
|
||||||
inline uint64_t func__shl64(uint64_t value, unsigned int count) { return value << count; }
|
|
||||||
|
|
||||||
inline uint64_t func__shr64(uint64_t value, unsigned int count) { return value >> count; }
|
|
||||||
// a740g: SHL & SHR fixes end
|
|
||||||
|
|
||||||
inline int64 func__readbit(uint64 a1, int b1) {
|
inline int64 func__readbit(uint64 a1, int b1) {
|
||||||
if (a1 & 1ull << b1)
|
if (a1 & 1ull << b1)
|
||||||
|
|
|
@ -16384,8 +16384,9 @@ FUNCTION evaluatefunc$ (a2$, args AS LONG, typ AS LONG)
|
||||||
IF Error_Happened THEN EXIT FUNCTION
|
IF Error_Happened THEN EXIT FUNCTION
|
||||||
'------------------------------------------------------------------------------------------------------------
|
'------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
' a740g: ROR support
|
' a740g: ROR & ROL support
|
||||||
IF n$ = "_ROR" OR (n$ = "ROR" AND qb64prefix_set = 1) THEN
|
IF n$ = "_ROR" OR (n$ = "ROR" AND qb64prefix_set = 1) OR n$ = "_ROL" OR (n$ = "ROL" AND qb64prefix_set = 1) THEN
|
||||||
|
rotlr_n$ = LCASE$(RIGHT$(n$, 3)) ' Get the last 3 characters and convert to lower case. We'll need this to construct the C call
|
||||||
IF curarg = 1 THEN ' First paramater
|
IF curarg = 1 THEN ' First paramater
|
||||||
IF (sourcetyp AND ISSTRING) OR (sourcetyp AND ISFLOAT) OR (sourcetyp AND ISOFFSET) OR (sourcetyp AND ISUDT) THEN ' Bad parameters types
|
IF (sourcetyp AND ISSTRING) OR (sourcetyp AND ISFLOAT) OR (sourcetyp AND ISOFFSET) OR (sourcetyp AND ISUDT) THEN ' Bad parameters types
|
||||||
Give_Error "Expected non-floating-point value"
|
Give_Error "Expected non-floating-point value"
|
||||||
|
@ -16393,18 +16394,18 @@ FUNCTION evaluatefunc$ (a2$, args AS LONG, typ AS LONG)
|
||||||
END IF
|
END IF
|
||||||
IF sourcetyp AND ISREFERENCE THEN e$ = refer(e$, sourcetyp, 0) ' This gets the C-style dereferencing syntax for an identifier (I think XD)
|
IF sourcetyp AND ISREFERENCE THEN e$ = refer(e$, sourcetyp, 0) ' This gets the C-style dereferencing syntax for an identifier (I think XD)
|
||||||
IF Error_Happened THEN EXIT FUNCTION
|
IF Error_Happened THEN EXIT FUNCTION
|
||||||
'establish which function (if any!) should be used
|
' Establish which function (if any!) should be used
|
||||||
IF (sourcetyp AND 511) = 8 THEN ' sourcetyp is the type of data (bits can be examined to get more details)
|
IF (sourcetyp AND 511) = 8 THEN ' sourcetyp is the type of data (bits can be examined to get more details)
|
||||||
e$ = "func__ror8(" + e$
|
e$ = "func__" + rotlr_n$ + "8(" + e$
|
||||||
typ& = UBYTETYPE - ISPOINTER ' We force the return type here. This passed back up to the caller
|
typ& = UBYTETYPE - ISPOINTER ' We force the return type here. This passed back up to the caller
|
||||||
ELSEIF (sourcetyp AND 511) = 16 THEN
|
ELSEIF (sourcetyp AND 511) = 16 THEN
|
||||||
e$ = "func__ror16(" + e$
|
e$ = "func__" + rotlr_n$ + "16(" + e$
|
||||||
typ& = UINTEGERTYPE - ISPOINTER
|
typ& = UINTEGERTYPE - ISPOINTER
|
||||||
ELSEIF (sourcetyp AND 511) = 32 THEN
|
ELSEIF (sourcetyp AND 511) = 32 THEN
|
||||||
e$ = "func__ror32(" + e$
|
e$ = "func__" + rotlr_n$ + "32(" + e$
|
||||||
typ& = ULONGTYPE - ISPOINTER
|
typ& = ULONGTYPE - ISPOINTER
|
||||||
ELSEIF (sourcetyp AND 511) = 64 THEN
|
ELSEIF (sourcetyp AND 511) = 64 THEN
|
||||||
e$ = "func__ror64(" + e$
|
e$ = "func__" + rotlr_n$ + "64(" + e$
|
||||||
typ& = UINTEGER64TYPE - ISPOINTER
|
typ& = UINTEGER64TYPE - ISPOINTER
|
||||||
ELSE
|
ELSE
|
||||||
Give_Error "Unknown data size"
|
Give_Error "Unknown data size"
|
||||||
|
@ -16421,117 +16422,6 @@ FUNCTION evaluatefunc$ (a2$, args AS LONG, typ AS LONG)
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
' a740g: ROL support
|
|
||||||
IF n$ = "_ROL" OR (n$ = "ROL" AND qb64prefix_set = 1) THEN
|
|
||||||
IF curarg = 1 THEN
|
|
||||||
IF (sourcetyp AND ISSTRING) OR (sourcetyp AND ISFLOAT) OR (sourcetyp AND ISOFFSET) OR (sourcetyp AND ISUDT) THEN
|
|
||||||
Give_Error "Expected non-floating-point value"
|
|
||||||
EXIT FUNCTION
|
|
||||||
END IF
|
|
||||||
IF sourcetyp AND ISREFERENCE THEN e$ = refer(e$, sourcetyp, 0)
|
|
||||||
IF Error_Happened THEN EXIT FUNCTION
|
|
||||||
'establish which function (if any!) should be used
|
|
||||||
IF (sourcetyp AND 511) = 8 THEN
|
|
||||||
e$ = "func__rol8(" + e$
|
|
||||||
typ& = UBYTETYPE - ISPOINTER
|
|
||||||
ELSEIF (sourcetyp AND 511) = 16 THEN
|
|
||||||
e$ = "func__rol16(" + e$
|
|
||||||
typ& = UINTEGERTYPE - ISPOINTER
|
|
||||||
ELSEIF (sourcetyp AND 511) = 32 THEN
|
|
||||||
e$ = "func__rol32(" + e$
|
|
||||||
typ& = ULONGTYPE - ISPOINTER
|
|
||||||
ELSEIF (sourcetyp AND 511) = 64 THEN
|
|
||||||
e$ = "func__rol64(" + e$
|
|
||||||
typ& = UINTEGER64TYPE - ISPOINTER
|
|
||||||
ELSE
|
|
||||||
Give_Error "Unknown data size"
|
|
||||||
EXIT FUNCTION
|
|
||||||
END IF
|
|
||||||
r$ = e$
|
|
||||||
e$ = ""
|
|
||||||
GOTO dontevaluate
|
|
||||||
ELSEIF curarg = 2 THEN
|
|
||||||
IF sourcetyp AND ISREFERENCE THEN e$ = refer(e$, sourcetyp, 0)
|
|
||||||
IF Error_Happened THEN EXIT FUNCTION
|
|
||||||
r$ = r$ + e$ + ")"
|
|
||||||
GOTO evalfuncspecial
|
|
||||||
END IF
|
|
||||||
END IF
|
|
||||||
|
|
||||||
' a740g: SHR support
|
|
||||||
IF n$ = "_SHR" OR (n$ = "SHR" AND qb64prefix_set = 1) THEN
|
|
||||||
IF curarg = 1 THEN
|
|
||||||
IF (sourcetyp AND ISSTRING) OR (sourcetyp AND ISFLOAT) OR (sourcetyp AND ISOFFSET) OR (sourcetyp AND ISUDT) THEN
|
|
||||||
Give_Error "Expected non-floating-point value"
|
|
||||||
EXIT FUNCTION
|
|
||||||
END IF
|
|
||||||
IF sourcetyp AND ISREFERENCE THEN e$ = refer(e$, sourcetyp, 0)
|
|
||||||
IF Error_Happened THEN EXIT FUNCTION
|
|
||||||
'establish which function (if any!) should be used
|
|
||||||
IF (sourcetyp AND 511) = 8 THEN
|
|
||||||
e$ = "func__shr8(" + e$
|
|
||||||
typ& = UBYTETYPE - ISPOINTER
|
|
||||||
ELSEIF (sourcetyp AND 511) = 16 THEN
|
|
||||||
e$ = "func__shr16(" + e$
|
|
||||||
typ& = UINTEGERTYPE - ISPOINTER
|
|
||||||
ELSEIF (sourcetyp AND 511) = 32 THEN
|
|
||||||
e$ = "func__shr32(" + e$
|
|
||||||
typ& = ULONGTYPE - ISPOINTER
|
|
||||||
ELSEIF (sourcetyp AND 511) = 64 THEN
|
|
||||||
e$ = "func__shr64(" + e$
|
|
||||||
typ& = UINTEGER64TYPE - ISPOINTER
|
|
||||||
ELSE
|
|
||||||
Give_Error "Unknown data size"
|
|
||||||
EXIT FUNCTION
|
|
||||||
END IF
|
|
||||||
r$ = e$
|
|
||||||
e$ = ""
|
|
||||||
GOTO dontevaluate
|
|
||||||
ELSEIF curarg = 2 THEN
|
|
||||||
IF sourcetyp AND ISREFERENCE THEN e$ = refer(e$, sourcetyp, 0)
|
|
||||||
IF Error_Happened THEN EXIT FUNCTION
|
|
||||||
r$ = r$ + e$ + ")"
|
|
||||||
GOTO evalfuncspecial
|
|
||||||
END IF
|
|
||||||
END IF
|
|
||||||
|
|
||||||
' a740g: SHL support
|
|
||||||
IF n$ = "_SHL" OR (n$ = "SHL" AND qb64prefix_set = 1) THEN
|
|
||||||
IF curarg = 1 THEN
|
|
||||||
IF (sourcetyp AND ISSTRING) OR (sourcetyp AND ISFLOAT) OR (sourcetyp AND ISOFFSET) OR (sourcetyp AND ISUDT) THEN
|
|
||||||
Give_Error "Expected non-floating-point value"
|
|
||||||
EXIT FUNCTION
|
|
||||||
END IF
|
|
||||||
IF sourcetyp AND ISREFERENCE THEN e$ = refer(e$, sourcetyp, 0)
|
|
||||||
IF Error_Happened THEN EXIT FUNCTION
|
|
||||||
'establish which function (if any!) should be used
|
|
||||||
IF (sourcetyp AND 511) = 8 THEN
|
|
||||||
e$ = "func__shl8(" + e$
|
|
||||||
typ& = UBYTETYPE - ISPOINTER
|
|
||||||
ELSEIF (sourcetyp AND 511) = 16 THEN
|
|
||||||
e$ = "func__shl16(" + e$
|
|
||||||
typ& = UINTEGERTYPE - ISPOINTER
|
|
||||||
ELSEIF (sourcetyp AND 511) = 32 THEN
|
|
||||||
e$ = "func__shl32(" + e$
|
|
||||||
typ& = ULONGTYPE - ISPOINTER
|
|
||||||
ELSEIF (sourcetyp AND 511) = 64 THEN
|
|
||||||
e$ = "func__shl64(" + e$
|
|
||||||
typ& = UINTEGER64TYPE - ISPOINTER
|
|
||||||
ELSE
|
|
||||||
Give_Error "Unknown data size"
|
|
||||||
EXIT FUNCTION
|
|
||||||
END IF
|
|
||||||
r$ = e$
|
|
||||||
e$ = ""
|
|
||||||
GOTO dontevaluate
|
|
||||||
ELSEIF curarg = 2 THEN
|
|
||||||
IF sourcetyp AND ISREFERENCE THEN e$ = refer(e$, sourcetyp, 0)
|
|
||||||
IF Error_Happened THEN EXIT FUNCTION
|
|
||||||
r$ = r$ + e$ + ")"
|
|
||||||
GOTO evalfuncspecial
|
|
||||||
END IF
|
|
||||||
END IF
|
|
||||||
|
|
||||||
'***special case***
|
'***special case***
|
||||||
IF n$ = "_MEM" OR (n$ = "MEM" AND qb64prefix_set = 1) THEN
|
IF n$ = "_MEM" OR (n$ = "MEM" AND qb64prefix_set = 1) THEN
|
||||||
IF curarg = 1 THEN
|
IF curarg = 1 THEN
|
||||||
|
|
|
@ -3667,15 +3667,13 @@ id.ret = LONGTYPE - ISPOINTER
|
||||||
id.hr_syntax = "_AUTODISPLAY"
|
id.hr_syntax = "_AUTODISPLAY"
|
||||||
regid
|
regid
|
||||||
|
|
||||||
' a740: SHR & SHL fixes
|
|
||||||
' These are mostly stubs now as we handle these in evaluatefunc
|
|
||||||
clearid
|
clearid
|
||||||
id.n = qb64prefix$ + "SHR"
|
id.n = qb64prefix$ + "SHR"
|
||||||
id.subfunc = 1
|
id.subfunc = 1
|
||||||
id.callname = "func__shr"
|
id.callname = "func__shr"
|
||||||
id.args = 2
|
id.args = 2
|
||||||
id.arg = MKL$(UINTEGER64TYPE - ISPOINTER) + MKL$(ULONGTYPE - ISPOINTER) ' ***overridden by function evaluatefunc***
|
id.arg = MKL$(UINTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.ret = UINTEGER64TYPE - ISPOINTER ' ***overridden by function evaluatefunc***
|
id.ret = UINTEGER64TYPE - ISPOINTER
|
||||||
id.hr_syntax = "_SHR(numericalVariable, numericalValue)"
|
id.hr_syntax = "_SHR(numericalVariable, numericalValue)"
|
||||||
regid
|
regid
|
||||||
|
|
||||||
|
@ -3684,11 +3682,10 @@ id.n = qb64prefix$ + "SHL"
|
||||||
id.subfunc = 1
|
id.subfunc = 1
|
||||||
id.callname = "func__shl"
|
id.callname = "func__shl"
|
||||||
id.args = 2
|
id.args = 2
|
||||||
id.arg = MKL$(UINTEGER64TYPE - ISPOINTER) + MKL$(ULONGTYPE - ISPOINTER) ' ***overridden by function evaluatefunc***
|
id.arg = MKL$(UINTEGER64TYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.ret = UINTEGER64TYPE - ISPOINTER ' ***overridden by function evaluatefunc***
|
id.ret = UINTEGER64TYPE - ISPOINTER
|
||||||
id.hr_syntax = "_SHL(numericalVariable, numericalValue)"
|
id.hr_syntax = "_SHL(numericalVariable, numericalValue)"
|
||||||
regid
|
regid
|
||||||
' a740: end of SHR & SHL fixes
|
|
||||||
|
|
||||||
' a740g: ROR & ROL additions
|
' a740g: ROR & ROL additions
|
||||||
clearid
|
clearid
|
||||||
|
|
Loading…
Reference in a new issue