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

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

?? ssdeclar.asm

?? 這是DOS系統的源代碼,匯編寫的,值得看看,對開發操作系統的人員有價值
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
	inc	ax
	jz	OMError
	and	ax,not 1		;Round up to next word
;Make sure it's not too big
	mov	cx,ax
	add	ax,[bp-SsCom].COM_oValCur	;Get oValue
        jc	OMError
	call	ChkComSize
 	jc	OkRet				;Return with CY set if error
	add	bx,[bp-SsCom].COM_bdType.BD_pb	;bx = pTypCur
	xchg	ax,cx
	ret

ExtendType:
;Grow the COMMON type table
;
;Inputs:
;	bx = new length
;	dx = oTyp
;Outputs:
;	CY set if failed (error reported)
;Preserves:
;	bx,cx,dx

	push	dx
	push	cx
	push	bx
	inc	bx
	inc	bx				;Need at least one more word
	cmp	dx,ET_FS			; Record? Fixed?
	.erre	ET_FS EQ ET_MAX 		
	jb	SmallTyp			
	inc	bx				; FS have cbFixed
	inc	bx				;Records have oRS too
SmallTyp:
.errnz	COM_bdType - SsCom
	push	bp				;Owner
	push	bx				;New size
	call	BdRealloc			;Extend COMMON type table
	call	OMEcheck			;See if it worked
	pop	bx				;oTypCur
	pop	cx
	pop	dx
	ret

	page
;***
;Ss_ReDim - Scan opReDim
;
;Purpose:
;
;   Scan opReDim.
;
;   The opReDim opcode comes after a AIdLd opcode.  This scan
;   routine receives a scan stack entry describing the referenced
;   variable as follows:
;
;		oTx	    Always immediately preceeding point
;		oType	    <-- (Top of stack)
;
;   Tasks include:
;
;	1. Bind to executor
;	2. Coerce remaining arguments to integers
;	3. if argument is the first reference to an array
;	   then set whether the array is $STATIC or $DYNAMIC
;	4. Test for REDIMing a $STATIC array error.
;
;Input:
;
;   ax	  = executor
;   bx	  = 2 * opcode
;   es:si = pcode source address
;   es:di = pcode emission address
;
;Output:
;
;   si, di updated
;
;Modifies:
;
;Exceptions:
;
;   Ss_Error
;
;******************************************************************

	page

SsProc	ReDim
	STOSWTX 			;Emit the executor
	dec	si
	dec	si			;Report errors on preceding AIdLd

	pop	ax			;Discard oType of array
	DbAssertTst ax,z,ST_Array?,SCAN,<Ss_ReDim: Non-array>
	pop	bx			;BX = oTx after exAIdLd
	call	MakeArrayRef		;Convert to exAdRf

	    mov     bx,PTRTX[si-2]		;BX = oVar
	    add     bx,[mrsCur.MRS_bdVar.BD_pb] ;BX = pVar

	test	byte ptr [bx].VAR_fStat,FV_STATIC ;Is this a static array?
	jnz	ReDimStatic		;REDIM stmt. $Static arrays not allowed.
ReDimX:
	inc	si
	inc	si
	jmp	[ScanRet]		;Scan next opcode

ReDimStatic:
	mov	ax,MSG_OBA		;Array already dimensioned
	call	SsError
	jmp	ReDimX

	page
;SetArrayType
;
;Purpose:
;
;   Routine to set FV_STATIC and FV_STATICSET in an array var entry.
;
;   This routine sets FV_STATIC to the value in f_StaticCalc iff
;   FV_STATICSET is FALSE.  It then ensures that FV_STATICSET is TRUE.
;
;Input:
;
;   f_StaticCalc = TRUE if type is $STATIC, else FALSE
;   bx		 = pVariable for an array variable
;
;Outputs:
;
;   CY set if first reference
;
;Preserves:
;
;   all


	public	SetArrayType
SetArrayType:
	or	[SsFlags],SSF_HaveDimmed	;Had a DIM: no OPTION BASE now
SetArrayTypeNoDim:
	DbChk	pVar,bx 			;Verify that this is a variable
SetArrayTypePublic:
	TestM	[bx].VAR_flags,FV_STATICSET	
						;Determine if the $STATIC flag
						; is already set for this array.
	jnz	SetArrayTypeX			;Already set - nothing to do.

	;Note:	In EB, all declarations at the module
	;level are shared and all at the the procedure level
	;are not therefore there need not be two checks.

	    ;Don't set flags for shared variables while scanning proc

	    TestM   [bx].VAR_flags,FVSHARED	; Shared variable?
	    jz	    SetStatic			;If not, set bit
	    test    byte ptr [grs.GRS_oRsCur+1],80H ;Scanning module level?
	    jnz     SetArrayTypeX		;If not, don't set bit
SetStatic:

	.errnz	FALSE
	cmp	[f_StaticCalc],FALSE
	je	@F				;$DYNAMIC, leave FV_STATIC clear

	; Array is dynamic if it lives on the procedure frame

	    TestM   [bx].VAR_flags,FRAME	; In the stack?
	    jz	    @F				; Brif array is on frame
	or	byte ptr [bx].VAR_fStat,FV_STATIC	;Set $STATIC
@@:
	or	WORD PTR [bx].VAR_Flags,FV_STATICSET	; Indicate FV_STATIC is set.
	stc
SetArrayTypeX:
	ret



sEnd	SCAN


sBegin	CP

assumes cs, CP

;***
;ChainCommon - prepare blank common for chaining
;
;Purpose:
;
;   Module type tables will be destroyed by chaining, so the
;   COMMON type table must stop referring to it.  Instead, user
;   type entries are replaced with a flag and the size of the type.
;   Type checking against the chained-to program will only compare
;   record sizes.
;
;Preserves:
;
;   dx
;
;Modifies:
;
;   si
;
;***********************************************************************
;
cProc	ChainCommon,<PUBLIC,FAR,NODATA>,<SI>
cBegin
	mov	si,[grs.GRS_bdtComBlk.BD_pb]	;pBlankCommon
	DbAssertRel [si].COM_ogNam,z,NULL,CP,<ChainCommon: 1st block in bdtComBlk is not for blank COMMON> 
	mov	cx,[si].COM_bdType.BD_cbLogical	;Size of type table
	mov	si,[si].COM_bdType.BD_pb	;pTypeTable
	add	cx,si			;Ending address
LookForRecord:
	cmp	cx,si			;Reach end?
	jbe	CommonReady
	lodsw
	cmp	ah,cDimsFlag+StaticFlag	;Static array?
	jz	SkipStatic
	cmp	ah,cDimsFlag		;Array count?
	jnz	Element
GetElement:
	lodsw				;Skip count, do element
Element:
	cmp	ah,LengthFlag		;Already converted?
	jz	SkipOver
.errnz	ET_MAX - ET_FS			; ensure FS is max type
	cmp	ax,ET_MAX		;Record type or fixed length string?
	jb	LookForRecord		; If not, look at next
;Have a record or fixed length string
	xchg	bx,ax			;Save oTyp in bx
	lodsw				;Get oRS
	je	LookForRecord		; brif fixed length string
	xchg	bx,ax			;oTyp to ax, oRS to bx
	call	CbTypOTypOMrs		;Get its size
	mov	byte ptr [si-3],LengthFlag	;Flag as size-only entry
	mov	[si-2],ax
	jmp	LookForRecord

SkipStatic:
	cbw				;ah=0
	shl	ax,1
	shl	ax,1			;Size of dimensions
	add	ax,(size AD-1)		;Skip AD
	add	si,ax			;Point to element
	jmp	GetElement

SkipOver:
	lodsw				;Skip over length
	jmp	LookForRecord

CommonReady:
cEnd

;***
;SsTrimCommon
;
;Purpose:
;
;   After chaining, blank COMMON could be larger than actually used.
;   This routine trims it back, releasing any owners.  The value table
;   is not actually shortened (it could be in a UL), but the type table
;   is, and that's what counts.
;
;   THIS ROUTINE MUST NOT BE CALLED IF SCAN ERROR OCCURED
;
;Inputs:
;
;   [oTypComMax] = max size of type table
;   [oValComMax] = max size of value table
;
;***********************************************************************
	public	SsTrimCommon

