คำถามติดแท็ก machine-code

20
เคล็ดลับสำหรับการเล่นกอล์ฟในรหัสเครื่อง x86 / x64
ฉันสังเกตเห็นว่าไม่มีคำถามดังกล่าวดังนั้นที่นี่: คุณมีเคล็ดลับทั่วไปสำหรับการเล่นกอล์ฟในรหัสเครื่องหรือไม่? หากเคล็ดลับนี้ใช้กับสภาพแวดล้อมบางอย่างหรือการประชุมที่โทรมาเท่านั้นโปรดระบุในคำตอบของคุณ กรุณาเพียงหนึ่งเคล็ดลับต่อคำตอบ (ดูที่นี่ )

1
Bootloader golf: Brainf ***
สร้าง bootloader ที่รันโปรแกรม Brainfuck ที่กำหนด นี่คือโค้ดกอล์ฟดังนั้นโปรแกรมที่มีจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ เป็น bootloader ขนาดของโปรแกรมจะถูกนับเป็นไบต์ที่ไม่เป็นศูนย์ในรหัสที่คอมไพล์ brainfuck 30000 8-bit ล้นเซลล์ พอยน์เตอร์แรปทับ หมายเหตุบางประการเกี่ยวกับการทำงาน: ต้องอ่านอินพุตในลักษณะที่สนับสนุนอักขระ ASCII ที่พิมพ์ได้ทั้งหมดอย่างถูกต้อง การกดแป้นอื่น ๆ อาจแทรกตัวอักษรใดก็ได้หรือไม่ทำอะไรเลย การอ่านอินพุตของผู้ใช้จะต้องเป็นตัวอักษรบัฟเฟอร์ไม่ใช่บัฟเฟอร์บรรทัด การอ่านอินพุตของผู้ใช้ต้องสะท้อนก้องอักขระ ผลลัพธ์จะต้องเป็นไปตามโค้ดเพจ 437หรือโค้ดเพจเริ่มต้นของอะแดปเตอร์ VGA ในตัวของคุณ bootloader นี่คือ bootloader x86 bootloader ลงท้ายด้วย55 AAลำดับดั้งเดิม รหัสของคุณจะต้องทำงานบน VirtualBox, Qemu หรือโปรแกรมจำลอง x86 ที่รู้จักกันดีอื่น ๆ ดิสก์ Brainfuck ที่เรียกใช้งานได้จะอยู่ที่เซกเตอร์ของดิสก์ที่สองหลังจากบูทโหลดเดอร์ของคุณซึ่งโดยปกติจะอยู่ในส่วน MBR เซกเตอร์แรกบนดิสก์ รหัสเพิ่มเติม (รหัสใด ๆ ที่มากกว่า …

4
สาขาแตกต่างกันใน x86 / x86-64 โดยใช้เฉพาะอักขระ ASCII ที่มองเห็นได้ซึ่งพิมพ์ได้ในรหัสเครื่อง
ภารกิจนั้นง่าย: เขียนโปรแกรมที่แตกต่างใน x86 (32- บิต) และ x86-64 (64- บิต) โดยใช้เฉพาะอักขระ ASCII ที่มองเห็นได้ที่พิมพ์ได้ 0x21 ... 0x7e (ไม่อนุญาตให้เว้นวรรคและเดล) ในรหัสเครื่อง . ไม่อนุญาตให้ประกอบแบบมีเงื่อนไข ไม่อนุญาตให้ใช้การเรียก API ไม่อนุญาตให้ใช้รหัสโหมดเคอร์เนล (แหวน 0) รหัสจะต้องทำงานโดยไม่ทำให้เกิดข้อยกเว้นทั้ง IA-32 และ x86-64 ใน Linux หรือใน OS ที่ได้รับการป้องกันอื่น ๆ การทำงานจะต้องไม่ขึ้นอยู่กับพารามิเตอร์บรรทัดคำสั่ง คำแนะนำทั้งหมดจะต้องเข้ารหัสในรหัสเครื่องโดยใช้เฉพาะอักขระ ASCII ในช่วง 0x21 ... 0x7e (33 ... 126 ทศนิยม) เช่น cpuidไม่มีข้อ จำกัด (เป็น0f a2) …

13
ผลิตภัณฑ์ Fibonacci
คุณสามารถแยกตัวเลขที่มากกว่า 0 เป็นผลรวมที่ไม่ซ้ำกันของตัวเลขฟีโบนักชีบวก ในคำถามนี้เราทำได้โดยการลบจำนวนฟีโบนัชชีบวกที่ใหญ่ที่สุดซ้ำไปซ้ำมา เช่น: 1 = 1 2 = 2 3 = 3 4 = 3 + 1 12 = 8 + 3 + 1 13 = 13 100 = 89 + 8 + 3 ตอนนี้ฉันเรียกผลิตภัณฑ์ Fibonacciว่าเป็นรายการเดียวกันกับข้างบน แต่ด้วยการเพิ่มถูกแทนที่ด้วยการคูณ ตัวอย่างเช่นf(100) = 89 * 8 * 3 = 2136. เขียนโปรแกรมหรือฟังก์ชั่นที่ให้จำนวนเต็มบวกnส่งคืนผลคูณของฟีโบนักชีของตัวเลขนั้น Testcases: …
13 code-golf  math  sequence  fibonacci  code-golf  word  code-golf  cipher  code-golf  string  math  subsequence  code-golf  regular-expression  code-golf  brainfuck  assembly  machine-code  x86-family  code-golf  math  factorial  code-golf  math  geometry  code-golf  math  arithmetic  array-manipulation  math  number  optimization  stack  metagolf  code-golf  tips  assembly  code-golf  tips  lisp  code-golf  number-theory  path-finding  code-golf  number  sequence  generation  code-golf  math  geometry  code-golf  grid  permutations  code-golf  code-golf  graphical-output  geometry  fractal  knot-theory  code-golf  math  arithmetic  code-golf  interpreter  balanced-string  stack  brain-flak  code-golf  math  set-theory  code-golf  math  array-manipulation  code-golf  code-golf  string  natural-language  code-golf  code-golf  math  linear-algebra  matrix  code-golf  string  encode 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.