rdtmain.asm

来自「开源的nasm编译器源码,研究编译器原理很有帮且」· 汇编 代码 · 共 48 行

ASM
48
字号
	;; rdtmain - main part of test program for RDX execution.	;; returns true (0) if its parameter equals the phrase "hello"	;; "hello" is stored in the library part, to complicate the	;; linkage.	;; assemble and link with the following commands:	;; nasm -f rdf rdtmain.asm	;; nasm -f rdf rdtlib.asm	;; ldrdf rdtmain.rdf rdtlib.rdf -o rdxtest.rdx	;; run with 'rdx rdxtest.rdx [parameters]' on a Linux (or possibly	;; other 32 bit OS) systems (x86 architectures only!)	;; try using '&& echo Yes' afterwards to find out when it returns 0.	[EXTERN _strcmp]		; strcmp is an imported function[EXTERN _message]		; imported data[SECTION .text][BITS 32]	;; main(int argc,char **argv)[GLOBAL _main]_main:	push ebp	mov ebp,esp	;; ebp+8 = argc, ebp+12 = argv	cmp dword [ebp+8],2	jb error		; cause error if < 1 parameters	mov eax, [ebp+12]	; eax = argv	mov ebx, [eax+4]	; ebx = argv[1]	mov ecx, _message	; ecx = "hello"	push ecx	push ebx	call _strcmp		; compare strings	add esp,8		; caller clears stack		pop ebp	ret			; return return value of _strcmp	error:	mov eax,2		; return 2 on error	pop ebp	ret

⌨️ 快捷键说明

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