SsTrimCommon:
	push	si
	push	di
	mov	si,[grs.GRS_bdtComBlk.BD_pb]	;pBlankCommon
	cmp	[si].COM_bdValue.BD_cbPhysical,UNDEFINED ; QuickLib common?
	jz	SharedQLB			; brif so -- don't delete
						; or zero-fill common
	mov	cx,[si].COM_bdType.BD_cbLogical
	mov	bx,[si].COM_bdValue.BD_pb	
	add	bx,[oValComMax]
	mov	si,[si].COM_bdType.BD_pb	;Pointer to type table
	add	cx,si				;Point last+1 of type table
	add	si,[oTypComMax]
	call	DelCommon
	mov	si,[grs.GRS_bdtComBlk.BD_pb]	;pBlankCommon
;Zero fill trimmed part of value table
	mov	di,[oValComMax]
	push	ds
	pop	es				;Make sure es=ds
	mov	cx,[si].COM_bdValue.BD_cbLogical
	sub	cx,di				;Amount to zero fill


	add	di,[si].COM_bdValue.BD_pb
	shr	cx,1
	xor	ax,ax
rep	stosw

SharedQLB:					
	mov	ax,[oTypComMax] 		
	mov	[si].COM_bdType.BD_cbLogical,ax ; Trim the type table

	pop	di
	pop	si
	ret


;***
;SsAdjustCommon
;
;Purpose:
;
;   Called whenever a QBI-specific COMMON value table is moved (by heap
;   management code).  Updates the backpointers to all SD's and string
;   array descriptors found in the value table for the given COMMON block.
;
;Inputs:
;
;   bx = pointer to COM_bdType field
;   di = adjustment factor to be passed on runtime
;	    if di=0, delete all SD's and arrays
;
;***********************************************************************

DelCommon:
;si = starting point in type table
;bx = starting point in value table
;cx = ending point in type table
	xor	di,di
	push	si
	jmp	short TestEndCommon

	public	SsAdjustCommon
SsAdjustCommon:
	push	si
	mov	cx,[bx].BD_cbLogical
	mov	si,[bx].BD_pb		;Pointer to type table
	mov	bx,[bx-COM_bdType].COM_bdValue.BD_pb
	add	cx,si			;Point last+1 of type table
TestEndCommon:
	cmp	si,cx			;End of type table?
	jae	AdjustX
	lodsw				;Get type table entry
	cmp	ah,cDimsFlag+StaticFlag	;Static array?
	jz	AdjustStatic
	cmp	ah,cDimsFlag		;Array?
	jz	AdjustArray
	cmp	ax,ET_MAX		; Record ?
	ja	AdjustRecord		; Brif yes
	.erre	ET_MAX LE 0100h 	; Assure we can use AL
	cmp	al,ET_SD		; String type?
	jb	NotRecord		; Brif not
	    .erre   ET_FS EQ ET_SD+1	; Assure JA is sufficient
	    .erre   ET_FS EQ ET_MAX	; Assure no new types added
	    ja	    RecWithLen		; Brif fixed string

	call	AdjustOneSD
	jmp	TestEndCommon

AdjustRecord:				
	test	ah,LengthFlag		;Has record been crunched to length?
	jnz	RecWithLen
	push	bx
	mov	bx,[si]			;Get oMRS
	inc	si
	inc	si
	call	CbTypOTypOMrs
	pop	bx
	jmp	short AddCbTyp

AdjustX:
	pop	si
	ret

NotRecord:
	call	CbTypOTyp		;Get length of item
AddCbTyp:
	inc	ax			
	and	al,not 1		;Round even
	add	bx,ax
	jmp	TestEndCommon

RecWithLen:
	lodsw				;Get length of record or string
	jmp	AddCbTyp

AdjustStatic:
	cmp	[si].AD_fhd.FHD_hData,0	;Any space in array?
	jz	AdjustX			;In the middle of building an entry


	add	[si].AD_fhd.FHD_oData,di;Adjust pointer to array data
	cbw				;ah=0
	shl	ax,1
	shl	ax,1			;Size of dimensions
	add	ax,(size AD-1)		;Skip header
	xchg	dx,ax			;Save in dx
	mov	ax,[si].AD_fhd.FHD_cPara;Get size of array
	add	si,dx			;Point to element
	cmp	word ptr [si],ET_SD	;String array?
	jz	AdjSdStatic
	add	bx,ax
