| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
| |
One never needs to format integers with a base larger than 16 (but code
can be easily extended beyond this value if needed in the future).
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This function should be able to parse integers with any value for the
base, because it is called by int('xxx', base).
|
|
|
|
|
|
|
|
| |
UART REPL support was lost in os.dupterm() refactorings, etc. As
os.dupterm() is there, implement UART REPL support at the high level -
if MICROPY_STDIO_UART is set, make default boot.py contain os.dupterm()
call for a UART. This means that changing MICROPY_STDIO_UART value will
also require erasing flash on a module to force boot.py re-creation.
|
| |
|
|
|
|
|
| |
The lexer is very mature and this debug function is no longer used. If
it's really needed one can uncomment it and recompile.
|
|
|
|
|
|
|
|
| |
This check always fails (ie chr0 is never EOF) because the callers of this
function never call it past the end of the input stream. And even if they
did it would be harmless because 1) reader.readbyte must continue to
return an EOF char if the stream is exhausted; 2) next_char would just
count the subsequent EOF's as characters worth 1 column.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
import utimeq, utime
# Max queue size, the queue allocated statically on creation
q = utimeq.utimeq(10)
q.push(utime.ticks_ms(), data1, data2)
res = [0, 0, 0]
# Items in res are filled up with results
q.pop(res)
|
| |
|
|
|
|
|
|
| |
And also simplify it to remove the check for small int. This can be done
because this function is only ever called if the argument is not a small
int.
|
| |
|
|
|
|
|
| |
It needs an extra pass to compute the size of the constant table for the
l32r instructions.
|
|
|
|
|
|
|
|
| |
Defining and initialising mp_kbd_exception is boiler-plate code and so the
core runtime can provide it, instead of each port needing to do it
themselves.
The exception object is placed in the VM state rather than on the heap.
|
|
|
|
|
|
| |
sys.exit() is an important function to terminate a program. In particular,
the testsuite relies on it to skip tests (i.e. any other functionality may
be disabled, but sys.exit() is required to at least report that properly).
|
|
|
|
|
| |
There's no need to force ports to copy-and-paste this initialisation
code. If FSUSERMOUNT is enabled then this zeroing out must be done.
|
| |
|
|
|
|
|
| |
This patch ensures that __init__.mpy files are imported if their
containing directory is imported as a package.
|
| |
|
|
|
|
|
| |
CPython requires byteorder arg, make uPy compatible. As we support only
"little", error out on anything else.
|
| |
|
|
|
|
|
|
|
|
| |
For all but the last pass the assembler only needs to count how much space
is needed for the machine code, it doesn't actually need to emit anything.
The dummy_data just uses unnecessary RAM and without it the code is not
any more complex (and code size does not increase for Thumb and Xtensa
archs).
|
|
|
|
|
|
| |
This patch moves some common code from the individual inline assemblers to
the compiler, the code that calls the emit-glue to assign the machine code
to the functions scope.
|
|
|
|
|
| |
These are generic methods that don't depend on the architecture and so
can be handled directly by the compiler.
|
|
|
|
|
|
| |
This reduces fragmentation, and memory use by 1 word. But more
importantly it means the emit_inline_asm_t struct now "derives" from
mp_asm_base.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds the MICROPY_EMIT_INLINE_XTENSA option, which, when
enabled, allows the @micropython.asm_xtensa decorator to be used.
The following opcodes are currently supported (ax is a register, a0-a15):
ret_n()
callx0(ax)
j(label)
jx(ax)
beqz(ax, label)
bnez(ax, label)
mov(ax, ay)
movi(ax, imm) # imm can be full 32-bit, uses l32r if needed
and_(ax, ay, az)
or_(ax, ay, az)
xor(ax, ay, az)
add(ax, ay, az)
sub(ax, ay, az)
mull(ax, ay, az)
l8ui(ax, ay, imm)
l16ui(ax, ay, imm)
l32i(ax, ay, imm)
s8i(ax, ay, imm)
s16i(ax, ay, imm)
s32i(ax, ay, imm)
l16si(ax, ay, imm)
addi(ax, ay, imm)
ball(ax, ay, label)
bany(ax, ay, label)
bbc(ax, ay, label)
bbs(ax, ay, label)
beq(ax, ay, label)
bge(ax, ay, label)
bgeu(ax, ay, label)
blt(ax, ay, label)
bnall(ax, ay, label)
bne(ax, ay, label)
bnone(ax, ay, label)
Upon entry to the assembly function the registers a0, a12, a13, a14 are
pushed to the stack and the stack pointer (a1) decreased by 16. Upon
exit, these registers and the stack pointer are restored, and ret.n is
executed to return to the caller (caller address is in a0).
Note that the ABI for the Xtensa emitters is non-windowing.
|
|
|
|
|
| |
This patch refactors some code so that it is easier to integrate new
inline assemblers for different architectures other than ARM Thumb.
|
|
|
|
|
|
| |
The config option MICROPY_EMIT_XTENSA can now be enabled to target the
Xtensa architecture with @micropython.native and @micropython.viper
decorators.
|
| |
|
|
|
|
|
|
|
| |
If a port defines MP_PLAT_COMMIT_EXEC then this function is used to turn
RAM data into executable code. For example a port may want to write the
data to flash for execution. The function must return a pointer to the
executable data.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
The constants MP_IOCTL_POLL_xxx, which were stmhal-specific, are moved
from stmhal/pybioctl.h (now deleted) to py/stream.h. And they are renamed
to MP_STREAM_POLL_xxx to be consistent with other such constants.
All uses of these constants have been updated.
|
| |
|
|
|
|
| |
All assemblers should "derive" from mp_asm_base_t.
|
|
|
|
|
| |
Short circuiting is handled correctly by c_if_cond, and constants within
short-circuit expressions are optimised by the parser.
|
|
|
|
| |
By refactoring and reusing code from objboundmeth.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
If a port defines MICROPY_READER_POSIX or MICROPY_READER_FATFS then
lexer.c now provides an implementation of mp_lexer_new_from_file using
the mp_reader_new_file function.
|
| |
|
|
|
|
|
|
|
| |
Implementations of persistent-code reader are provided for POSIX systems
and systems using FatFS. Macros to use these are MICROPY_READER_POSIX and
MICROPY_READER_FATFS respectively. If an alternative implementation is
needed then a port can define the function mp_reader_new_file.
|
| |
|
|
|
|
| |
Adds about 200 bytes to the code size when constant folding is enabled.
|