zoukankan      html  css  js  c++  java
  • 【30天自制操作系统】day04:C语言与目前执行流程图

    用 C 语言直接写入内存

    原来依靠汇编

    void io_hlt(void);
    void write_mem8(int addr, int data);
    
    void HariMain(void){
    	int i;
    	for (i = 0xa0000; i <= 0xaffff; i++) {
    		write_mem8(i, 13); /* MOV BYTE [i],15 */
    	}
    	for (;;) {
    		io_hlt();
    	}
    }
    ; naskfunc
    ; TAB=4
    
    [FORMAT "WCOFF"]				; オブジェクトファイルを作るモード	
    [INSTRSET "i486p"]				; 486の命令まで使いたいという記述
    [BITS 32]						; 32ビットモード用の機械語を作らせる
    [FILE "naskfunc.nas"]			; ソースファイル名情報
    
    		GLOBAL	_io_hlt,_write_mem8
    
    [SECTION .text]
    
    _io_hlt:	; void io_hlt(void);
    		HLT
    		RET
    
    _write_mem8:	; void write_mem8(int addr, int data);
    		MOV		ECX,[ESP+4]		; [ESP+4]にaddrが入っているのでそれをECXに読み込む
    		MOV		AL,[ESP+8]		; [ESP+8]にdataが入っているのでそれをALに読み込む
    		MOV		[ECX],AL
    		RET
    

      

    现在直接 C

    void io_hlt(void);
    void write_mem8(int addr, int data);
    
    void HariMain(void) {
    	int i;
    	char *p;
    	for (i = 0xa0000; i <= 0xaffff; i++) {
    		p = (char*) i;
    		*p = 14;
    	}
    	for (;;) {
    		io_hlt();
    	}
    }
    

    栈的汇编

    PUSHFD
    POP EAX
    =
    MOV EAX,EFLAGS
    
    PUSH EAX
    POPFD
    =
    MOV EFLAGS,EAX
    

    文件生成过程

     程序执行流程图

  • 相关阅读:
    Dive into ML
    tensorflow中模型的保存
    scope 命名方法
    Tensorflow中的Seq2Seq全家桶
    梯度消失与梯度爆炸问题
    Tensorflow 模型的保存、读取和冻结、执行
    训练神经网络的处方
    About Feature Scaling and Normalization
    论文中绘制神经网络的工具
    前端 OSS 自动化部署脚本
  • 原文地址:https://www.cnblogs.com/flashsun/p/11626754.html
Copyright © 2011-2022 走看看