x86-64体系下一个奇怪问题的定位 发表于 2019-11-05 分类于 汇编语言 阅读次数: 评论数: 作者:张洋 原文链接 问题来源于一个朋友在百度的笔试题。上周六我一个朋友参加了百度举行的专场招聘会,其中第一道笔试题是这样的: 给出下面一段代码12345#include <stdio.h>main() { double a = 10; printf("a = %d\n", a); } 阅读全文 »
汇编语言入门九:总结与后续(闲扯) 发表于 2019-10-31 分类于 汇编语言 阅读次数: 评论数: 原文链接 回顾前面扯了一些个汇编语言的内容,想必读者也应该有了大致的了解。笔者比打算写全面的汇编相关的内容,毕竟目前已经有不少相关的资料了。本入门系列的目的就在于:入门。 完成了入门的任务,入门系列就暂告一段落了。在此,先来对前面提及的内容做一些回顾。前面说到的各项内容大概涉及: 阅读全文 »
汇编语言入门八:函数调用(二) 发表于 2019-10-31 分类于 汇编语言 阅读次数: 评论数: 原文链接 回顾上回说道,x86汇编中专门提供了两个指令call和ret,用于实现函数调用的效果。实际上函数调用就是程序跳转,只是在跳转之前,CPU会保存当前所在的位置(即返回地址),当函数返回时,又可以从调用的位置恢复。返回地址保存在一个叫做“堆栈”的地方,堆栈中可以保存很多个返回地址,同时借助于堆栈的进出逻辑,还能实现函数嵌套、递归等效果。 阅读全文 »
汇编语言入门七:函数调用(一) 发表于 2019-10-31 分类于 汇编语言 阅读次数: 评论数: 原文链接 最近忙了一阵,好几天没更了,不好意思,我来晚了。 转入正题,当在汇编中进行函数调用,是一种什么样的体验? 想象想象你在计算一个非常复杂的数学题,在算到一半的时候,你需要一个数据,而这个数据需要套用一个比较复杂的公式才能算出来,怎么办? 阅读全文 »
汇编语言入门六:流程控制(二) 发表于 2019-10-31 分类于 汇编语言 阅读次数: 评论数: 原文链接 回顾前面说到在汇编语言中实现类似C语言if-else if-else这样的结构, 实际上,在汇编里面,我们并不关心if了,取而代之的是两种基本的指令: 比较 跳转 这两种指令即可组成最基本的分支程序结构,虽然跳转指令非常多,但是我们已经有套路了,怎么跳转都不怕了。当然,在编程环境中仅有分支还不够的,我们知道C语言中除了分支结构之外,还有循环这个最基本也是最常用的形式。正好,这也是本节话题的主角。 阅读全文 »