Skip to content

Commit 83086dc

Browse files
committed
Replace all remaining leas with mov + offset
1 parent b859d58 commit 83086dc

File tree

3 files changed

+26
-26
lines changed

3 files changed

+26
-26
lines changed

Diff for: src/stage_1.s

+6-6
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ _start:
2222
# initialize stack
2323
mov sp, 0x7c00
2424

25-
lea si, boot_start_str
25+
mov si, offset boot_start_str
2626
call real_mode_println
2727

2828
enable_a20:
@@ -99,12 +99,12 @@ load_rest_of_bootloader_from_disk:
9999
mov [dap_blocks], bx
100100

101101
# number of start block
102-
lea ebx, _start
102+
mov ebx, offset _start
103103
sub eax, ebx
104104
shr eax, 9 # divide by 512 (block size)
105105
mov [dap_start_lba], eax
106106

107-
lea si, dap
107+
mov si, offset dap
108108
mov ah, 0x42
109109
int 0x13
110110
jc rest_of_bootloader_load_failed
@@ -113,7 +113,7 @@ load_rest_of_bootloader_from_disk:
113113
mov word ptr [dap_buffer_seg], 0
114114

115115
jump_to_second_stage:
116-
lea eax, [stage_2]
116+
mov eax, offset stage_2
117117
jmp eax
118118

119119
spin:
@@ -190,11 +190,11 @@ real_mode_error:
190190
jmp spin
191191

192192
no_int13h_extensions:
193-
lea si, no_int13h_extensions_str
193+
mov si, offset no_int13h_extensions_str
194194
jmp real_mode_error
195195

196196
rest_of_bootloader_load_failed:
197-
lea si, rest_of_bootloader_load_failed_str
197+
mov si, offset rest_of_bootloader_load_failed_str
198198
jmp real_mode_error
199199

200200
boot_start_str: .asciz "Booting (first stage)..."

Diff for: src/stage_2.s

+6-6
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ second_stage_start_str: .asciz "Booting (second stage)..."
1010
kernel_load_failed_str: .asciz "Failed to load kernel from disk"
1111

1212
kernel_load_failed:
13-
lea si, [kernel_load_failed_str]
13+
mov si, offset kernel_load_failed_str
1414
call real_mode_println
1515
kernel_load_failed_spin:
1616
jmp kernel_load_failed_spin
1717

1818
stage_2:
19-
lea si, [second_stage_start_str]
19+
mov si, offset second_stage_start_str
2020
call real_mode_println
2121

2222
set_target_operating_mode:
@@ -33,7 +33,7 @@ set_target_operating_mode:
3333

3434
load_kernel_from_disk:
3535
# start of memory buffer
36-
lea eax, _kernel_buffer
36+
mov eax, offset _kernel_buffer
3737
mov [dap_buffer_addr], ax
3838

3939
# number of disk blocks to load
@@ -50,13 +50,13 @@ load_kernel_from_disk:
5050
mov edi, 0x400000
5151

5252
# block count
53-
lea ecx, _kernel_size
53+
mov ecx, offset _kernel_size
5454
add ecx, 511 # align up
5555
shr ecx, 9
5656

5757
load_next_kernel_block_from_disk:
5858
# load block from disk
59-
lea si, dap
59+
mov si, offset dap
6060
mov ah, 0x42
6161
int 0x13
6262
jc kernel_load_failed
@@ -97,7 +97,7 @@ enter_protected_mode_again:
9797
mov cr0, eax
9898

9999
push 0x8
100-
lea eax, [stage_3]
100+
mov eax, offset stage_3
101101
push eax
102102
retf
103103

Diff for: src/stage_3.s

+14-14
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ stage_3:
1313
mov es, bx # set extra segment
1414
mov ss, bx # set stack segment
1515

16-
lea si, boot_third_stage_str
16+
mov si, offset boot_third_stage_str
1717
call vga_println
1818

1919
check_cpu:
@@ -28,28 +28,28 @@ check_cpu:
2828

2929
set_up_page_tables:
3030
# zero out buffer for page tables
31-
lea edi, [__page_table_start]
32-
lea ecx, [__page_table_end]
31+
mov edi, offset __page_table_start
32+
mov ecx, offset __page_table_end
3333
sub ecx, edi
3434
shr ecx, 2 # one stosd zeros 4 bytes -> divide by 4
3535
xor eax, eax
3636
rep stosd
3737

3838
# p4
39-
lea eax, [_p3]
39+
mov eax, offset _p3
4040
or eax, (1 | 2)
4141
mov [_p4], eax
4242
# p3
43-
lea eax, [_p2]
43+
mov eax, offset _p2
4444
or eax, (1 | 2)
4545
mov [_p3], eax
4646
# p2
47-
lea eax, [_p1]
47+
mov eax, offset _p1
4848
or eax, (1 | 2)
4949
mov [_p2], eax
5050
mov eax, (0x400000 | 1 | 2 | (1 << 7))
5151
mov ecx, 2
52-
lea edx, _kernel_size
52+
mov edx, offset _kernel_size
5353
add edx, 0x400000 # start address
5454
add edx, 0x200000 - 1 # align up
5555
shr edx, 12 + 9 # end huge page number
@@ -62,12 +62,12 @@ set_up_page_tables:
6262
# p1
6363
# start mapping from __page_table_start, as we need to be able to access
6464
# the p4 table from rust. stop mapping at __bootloader_end
65-
lea eax, __page_table_start
65+
mov eax, offset __page_table_start
6666
and eax, 0xfffff000
6767
or eax, (1 | 2)
68-
lea ecx, __page_table_start
68+
mov ecx, offset __page_table_start
6969
shr ecx, 12 # start page number
70-
lea edx, __bootloader_end
70+
mov edx, offset __bootloader_end
7171
add edx, 4096 - 1 # align up
7272
shr edx, 12 # end page number
7373
map_p1_table:
@@ -86,7 +86,7 @@ enable_paging:
8686
mfence
8787

8888
# load P4 to cr3 register (cpu uses this to access the P4 table)
89-
lea eax, [_p4]
89+
mov eax, offset _p4
9090
mov cr3, eax
9191

9292
# enable PAE-flag in cr4 (Physical Address Extension)
@@ -110,7 +110,7 @@ load_64bit_gdt:
110110

111111
jump_to_long_mode:
112112
push 0x8
113-
lea eax, [stage_4]
113+
mov eax, offset stage_4
114114
push eax
115115
retf # Load CS with 64 bit segment and flush the instruction cache
116116

@@ -150,7 +150,7 @@ check_cpuid:
150150
je no_cpuid
151151
ret
152152
no_cpuid:
153-
lea esi, no_cpuid_str
153+
mov esi, offset no_cpuid_str
154154
call vga_println
155155
no_cpuid_spin:
156156
hlt
@@ -170,7 +170,7 @@ check_long_mode:
170170
jz no_long_mode # If it's not set, there is no long mode
171171
ret
172172
no_long_mode:
173-
lea esi, no_long_mode_str
173+
mov esi, offset no_long_mode_str
174174
call vga_println
175175
no_long_mode_spin:
176176
hlt

0 commit comments

Comments
 (0)