弦外之音

好消息:《SRS原理》一书荣获官方推荐,访问地址:https://srs.xianwaizhiyin.net/

GAS 是 GNU as 的缩写。Linux 里面 编译汇编程序 有两种方式,一种是 as + ld,另一种是 gcc。下面是汇编代码。 .data output: .ascii "hello,world!\n" len = . - output ​ .text .globl _start _start: movl ...

发布 0 条评论

操作系统内核代码绝大部分使用 C 语言编写,只有一小部分使用汇编语言编写,例如与特定 体系结构 相关的代码和对性能影响很大的代码。 GCC提供了内嵌汇编的功能,可以在C代码中直接内嵌汇编语言语句,大大方便了程序设计。 代...

发布 0 条评论

几乎每个做应用开发的工程师,学习汇编的时候,都会遇到这样一个困惑,各种汇编书籍,例如《汇编语言 基于x86》《现代x86汇编程序设计》这些书籍都是讲 汇编指令 在单核里面的情况。我们做应用开发的时候是经常用到多线程的,而我们...

发布 1 条评论

本文主要讲解 两个重点。 1,汇编代码 对应的 机器码是怎么样的 2,为什么用汇编实现某些功能会比 C语言 性能好。 google_ads_content C语言代码: int add_two(int a,int b){ return a+b; } int main() ...

发布 0 条评论

汇编里面,函数内局部变量的使用,比较简单,直接把 esp 减去多少,就能预留多少空间给 局部变量。 因为 esp 是后进 先出,所以 esp 是越来越小。直接截图《X86 汇编语言,基于x86》的内容。 讲解完毕。 相关阅读: ...

发布 0 条评论

函数传参,主流 有两种技术方式 实现。 1,堆栈传参。 2,寄存器传参。 堆栈传参 的实现比较简单,不容易出错,所以应用比较广泛。寄存器传参 速度快,性能好。 既然 寄存器传参 的方式那么好,高级语言为什么不全部都用...

发布 0 条评论

如果程序运行在 32位 模式下,常用的寄存器(register)有以下8个。 EAX,EAX 是 累加器 (accumulator), 它是很多加法乘法指令的缺省寄存器。EBX,EBX 是 基地址(base)寄存器, 在内存寻址时存放基地址。ECX,ECX 是 计数器(c...

发布 0 条评论

如果程序运行在 32位 模式下,常用的寄存器(register)有以下8个。 EAX,EAX 是 累加器 (accumulator), 它是很多加法乘法指令的缺省寄存器。EBX,EBX 是 基地址(base)寄存器, 在内存寻址时存放基地址。ECX,ECX 是 计数器(c...

发布 0 条评论

汇编其实有不同的语法的,主要有两种 Intel 的 和 AT&T 的。应该是两个公司为了各自利益 搞了两种汇编语法出来。 虽然语法不同,但是他们用的是同一种CPU指令集。 AT&T 风格 主要是GNU使用的,也就是给 linux 用的...

发布 0 条评论

汇编是很底层的 编程语言,一条汇编指令对应一条机器指令,机器指令是 A0 00010400 之类的二进制指令。 例如 addl %ebx,%eax 翻译成 机器指令 就是 d8 01 。汇编指令 addl 在计算机存储的时候 是 ASCII 码来的,是单字节字符串。 ...

发布 0 条评论