ก็อย่างที่บอกไปข้างต้นนะครับ คือว่าเพิ่งจะเริ่มเขียนนะครับ แต่ว่าเรื่องคำสั่งยังงงมากมาย บางครั้งต้องเอาคำสั่งของภาษาซีไปเทียบเป็น python ใน google คิดว่าเขียนโดย python น่าจะทำให้ รู้เรื่องมากขึ้นอีกน่ะครับ แค่ช่วยอธิบายก็พอครับ หรือไม่ก็ยกคำสั่งที่สำคัญที่จะต้องใช้น่ะครับ คือตอนนี้มี .txt ที่เป็น file ให้หา object code กับ lc แล้วก็มีอีก .txt จะบอก opcode กับ format(มีแค่ format1-3 ครับ) ทำไปก็ติดปัญหาเรื่อง การอ่ายไฟล์ แล้วก็งงไปเลยคร้าบบบ
?
แง่ว อารายเอ่ย
เศร้าใจ ท่าทางไม่มีคนอยู่ต้องกลับไปใช้ c เขียนเหมือนเดิม so sad
เขียนโปรแกรมเก่งแทบตายแต่คุยกับคนอื่นไม่รู้เรื่องก็เท่านั้นครับ ... ลองกลับไปคิดดูนะ
"เขียนโปรแกรมเก่งแทบตายแต่คุยกับคนอื่นไม่รู้เรื่องก็เท่านั้นครับ ... ลองกลับไปคิดดูนะ"
หมายความว่า ให้กลับไปคิดคำถามมาใหม่อธิบายให้ละเอียด หรือว่าคำถามมันดูหรูหรามากเกินไป แต่ว่าอันที่จริงผมแค่อยากจะเรียนรู้ครับ ป่าวตั้งคำถามที่ตัวเองดูมีความเก่งกาจ คิดว่าการถามก็เหมือนกับการเพิ่มปัญญากับสิ่งที่เรายังไม่ทราบครับ
ลองอธิบายใหม่ครับ แยกส่วนของ ความคิดเห็นส่วนตัว ปัญหาที่มี ผลสำเร็จที่ต้องการ และแนวทางที่อยากจะได้คำตอบ
ตามที่เขียนมาข้างบน บอกตรงๆ ว่าไม่รู้เรื่องเลย ไม่สามารถให้คำตอบได้
อ่านไม่รู้เรื่องแฮะ หรือมันเป็นคำศัพท์อันลึกซึ้งชอง python?
"If debugging is the process of removing software bugs,
then programming must be the process of putting them in."
อ่า...ครับ งั้นต้องถามก่อนว่าทุกคนในที่นี้พอจะรู้จัก two pass assembler กันหรือป่าวอ่ะครับ
เข้าใจว่าคงเรียนวิชา System Software อยู่แล้วอยากใช้ Python ทำการบ้านใช่ไหมครับ
ผมเองจำไม่ค่อยได้แล้ว เวลาถามพวกนี้ ควรให้ข้อมูลคนตอบมากกว่านี้ครับ
อันข้างบนเป็นความพยายามตอบคำถามของน้องนะครับ แต่พี่แนะนำน้องสักหน่อยเวลาถามคำถามในชุมชนเปิดแบบนี้ครับ
LewCPE
lewcpe.com, @wasonliw
เสริมอย่างนึง
ปล. ที่นี่เป็นชุมชนเปิดหรือ?
LongSpine.com
ก็ไม่มีใครต้องใช้บัตรอะไรมาสมัครนะ
โดนบล็อคไป กลับมาสมัครใหม่ก็มีให้เห็นนี่ ยังเล่นกันอยู่ดีจนวันนี้
LewCPE
lewcpe.com, @wasonliw
จริงๆแล้วผมว่ามันยังมีหลายอย่างที่ขัดกับคำว่าสังคมเปิดอยู่นะครับ เช่นกรณีของแฟนคลับจาวาและแฟนคลับแอปเปิล ผมเลยคิดว่ามันเป็นสังคมปิด "แบบหลวมๆ"เสียมากกว่า
ไม่ใชแค่่ว่าต้องสมัครสมาชิกหรืออะไรถึงเป็นสังคมปิดนะ ถ้ายังมีกระบวนการคัดออกผมว่ามันก็ยังเป็นสังคมปิดอยู่
ที่ถามนี่เพราะเอะใจและสงสัยนะครับ ไม่ได้จงใจซะทีเดียว จริงๆแล้วสืบเนื่องจากกระทู้ ผมว่าไม่ว่าจะเป็นสังคมเปิดหรือสังคมปิดมันก็ต้องเขียนคำถามให้ชัดเจนทั้งนั้น โดยเฉพาะสังคมที่มีความหลากหลายของกลุ่มบุคคล
LongSpine.com
เพื่อป้องกันการออกทะเล ใครจะคุยเรื่องนี้ต่อตั้งกระทู้ใหม่เลยนะครับ
LewCPE
lewcpe.com, @wasonliw
คือ คุณลองจินตนาการว่าคุณไม่รู้เรื่องเกี่ยวกับตัวคุณเลย แล้วลองกลับไปอ่านคำถามของคุณดูนะว่าจะรู้สึกแบบผมรู้สึกไหม
"ก็อย่างที่บอกไปข้างต้นนะครับ คือว่าเพิ่งจะเริ่มเขียนนะครับ" - บอกไปตอนไหนหว่า? "แต่ว่าเรื่องคำสั่งยังงงมากมาย บางครั้งต้องเอาคำสั่งของภาษาซีไปเทียบเป็น python ใน google คิดว่าเขียนโดย python น่าจะทำให้ รู้เรื่องมากขึ้นอีกน่ะครับ" - นี่คือ ข้อคิดเห็นหรือคำถามครับ? "แค่ช่วยอธิบายก็พอครับ" -อธิบายอะไรครับ? ยังไม่เห็นคำถามเลย "หรือไม่ก็ยกคำสั่งที่สำคัญที่จะต้องใช้น่ะครับ" -?? "คือตอนนี้มี .txt ที่เป็น file ให้หา object code กับ lc แล้วก็มีอีก .txt จะบอก opcode กับ format(มีแค่ format1-3 ครับ)" - เข้าใจว่านี่เป็นโจทย์ "ทำไปก็ติดปัญหาเรื่อง การอ่ายไฟล์ แล้วก็งงไปเลยคร้าบบบ" - อยู่ๆก็ติดปัญหาเลยแบบไร้ต้นสายปลายเหตุ
WTF ครับ ______________________________________________ "If debugging is the process of removing software bugs, then programming must be the process of putting them in."
WTF อันนี้ใช้สกิลไม่มีดีเลย์ และไม่ต้องใช้ mana point หรือป่าวครับ (แหะล้อเล่นอ่ะครับ) ใช่ครับตอนี้ผมกำลังแปลงจาก ภาษาซี เป็น python อยู่ครับปัญหาที่สำคัญสำหรับผมตอนนี้คือเรื่องคำสั่งที่แตกต่างกันครับ ส่วนเรื่องปัญหาอยากจะโพสรูปแล้วก็ ส่วนของโปรแกรมที่ติดปัญหาอยู่ แต่หาที่โำสไม่เจออ่ะครับ ประมาณว่าโง่เรื่องตั้งกระทู้มากมาย เด๋วหาเจอแล้วจะโพสรูปให้ดูใหม่นะครับ จะได้พอเข้าใจคำถามกับปัญหาอ่ะครับ LC = Location Counter ครับ
LC มันคืออันเดียวกันกับ PC(Program Counter) ไหมครับ หรือคนละอันอยากรู้
คุณกำลังพยายามเขียน C compiler ด้วย Python หรือเปล่าครับ
ผมคงจะอธิบายไม่เก่ง อยากรู้วิธีการอ่านไฟล์ แล้วใส่ค่าในตัวแปล ยกตัวอย่าง
ผมมี file.txt ในนั้นมี(bird cat dog) ผมต้องการเรียกไฟล์ .txt มาอ่านพร้อมกับบันทึก bird,cat,dog ใส่ในตัวแปล a,b,c ตามลำดับ และต้องการตัดช่องว่าง(\t)กับตัดตัวที่ขึ้นบรรทัดใหม่(^\n) ซึ่งที่ผมหามาคือคำสั่ง re.split("\t",) แต่พอใส่ ([^\n]) แล้วสิ่งที่ได้จะเพี้ยน เช่น cat จะเหลือ at ตัว c หาย
ต้องการตัดแค่ไหนหรือ อะไรที่ไม่ต้องการตัดบ้้าง? เพราะค่าตั้งต้นของ split มันค่อนข้างครอบคลุมแล้ว
ตัวอย่าง
ถ้าต้องการตัดบรรทัดก่อน แล้วค่อยตัดบล็อคเป็นคำๆก็ใช้
ถ้าเปิดไฟล์ไม่เป็น ลองใช้ตัวอย่างนี้ดู
ถ้าเขียนแบบนี้ใน C คงใช้เวลาเป็นชั่วโมงแถมยังมีบัํกเหลือ
ทำตรงนี้เสร็จแล้วที่เหลือก็แค่ใช้พลังสวมเขาลุยท้องนา แยกพิจารณาคำสั่งเป็นกรณีๆไป
LongSpine.com
เช่น มีไฟล์ file.txt ข้างในมีข้อความดังตัวอย่าง
bird cat dog
ผมต้องการตัดเฉพาะช่องว่าง(\t)และขึ้นบรรทัดใหม่(\n)ครับ แล้วก็นำมาใส่ในตัวแปลภายในโปรแกรมที่เขียนขึ้นมาจะได้ค่า
a = bird
b = cat
c = dog
ตอนนี้ที่ตัดคือ เอา re.split("\t",line)(line = file ที่ open เข้ามา) มาตัดช่องว่างเสร็จแล้วมัน copy ใส่ในค่า a หมดทั้ง file.txt
['ิbird', 'cat', 'dog\n']
หาวิธีตัด \n ไม่ได้ด้วยอ่ะครับ ส่วนการเปิดไฟล์และอ่านผมใช้
file = open("(filename).txt","r")
while 1:
line1 = file.readline()
if not line:
break
ที่มาที่ใช้ประกอบการมั่วครับ http://www.java2s.com/Code/Python/CatalogPython.htm
เติมไปใน if
if not line1:
break
else:
line1.strip() # เอา white space ทั้งสองด้านของ line1 ออก หรือจะใช้ .rstrip() เพื่อเอาเฉพาะข้างขวาออกก็ได้
เพิ่มเติม...
ผมใช้ python 2.6.2 นะ
with open('file.txt','r') as f:
d = f.read().split()
a = d[0]
b = d[1]
c = d[2]
print 'a =',a
print 'b =',b
print 'c =',c
โอ้ขอบคุณมากครับ เดี๋ยวจะเอาไปลองเขียนดู
ครับ คือค่อยๆเข้าใจคำสั่งแล้วครับ d=f.readline() มันจะเก็บที่ array d เป็นคำๆไปใช่มั้ยครับ
cat dog bird
bat dug
ผลลัพธ์ในการตัดแล้วจะได้
['cat','dog',bird']
['bat','dug']
ถ้าเราต้องการจะดึง แต่ละคำใน array d ออกมาและแถวที่ไม่มีคำ ไม่ต้องเก็บค่า ถ้าในภาษาซี ผมจะใช้ strtok เอาเฉพาะคำ ถ้าเจอช่องว่างก็ใส่ค่า NULL[fp,fpop = พอยต์เตอร์,str[255] = array]
while(!feof(fp))
{
fscanf(fp," %[^\n]",str);
label=strtok(str,"\t");
opc=strtok(NULL,"\t");
opr=strtok(NULL,"\t");
จะได้บรรทัดแรกประมาณว่า label = cat,opc = dog,opr = bird
บรรทัดที่สอง label = NULL,opc = bat,opr = dug
ถ้าต้องการแบบที่เขียนนี้ต่อก็ใช้ strip('\n') แล้วใช้ split('\t') ก็ได้ เช่น
text = "cat\tdog\tbird\n"
label, opc, opr = text.strip('\n').split('\t')
จะได้
label = 'cat'
opc = 'dog'
opr = 'bird'
ถ้ามีแค่สองค่า เช่น text = "\tdog\tbird\n" จะได้ผลลัพท์เป๋น
label = ''
opc = 'dog'
opr = 'bird'
แต่ถ้าเขียนแบบนี้ก็ใช้ space แทน tab ในโค้ดไม่ได้นะ สมัยที่ผมทำ SIC/XE ผมถอด space ด้วย และนับเอาว่ามีกี่คำ ตัวไหนเป็น label ตัวไหนเป็น opcode แล้วค่อยเอาไปแทน label, opc, opr, comment ทีหลัง
แนะนำให้อ่านติวตอเรียลก่อน โดยหัดพวกการเล่นกับ string พื้นฐานสักหน่อย เพราะผมคิดว่าคุณอาจจะยังไม่คล่องตรงนี้เท่าไหร่
LongSpine.com
แหล่มเลยครับ เรื่องของ label กับ opcode เดี๋ยวผมจะเปิดอีกไฟล์ที่มีการบันทึกค่าเลข opcode กับ format มาเทียบค่าเลยครับ เลยต้องการที่จะเก็บ ค่าเป็น string ไว้ก่อน ก่อนนำไปเทียบค่าครับ แล้วอีกไฟล์ที่มีค่าก็จะใช้การตัดคำและการบันทึกค่าเป็น string เช่นเดียวกัน
ครับ คือกำลัีงเขียน assember ใน python น่ะครับ LC หมายถึงตำแหน่งที่เก็บ instruction ส่วนที่ผมกำลังเขียน เขียนแค่ sic ครับ
คุยกับอาจารย์รึยังว่าต้องเขียนเป็น C ไหม เพราะกลัวว่าสุดท้ายแล้วต้องไปเขียน C เพื่อส่งเป็นการบ้านอีกที
LongSpine.com
ป่าวอ่ะครับ มันเป็นความรู้เพิ่มเติมเอง ส่วนในภาษาซี ทำเสร็จเรียบร้อยแล้วครับ แค่คิดว่า การนำ code จาก c มาแปลงเป็น python มันน่าจะทำงานได้เร็วแล้วง่ายกว่าในส่วนของ assembler ความเห็นส่วนตัวน่ะครับ แล้วก็ขอบคุณ คุณABZee ครับ