EatOTyp:
	lodsw				;Get oTyp
	cmp	ax,ET_FS		
	    .erre   ET_FS EQ ET_MAX	
	jb	TestEndCommon		
	lodsw				;Skip over oMRS/length
	jmp	TestEndCommon

AdjustArray:
	push	cx
	push	bx
	or	di,di			;Delete the array?
	jz	DelArray
	lodsw				;Get oTyp of array
	cmp	ax,ET_SD		;Array of strings?
	jne	NoAdjArray
UpdStrings:				
	push	bx			;First arg for runtime
	push	di			;2nd arg for runtime
	call	B$IAdUpd		;Have runtime do update
AddCbArray:
	pop	bx
	pop	cx
	add	bx,ComArraySize
	jmp	TestEndCommon

DelArray:
	push	bx			;First arg for runtime
	call	B$IErase		;ERASE array (no heap movement varient)
	lodsw				;Get oTyp
NoAdjArray:				
	cmp	ax,ET_FS		
	    .erre   ET_FS EQ ET_MAX	
	jb	AddCbArray		
	lodsw				;Skip over oMRS/length
	jmp	AddCbArray

AdjSdStatic:
;ax has size of array
	shr	ax,1
	shr	ax,1			;ax = no. of 4-byte SD's
	push	cx
	xchg	cx,ax			;No. of elements to cx
AdjustEachSD:
	call	AdjustOneSD
	loop	AdjustEachSD
	pop	cx
	jmp	EatOTyp

AdjustOneSD:
	push	cx
	push	bx
	push	bx			;First arg for runtime
	or	di,di
	jz	DelSD
	push	di			;2nd arg for runtime
	call	B$ISdUpd
AddCbSD:
	pop	bx
	pop	cx
	add	bx,4			;Size of SD in value table
	ret

DelSD:
	call	B$STDL			;Delete the SD
	jmp	AddCbSD

sEnd	CP

