mirror of
https://github.com/InfiniTimeOrg/InfiniTime.git
synced 2024-10-22 23:21:53 +02:00
Add asm_assert
This commit is contained in:
parent
f173f1b1d5
commit
350567a6d2
|
@ -126,7 +126,7 @@ void ASM::run() {
|
|||
case SetLabelText: {
|
||||
Value str = pop();
|
||||
assert(str.type == String);
|
||||
Value obj = pop(); // TODO: Check type
|
||||
Value obj = pop(LvglObject);
|
||||
|
||||
lv_label_set_text(obj.data.obj, str.data.s);
|
||||
break;
|
||||
|
@ -141,7 +141,7 @@ void ASM::run() {
|
|||
int16_t y = pop_uint32();
|
||||
int16_t x = pop_uint32();
|
||||
uint8_t align = pop_uint32();
|
||||
Value obj = pop(); // TODO: Check type
|
||||
Value obj = pop(LvglObject);
|
||||
lv_obj_align(obj.data.obj, lv_scr_act(), align, x, y);
|
||||
break;
|
||||
}
|
||||
|
@ -153,7 +153,7 @@ void ASM::run() {
|
|||
uint32_t value = pop_uint32();
|
||||
uint32_t prop = pop_uint32();
|
||||
uint32_t part = pop_uint32();
|
||||
Value obj = pop(); // TODO: Check type
|
||||
Value obj = pop(LvglObject);
|
||||
|
||||
switch (opcode) {
|
||||
case SetStyleLocalInt:
|
||||
|
@ -200,3 +200,11 @@ void ASM::run() {
|
|||
void ASM::Refresh() {
|
||||
run();
|
||||
}
|
||||
|
||||
void ASM::asm_assert(bool condition) {
|
||||
if (!condition) {
|
||||
// TODO: Handle better
|
||||
for (;;) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ namespace Pinetime {
|
|||
SetStyleLocalColor,
|
||||
SetStyleLocalOpa,
|
||||
SetStyleLocalFont,
|
||||
WaitRefresh,
|
||||
WaitRefresh
|
||||
};
|
||||
|
||||
enum OpcodeLong : uint16_t {};
|
||||
|
@ -94,20 +94,26 @@ namespace Pinetime {
|
|||
uint8_t stack_pointer = 0;
|
||||
|
||||
void run();
|
||||
void asm_assert(bool condition);
|
||||
|
||||
Value pop() {
|
||||
assert(stack_pointer > 0);
|
||||
asm_assert(stack_pointer > 0);
|
||||
return stack[--stack_pointer];
|
||||
}
|
||||
|
||||
Value pop(DataType type) {
|
||||
asm_assert(stack_pointer > 0);
|
||||
Value v = stack[--stack_pointer];
|
||||
asm_assert(v.type == type);
|
||||
return v;
|
||||
}
|
||||
|
||||
uint32_t pop_uint32() {
|
||||
Value v = pop();
|
||||
assert(v.type == Integer);
|
||||
return v.data.i;
|
||||
return pop(Integer).data.i;
|
||||
}
|
||||
|
||||
void push(Value v) {
|
||||
assert(stack_pointer < stack_size);
|
||||
asm_assert(stack_pointer < stack_size);
|
||||
stack[stack_pointer] = v;
|
||||
stack_pointer++;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue