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

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

?? nlx.lisp

?? 開源跨平臺Lisp編譯器
?? LISP
字號:
;;;; the definition of non-local exit for the x86 VM;;;; This software is part of the SBCL system. See the README file for;;;; more information.;;;;;;;; This software is derived from the CMU CL system, which was;;;; written at Carnegie Mellon University and released into the;;;; public domain. The software is in the public domain and is;;;; provided with absolutely no warranty. See the COPYING and CREDITS;;;; files for more information.(in-package "SB!VM");;; Make an environment-live stack TN for saving the SP for NLX entry.(!def-vm-support-routine make-nlx-sp-tn (env)  (physenv-live-tn   (make-representation-tn *fixnum-primitive-type* any-reg-sc-number)   env));;; Make a TN for the argument count passing location for a non-local entry.(!def-vm-support-routine make-nlx-entry-arg-start-location ()  (make-wired-tn *fixnum-primitive-type* any-reg-sc-number ebx-offset))(defun catch-block-ea (tn)  (aver (sc-is tn catch-block))  (make-ea :dword :base ebp-tn           :disp (frame-byte-offset (+ -1 (tn-offset tn) catch-block-size))));;;; Save and restore dynamic environment.;;;;;;;; These VOPs are used in the reentered function to restore the;;;; appropriate dynamic environment. Currently we only save the;;;; Current-Catch and the alien stack pointer. (Before sbcl-0.7.0,;;;; when there were IR1 and byte interpreters, we had to save;;;; the interpreter "eval stack" too.);;;;;;;; We don't need to save/restore the current UNWIND-PROTECT, since;;;; UNWIND-PROTECTs are implicitly processed during unwinding.;;;;;;;; We don't need to save the BSP, because that is handled automatically.(define-vop (save-dynamic-state)  (:results (catch :scs (descriptor-reg))            (alien-stack :scs (descriptor-reg)))  (:generator 13    (load-tl-symbol-value catch *current-catch-block*)    (load-tl-symbol-value alien-stack *alien-stack*)))(define-vop (restore-dynamic-state)  (:args (catch :scs (descriptor-reg))         (alien-stack :scs (descriptor-reg)))  #!+sb-thread (:temporary (:sc unsigned-reg) temp)  (:generator 10    (store-tl-symbol-value catch *current-catch-block* temp)    (store-tl-symbol-value alien-stack *alien-stack* temp)))(define-vop (current-stack-pointer)  (:results (res :scs (any-reg control-stack)))  (:generator 1    (move res esp-tn)))(define-vop (current-binding-pointer)  (:results (res :scs (any-reg descriptor-reg)))  (:generator 1    (load-binding-stack-pointer res)));;;; unwind block hackery;;; Compute the address of the catch block from its TN, then store into the;;; block the current Fp, Env, Unwind-Protect, and the entry PC.(define-vop (make-unwind-block)  (:args (tn))  (:info entry-label)  (:temporary (:sc unsigned-reg) temp)  (:results (block :scs (any-reg)))  (:generator 22    (inst lea block (catch-block-ea tn))    (load-tl-symbol-value temp *current-unwind-protect-block*)    (storew temp block unwind-block-current-uwp-slot)    (storew ebp-tn block unwind-block-current-cont-slot)    (storew (make-fixup nil :code-object entry-label)            block catch-block-entry-pc-slot)    #!+win32    (progn      (inst mov temp (make-ea :dword :disp 0) :fs)      (storew temp block unwind-block-next-seh-frame-slot))));;; like MAKE-UNWIND-BLOCK, except that we also store in the specified;;; tag, and link the block into the CURRENT-CATCH list(define-vop (make-catch-block)  (:args (tn)         (tag :scs (any-reg descriptor-reg) :to (:result 1)))  (:info entry-label)  (:results (block :scs (any-reg)))  (:temporary (:sc descriptor-reg) temp)  (:generator 44    (inst lea block (catch-block-ea tn))    (load-tl-symbol-value temp *current-unwind-protect-block*)    (storew temp block  unwind-block-current-uwp-slot)    (storew ebp-tn block  unwind-block-current-cont-slot)    (storew (make-fixup nil :code-object entry-label)            block catch-block-entry-pc-slot)    #!+win32    (progn      (inst mov temp (make-ea :dword :disp 0) :fs)      (storew temp block unwind-block-next-seh-frame-slot))    (storew tag block catch-block-tag-slot)    (load-tl-symbol-value temp *current-catch-block*)    (storew temp block catch-block-previous-catch-slot)    (store-tl-symbol-value block *current-catch-block* temp)));;; Just set the current unwind-protect to TN's address. This instantiates an;;; unwind block as an unwind-protect.(define-vop (set-unwind-protect)  (:args (tn))  (:temporary (:sc unsigned-reg) new-uwp #!+sb-thread tls #!+win32 seh-frame)  (:generator 7    (inst lea new-uwp (catch-block-ea tn))    #!+win32    (progn      (storew (make-fixup 'uwp-seh-handler :assembly-routine)              new-uwp unwind-block-seh-frame-handler-slot)      (inst lea seh-frame            (make-ea-for-object-slot new-uwp                                     unwind-block-next-seh-frame-slot 0))      (inst mov (make-ea :dword :disp 0) seh-frame :fs))    (store-tl-symbol-value new-uwp *current-unwind-protect-block* tls)))(define-vop (unlink-catch-block)  (:temporary (:sc unsigned-reg) #!+sb-thread tls block)  (:policy :fast-safe)  (:translate %catch-breakup)  (:generator 17    (load-tl-symbol-value block *current-catch-block*)    (loadw block block catch-block-previous-catch-slot)    (store-tl-symbol-value block *current-catch-block* tls)))(define-vop (unlink-unwind-protect)    ;; NOTE: When we have both #!+sb-thread and #!+win32, we only need one temp    (:temporary (:sc unsigned-reg) block #!+sb-thread tls #!+win32 seh-frame)  (:policy :fast-safe)  (:translate %unwind-protect-breakup)  (:generator 17    (load-tl-symbol-value block *current-unwind-protect-block*)    #!+win32    (progn      (loadw seh-frame block unwind-block-next-seh-frame-slot)      (inst mov (make-ea :dword :disp 0) seh-frame :fs))    (loadw block block unwind-block-current-uwp-slot)    (store-tl-symbol-value block *current-unwind-protect-block* tls)));;;; NLX entry VOPs(define-vop (nlx-entry)  ;; Note: we can't list an sc-restriction, 'cause any load vops would  ;; be inserted before the return-pc label.  (:args (sp)         (start)         (count))  (:results (values :more t))  (:temporary (:sc descriptor-reg) move-temp)  (:info label nvals)  (:save-p :force-to-stack)  (:vop-var vop)  (:generator 30    (emit-label label)    (note-this-location vop :non-local-entry)    (cond ((zerop nvals))          ((= nvals 1)           (let ((no-values (gen-label)))             (inst mov (tn-ref-tn values) nil-value)             (inst jecxz no-values)             (loadw (tn-ref-tn values) start -1)             (emit-label no-values)))          (t           (collect ((defaults))             (do ((i 0 (1+ i))                  (tn-ref values (tn-ref-across tn-ref)))                 ((null tn-ref))               (let ((default-lab (gen-label))                     (tn (tn-ref-tn tn-ref)))                 (defaults (cons default-lab tn))                 (inst cmp count (fixnumize i))                 (inst jmp :le default-lab)                 (sc-case tn                   ((descriptor-reg any-reg)                    (loadw tn start (frame-word-offset i)))                   ((control-stack)                    (loadw move-temp start (frame-word-offset i))                    (inst mov tn move-temp)))))             (let ((defaulting-done (gen-label)))               (emit-label defaulting-done)               (assemble (*elsewhere*)                 (dolist (def (defaults))                   (emit-label (car def))                   (inst mov (cdr def) nil-value))                 (inst jmp defaulting-done))))))    (inst mov esp-tn sp)))(define-vop (nlx-entry-multiple)  (:args (top)         (source)         (count :target ecx))  ;; Again, no SC restrictions for the args, 'cause the loading would  ;; happen before the entry label.  (:info label)  (:temporary (:sc unsigned-reg :offset ecx-offset :from (:argument 2)) ecx)  (:temporary (:sc unsigned-reg :offset esi-offset) esi)  (:temporary (:sc unsigned-reg :offset edi-offset) edi)  (:results (result :scs (any-reg) :from (:argument 0))            (num :scs (any-reg control-stack)))  (:save-p :force-to-stack)  (:vop-var vop)  (:generator 30    (emit-label label)    (note-this-location vop :non-local-entry)    (inst lea esi (make-ea :dword :base source :disp (- n-word-bytes)))    ;; The 'top' arg contains the %esp value saved at the time the    ;; catch block was created and points to where the thrown values    ;; should sit.    (move edi top)    (move result edi)    (inst sub edi n-word-bytes)    (move ecx count)                    ; fixnum words == bytes    (move num ecx)    (inst shr ecx word-shift)           ; word count for <rep movs>    ;; If we got zero, we be done.    (inst jecxz done)    ;; Copy them down.    (inst std)    (inst rep)    (inst movs :dword)    (inst cld)    DONE    ;; Reset the CSP at last moved arg.    (inst lea esp-tn (make-ea :dword :base edi :disp n-word-bytes))));;; This VOP is just to force the TNs used in the cleanup onto the stack.(define-vop (uwp-entry)  (:info label)  (:save-p :force-to-stack)  (:results (block) (start) (count))  (:ignore block start count)  (:vop-var vop)  (:generator 0    (emit-label label)    (note-this-location vop :non-local-entry)))(define-vop (unwind-to-frame-and-call)    (:args (ofp :scs (descriptor-reg))           (uwp :scs (descriptor-reg))           (function :scs (descriptor-reg)))  (:arg-types system-area-pointer system-area-pointer t)  (:temporary (:sc sap-reg) temp)  (:temporary (:sc unsigned-reg :offset eax-offset) block)  (:generator 22    ;; Store the function into a non-stack location, since we'll be    ;; unwinding the stack and destroying register contents before we    ;; use it.    (store-tl-symbol-value function                           *unwind-to-frame-function*                           temp)    ;; Allocate space for magic UWP block.    (inst sub esp-tn unwind-block-size)    ;; Set up magic catch / UWP block.    (move block esp-tn)    (loadw temp uwp sap-pointer-slot other-pointer-lowtag)    (storew temp block unwind-block-current-uwp-slot)    (loadw temp ofp sap-pointer-slot other-pointer-lowtag)    (storew temp block unwind-block-current-cont-slot)    (storew (make-fixup nil :code-object entry-label)            block            catch-block-entry-pc-slot)    ;; Run any required UWPs.    (inst jmp (make-fixup 'unwind :assembly-routine))    ENTRY-LABEL    ;; Load function from symbol    (load-tl-symbol-value block *unwind-to-frame-function*)    ;; No parameters    (inst xor ecx-tn ecx-tn)    ;; Clear the stack    (inst lea esp-tn          (make-ea :dword :base ebp-tn :disp (* -3 n-word-bytes)))    ;; Push the return-pc so it looks like we just called.    (pushw ebp-tn -2)    ;; Call it    (inst jmp (make-ea :dword :base block                       :disp (- (* closure-fun-slot n-word-bytes)                                fun-pointer-lowtag)))))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费久久99精品国产| 亚洲欧美日韩国产另类专区| 日韩高清国产一区在线| 9191精品国产综合久久久久久| 亚洲卡通欧美制服中文| 91福利国产精品| 亚洲成人先锋电影| 日韩一级片网站| 国产福利91精品一区二区三区| 国产女主播一区| 在线欧美一区二区| 日韩av午夜在线观看| 欧美精品一区二区三区在线| 国产精品888| 亚洲人成网站色在线观看| 欧美视频日韩视频| 精品在线免费视频| 国产精品久久免费看| 欧洲一区二区av| 精品亚洲porn| 亚洲欧美中日韩| 欧美日本在线播放| 国产精品69毛片高清亚洲| 亚洲免费观看在线视频| 欧美一区二区三区日韩| 高清成人免费视频| 亚洲小少妇裸体bbw| 精品99一区二区三区| 色综合天天视频在线观看| 美女网站在线免费欧美精品| 国产精品久久久99| 欧美精品第1页| av一区二区三区四区| 美女一区二区三区在线观看| 综合精品久久久| 精品捆绑美女sm三区| 91成人免费在线视频| 国产一区二区毛片| 亚洲国产一区二区视频| 中文字幕av一区二区三区 | 精品一区二区三区在线视频| 国产精品萝li| 日韩欧美国产小视频| 91论坛在线播放| 国产一区日韩二区欧美三区| 一区二区三区不卡视频在线观看 | 国产福利精品一区| 亚洲国产另类精品专区| 中文字幕免费一区| 日韩美女一区二区三区| 欧美亚洲国产一区二区三区| 粉嫩一区二区三区性色av| 无吗不卡中文字幕| 亚洲另类春色校园小说| 国产日韩在线不卡| 精品处破学生在线二十三| 欧美日韩日日夜夜| 色偷偷88欧美精品久久久| 国产成人精品一区二区三区网站观看| 亚洲午夜久久久久| 亚洲欧美日韩国产一区二区三区| 久久婷婷久久一区二区三区| 欧美一区二区视频在线观看2022| 欧美性大战xxxxx久久久| 99久久精品免费看国产免费软件| 国产一区二区成人久久免费影院| 日韩精品欧美精品| 天天色天天爱天天射综合| 一区二区三区在线高清| 亚洲美女免费在线| 亚洲欧美一区二区三区国产精品| 国产欧美精品日韩区二区麻豆天美| 精品久久人人做人人爰| 精品国产乱码91久久久久久网站| 欧美一区日本一区韩国一区| 欧美理论电影在线| 欧美嫩在线观看| 欧美一级二级在线观看| 日韩一区二区三区免费看| 91麻豆精品国产91久久久久久久久| 欧美在线小视频| 欧美在线制服丝袜| 欧美精品123区| 日韩一二三区视频| 久久午夜色播影院免费高清| 2020国产精品自拍| 国产午夜亚洲精品午夜鲁丝片| 久久综合999| 国产精品无人区| 中文字幕制服丝袜成人av| 亚洲图片激情小说| 亚洲一区在线观看视频| 日韩中文字幕av电影| 麻豆极品一区二区三区| 国产一区日韩二区欧美三区| 成人毛片老司机大片| 色噜噜久久综合| 538prom精品视频线放| 精品少妇一区二区| 国产精品久久久久一区| 亚洲一区二区三区在线播放| 日韩国产欧美在线观看| 国产福利精品导航| 色猫猫国产区一区二在线视频| 5566中文字幕一区二区电影| 久久视频一区二区| 亚洲日本在线a| 视频在线观看91| 国产99久久久精品| 欧美系列一区二区| 亚洲精品一区二区三区影院| 国产精品水嫩水嫩| 视频一区二区欧美| 国产91精品在线观看| 91国模大尺度私拍在线视频| 欧美一区二区成人| 中文字幕制服丝袜一区二区三区| 亚洲第一av色| 国产精品一区二区三区99| 欧美在线免费观看视频| 久久先锋影音av鲁色资源| 亚洲免费观看高清在线观看| 久久国产麻豆精品| 91在线观看美女| 欧美一级欧美三级在线观看| 中文字幕制服丝袜一区二区三区 | 亚洲午夜三级在线| 国产成人免费网站| 精品视频一区二区不卡| 久久久精品黄色| 天堂va蜜桃一区二区三区漫画版| 国产成人综合网| 欧美二区乱c少妇| 亚洲精品中文字幕乱码三区| 人人狠狠综合久久亚洲| 99视频精品在线| 久久久99免费| 欧美aaa在线| 91成人网在线| 国产精品久久国产精麻豆99网站| 免费成人结看片| 欧美性猛交xxxxxx富婆| 中文av字幕一区| 国产精品夜夜爽| 欧美成人aa大片| 日本美女视频一区二区| 91啦中文在线观看| 国产精品全国免费观看高清| 美女国产一区二区| 678五月天丁香亚洲综合网| 亚洲一区二区三区四区五区黄| kk眼镜猥琐国模调教系列一区二区| 日韩三级精品电影久久久| 亚洲一区av在线| 色综合色狠狠综合色| 国产精品国产自产拍高清av| 国产精品中文字幕一区二区三区| 日韩免费观看高清完整版| 日日夜夜精品视频免费| 欧美色视频一区| 亚洲午夜激情网页| 欧洲精品在线观看| 亚洲一区在线观看网站| 在线亚洲一区二区| 一片黄亚洲嫩模| 欧洲中文字幕精品| 亚洲第一在线综合网站| 欧美三级电影网| 亚洲国产精品一区二区久久| 欧美综合久久久| 午夜伊人狠狠久久| 8x8x8国产精品| 美女一区二区三区在线观看| 精品久久久影院| 精品一区二区三区在线播放| 日韩欧美国产一区在线观看| 久久国产综合精品| 国产日韩av一区| 91亚洲精品久久久蜜桃网站| 亚洲自拍与偷拍| 欧美日韩高清一区二区三区| 香蕉影视欧美成人| 日韩亚洲欧美中文三级| 激情综合色播五月| 国产欧美一区二区三区网站 | 91久久人澡人人添人人爽欧美 | 一区2区3区在线看| 欧美精品在线一区二区三区| 免费美女久久99| 国产亚洲精品精华液| 91视频com| 秋霞国产午夜精品免费视频| 精品日韩欧美在线| 成人在线综合网| 亚洲精品中文字幕乱码三区| 69p69国产精品| 成人性视频网站| 亚洲五码中文字幕| 久久在线免费观看| 91久久久免费一区二区|