欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

C指针原理(2)-ATT汇编

发布时间:2025/3/12 编程问答 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C指针原理(2)-ATT汇编 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
.section .text data: .byte 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01#8字节 .globl main main: movl $0x12345678,%edx bswap %edx#反转字符顺序 ,结果为0x87654321 movl %edx,%eax movl $1,%ebx xadd %ebx,%eax#交换%eax和%ebx的值,并相加,结果放在目标位置%eax cmpxchg %edx,%ebx#如果目标操作数%ebx等于%eax、16位是ax,8位是al,则把源操作数%edx的值加载到%eax中、16位 #是ax,8位是al,如果不等,则把目标操作数%ebx加到源操作数%edx加载到%eax中、16位是ax,8位是almovl $2,%edx#高位 movl $3,%eax#低位 cmpxchg8b data#如果%edx:%eax组成的8字节值与目标值data匹配,则把%edx:%eax组成的8字节值传送到目标内存位置 #,否则将目标值data加载到%edx:%eax pushad popad #pusha/popa 压入弹出所有16位通用寄存器 #pushad/popad 压入弹出所有32位通用寄存器 #pushf/popf 压入弹出EFLAGS寄存器的低16位 #pushf/popf 压入弹出EFLAGS寄存器的全部32位

AT&T汇编关于地址和取地址操作的示例代码如下:

.section .datamynum:.int 8mygs:.asciz "%x----%x----%x\n" .section .text.globl mainmain:leal mynum,%eax #将mynum地址复制到%eax movl (%eax),%ebx#将%eax内地址所指内容复制到%ebxmovl mynum,%ecx#将mynum内容复制到%ecx中push %ecxpush %ebxpush %eaxpush $mygscall printfpush $0call exit乘法和除法操作如下:.section .data.section .text.globl mainmain:movl $2,%eaxmovl $5,%ebxmul %ebx#%eax*%ebx->%eax,无符号乘法movl $-2,%eaxmovl $5,%ebximul %ebx#%eax*%ebx->%eax,有符号乘法 #除法使用dev和idev(有符号)

总结

以上是生活随笔为你收集整理的C指针原理(2)-ATT汇编的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。