sgetsize.nas

来自「一些初级的网络编程」· NAS 代码 · 共 60 行

NAS
60
字号
;;
;; aPLib compression library  -  the smaller the better :)
;;
;; NASM safe assembler header access
;;
;; Copyright (c) 1998-2004 by Joergen Ibsen / Jibz
;; All Rights Reserved
;;
;; http://www.ibsensoftware.com/
;;

bits 32

%include "nasmlcm.inc"

section lcmtext

lcmglobal aPsafe_get_orig_size,4

lcmexport aPsafe_get_orig_size,4

; =============================================================

lcmlabel aPsafe_get_orig_size,4
    ; aPsafe_get_orig_size(const void *source);

    .ret$  equ 7*4
    .src$  equ 8*4 + 4

    pushad

    mov    esi, [esp + .src$] ; esi -> buffer

    mov    ebx, [esi]         ; ebx = header.tag

    or     eax, byte -1       ; eax = -1

    cmp    ebx, 032335041h    ; check tag == 'AP32'
    jne    short .return_eax

    mov    ebx, [esi + 4]     ; ebx = header.header_size
    cmp    ebx, byte 24       ; check header_size >= 24
    jb     short .return_eax

    mov    eax, [esi + 16]    ; eax = header.orig_size

  .return_eax:
    mov    [esp + .ret$], eax ; return unpacked length in eax

    popad
    lcmret 4

; =============================================================

%ifdef LCM_OBJ
  section lcmdata
%endif

; =============================================================

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?