亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? assemble.inc

?? 一個用純匯編 寫的操作系統 源代碼 是用 TASM 編譯器寫的
?? INC
?? 第 1 頁 / 共 3 頁
字號:

; flat assembler core
; Copyright (c) 1999-2006, Tomasz Grysztar.
; All rights reserved.

assembler:
	xor	eax,eax
	mov	[stub_size],eax
	mov	[number_of_sections],eax
	mov	[current_pass],ax
	mov	[resolver_flags],eax
      assembler_loop:
	mov	eax,[labels_list]
	mov	[display_buffer],eax
	mov	eax,[additional_memory]
	mov	[free_additional_memory],eax
	mov	eax,[additional_memory_end]
	mov	[structures_buffer],eax
	mov	esi,[source_start]
	mov	edi,[code_start]
	xor	eax,eax
	mov	dword [adjustment],eax
	mov	dword [adjustment+4],eax
	mov	dword [org_origin],edi
	mov	dword [org_origin+4],eax
	mov	[org_start],edi
	mov	[org_registers],eax
	mov	[org_symbol],eax
	mov	[error_line],eax
	mov	[counter],eax
	mov	[format_flags],eax
	mov	[number_of_relocations],eax
	mov	[undefined_data_end],eax
	mov	[next_pass_needed],al
	mov	[output_format],al
	mov	[labels_type],al
	mov	[virtual_data],al
	mov	[code_type],16
	
      pass_loop:
	call	assemble_line
	jnc	pass_loop
	
	mov	eax,[additional_memory_end]
	cmp	eax,[structures_buffer]
	je	pass_done
	sub	eax,20h
	mov	eax,[eax+4]
	mov	[current_line],eax
	jmp	missing_end_directive
      pass_done:
	call	close_pass
	mov	eax,[labels_list]
      check_symbols:
	cmp	eax,[memory_end]
	jae	symbols_checked
	test	byte [eax+8],8
	jz	symbol_defined_ok
	mov	cx,[current_pass]
	cmp	cx,[eax+18]
	jne	symbol_defined_ok
	test	byte [eax+8],1
	jz	symbol_defined_ok
	sub	cx,[eax+16]
	cmp	cx,1
	jne	symbol_defined_ok
	and	byte [eax+8],not 1
	or	[next_pass_needed],-1
      symbol_defined_ok:
	test	byte [eax+8],10h
	jz	use_prediction_ok
	mov	cx,[current_pass]
	and	byte [eax+8],not 10h
	test	byte [eax+8],20h
	jnz	check_use_prediction
	cmp	cx,[eax+18]
	jne	use_prediction_ok
	test	byte [eax+8],8
	jz	use_prediction_ok
	jmp	use_misprediction
      check_use_prediction:
	test	byte [eax+8],8
	jz	use_misprediction
	cmp	cx,[eax+18]
	je	use_prediction_ok
      use_misprediction:
	or	[next_pass_needed],-1
      use_prediction_ok:
	test	byte [eax+8],40h
	jz	check_next_symbol
	and	byte [eax+8],not 40h
	test	byte [eax+8],4
	jnz	define_misprediction
	mov	cx,[current_pass]
	test	byte [eax+8],80h
	jnz	check_define_prediction
	cmp	cx,[eax+16]
	jne	check_next_symbol
	test	byte [eax+8],1
	jz	check_next_symbol
	jmp	define_misprediction
      check_define_prediction:
	test	byte [eax+8],1
	jz	define_misprediction
	cmp	cx,[eax+16]
	je	check_next_symbol
      define_misprediction:
	or	[next_pass_needed],-1
      check_next_symbol:
	add	eax,LABEL_STRUCTURE_SIZE
	jmp	check_symbols
      symbols_checked:
	cmp	[next_pass_needed],0
	jne	next_pass
	mov	eax,[error_line]
	or	eax,eax
	jz	assemble_ok
	mov	[current_line],eax
	jmp	near [error]
      next_pass:
	inc	[current_pass]
	mov	ax,[current_pass]
	cmp	ax,[passes_limit]
	je	code_cannot_be_generated
	jmp	assembler_loop
      assemble_ok:
	ret

assemble_line:
	mov	eax,[display_buffer]
	sub	eax,100h
	cmp	edi,eax
	ja	out_of_memory

	lods	byte [esi]

	cmp	al,1
	je	assemble_instruction
	jb	source_end

	cmp	al,3
	jb	define_label
	je	define_constant

	cmp	al,0Fh
	je	new_line
	
	cmp	al,13h
	je	code_type_setting

	cmp	al,10h
	jne	illegal_instruction
	
	lods	byte [esi]
	jmp	segment_prefix

      code_type_setting:
	lods	byte [esi]
	mov	[code_type],al
	jmp	line_assembled

      new_line:
	lods	dword [esi]
	mov	[current_line],eax
	mov	[prefixed_instruction],0

      continue_line:
	cmp	byte [esi],0Fh
	je	line_assembled
	
	jmp	assemble_line

      define_label:
	lods	dword [esi]
	cmp	eax,0Fh
	jb	invalid_use_of_symbol
	je	reserved_word_used_as_symbol

	mov	ebx,eax
	lods	byte [esi]
	mov	cl,al
	mov	eax,edi
	xor	edx,edx
	sub	eax,dword [org_origin]
	sbb	edx,dword [org_origin+4]
	mov	ch,[labels_type]
	cmp	[virtual_data],0
	jne	make_virtual_label
	or	byte [ebx+9],1
	xchg	eax,[ebx]
	xchg	edx,[ebx+4]
	sub	eax,[ebx]
	sbb	edx,[ebx+4]
	mov	dword [adjustment],eax
	mov	dword [adjustment+4],edx
	or	eax,edx
	setnz	ah
	jmp	finish_label_symbol

      make_virtual_label:
	and	byte [ebx+9],not 1
	cmp	eax,[ebx]
	mov	[ebx],eax
	setne	ah
	cmp	edx,[ebx+4]
	mov	[ebx+4],edx
	setne	al
	or	ah,al

      finish_label_symbol:
	cmp	cl,[ebx+10]
	mov	[ebx+10],cl
	setne	al
	or	ah,al
	cmp	ch,[ebx+11]
	mov	[ebx+11],ch
	setne	al
	or	ah,al
	mov	edx,[org_registers]
	cmp	edx,[ebx+12]
	mov	[ebx+12],edx
	setne	al
	or	ah,al
	or	ch,ch
	jz	label_symbol_ok
	mov	edx,[org_symbol]
	cmp	edx,[ebx+20]
	mov	[ebx+20],edx
	setne	al
	or	ah,al

      label_symbol_ok:
	mov	cx,[current_pass]
	xchg	[ebx+16],cx
	mov	edx,[current_line]
	mov	[ebx+28],edx
	and	byte [ebx+8],not 2
	test	byte [ebx+8],1
	jz	new_label
	cmp	cx,[ebx+16]
	je	symbol_already_defined
	inc	cx
	sub	cx,[ebx+16]
	setnz	al
	or	ah,al
	jz	continue_line
	test	byte [ebx+8],8
	jz	continue_line
	mov	cx,[current_pass]
	cmp	cx,[ebx+18]
	jne	continue_line
	or	[next_pass_needed],-1
	jmp	continue_line

      new_label:
	or	byte [ebx+8],1
	jmp	continue_line

      define_constant:
	lods	dword [esi]
	inc	esi
	cmp	eax,0Fh
	jb	invalid_use_of_symbol
	je	reserved_word_used_as_symbol
	mov	edx,[eax+8]
	push	edx
	cmp	[current_pass],0
	je	get_constant_value
	test	dl,4
	jnz	get_constant_value
	mov	cx,[current_pass]
	cmp	cx,[eax+16]
	je	get_constant_value
	and	dl,not 1
	mov	[eax+8],dl

      get_constant_value:
	push	eax
	mov	al,byte [esi-1]
	push	eax
	call	get_value
	pop	ebx
	mov	ch,bl
	pop	ebx
	pop	dword [ebx+8]
	cmp	ebx,0Fh
	jb	invalid_use_of_symbol
	je	reserved_word_used_as_symbol
	xor	cl,cl
	mov	ch,[value_type]
	cmp	ch,3
	je	invalid_use_of_symbol

      make_constant:
	and	byte [ebx+9],not 1
	cmp	eax,[ebx]
	mov	[ebx],eax
	setne	ah
	cmp	edx,[ebx+4]
	mov	[ebx+4],edx
	setne	al
	or	ah,al
	cmp	cl,[ebx+10]
	mov	[ebx+10],cl
	setne	al
	or	ah,al
	cmp	ch,[ebx+11]
	mov	[ebx+11],ch
	setne	al
	or	ah,al
	xor	edx,edx
	cmp	edx,[ebx+12]
	mov	[ebx+12],edx
	setne	al
	or	ah,al
	or	ch,ch
	jz	constant_symbol_ok
	mov	edx,[symbol_identifier]
	cmp	edx,[ebx+20]
	mov	[ebx+20],edx
	setne	al
	or	ah,al

      constant_symbol_ok:
	mov	cx,[current_pass]
	xchg	[ebx+16],cx
	mov	edx,[current_line]
	mov	[ebx+28],edx
	test	byte [ebx+8],1
	jz	new_constant
	cmp	cx,[ebx+16]
	jne	redeclare_constant
	test	byte [ebx+8],2
	jz	symbol_already_defined
	or	byte [ebx+8],4
	jmp	instruction_assembled

      redeclare_constant:
	inc	cx
	sub	cx,[ebx+16]
	setnz	al
	or	ah,al
	jz	instruction_assembled
	test	byte [ebx+8],4
	jnz	instruction_assembled
	test	byte [ebx+8],8
	jz	instruction_assembled
	mov	cx,[current_pass]
	cmp	cx,[ebx+18]
	jne	instruction_assembled
	or	[next_pass_needed],-1
	jmp	instruction_assembled

      new_constant:
	or	byte [ebx+8],1+2
	jmp	instruction_assembled

      assemble_instruction:
	mov	[operand_size],0
	mov	[size_override],0
	mov	[operand_prefix],0
	mov	[rex_prefix],0
	mov	[immediate_size],0
	movzx	ebx,word [esi]
	mov	al,[esi+2]
	add	ebx,assembler
	add	esi,3
	jmp	near ebx
      instruction_assembled:
	mov	al,[esi]
	cmp	al,0Fh
	je	line_assembled
	or	al,al
	jnz	extra_characters_on_line
      line_assembled:
	clc
	ret
      source_end:
	dec	esi
	stc
	ret
