diff options
-rw-r--r-- | thumb2mark.s | 2 | ||||
-rw-r--r-- | thumb2startup.s | 253 |
2 files changed, 128 insertions, 127 deletions
diff --git a/thumb2mark.s b/thumb2mark.s index e7e1e99..16ec113 100644 --- a/thumb2mark.s +++ b/thumb2mark.s @@ -434,7 +434,7 @@ _found_free_memory: lao SCRATCH_REG,heap_end_after_gc,11
sto BSTACK_1,SCRATCH_REG,heap_end_after_gc,11
- ldmia sp!,{BSTACK_4-BSTACK_0,pc}
+ ldmia sp!,{r0-r4,pc}
@ n_free_words_after_mark updated
.thumb_func
diff --git a/thumb2startup.s b/thumb2startup.s index 5e107d2..6ce2d2f 100644 --- a/thumb2startup.s +++ b/thumb2startup.s @@ -484,7 +484,7 @@ start_address: abc_main: str lr,[BSTACK_PTR,#-4]! - stmdb BSTACK_PTR!,{BSTACK_0-ASTACK_3} + stmdb BSTACK_PTR!,{r0-r12} .ifdef DLL ldr BSTACK_0,[BSTACK_PTR,#28] @@ -536,16 +536,16 @@ exit: .thumb_func init_error: - ldmia BSTACK_PTR!,{BSTACK_0-ASTACK_3,pc} + ldmia BSTACK_PTR!,{r0-r12,pc} .globl clean_init .thumb_func clean_init: - stmdb BSTACK_PTR!,{BSTACK_0-ASTACK_3,lr} + stmdb BSTACK_PTR!,{r0-r12,lr} lao SCRATCH_REG,dll_initisialised,0 - mov BSTACK_4,#1 - sto BSTACK_4,SCRATCH_REG,dll_initisialised,0 + mov r0,#1 + sto r0,SCRATCH_REG,dll_initisialised,0 .align add lr,pc,#9 @@ -587,7 +587,7 @@ init_dll_error: .globl clean_fini .thumb_func clean_fini: - stmdb BSTACK_PTR!,{BSTACK_0-ASTACK_3,lr} + stmdb BSTACK_PTR!,{r0-r12,lr} lao SCRATCH_REG,saved_heap_p,1 otoa SCRATCH_REG,saved_heap_p,1 @@ -603,7 +603,7 @@ clean_fini: .thumb_func exit_dll_init: - ldmia BSTACK_PTR!,{BSTACK_0-ASTACK_3,pc} + ldmia BSTACK_PTR!,{r0-r12,pc} .thumb_func init_clean: @@ -661,10 +661,10 @@ init_clean: sto BSTACK_0,SCRATCH_REG,heap_size,3 add BSTACK_0,BSTACK_0,#7 - mov BSTACK_4,BSTACK_0 + mov r0,BSTACK_0 bl malloc - movs BSTACK_0,BSTACK_4 + movs BSTACK_0,r0 beq no_memory_2 lao SCRATCH_REG,heap_mbp,0 @@ -678,14 +678,14 @@ init_clean: ldo ASTACK_2,ASTACK_2,ab_stack_size,1 add ASTACK_2,ASTACK_2,#3 - mov BSTACK_4,ASTACK_2 + mov r0,ASTACK_2 .if STACK_OVERFLOW_EXCEPTION_HANDLER bl allocate_memory_with_guard_page_at_end .else bl malloc .endif - movs BSTACK_0,BSTACK_4 + movs BSTACK_0,r0 beq no_memory_3 lao SCRATCH_REG,stack_mbp,0 @@ -870,28 +870,28 @@ no_mark2: ldr pc,[BSTACK_PTR],#4 no_memory_2: - lao BSTACK_4,out_of_memory_string_1,0 - otoa BSTACK_4,out_of_memory_string_1,0 + lao r0,out_of_memory_string_1,0 + otoa r0,out_of_memory_string_1,0 bl ew_print_string .ifdef _WINDOWS_ ? movl $1,@execution_aborted .endif - mov BSTACK_4,#1 + mov r0,#1 ldr pc,[BSTACK_PTR],#4 no_memory_3: - lao BSTACK_4,out_of_memory_string_1,1 - otoa BSTACK_4,out_of_memory_string_1,1 + lao r0,out_of_memory_string_1,1 + otoa r0,out_of_memory_string_1,1 bl ew_print_string .ifdef _WINDOWS_ ? movl $1,@execution_aborted .endif - lao BSTACK_4,heap_mbp,1 - ldo BSTACK_4,BSTACK_4,heap_mbp,1 + lao r0,heap_mbp,1 + ldo r0,r0,heap_mbp,1 bl free - mov BSTACK_4,#1 + mov r0,#1 ldr pc,[BSTACK_PTR],#4 .thumb_func @@ -906,8 +906,8 @@ exit_clean: tst BSTACK_0,#8 beq no_print_execution_time - lao BSTACK_4,time_string_1,0 - otoa BSTACK_4,time_string_1,0 + lao r0,time_string_1,0 + otoa r0,time_string_1,0 bl ew_print_string lao SCRATCH_REG,execute_time,0 @@ -918,8 +918,8 @@ exit_clean: str lr,[BSTACK_PTR,#-4]! bl print_time - lao BSTACK_4,time_string_2,0 - otoa BSTACK_4,time_string_2,0 + lao r0,time_string_2,0 + otoa r0,time_string_2,0 bl ew_print_string lao SCRATCH_REG,garbage_collect_time,0 @@ -930,8 +930,8 @@ exit_clean: str lr,[BSTACK_PTR,#-4]! bl print_time - lao BSTACK_4,time_string_4,0 - otoa BSTACK_4,time_string_4,0 + lao r0,time_string_4,0 + otoa r0,time_string_4,0 bl ew_print_string lao SCRATCH_REG,execute_time,1 @@ -948,17 +948,17 @@ exit_clean: str lr,[BSTACK_PTR,#-4]! bl print_time - mov BSTACK_4,#10 + mov r0,#10 bl ew_print_char .thumb_func no_print_execution_time: - lao BSTACK_4,stack_mbp,1 - ldo BSTACK_4,BSTACK_4,stack_mbp,1 + lao r0,stack_mbp,1 + ldo r0,r0,stack_mbp,1 bl free - lao BSTACK_4,heap_mbp,2 - ldo BSTACK_4,BSTACK_4,heap_mbp,2 + lao r0,heap_mbp,2 + ldo r0,r0,heap_mbp,2 bl free .ifdef PROFILE @@ -1090,19 +1090,19 @@ print_time: lsr BSTACK_0,BSTACK_0,#3 .if USE_CLIB - mov BSTACK_1,BSTACK_0 - mov BSTACK_2,ASTACK_0 - lao BSTACK_3,sprintf_time_string,0 - lao BSTACK_4,sprintf_time_buffer,0 - otoa BSTACK_3,sprintf_time_string,0 - otoa BSTACK_4,sprintf_time_buffer,0 + mov r3,BSTACK_0 + mov r2,ASTACK_0 + lao r1,sprintf_time_string,0 + lao r0,sprintf_time_buffer,0 + otoa r1,sprintf_time_string,0 + otoa r0,sprintf_time_buffer,0 bl sprintf - lao BSTACK_4,sprintf_time_buffer,1 - otoa BSTACK_4,sprintf_time_buffer,1 + lao r0,sprintf_time_buffer,1 + otoa r0,sprintf_time_buffer,1 bl ew_print_string .else - mov BSTACK_4,ASTACK_0 + mov r0,ASTACK_0 bl ew_print_int lao ASTACK_0,sprintf_time_buffer,0 @@ -1127,8 +1127,8 @@ print_time: strb BSTACK_4,[ASTACK_0,#1] strb BSTACK_0,[ASTACK_0,#2] - mov BSTACK_3,#3 - mov BSTACK_4,ASTACK_0 + mov r1,#3 + mov r0,ASTACK_0 bl ew_print_text .endif ldr pc,[BSTACK_PTR],#4 @@ -1142,7 +1142,7 @@ print_sc: .thumb_func print: - mov BSTACK_4,BSTACK_0 + mov r0,BSTACK_0 bl w_print_string .thumb_func @@ -1253,13 +1253,13 @@ end_print_symbol: .thumb_func print_int_node: - ldr BSTACK_4,[ASTACK_0,#4] + ldr r0,[ASTACK_0,#4] bl w_print_int ldr pc,[BSTACK_PTR],#4 .thumb_func print_int: - mov BSTACK_4,BSTACK_0 + mov r0,BSTACK_0 bl w_print_int ldr pc,[BSTACK_PTR],#4 @@ -1271,20 +1271,20 @@ print_char_denotation: ldr SCRATCH_REG,[ASTACK_0,#4] str SCRATCH_REG,[BSTACK_PTR,#-4]! - mov BSTACK_4,#0x27 + mov r0,#0x27 bl w_print_char - ldr BSTACK_4,[BSTACK_PTR],#4 + ldr r0,[BSTACK_PTR],#4 bl w_print_char - mov BSTACK_4,#0x27 + mov r0,#0x27 bl w_print_char ldr pc,[BSTACK_PTR],#4 .thumb_func print_char_node: - ldr BSTACK_4,[ASTACK_0,#4] + ldr r0,[ASTACK_0,#4] bl w_print_char ldr pc,[BSTACK_PTR],#4 @@ -1303,44 +1303,45 @@ print_bool: .thumb_func print_true: - lao BSTACK_4,true_c_string,0 - otoa BSTACK_4,true_c_string,0 + lao r0,true_c_string,0 + otoa r0,true_c_string,0 bl w_print_string ldr pc,[BSTACK_PTR],#4 .thumb_func print_false: - lao BSTACK_4,false_c_string,0 - otoa BSTACK_4,false_c_string,0 + lao r0,false_c_string,0 + otoa r0,false_c_string,0 bl w_print_string ldr pc,[BSTACK_PTR],#4 .thumb_func print_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d0 + vmov r0,BSTACK_3,d0 .endif b print_real_ .thumb_func print_real_node: .ifdef SOFT_FP_CC - ldrd BSTACK_4,BSTACK_3,[ASTACK_0,#4] + ldrd r0,BSTACK_3,[ASTACK_0,#4] .else vldr.f64 d0,[ASTACK_0,#4] .endif .thumb_func print_real_: - mov ASTACK_3,BSTACK_PTR - mov lr,BSTACK_PTR - bic lr,lr,#7 + push {r11} + mov r11,BSTACK_PTR + bic lr,r11,#7 mov BSTACK_PTR,lr bl w_print_real - mov BSTACK_PTR,ASTACK_3 + mov BSTACK_PTR,r11 + pop {r11} ldr pc,[BSTACK_PTR],#4 print_string_a2: - ldr BSTACK_3,[ASTACK_2] - add BSTACK_4,ASTACK_2,#4 + ldr r1,[ASTACK_2] + add r0,ASTACK_2,#4 bl w_print_text ldr pc,[BSTACK_PTR],#4 @@ -1353,8 +1354,8 @@ print__chars__sc: .thumb_func print__string__: - ldr BSTACK_3,[ASTACK_0,#4] - add BSTACK_4,ASTACK_0,#8 + ldr r1,[ASTACK_0,#4] + add r0,ASTACK_0,#8 bl w_print_text .thumb_func no_print_chars: @@ -1497,11 +1498,11 @@ BtoAC_false: RtoAC: .if USE_CLIB - vmov BSTACK_2,BSTACK_1,d0 - lao BSTACK_3,printf_real_string,0 - lao BSTACK_4,sprintf_buffer,0 - otoa BSTACK_3,printf_real_string,0 - otoa BSTACK_4,sprintf_buffer,0 + vmov r2,BSTACK_1,d0 + lao r1,printf_real_string,0 + lao r0,sprintf_buffer,0 + otoa r1,printf_real_string,0 + otoa r0,sprintf_buffer,0 mov BSTACK_0,BSTACK_PTR mov lr,BSTACK_PTR and lr,lr,#-8 @@ -1509,8 +1510,8 @@ RtoAC: bl sprintf mov BSTACK_PTR,BSTACK_0 .else - lao BSTACK_4,sprintf_buffer,1 - otoa BSTACK_4,sprintf_buffer,1 + lao r0,sprintf_buffer,1 + otoa r0,sprintf_buffer,1 bl convert_real_to_string .endif b return_sprintf_buffer @@ -1583,21 +1584,21 @@ reverse_digits: strb SCRATCH_REG,[ASTACK_0] ldr pc,[BSTACK_PTR],#4 .else - mov BSTACK_2,BSTACK_0 - lao BSTACK_3,printf_int_string,0 - lao BSTACK_4,sprintf_buffer,4 - otoa BSTACK_3,printf_int_string,0 - otoa BSTACK_4,sprintf_buffer,4 + mov r2,BSTACK_0 + lao r1,printf_int_string,0 + lao r0,sprintf_buffer,4 + otoa r1,printf_int_string,0 + otoa r0,sprintf_buffer,4 bl sprintf .endif .thumb_func return_sprintf_buffer: .if USE_CLIB - lao BSTACK_4,sprintf_buffer,5 - otoa BSTACK_4,sprintf_buffer,5 + lao r0,sprintf_buffer,5 + otoa r0,sprintf_buffer,5 bl strlen - mov BSTACK_0,BSTACK_4 + mov BSTACK_0,r0 .else laol BSTACK_0,sprintf_buffer-1,sprintf_buffer_o_m1,0 otoa BSTACK_0,sprintf_buffer_o_m1,0 @@ -1714,7 +1715,7 @@ eqD_false: .thumb_func init_timer: sub BSTACK_PTR,BSTACK_PTR,#20 - mov BSTACK_4,BSTACK_PTR + mov r0,BSTACK_PTR bl times ldr BSTACK_0,[BSTACK_PTR] add BSTACK_0,BSTACK_0,BSTACK_0 @@ -1736,7 +1737,7 @@ init_timer: .thumb_func get_time_diff: sub BSTACK_PTR,BSTACK_PTR,#20 - mov BSTACK_4,BSTACK_PTR + mov r0,BSTACK_PTR bl times ldr BSTACK_0,[BSTACK_PTR] add BSTACK_0,BSTACK_0,BSTACK_0 @@ -1967,7 +1968,7 @@ collect_0: collect_0: .endif collect_0_: - stmdb BSTACK_PTR!,{BSTACK_4-BSTACK_0,lr} + stmdb BSTACK_PTR!,{r0-r4,lr} lao SCRATCH_REG,heap_end_after_gc,1 ldo SCRATCH_REG,SCRATCH_REG,heap_end_after_gc,1 @@ -2070,7 +2071,7 @@ found_free_memory: ldr ASTACK_PTR,[BSTACK_PTR],#4 - ldmia BSTACK_PTR!,{BSTACK_4-BSTACK_0,pc} + ldmia BSTACK_PTR!,{r0-r4,pc} .thumb_func end_bits: @@ -2124,7 +2125,7 @@ no_mark3: lao SCRATCH_REG,heap_end_after_gc,3 sto BSTACK_1,SCRATCH_REG,heap_end_after_gc,3 - ldmia BSTACK_PTR!,{BSTACK_4-BSTACK_0,pc} + ldmia BSTACK_PTR!,{r0-r4,pc} .thumb_func .align @@ -2138,28 +2139,28 @@ collect: tst SCRATCH_REG,#4 beq no_print_stack_sizes - lao BSTACK_4,garbage_collect_string_1,0 - otoa BSTACK_4,garbage_collect_string_1,0 + lao r0,garbage_collect_string_1,0 + otoa r0,garbage_collect_string_1,0 bl ew_print_string mov BSTACK_0,ASTACK_PTR lao SCRATCH_REG,stack_p,1 ldo SCRATCH_REG,SCRATCH_REG,stack_p,1 - sub BSTACK_4,BSTACK_0,SCRATCH_REG + sub r0,BSTACK_0,SCRATCH_REG bl ew_print_int - lao BSTACK_4,garbage_collect_string_2,0 - otoa BSTACK_4,garbage_collect_string_2,0 + lao r0,garbage_collect_string_2,0 + otoa r0,garbage_collect_string_2,0 bl ew_print_string lao SCRATCH_REG,halt_sp,2 ldo BSTACK_0,SCRATCH_REG,halt_sp,2 - add BSTACK_4,BSTACK_PTR,#0 - sub BSTACK_4,BSTACK_0,BSTACK_4 + add r0,BSTACK_PTR,#0 + sub r0,BSTACK_0,r0 bl ew_print_int - lao BSTACK_4,garbage_collect_string_3,0 - otoa BSTACK_4,garbage_collect_string_3,0 + lao r0,garbage_collect_string_3,0 + otoa r0,garbage_collect_string_3,0 bl ew_print_string .thumb_func @@ -2477,15 +2478,15 @@ end_garbage_collect_: str BSTACK_0,[BSTACK_PTR,#-4]! - lao BSTACK_4,heap_use_after_gc_string_1,0 - otoa BSTACK_4,heap_use_after_gc_string_1,0 + lao r0,heap_use_after_gc_string_1,0 + otoa r0,heap_use_after_gc_string_1,0 bl ew_print_string - ldr BSTACK_4,[BSTACK_PTR],#4 + ldr r0,[BSTACK_PTR],#4 bl ew_print_int - lao BSTACK_4,heap_use_after_gc_string_2,0 - otoa BSTACK_4,heap_use_after_gc_string_2,0 + lao r0,heap_use_after_gc_string_2,0 + otoa r0,heap_use_after_gc_string_2,0 bl ew_print_string .thumb_func @@ -2595,7 +2596,7 @@ no_write_heap: .endif - ldmia BSTACK_PTR!,{BSTACK_4-BSTACK_0,pc} + ldmia BSTACK_PTR!,{r0-r4,pc} .ifdef PIC .if MARK_AND_COPY_GC @@ -3170,24 +3171,24 @@ stack_overflow: b print_error IO_error: - str BSTACK_4,[BSTACK_PTR] + str r0,[BSTACK_PTR] - lao BSTACK_4,IO_error_string,0 - otoa BSTACK_4,IO_error_string,0 + lao r0,IO_error_string,0 + otoa r0,IO_error_string,0 bl ew_print_string - ldr BSTACK_4,[BSTACK_PTR],#4 + ldr r0,[BSTACK_PTR],#4 bl ew_print_string - lao BSTACK_4,new_line_string,0 - otoa BSTACK_4,new_line_string,0 + lao r0,new_line_string,0 + otoa r0,new_line_string,0 bl ew_print_string b halt .thumb_func print_error: - mov BSTACK_4,ASTACK_2 + mov r0,ASTACK_2 bl ew_print_string .thumb_func @@ -5109,11 +5110,11 @@ del_args_gc: .thumb_func sin_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d0 + vmov r0,r1,d0 .endif bl sin .ifdef SOFT_FP_CC - vmov d0,BSTACK_4,BSTACK_3 + vmov d0,r0,r1 .endif ldr pc,[BSTACK_PTR],#4 @@ -5121,11 +5122,11 @@ sin_real: .thumb_func cos_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d0 + vmov r0,r1,d0 .endif bl cos .ifdef SOFT_FP_CC - vmov d0,BSTACK_4,BSTACK_3 + vmov d0,r0,r1 .endif ldr pc,[BSTACK_PTR],#4 @@ -5133,11 +5134,11 @@ cos_real: .thumb_func tan_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d0 + vmov r0,r1,d0 .endif bl tan .ifdef SOFT_FP_CC - vmov d0,BSTACK_4,BSTACK_3 + vmov d0,r0,r1 .endif ldr pc,[BSTACK_PTR],#4 @@ -5145,11 +5146,11 @@ tan_real: .thumb_func asin_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d0 + vmov r0,r1,d0 .endif bl asin .ifdef SOFT_FP_CC - vmov d0,BSTACK_4,BSTACK_3 + vmov d0,r0,r1 .endif ldr pc,[BSTACK_PTR],#4 @@ -5157,11 +5158,11 @@ asin_real: .thumb_func acos_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d0 + vmov r0,r1,d0 .endif bl acos .ifdef SOFT_FP_CC - vmov d0,BSTACK_4,BSTACK_3 + vmov d0,r0,r1 .endif ldr pc,[BSTACK_PTR],#4 @@ -5169,11 +5170,11 @@ acos_real: .thumb_func atan_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d0 + vmov r0,r1,d0 .endif bl atan .ifdef SOFT_FP_CC - vmov d0,BSTACK_4,BSTACK_3 + vmov d0,r0,r1 .endif ldr pc,[BSTACK_PTR],#4 @@ -5181,22 +5182,22 @@ atan_real: .thumb_func ln_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d0 + vmov r0,r1,d0 .endif bl log .ifdef SOFT_FP_CC - vmov d0,BSTACK_4,BSTACK_3 + vmov d0,r0,r1 .endif ldr pc,[BSTACK_PTR],#4 .section .text.log10_real,"ax" log10_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d0 + vmov r0,r1,d0 .endif bl log10 .ifdef SOFT_FP_CC - vmov d0,BSTACK_4,BSTACK_3 + vmov d0,r0,r1 .endif ldr pc,[BSTACK_PTR],#4 @@ -5204,11 +5205,11 @@ log10_real: .thumb_func exp_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d0 + vmov r0,r1,d0 .endif bl exp .ifdef SOFT_FP_CC - vmov d0,BSTACK_4,BSTACK_3 + vmov d0,r0,r1 .endif ldr pc,[BSTACK_PTR],#4 @@ -5216,7 +5217,7 @@ exp_real: .thumb_func pow_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d1 + vmov r0,r1,d1 vmov BSTACK_2,BSTACK_1,d0 .else vmov.f64 d2,d0 @@ -5225,7 +5226,7 @@ pow_real: .endif bl pow .ifdef SOFT_FP_CC - vmov d0,BSTACK_4,BSTACK_3 + vmov d0,r0,r1 .endif ldr pc,[BSTACK_PTR],#4 @@ -5233,11 +5234,11 @@ pow_real: .thumb_func entier_real: .ifdef SOFT_FP_CC - vmov BSTACK_4,BSTACK_3,d0 + vmov r0,r1,d0 .endif bl floor .ifdef SOFT_FP_CC - vmov d0,BSTACK_4,BSTACK_3 + vmov d0,r0,r1 .endif .thumb_func |