摘要: GAS中每个操作都是有一个字符的后缀,表明操作数的大小。C声明GAS后缀大小(字节)charb1shortw2(unsigned) int / long / char*l4floats4doublel8long doublet10/12注意:GAL使用后缀“l”同时表示4字节整数和8字节双精度浮点数,这不会产生歧义因为浮点数使用的是完全不同的指令和寄存器。操作数格式:格式操作数值名称样例(GAS = C语言)$ImmImm立即数寻址$1 = 1EaR[Ea]寄存器寻址%eax = eaxImmM[Imm]绝对寻址0x104 = *0x104(Ea)M[R[Ea]]间接寻址(%eax)= *ea 阅读全文
posted @ 2012-05-01 19:37 KingsLanding 阅读(4269) 评论(0) 推荐(0)
摘要: 最近在看“程序员的自我修养”,看到了gcc内嵌汇编,静态链接那章的示例程序比较有趣,于是准备学习一下AT&T语法的gcc内嵌汇编。以前学微机原理的时候学习过汇编,现在基本上还给了老师,还是复习一下吧。像大家一样先来介绍一下AT&T语法与Intel asm语法的不同(顺便也学学基本知识):在 AT&T 汇编格式中,寄存器名要加上 '%' 作为前缀;而在 Intel 汇编格式中,寄存器名不需要加前缀。例如:AT&T 格式Intel 格式pushl %eaxpush eax在 AT&T 汇编格式中,用 '$' 前缀表示一个立即操 阅读全文
posted @ 2012-05-01 19:27 KingsLanding 阅读(12251) 评论(0) 推荐(6)
摘要: 之前上嵌入式的课程,罗老师强调了函数可重入的重要性,而且还举例某某著名通信公司开发过程中函数不可重入导致的问题,于是对函数可不可重入比较注意,在看书的时候又遇到了这个问题,于是准备认真学习一下。一、可重入函数1)什么是可重入性?可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反,不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。2)可重入函数:不为. 阅读全文
posted @ 2012-05-01 18:13 KingsLanding 阅读(791) 评论(0) 推荐(0)