end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产普通话99| 久久久亚洲欧洲日产国码αv| 免费高清在线一区| 日韩久久一区二区| 久久这里只有精品视频网| 91久久久免费一区二区| 国产99精品国产| 日韩成人伦理电影在线观看| 亚洲私人影院在线观看| 国产三级精品三级在线专区| 日韩一级视频免费观看在线| 91影视在线播放| 国产+成+人+亚洲欧洲自线| 久久国产精品99久久久久久老狼| 一区二区国产盗摄色噜噜| 欧美激情一区二区在线| 精品国产伦一区二区三区观看体验| 欧美午夜免费电影| 91久久精品一区二区三| 北条麻妃国产九九精品视频| 国产在线一区观看| 麻豆国产91在线播放| 国产欧美一区在线| 日韩一级免费一区| 欧美日韩成人高清| 欧美日韩一卡二卡| 色菇凉天天综合网| 色综合久久88色综合天天免费| 国产成人aaa| 国产福利91精品一区二区三区| 国内外成人在线视频| 免费观看成人av| 久久成人精品无人区| 日日夜夜免费精品视频| 肉丝袜脚交视频一区二区| 香蕉加勒比综合久久| 亚洲国产日日夜夜| 亚洲成人动漫av| 天天爽夜夜爽夜夜爽精品视频 | 国产精品的网站| 久久精品一区二区三区不卡| 久久久99精品久久| 亚洲一区二区三区国产| 亚洲柠檬福利资源导航| 亚洲综合激情网| 五月激情综合婷婷| 日韩高清一区在线| 久久国产精品色| 国产在线视频精品一区| 国产高清视频一区| 成人av网站免费观看| 色综合 综合色| 欧美探花视频资源| 欧美一区二区播放| 精品国产制服丝袜高跟| 欧美国产一区视频在线观看| 国产精品对白交换视频| 亚洲精品美腿丝袜| 日韩精品欧美精品| 国产乱码精品一区二区三区av | 欧美日韩国产欧美日美国产精品| 欧美精品一二三四| 亚洲精品一区二区三区精华液| 国产午夜精品理论片a级大结局| 国产精品久久久久久久久久久免费看 | av毛片久久久久**hd| 欧美四级电影网| 精品国产一二三区| 亚洲欧美在线视频| 人人精品人人爱| 国产ts人妖一区二区| 色屁屁一区二区| 欧美刺激午夜性久久久久久久| 国产无人区一区二区三区| 18成人在线观看| 免费欧美高清视频| 99在线视频精品| 欧美日韩dvd在线观看| 久久久精品国产99久久精品芒果| 亚洲精品视频一区| 久久丁香综合五月国产三级网站 | 91无套直看片红桃| 欧美一区二区三区婷婷月色 | 奇米色777欧美一区二区| 国产91精品久久久久久久网曝门| 色狠狠一区二区三区香蕉| 欧美变态tickling挠脚心| 日韩一区欧美一区| 久久99精品久久久久久国产越南| 91丨porny丨国产| 精品理论电影在线| 亚洲精品国产精品乱码不99| 精东粉嫩av免费一区二区三区| 色av成人天堂桃色av| 久久久午夜精品理论片中文字幕| 亚洲一区二区在线观看视频 | 精品国产1区2区3区| 一区二区三区美女视频| 狠狠色丁香婷综合久久| 欧美唯美清纯偷拍| 国产精品素人视频| 蜜臀精品一区二区三区在线观看| 色婷婷国产精品| 中文字幕高清一区| 精品一区二区在线视频| 欧美精品一二三四| 亚洲综合色噜噜狠狠| 国产69精品久久久久毛片| 日韩欧美中文一区| 香蕉影视欧美成人| 蜜臀av亚洲一区中文字幕| 91啦中文在线观看| 国产精品美女一区二区三区| 日韩综合小视频| 伊人夜夜躁av伊人久久| 日本韩国一区二区三区| 亚洲午夜免费视频| 欧美一级淫片007| 亚洲自拍偷拍麻豆| 国产激情精品久久久第一区二区| 日本不卡中文字幕| 欧洲一区二区三区在线| 一区二区国产视频| 久久精品亚洲一区二区三区浴池| 欧美日韩亚洲综合一区二区三区| 国产资源在线一区| 亚洲欧美日韩小说| 欧美视频一二三区| 欧美性受xxxx黑人xyx| 91免费观看在线| 日本道色综合久久| 欧美三级日本三级少妇99| 在线观看成人小视频| 在线免费观看不卡av| 国产精品中文有码| 福利电影一区二区三区| 国内外精品视频| 99久久精品久久久久久清纯| av资源站一区| 欧美三片在线视频观看| 5858s免费视频成人| 欧美日产在线观看| 欧美一区二区福利视频| 欧美日韩一区精品| 91麻豆精品一区二区三区| 国产精品亚洲第一| 国产老女人精品毛片久久| 美女一区二区三区| 日韩精品成人一区二区三区| 国产一区二区在线看| 一本到高清视频免费精品| 久久女同精品一区二区| 亚洲视频在线观看三级| √…a在线天堂一区| 亚洲麻豆国产自偷在线| 亚洲国产成人91porn| 亚洲综合色在线| 亚洲一区二区影院| 日韩激情在线观看| 国产成人在线视频免费播放| 成人晚上爱看视频| 欧美精品在线视频| 日韩欧美黄色影院| 中文字幕一区二区三区精华液| 亚洲男人天堂av| 国产曰批免费观看久久久| 一本大道久久精品懂色aⅴ| 欧美一二三在线| 一区二区三区在线免费播放| 免费久久99精品国产| 日本道在线观看一区二区| 日韩视频一区二区在线观看| 亚洲激情自拍视频| 高清成人在线观看| 日韩免费成人网| 午夜精品在线看| 在线精品国精品国产尤物884a| 国产婷婷一区二区| 视频在线观看一区| 欧美日韩国产精选| www激情久久| 亚洲成人动漫av| 日韩欧美综合一区| 国产一区二区91| 亚洲欧洲精品一区二区三区不卡 | 精品黑人一区二区三区久久| 美女视频黄a大片欧美| 91亚洲精品乱码久久久久久蜜桃 | 欧美大度的电影原声| 免费观看91视频大全| 欧美成人乱码一区二区三区| 欧美bbbbb| 国产亚洲成年网址在线观看| 国产成人综合网站| 国产精品久久久久久久久久久免费看| kk眼镜猥琐国模调教系列一区二区| 中文字幕第一区二区| 色成年激情久久综合| 日日夜夜免费精品视频| 日韩视频在线一区二区|