Algorithm
題目:鏈表中環(huán)的檢測
自己的分析見博客《檢測鏈表中是否存在環(huán)》
Review
disassemble command是我讀的一篇英語文章,這篇文章主要是介紹gdb反匯編命令的使用和參數(shù)。自己為了能夠演示這篇文章里邊的內(nèi)容,特意自己使用匯編語言編寫代碼,然后寫了一篇博客。
我這里使用下邊的匯編代碼進(jìn)行演示:
# 文件名稱:twoNumberPlus.s
.type twoNumberPlus, @function
.section .data
intFormatShow:
.ascii "%d\n\0"
.global main
.section .text
main:
pushq %rbp
movq %rsp,%rbp
movq $2,%rdi
movq $3,%rsi
call twoNumberPlus
movq %rax,%rsi
movq $intFormatShow,%rdi
movq $0,%rax
call printf
movq $60,%rax
movq $0,%rdi
movq %rbp,%rsp
popq %rbp
syscall
twoNumberPlus:
pushq %rbp
movq %rsp,%rbp
addq %rdi,%rsi
movq %rsi,%rax
movq %rbp,%rsp
popq %rbp
ret
gcc -g twoNumberPlus.s -static -o twoNumberPlus
帶有調(diào)試信息地進(jìn)行編譯。gdb -q twoNumberPlus
使用安靜模式開始調(diào)試。list
可以看一下第1行到第10行代碼。
break 10
可以在第10行代碼處設(shè)置上斷點(diǎn),run
可以讓gdb
開始運(yùn)行程序,disassemble
可以查看當(dāng)前運(yùn)行的函數(shù)。
disassemble twoNumberPlus
可以看一下twoNumberPlus
函數(shù)的匯編代碼。
disassemble 0x0000000000401095
可以看一下0x0000000000401095
地址所在的函數(shù)匯編代碼。
disassemble 0x000000000040108e,0x0000000000401095
只顯示0x000000000040108e
到0x0000000000401095
之間的匯編代碼,注意不包括0x0000000000401095
。
disassemble twoNumberPlus,+4
反匯編函數(shù)twoNumberPlus
和它加4地址之間的代碼,不包括twoNumberPlus+4
的代碼。
disassemble 0x000000000040108e,+9
,反匯編0x000000000040108e
到0x000000000040108e
+9的地址之間代碼,不包括0x000000000040108e
+9的代碼。
disassemble /m twoNumberPlus
把 twoNumberPlus
函數(shù)反匯編出來,也把對應(yīng)的行數(shù)顯示出來。
disassemble /r twoNumberPlus
把機(jī)器碼也反匯編出來。
Technique/Tip
我最近在學(xué)習(xí)匯編語言,感覺自己的技術(shù)基礎(chǔ)有些差,希望程序員朋友還是要把底層知識(shí)好好學(xué)習(xí)一下,爭取都能掌握,讓我們的技術(shù)生命周期更長一些。另外還需把自己的涉及面提升一下,我的意思就是大家的技術(shù)既要深,也要博,當(dāng)然還是要把握兩者的平衡點(diǎn),畢竟一個(gè)人的精力有限。這里推薦給大家?guī)妆緟R編書籍。intel匯編風(fēng)格(64位)
:
Beginning x64 Assembly Programming From Novice to AVX Professional(中文版《x64匯編語言:從新手到AVX專家》)
Low-Level Programming C, Assembly
AT&T匯編風(fēng)格(64位)
:
Learn to Program with Assembly Foundational Learning for New Programmers
Share
分享自己對《認(rèn)知天性》
的一些總結(jié)。
學(xué)習(xí)的本質(zhì)是打造心智模型,將知識(shí)條件反射式使用,就是在遇到問題時(shí),能夠毫不費(fèi)力地迅速對問題做出反應(yīng)。
學(xué)習(xí)的三步驟:編碼、鞏固和檢索
編碼:將材料記到大腦里面,形成短期記憶
鞏固:將短期記憶變成長期記憶
檢索:將知識(shí)從記憶中提取到意識(shí)中解決實(shí)際問題
學(xué)習(xí)的提升需要通過合意困難來完成,合意困難有三個(gè)要素:
1.有相應(yīng)的已知做基礎(chǔ)
2.能夠觸發(fā)鞏固和檢索
3.對學(xué)習(xí)有正面促進(jìn)作用
學(xué)習(xí)的八種方法:文章來源:http://www.zghlxwxcb.cn/news/detail-677350.html
1.從記憶中檢索新學(xué)習(xí)的內(nèi)容,是學(xué)習(xí)的最好方法。
2.間隔地安排檢索練習(xí),需要注意檢索知識(shí)的時(shí)間間隔,在《認(rèn)知天性》
里邊只說,根據(jù)不同的材料選擇不同的間隔時(shí)間。根據(jù)《考試腦科學(xué)》
中的說法,在學(xué)習(xí)之后的一個(gè)月內(nèi),一定要復(fù)習(xí)一次,否則可能就是重新學(xué)習(xí)了。
3.穿插學(xué)習(xí)各種問題類型
4.細(xì)化:為新材料尋找不同層次的意義,比如將剛學(xué)習(xí)的內(nèi)容跟已經(jīng)學(xué)習(xí)到的知識(shí)進(jìn)行關(guān)聯(lián)。
5.生成:在看到解決方法之前需要自己努力回答問題或者解決難題。
6.反思:將檢索和細(xì)化進(jìn)行結(jié)合,回顧一下以前學(xué)習(xí)的知識(shí),看一下自己什么地方做得好,什么地方做得不好。
7.校準(zhǔn): 使用客觀評(píng)價(jià)工具來清除你已經(jīng)掌握的知識(shí)錯(cuò)覺,調(diào)整你的認(rèn)識(shí)來更好地反映現(xiàn)實(shí)。
8.助記:使用諧音或者順口溜或者概括進(jìn)行記憶。文章來源地址http://www.zghlxwxcb.cn/news/detail-677350.html
到了這里,關(guān)于ARTS打卡第二周之鏈表環(huán)的檢測、gdb中disassemble的使用、底層學(xué)習(xí)建議、學(xué)習(xí)分享的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!