📄 asm.h
字号:
/* * Mach Operating System * Copyright (c) 1991,1990,1989 Carnegie Mellon University * All Rights Reserved. * * Permission to use, copy, modify and distribute this software and its * documentation is hereby granted, provided that both the copyright * notice and this permission notice appear in all copies of the * software, derivative works or modified versions, and any portions * thereof, and that both notices appear in supporting documentation. * * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. * * Carnegie Mellon requests users of this software to return to * * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU * School of Computer Science * Carnegie Mellon University * Pittsburgh PA 15213-3890 * * any improvements or extensions that they make and grant Carnegie Mellon * the rights to redistribute these changes. * * from: Mach, Revision 2.7 92/02/29 15:33:41 rpd * $FreeBSD: src/sys/i386/boot/biosboot/asm.h,v 1.6.2.1 1999/09/05 08:10:20 peter Exp $ */#define S_ARG0 4(%esp)#define S_ARG1 8(%esp)#define S_ARG2 12(%esp)#define S_ARG3 16(%esp)#define FRAME pushl %ebp; movl %esp, %ebp#define EMARF leave#define B_ARG0 8(%ebp)#define B_ARG1 12(%ebp)#define B_ARG2 16(%ebp)#define B_ARG3 20(%ebp)#ifdef wheeze#define ALIGN 4#define EXT(x) x#define LEXT(x) x:#define LCL(x) ./**/x#define LB(x,n) ./**/x#define LBb(x,n) ./**/x#define LBf(x,n) ./**/x#define SVC lcall $7,$0#define String .string#define Value .value#define Times(a,b) [a\*b]#define Divide(a,b) [a\\b]#define INB inb (%dx)#define OUTB outb (%dx)#define INL inl (%dx)#define OUTL outl (%dx)#else wheeze#define ALIGN#define LCL(x) x#define LB(x,n) n#ifdef __STDC__#define EXT(x) _ ## x#define LEXT(x) _ ## x ## :#define LBb(x,n) n ## b#define LBf(x,n) n ## f#else __STDC__#define EXT(x) _/**/x#define LEXT(x) _/**/x/**/:#define LBb(x,n) n/**/b#define LBf(x,n) n/**/f#endif __STDC__#define SVC .byte 0x9a; .long 0; .word 0x7#define String .ascii#define Value .word#define Times(a,b) (a*b)#define Divide(a,b) (a/b)#define INB inb %dx, %al#define OUTB outb %al, %dx#define INL inl %dx, %eax#define OUTL outl %eax, %dx#endif wheeze#define addr32 .byte 0x67#define data32 .byte 0x66#ifdef GPROF#ifdef __STDC__#define MCOUNT .data; LB(x, 9); .long 0; .text; lea LBb(x, 9),%edx; call mcount#define ENTRY(x) .globl EXT(x); .align ALIGN; LEXT(x) ; \ pushl %ebp; movl %esp, %ebp; MCOUNT; popl %ebp;#define ENTRY2(x,y) .globl EXT(x); .globl EXT(y); \ .align ALIGN; LEXT(x) LEXT(y) ; \ pushl %ebp; movl %esp, %ebp; MCOUNT; popl %ebp;#define ASENTRY(x) .globl x; .align ALIGN; x ## : ; \ pushl %ebp; movl %esp, %ebp; MCOUNT; popl %ebp;#else __STDC__#define MCOUNT .data; LB(x, 9): .long 0; .text; lea LBb(x, 9),%edx; call mcount#define ENTRY(x) .globl EXT(x); .align ALIGN; LEXT(x) ; \ pushl %ebp; movl %esp, %ebp; MCOUNT; popl %ebp;#define ENTRY2(x,y) .globl EXT(x); .globl EXT(y); \ .align ALIGN; LEXT(x) LEXT(y)#define ASENTRY(x) .globl x; .align ALIGN; x: ; \ pushl %ebp; movl %esp, %ebp; MCOUNT; popl %ebp;#endif __STDC__#else GPROF#ifdef __STDC__#define MCOUNT#define ENTRY(x) .globl EXT(x); .align ALIGN; LEXT(x)#define ENTRY2(x,y) .globl EXT(x); .globl EXT(y); \ .align ALIGN; LEXT(x) LEXT(y)#define ASENTRY(x) .globl x; .align ALIGN; x ## :#else __STDC__#define MCOUNT#define ENTRY(x) .globl EXT(x); .align ALIGN; LEXT(x)#define ENTRY2(x,y) .globl EXT(x); .globl EXT(y); \ .align ALIGN; LEXT(x) LEXT(y)#define ASENTRY(x) .globl x; .align ALIGN; x:#endif __STDC__#endif GPROF#define Entry(x) .globl EXT(x); .align ALIGN; LEXT(x)#define DATA(x) .globl EXT(x); .align ALIGN; LEXT(x)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -