File: 7zAsm.asm

package info (click to toggle)
p7zip 16.02%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 14,144 kB
  • sloc: cpp: 167,145; ansic: 14,992; python: 1,911; asm: 1,688; sh: 1,132; makefile: 701
file content (100 lines) | stat: -rw-r--r-- 1,570 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
; 7zAsm.asm -- ASM macros
; 2009-12-12 : Igor Pavlov : Public domain
; 2011-10-12 : P7ZIP       : Public domain

%define NOT ~

%macro MY_ASM_START 0
  SECTION .text
%endmacro

%macro MY_PROC 2 ; macro name:req, numParams:req
  align 16
  %define proc_numParams %2 ; numParams
    global %1
    global _%1
    %1:
    _%1:
%endmacro

%macro  MY_ENDP 0
  %ifdef x64
    ret
    ; proc_name ENDP
  %else
    ret ; (proc_numParams - 2) * 4
  %endif
%endmacro

%ifdef x64
  REG_SIZE equ 8
%else
  REG_SIZE equ 4
%endif

  %define x0  EAX
  %define x1  ECX
  %define x2  EDX
  %define x3  EBX
  %define x4  ESP
  %define x5  EBP
  %define x6  ESI
  %define x7  EDI

  %define x0_L  AL
  %define x1_L  CL
  %define x2_L  DL
  %define x3_L  BL

  %define x0_H  AH
  %define x1_H  CH
  %define x2_H  DH
  %define x3_H  BH

%ifdef x64
  %define r0  RAX
  %define r1  RCX
  %define r2  RDX
  %define r3  RBX
  %define r4  RSP
  %define r5  RBP
  %define r6  RSI
  %define r7  RDI
%else
  %define r0  x0
  %define r1  x1
  %define r2  x2
  %define r3  x3
  %define r4  x4
  %define r5  x5
  %define r6  x6
 %define  r7  x7
%endif

%macro MY_PUSH_4_REGS 0
    push    r3
    push    r5
%ifdef x64
  %ifdef CYGWIN64
    push    r6
    push    r7
  %endif
%else
    push    r6
    push    r7
%endif
%endmacro

%macro MY_POP_4_REGS 0
%ifdef x64
  %ifdef CYGWIN64
    pop     r7
    pop     r6
  %endif
%else
    pop     r7
    pop     r6
%endif
    pop     r5
    pop     r3
%endmacro