skip_line:
	call	skip_symbol
	jnc	skip_line
	ret
skip_symbol:
	lods	byte [esi]
	or	al,al
	jz	nothing_to_skip
	cmp	al,0Fh
	je	nothing_to_skip
	cmp	al,1
	je	skip_instruction
	cmp	al,2
	je	skip_label
	cmp	al,3
	je	skip_label
	cmp	al,20h
	jb	skip_assembler_symbol
	cmp	al,'('
	je	skip_expression
	cmp	al,'['
	je	skip_address
      skip_done:
	clc
	ret
      skip_label:
	add	esi,2
      skip_instruction:
	add	esi,2
      skip_assembler_symbol:
	inc	esi
	jmp	skip_done
      skip_address:
	mov	al,[esi]
	and	al,11110000b
	cmp	al,60h
	jb	skip_expression
	cmp	al,70h
	ja	skip_expression
	inc	esi
	jmp	skip_address
      skip_expression:
	lods	byte [esi]
	or	al,al
	jz	skip_string
	cmp	al,'.'
	je	skip_fp_value
	cmp	al,')'
	je	skip_done
	cmp	al,']'
	je	skip_done
	cmp	al,'!'
	je	skip_expression
	cmp	al,0Fh
	je	skip_expression
	cmp	al,10h
	je	skip_register
	cmp	al,11h
	je	skip_label_value
	cmp	al,80h
	jae	skip_expression
	movzx	eax,al
	add	esi,eax
	jmp	skip_expression
      skip_label_value:
	add	esi,3
      skip_register:
	inc	esi
	jmp	skip_expression
      skip_fp_value:
	add	esi,12
	jmp	skip_done
      skip_string:
	lods	dword [esi]
	add	esi,eax
	inc	esi
	jmp	skip_done
      nothing_to_skip:
	dec	esi
	stc
	ret

