

源程序(或者源文件):是程序員通過文本編輯器創(chuàng)建并保存的文本文件。源程序?qū)嶋H就是由0和1組成的位序列,這些位8個(gè)一組,成為字節(jié),每個(gè)字節(jié)通過ASCII字符集(大部分是)對應(yīng)一個(gè)文本字符。
下面是上面程序?qū)?yīng)的16進(jìn)制數(shù)字表示
在終端輸入man ascii看看ascii表

操作步驟:
查看16進(jìn)制格式
回復(fù)到文本格式
我們看看對應(yīng)的二進(jìn)制是什么樣的?——這個(gè)也是在磁盤中的存儲狀態(tài)。






查看main.i的部分源碼

總結(jié):預(yù)處理器(cpp)根據(jù)以字符#開頭的命令,修改原始C程序,結(jié)果得到了另一個(gè)C程序(還是C程序),通常以i做為文件擴(kuò)展名。

查看main.s的源碼

總結(jié):將C語言文本文件翻譯成匯編語言文本文件。——匯編語言是非常有用的,因?yàn)樗鼮椴煌呒壵Z言的不同編譯器提供了通用的輸出語言。

打開源代碼,注意此時(shí)為二進(jìn)制磁盤文件,還有注意操作步驟

此時(shí)為亂碼,需要進(jìn)行:%!xxd操作

查看指令

總結(jié):匯編器(as)將main.s翻譯成機(jī)器語言指令,把這些指令打包成為一種“可重定位目標(biāo)程序“的格式,并將結(jié)果保存到main.o文件中,main.o是二進(jìn)制文件,它的字節(jié)編碼是機(jī)器語言指令而不是字符(所以用文本編譯器看會出現(xiàn)亂碼)。

按照匯編階段操作,查看部分指令碼

總結(jié):程序中調(diào)用了printf函數(shù),它是C標(biāo)準(zhǔn)庫的一個(gè)函數(shù),printf函數(shù)存在于一個(gè)名為printf.o的單獨(dú)的預(yù)編譯目標(biāo)文件中。連接器(ld)負(fù)責(zé)把printf.o的預(yù)編譯目標(biāo)文件進(jìn)行并入,結(jié)果就得到a.out文件。
NOTE:a.out是可執(zhí)行的目標(biāo)文件,而main.o是可重定位目標(biāo)程序文件。——可執(zhí)行目標(biāo)文件加載到系統(tǒng)存儲器后,由系統(tǒng)負(fù)責(zé)執(zhí)行。而可重定位目標(biāo)程序文件是提供給鏈接器使用,執(zhí)行并入操作。


" An example for a vimrc file. " " Maintainer: Bram Moolenaar <Bram@vim.org> " Last change: 2006 Nov 16 " " To use it, copy it to " for Unix and OS/2: ~/.vimrc " for Amiga: s:.vimrc " for MS-DOS and Win32: $VIM\_vimrc " for OpenVMS: sys$login:.vimrc " When started as "evim", evim.vim will already have done these settings. if v:progname =~? "evim" finish endif " Use Vim settings, rather then Vi settings (much better!). " This must be first, because it changes other options as a side effect. set nocompatible " allow backspacing over everything in insert mode set backspace=indent,eol,start if has("vms") set nobackup " do not keep a backup file, use versions instead else set nobackup " keep [NO] backup file endif set history=250 " keep 250 lines of command line history set ruler " show the cursor position all the time set showcmd " display incomplete commands set incsearch " do incremental searching set nu " For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries " let &guioptions = substitute(&guioptions, "t", "", "g") " Don't use Ex mode, use Q for formatting map Q gq " In many terminal emulators the mouse works just fine, thus enable it. set mouse=a " Switch syntax highlighting on, when the terminal has colors " Also switch on highlighting the last used search pattern. if &t_Co > 2 || has("gui_running") syntax on set hlsearch endif " Only do this part when compiled with support for autocommands. if has("autocmd") " Enable file type detection. " Use the default filetype settings, so that mail gets 'tw' set to 72, " 'cindent' is on in C files, etc. " Also load indent files, to automatically do language-dependent indenting. filetype plugin indent on " Put these in an autocmd group, so that we can delete them easily. augroup vimrcEx au! " For all text files set 'textwidth' to 78 characters. autocmd FileType text setlocal textwidth=78 " When editing a file, always jump to the last known cursor position. " Don't do it when the position is invalid or when inside an event handler " (happens when dropping a file on gvim). autocmd BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal! g`\"" | \ endif autocmd VimLeave * \ if has("mksession") && exists("v:this_session") && v:this_session != "" | \ exec "mksession!" v:this_session | \ endif augroup END else set autoindent " always set autoindenting on endif " has("autocmd") " Convenient command to see the difference between the current buffer and the " file it was loaded from, thus the changes you made. command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis \ | wincmd p | diffthis " Add by Journeylee to make things more easily set softtabstop=4 set shiftwidth=4 set tabstop=4 set noexpandtab set smarttab set showmatch set foldenable set autoindent set smartindent set cindent set foldmethod=marker set background=dark set nobackup set encoding=utf-8 language en_US.utf8 set fileencodings=ucs-bom,utf-8,gbk,latin1 set fileformats=unix,dos,mac set fileencoding=utf-8 set fileformat=unix set fileformat=unix set matchtime=15 " Make shift-insert work like in Xterm map <S-Insert> <MiddleMouse> map! <S-Insert> <MiddleMouse> " let xterm16_brightness = 'default' " Change if needed " let xterm16_colormap = 'allblue' " Change if needed " colo xterm16 "不使用swap文件 map <F5> :!php -l %<CR> "set runtimepath+=/home/zhoubc/opt/vim/doc "autocmd BufNewFile,Bufread *.ros,*.inc,*.php set keywordprg="help" let g:winManagerWindowLayout='TagList|FileExplorer' let g:winManagerWidth=30 nmap wm :WMToggle




浙公網(wǎng)安備 33010602011771號