Skip to content

Commit e5bcbcd

Browse files
committed
py: Allow asmx64 to compile with -Wsign-compare.
See issue adafruit#699.
1 parent 6d1f507 commit e5bcbcd

2 files changed

Lines changed: 11 additions & 10 deletions

File tree

py/asmx64.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ void asm_x64_start_pass(asm_x64_t *as, uint pass) {
159159

160160
void asm_x64_end_pass(asm_x64_t *as) {
161161
// could check labels are resolved...
162+
(void)as;
162163
}
163164

164165
// all functions must go through this one to emit bytes
@@ -501,11 +502,11 @@ void asm_x64_setcc_r8(asm_x64_t *as, int jcc_type, int dest_r8) {
501502
asm_x64_write_byte_3(as, OPCODE_SETCC_RM8_A, OPCODE_SETCC_RM8_B | jcc_type, MODRM_R64(0) | MODRM_RM_REG | MODRM_RM_R64(dest_r8));
502503
}
503504

504-
void asm_x64_label_assign(asm_x64_t *as, int label) {
505+
void asm_x64_label_assign(asm_x64_t *as, mp_uint_t label) {
505506
assert(label < as->max_num_labels);
506507
if (as->pass < ASM_X64_PASS_EMIT) {
507508
// assign label offset
508-
assert(as->label_offsets[label] == -1);
509+
assert(as->label_offsets[label] == (mp_uint_t)-1);
509510
as->label_offsets[label] = as->code_offset;
510511
} else {
511512
// ensure label offset has not changed from PASS_COMPUTE to PASS_EMIT
@@ -514,15 +515,15 @@ void asm_x64_label_assign(asm_x64_t *as, int label) {
514515
}
515516
}
516517

517-
STATIC mp_uint_t get_label_dest(asm_x64_t *as, int label) {
518+
STATIC mp_uint_t get_label_dest(asm_x64_t *as, mp_uint_t label) {
518519
assert(label < as->max_num_labels);
519520
return as->label_offsets[label];
520521
}
521522

522-
void asm_x64_jmp_label(asm_x64_t *as, int label) {
523+
void asm_x64_jmp_label(asm_x64_t *as, mp_uint_t label) {
523524
mp_uint_t dest = get_label_dest(as, label);
524525
mp_int_t rel = dest - as->code_offset;
525-
if (dest != -1 && rel < 0) {
526+
if (dest != (mp_uint_t)-1 && rel < 0) {
526527
// is a backwards jump, so we know the size of the jump on the first pass
527528
// calculate rel assuming 8 bit relative jump
528529
rel -= 2;
@@ -541,10 +542,10 @@ void asm_x64_jmp_label(asm_x64_t *as, int label) {
541542
}
542543
}
543544

544-
void asm_x64_jcc_label(asm_x64_t *as, int jcc_type, int label) {
545+
void asm_x64_jcc_label(asm_x64_t *as, int jcc_type, mp_uint_t label) {
545546
mp_uint_t dest = get_label_dest(as, label);
546547
mp_int_t rel = dest - as->code_offset;
547-
if (dest != -1 && rel < 0) {
548+
if (dest != (mp_uint_t)-1 && rel < 0) {
548549
// is a backwards jump, so we know the size of the jump on the first pass
549550
// calculate rel assuming 8 bit relative jump
550551
rel -= 2;

py/asmx64.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ void asm_x64_sub_r64_r64(asm_x64_t* as, int dest_r64, int src_r64);
104104
void asm_x64_cmp_r64_with_r64(asm_x64_t* as, int src_r64_a, int src_r64_b);
105105
void asm_x64_test_r8_with_r8(asm_x64_t* as, int src_r64_a, int src_r64_b);
106106
void asm_x64_setcc_r8(asm_x64_t* as, int jcc_type, int dest_r8);
107-
void asm_x64_label_assign(asm_x64_t* as, int label);
108-
void asm_x64_jmp_label(asm_x64_t* as, int label);
109-
void asm_x64_jcc_label(asm_x64_t* as, int jcc_type, int label);
107+
void asm_x64_label_assign(asm_x64_t* as, mp_uint_t label);
108+
void asm_x64_jmp_label(asm_x64_t* as, mp_uint_t label);
109+
void asm_x64_jcc_label(asm_x64_t* as, int jcc_type, mp_uint_t label);
110110
void asm_x64_entry(asm_x64_t* as, int num_locals);
111111
void asm_x64_exit(asm_x64_t* as);
112112
void asm_x64_mov_local_to_r64(asm_x64_t* as, int src_local_num, int dest_r64);

0 commit comments

Comments
 (0)