在linux环境中进行AT & T格式的汇编语言demo示例

编写汇编语言源代码hello.s
.data  # 数据段声明
	msg: .string "Hello,world!\n" # 要输出的字符串

	len = .-msg  #字符串长度

.text	# 代码段声明

.global _start  # 指定入口函数

_start:  # 在屏幕上显示一个字符串
	movl $len,%edx #参数三:字符串长度
	movl $msg,%ecx #参数二:要显示的字符串
	movl $1,%ebx #参数一:文件描述符
	movl $4,%eax #系统调用号(sys_write)
	int $0x80  #调用内核功能
				# 退出程序
	movl $0,%ebx #参数一:退出代码
	movl $1,%eax  #系统调用好(sys_exit)
	int $0x80  #调用内核功能
删除除了hello.s汇编语言源代码之外的其他文件

adog@E531:linux_assembly$ rm -rf !(hello.s)
adog@E531:linux_assembly$ ls
hello.s

对汇编语言源代码进行编译,并带有调试信息

adog@E531:linux_assembly$ gcc -c -g -o hello.o hello.s
adog@E531:linux_assembly$ ls
hello.o hello.s

使用ld指令对hello.o进行链接

adog@E531:linux_assembly$ ld -o hello hello.o
adog@E531:linux_assembly$ ls
hello hello.o hello.s

使用gdb --tui进行可以查看源代码的调试

adog@E531:linux_assembly$ gdb --tui hello
adog@E531:linux_assembly$

在linux环境中进行AT & T格式的汇编语言demo示例

使用as命令也可以进行编译

as -o to.o from.s
ld -o to to.o

上一篇:2019-2020-1 20199313《Linux内核原理与分析》第三周作业


下一篇:linux-boot-arch_x86_kernel_head_32.S