org_directive:
	lods	byte [esi]
	cmp	al,'('
	jne	invalid_argument
	cmp	byte [esi],'.'
	je	invalid_value
	call	get_qword_value
	mov	cl,[value_type]
	test	cl,1
	jnz	invalid_use_of_symbol
	mov	[labels_type],cl
	mov	ecx,edi
	sub	ecx,eax
	adc	edx,0
	neg	edx
	mov	dword [org_origin],ecx
	mov	dword [org_origin+4],edx
	mov	[org_registers],0
	mov	[org_start],edi
	mov	edx,[symbol_identifier]
	mov	[org_symbol],edx
	cmp	[output_format],1
	ja	instruction_assembled
	cmp	edi,[code_start]
	jne	instruction_assembled
	cmp	eax,100h
	jne	instruction_assembled
	bts	[format_flags],0
	jmp	instruction_assembled
label_directive:
	lods	byte [esi]
	cmp	al,2
	jne	invalid_argument
	lods	dword [esi]
	cmp	eax,0Fh
	jb	invalid_use_of_symbol
	je	reserved_word_used_as_symbol
	inc	esi
	mov	ebx,eax
	xor	cl,cl
	lods	byte [esi]
	cmp	al,':'
	je	get_label_size
	dec	esi
	cmp	al,11h
	jne	label_size_ok
      get_label_size:
	lods	word [esi]
	cmp	al,11h
	jne	invalid_argument
	mov	cl,ah
      label_size_ok:
	mov	eax,edi
	xor	edx,edx
	sub	eax,dword [org_origin]
	sbb	edx,dword [org_origin+4]
	mov	ebp,[org_registers]
	cmp	byte [esi],80h
	je	get_free_label_value
	mov	ch,[labels_type]
	push	[org_symbol]
	pop	[address_symbol]
	cmp	[virtual_data],0
	jne	make_free_label
	or	byte [ebx+9],1
	xchg	eax,[ebx]
	xchg	edx,[ebx+4]
	sub	eax,[ebx]
	sbb	edx,[ebx+4]
	mov	dword [adjustment],eax
	mov	dword [adjustment+4],edx
	or	eax,edx
	setne	ah
	jmp	finish_label
      get_free_label_value:
	inc	esi
	lods	byte [esi]
	cmp	al,'('
	jne	invalid_argument
	push	dword [ebx+8]
	push	ebx ecx
	and	byte [ebx+8],not 1
	cmp	byte [esi],'.'
	je	invalid_value
	call	get_address_value
	or	bh,bh
	setnz	ch
	xchg	ch,cl
	mov	bp,cx
	shl	ebp,16
	xchg	bl,bh
	mov	bp,bx
	pop	ecx ebx
	pop	dword [ebx+8]
	mov	ch,[value_type]
	or	ch,ch
	jz	make_free_label
	cmp	ch,4
	je	make_free_label
	cmp	ch,2
	jne	invalid_use_of_symbol
      make_free_label:
	and	byte [ebx+9],not 1
	cmp	eax,[ebx]
	mov	[ebx],eax
	setne	ah
	cmp	edx,[ebx+4]
	mov	[ebx+4],edx
	setne	al
	or	ah,al
	jmp	finish_label
      finish_label:
	cmp	cl,[ebx+10]
	mov	[ebx+10],cl
	setne	al
	or	ah,al
	cmp	ch,[ebx+11]
	mov	[ebx+11],ch
	setne	al
	or	ah,al
	cmp	ebp,[ebx+12]
	mov	[ebx+12],ebp
	setne	al
	or	ah,al
	or	ch,ch
	jz	free_label_symbol_ok
	mov	edx,[address_symbol]
	cmp	edx,[ebx+20]
	mov	[ebx+20],edx
	setne	al
	or	ah,al
      free_label_symbol_ok:
	mov	cx,[current_pass]
	xchg	[ebx+16],cx
	mov	edx,[current_line]
	mov	[ebx+28],edx
	and	byte [ebx+8],not 2
	test	byte [ebx+8],1
	jz	new_free_label
	cmp	cx,[ebx+16]
	je	symbol_already_defined
	inc	cx
	sub	cx,[ebx+16]
	setnz	al
	or	ah,al
	jz	instruction_assembled
	test	byte [ebx+8],8
	jz	instruction_assembled
	mov	cx,[current_pass]
	cmp	cx,[ebx+18]
	jne	instruction_assembled
	or	[next_pass_needed],-1
	jmp	instruction_assembled
      new_free_label:
	or	byte [ebx+8],1
	jmp	instruction_assembled
load_directive:
	lods	byte [esi]
	cmp	al,2
	jne	invalid_argument
	lods	dword [esi]
	cmp	eax,0Fh
	jb	invalid_use_of_symbol
	je	reserved_word_used_as_symbol
	inc	esi
	push	eax
	mov	al,1
	cmp	byte [esi],11h
	jne	load_size_ok
	lods	byte [esi]
	lods	byte [esi]
      load_size_ok:
	cmp	al,8
	ja	invalid_value
	mov	[operand_size],al
	mov	dword [value],0
	mov	dword [value+4],0
	lods	word [esi]
	cmp	ax,82h+'(' shl 8
	jne	invalid_argument
      load_from_code:
	cmp	byte [esi],'.'
	je	invalid_value
	call	get_qword_value
	call	calculate_relative_offset
	push	esi edi
	cmp	[next_pass_needed],0
	jne	load_address_type_ok
	cmp	[value_type],0
	jne	invalid_use_of_symbol
      load_address_type_ok:
	cmp	edx,-1
	jne	bad_load_address
	neg	eax
	mov	esi,edi
	sub	esi,eax
	jc	bad_load_address
	cmp	esi,[org_start]
	jb	bad_load_address
	mov	edi,value

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲日韩在线| 国产精品一区二区果冻传媒| 免费欧美日韩国产三级电影| 成人免费观看视频| 精品日韩在线一区| 亚洲永久精品大片| www.亚洲在线| 欧美一级二级在线观看| 亚洲欧美日韩在线| 国产精品亚洲视频| 欧美r级在线观看| 亚洲国产一区二区在线播放| zzijzzij亚洲日本少妇熟睡| 久久婷婷成人综合色| 首页国产欧美日韩丝袜| 97se亚洲国产综合在线| 久久综合狠狠综合| 久久激情五月婷婷| 欧美日韩精品免费观看视频| 亚洲欧洲色图综合| 国产成人鲁色资源国产91色综| 日韩欧美www| 日韩精品亚洲一区二区三区免费| 91久久精品网| 一区二区三区自拍| 99久久综合色| 中文字幕五月欧美| 91日韩一区二区三区| 亚洲国产精品ⅴa在线观看| 国产老妇另类xxxxx| 亚洲精品一区二区三区蜜桃下载 | 中文在线一区二区| 国产呦精品一区二区三区网站| 91精品国产综合久久久蜜臀粉嫩| 亚洲成人福利片| 欧美日韩国产免费一区二区 | 欧美日韩在线播| 亚洲无人区一区| 欧美美女bb生活片| 亚洲国产精品自拍| 欧美电影影音先锋| 老司机精品视频线观看86| 日韩你懂的在线播放| 另类调教123区| 精品国产99国产精品| 国产精品伊人色| 一区二区中文字幕在线| 在线看日韩精品电影| 日本强好片久久久久久aaa| 欧美va亚洲va| www.成人网.com| 午夜一区二区三区视频| 日韩免费看的电影| 国产电影一区在线| 亚洲自拍欧美精品| 日韩欧美一区在线观看| 国产精品一区在线观看乱码 | 国产精品久久久久影院老司 | 一区二区三区在线影院| 欧美日本视频在线| 国产精品自拍在线| 亚洲视频图片小说| 在线综合+亚洲+欧美中文字幕| 国产麻豆视频一区二区| 成人免费一区二区三区在线观看| 欧美性猛交xxxxxxxx| 精品一区二区成人精品| 中文字幕不卡三区| 在线不卡a资源高清| 国产精品99久| 亚洲午夜在线视频| 国产视频一区在线播放| 欧美亚一区二区| 国产大陆亚洲精品国产| 亚洲bdsm女犯bdsm网站| 中文字幕av不卡| 日韩一区二区三区四区五区六区| 国产成人在线免费| 日本欧美一区二区在线观看| 国产精品人成在线观看免费| 欧美另类z0zxhd电影| 丁香六月久久综合狠狠色| 日韩成人免费在线| 一区在线观看免费| 久久综合九色欧美综合狠狠| 欧美色网站导航| 波多野结衣亚洲| 国产精品香蕉一区二区三区| 日韩精品每日更新| 亚洲一区二区偷拍精品| 国产精品成人在线观看| 精品卡一卡二卡三卡四在线| 欧美三片在线视频观看| eeuss鲁片一区二区三区在线观看| 久久99精品网久久| 日本不卡视频一二三区| 亚洲精品日韩综合观看成人91| 欧美激情一区二区在线| 日韩久久久精品| 欧美综合色免费| av一区二区三区四区| 成人教育av在线| 粉嫩av亚洲一区二区图片| 国产一区二区三区香蕉| 久久精品999| 韩国v欧美v亚洲v日本v| 激情综合一区二区三区| 久久97超碰色| 裸体歌舞表演一区二区| 蜜桃av噜噜一区二区三区小说| 天堂精品中文字幕在线| 日韩在线一二三区| 天天影视网天天综合色在线播放| 一区二区在线观看免费视频播放| 国产精品成人网| **欧美大码日韩| 亚洲精品一卡二卡| 亚洲精品欧美激情| 亚洲一区二区欧美日韩 | 国产又黄又大久久| 国内精品视频一区二区三区八戒| 激情综合一区二区三区| 国产精品综合视频| 成人精品免费网站| 97久久精品人人做人人爽50路 | 亚洲美女电影在线| 亚洲一区二区三区视频在线播放| 亚洲精品久久久久久国产精华液| 一区二区三区欧美激情| 亚洲线精品一区二区三区八戒| 亚洲大片精品永久免费| 日本va欧美va精品发布| 国产综合一区二区| 高清不卡一区二区在线| 91福利精品视频| 91精品国产全国免费观看| 精品精品欲导航| 国产精品情趣视频| 一区二区三区中文在线观看| 日韩主播视频在线| 激情欧美日韩一区二区| 成人丝袜视频网| 91精品办公室少妇高潮对白| 91.com视频| 久久色.com| 亚洲视频免费看| 日本美女一区二区三区| 国产成人h网站| 欧美色视频在线观看| 久久影视一区二区| 亚洲精品乱码久久久久久久久| 天堂av在线一区| 成人动漫一区二区三区| 欧美日本一区二区| 国产精品三级在线观看| 午夜免费欧美电影| 风间由美一区二区三区在线观看| 在线这里只有精品| 精品国产免费人成电影在线观看四季| 国产精品成人免费| 久久99国产精品久久99果冻传媒| 色综合激情五月| 2024国产精品| 亚洲aⅴ怡春院| 97精品国产露脸对白| 2023国产精华国产精品| 一区二区三区四区蜜桃| 国产精品综合久久| 日韩一区二区三区在线| 亚洲一区二区三区小说| 成人禁用看黄a在线| 亚洲精品在线观看网站| 午夜久久久久久久久| 色综合久久久久网| 久久精品视频在线免费观看| 天天做天天摸天天爽国产一区| 99久久精品情趣| 久久久午夜精品理论片中文字幕| 日韩av一区二区在线影视| 91浏览器入口在线观看| 国产日本欧美一区二区| 久久国产尿小便嘘嘘| 91麻豆精品国产91久久久| 亚洲精品成人少妇| 9久草视频在线视频精品| 久久精品视频在线看| 狠狠色狠狠色综合日日91app| 欧美剧在线免费观看网站| 亚洲最新视频在线观看| 91色porny在线视频| 亚洲视频一区在线观看| 91免费版在线| 日韩美女啊v在线免费观看| 成人激情av网| 亚洲三级理论片| 日本道精品一区二区三区 | 久久久久久**毛片大全| 国内成人免费视频| 久久看人人爽人人| 国产寡妇亲子伦一区二区|