![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编语言
btc_runes
没什么意思的人!
展开
-
在ubuntu64下实现 小型 C 运行时库
实现c运行时库原创 2022-09-18 00:50:22 · 1047 阅读 · 0 评论 -
CSAPP第四章 优化程序性能:循环展开
计算一个前缀和的用时,利用循环展开写法和非循环展开未循环展开代码:循环展开代码:性能对比:未循环展开性能耗时:循环展开性能耗时:可以看出相同的数据量下,循环展开的写法可以让程序性能更优,但注意处理边界问题。...原创 2022-05-16 15:05:56 · 333 阅读 · 2 评论 -
SEQ硬件结构(指令流水线)
SEQ硬件结构处理一条指令,包含多个阶段取指将程序计数器寄存器作为地址,从指令内存读取指令的字节,PC增加器计算valP,即增加了的程序计数器。译码寄存器文件有两个读端口A和B,从这两个端口同时读寄存器valA和valB。执行执行阶段会根据指令的类型,将算术/逻辑单元(ALU)用于不同的目的。对整数的操作,他要执行指令所指定的运算。对其他指令,他会作为一个加法器来计算增加或者减少栈指针,或计算有效地址,或者只是简单的加0,将一个输入传递到输出。条件码寄存器(CC)有三个条件码位。ALU负责原创 2022-05-15 16:22:25 · 508 阅读 · 4 评论 -
Linux 静态库和动态库的制作
静态库的制作:Lib.h#ifndef LIB_H#define LIB_Hvoid show();#endifLib.c#include "Lib.h"#include <stdio.h>void show() { printf("Hello Wrold!\n");}Program.c#include "Lib.h"int main() { show(); return 0;}首先将Lib.c编译成Lib.ogcc -c Lib.c -o Li原创 2022-04-19 20:37:35 · 251 阅读 · 0 评论 -
《程序员的自我修养——链接,装载与库》内联汇编实现printf在终端打印字符串
由于我的虚拟机是64位Ubunt20.04,所以和书中所述环境不一致,系统调用号,不一致,所以我看了一遍知乎上的内容,了解了关于64位系统下的环境,然后实现这个过程。先看代码:nomain.cchar* str = "Hello World!\n";void exit() { asm("movq $42,%rdi \n\t" "movq $60,%rax \n\t" "syscall \n\t");}void printf() { asm("movq $13,原创 2022-04-03 13:26:29 · 5929 阅读 · 0 评论 -
汇编语言(王爽)课后习题答案
课后题答案+解解:1:13 2:1024 0 1023原创 2021-03-04 20:01:32 · 40334 阅读 · 46 评论 -
用call和ret指令 来解释高级语言是如何执行函数调用的
今天汇编语言学到了 call指令和ret 指令,然后解决了一直以来c/c++(高级语言)是如何执行递归的过程。首先我们来看一个简单的样例:C/C++ 程序#include<iostream>using namespace std;void clac(int a,int b){ int ans=a+b; cout<<a+b<<endl; return;}int main() { clac(2,3); return 0;}反汇编程序D原创 2021-02-25 22:13:43 · 296 阅读 · 1 评论 -
汇编语言实验8 分析一个奇怪的程序
assume cs:code code segment mov ax,4c00H int 21H start: mov ax,0 s: nop nop mov di,offset s mov si,offset s2 mov ax,cs:[si] mov cs:[di],ax s0:jmp short s s1: mov ax,0 int 21H mov ax,0 s2: jmp short s1 nop ..原创 2021-02-25 16:56:25 · 710 阅读 · 0 评论 -
汇编语言实验7寻址方式在结构化数据中的应用
通过寻址,将下列数据写到table程序:assume cs:code,ds:datadata segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995'dd 16,22,382,1356,2390,8000,16000,244原创 2021-02-23 19:24:51 · 185 阅读 · 0 评论 -
汇编语言 实验6
(1)在学习过程中已完成。(2)assume cs:code,ds:data,ss:stackdata segmentdb '1. display 'db '2. brows 'db '3. replace 'db '4. modify 'data endsstack segmentdw 0,0,0,0,0,0,0,0stack ends code segmentstart: mov ax,data m.原创 2021-02-21 17:38:25 · 418 阅读 · 0 评论 -
汇编语言实验四 [bx] 和 loop 的使用
(1)编程,向内存 0:200~0:23F 依次传送数据 0~63(3FH)。代码:assume cs:codecode segmentstart: mov ax,0 mov ds,ax mov bx,0200H mov cx,64 s: mov [bx],bl inc bx loop s mov ax,4c00H int 21H code endsend start 结果(2)编程,向内存 0:200~0:23F 依次.原创 2021-02-19 17:40:11 · 1773 阅读 · 2 评论 -
超级简单反汇编破解一个小程序
为了能更深刻的了解计算机,并且为能更轻松的学习操作系统,我开始了学习汇编语言,当然在学习之中也听闻了反汇编,对语言的执行流程也有了一些认识,首先高级语言编写的程序通过编译器进行编译,汇编,链接,会生成一个可执行文件,c/c++中被称为.exe文件。我们可以通过对.exe进行反汇编得到它的汇编指令,从而对程序进行分析,最终破解。接下来,我们来看一看如何对下面这个超级简单的程序进行破解的吧!这个小程序是输入密码,然后输入正确的数,就会输出correct!反则就会输出wrong!目前我们只有exe文件,没原创 2021-02-11 00:27:00 · 4686 阅读 · 3 评论 -
汇编语言:实验一(熟悉debug的基本操作)
实验内容:用debug的R命令查看,并改变cpu寄存器的内容用debug 的D命令查看内存中的内容用 debug 的 E命令改写内存中的内容用 debug 的 U命令将内存中的机器指令翻译成汇编命令用 debug 的T命令执行一条机器指令用 debug 的A命令以汇编指令的格式在内存中写入一条机器指令实验过程:首先进入debug查看,并改变cpu寄存器中的一个的内容用D命令查看内存中的内容,这里查看了从地址073F:0000开始内存上的内容用E命令修改原创 2021-02-09 23:17:58 · 2151 阅读 · 0 评论