随笔分类 -  Assembly

摘要:假如汇编语言要实现如下C语言的功能,编译环境Ubuntu14.04(32位)。#includevoid swap(int *p, int *q){ int tmp = *p; *p = *q; *q = tmp;}int main(){ int a[] = {3, 0, 5,... 阅读全文
posted @ 2015-02-04 22:46 Ydoing 阅读(460) 评论(0) 推荐(0)
摘要:假如汇编语言要实现如下C语言的功能,编译环境Ubuntu14.04(32位)。#includeint refact(int n){ if(n == 1) return 1; else return n * refact(n - 1);}int main(){ ... 阅读全文
posted @ 2015-02-04 22:35 Ydoing 阅读(396) 评论(0) 推荐(0)
摘要:假如汇编语言要实现如下C语言的功能,编译环境Ubuntu14.04(32位)。#includeint fact_for(int n){ int i; int result = 1; for(i = 2; i <= n; i++) result *= i; ret... 阅读全文
posted @ 2015-02-03 22:09 Ydoing 阅读(689) 评论(0) 推荐(0)
摘要:假如汇编语言要实现如下C语言的功能,编译环境Ubuntu14.04(32位)。#includeint main(){ int a[] = {3, 0, 5, 1, 4, 6, 2, 9, 8, 7}; int i; for(i = 0; i< 10; i++) pri... 阅读全文
posted @ 2015-02-03 21:49 Ydoing 阅读(1236) 评论(0) 推荐(0)
摘要:以下代码示范交换a和b两个整数的函数,编译环境Ubuntu14.04(32位)假如要实现以下C代码#include void swap(int *xp, int *yp){ int x = *xp; int y = *yp; *xp = y; *yp = x;}int... 阅读全文
posted @ 2015-02-03 21:36 Ydoing 阅读(572) 评论(0) 推荐(0)
摘要:本文以printf为例,详细解析一个简单的printf调用里头,系统究竟做了什么,各寄存器究竟如何变化。环境:linux + gnu as assembler + ld linker如何在汇编调用glibc的函数?其实也很简单,根据c convention call的规则,参数反向压栈,call,然... 阅读全文
posted @ 2015-02-03 20:59 Ydoing 阅读(4889) 评论(0) 推荐(0)