in win32 and win64 generated binaries from nasm (at least), section .data is only 4 byte aligned, not 16, unless otherwise specified on the same line .data is declared.
@billskycomputerguy4 күн бұрын
That is correct. nasm.us/doc/nasmdoc5.html MASM says it aligns on a 16-byte address, but it also says that it doesn't really matter any longer with modern CPU's using flat memory models. Typical of Microsoft to contradictory. (I haven't tested this)
@Rex95946 күн бұрын
Thanks a ton for this video, this had me scratching my head for a full day trying to get it to work
@billskycomputerguy4 күн бұрын
Awesome!
@damianjblack9 күн бұрын
So I actually have two middle names. (This is more common in Europe and some other places outside the US, you rarely see it in the US or Canada). So I defined MiddleInitial as PIC A(2). But yes for most usage cases it can just be A. Similarly for ZipCode, outside the US you see all sorts of funky postal codes with letters and spaces and who-knows-what in them (UK is a good example, you have two letters, a one or two digit number, then a space, then a one digit number and two more letters). So I made that an X(10). I also noticed that I am super used to Pascal and C: I ended several of my statements with semicolons 😂😂
@montpierce42411 күн бұрын
Love all your great videos. Maybe you can help me... I have a question (kind of a pet peeve?) about "++" and "--" operators. At 3:10 you add the update part of the for-loop "i++". Ok, here's my question: 99.999% of the time I see example code (especially on KZbin), everyone puts the "++" or "--" AFTER the variable name. Now in any stand-alone statement (i.e. no equal sign, no other variable) it makes no difference if the "++" is before or after the variable. Ex: ++x; is exactly the same as x++; I was a contract c programmer for 30+ years. Most variables with descriptive names can be 4-20 (or more) chars long. For readability, I've always put the "++" or "--" in front of the var name instead of the end. Isn't ++varOneTwoThree; more readable than varOneTwoThree++; ?? In fact, the ONLY time I'll put the "++"/"--" after the variable name is when I need to reference the current value before incrementing. Like: var2 = var1++; Anyways, it just seems weird to me that almost everyone else always puts the "++"/"--" after the variable name instead of before... Again, I know it makes no difference except if the var name on the longer side. But on longer variable names... anyways... Thanks again for all your great videos. Hey, you ever use PL/I ?? I've just started learning it.. Interestingly, it's designed based on the best parts of Fortran and COBOL. Very Interesting.
@SBcode-s3n20 күн бұрын
Geany ❤❤❤❤❤
@billskycomputerguy19 күн бұрын
@@SBcode-s3n great editor, isn’t it
@SBcode-s3n19 күн бұрын
@billskycomputerguy yes
@uonliaquat795721 күн бұрын
Thanks for such an informative vide,o, I learned something new about memory allignment today, from where did you learn all this? did you follow any particular course in your college days?
@billskycomputerguy21 күн бұрын
Glad you enjoyed it. I have been working in Computer Science since 1979. I have worked as a contractor for NASA, Martin Marietta, IBM in both hardware and software and research and development. I have done both software and hardware design as well as operating system development on mainframes as well as workstations (OS/2, Linux).
@uonliaquat795721 күн бұрын
@@billskycomputerguy Wow Interesting, sounds like you've already worked on my dream projects. Well I've also studied computer science and gradueted in 2020, I'm trying to do much more system programming, tried following henry and peterson, is there a course or a book that's a must read? Any recommendations from your side would really help me what to focus on and and what to study when learning low level programming . Thanks
@billskycomputerguy21 күн бұрын
@@uonliaquat7957 That is a HUGE request for information. There are just too many things out there to summarize them all. Mainframe developers are in HUGE demand right now. A previous student of mine who hated this idea, just got an intro job for IBM working for California Medical starting at $70K and is VERY happy now that he knows what it was all about. He's very happy. So much out there, many areas are already filled with too many developers.
@uonliaquat795720 күн бұрын
@@billskycomputerguy Computer science is my passion. Apart from my job, I would love to delve much deeper into this field.
@billskycomputerguy19 күн бұрын
@ it’s all up to you! If you have any questions, ask.
@rudebloke125 күн бұрын
Mr Sky. I can't thank you enough for your videos. I definitely intend to get to them as soon as I am able to. Please keep it up. This is content that is hard to find.
@techhoppy27 күн бұрын
Thanks for doing this series! Question: what keyboard are you using?
@billskycomputerguy26 күн бұрын
@@techhoppy daskeyboard. Love it! www.daskeyboard.com/
@AbdullahAhmed-xz8sm27 күн бұрын
Thanks for making the video!
@billskycomputerguy27 күн бұрын
You're welcome!
@PurpleWarlock27 күн бұрын
Neat!
@billskycomputerguy27 күн бұрын
Next one is coming up shortly! I've got a Kidney Stone, but you all are more important than thaaaaaaa. OUCH!
@emirlie27 күн бұрын
Thanks for the great video.. Here's something I would like to ask; what was the size of the executable you built? can that exe be considered a "standalone" application for a regular win10 platform, or you would need to carry other files to make sure it works..
@billskycomputerguy27 күн бұрын
Glad you like it. The size can be found by just right clicking on the file and selecting properties (or something similar). As for can it run on its own, the answer is probably yes. The reason I say probably is because it depends on your operating system. I believe these are all statically linked, and that would mean that all necessary libraries are attached to the executable. One way to test this is to copy the executable file to another computer and try from there. If you want to find the size of JUST the program itself without anything attached to it before the link occurs, look at the .o file on Linux or a similar file on Windows (might be .obj), NOT the executable. The object file tells you exactly how big your program is without all of the other stuff that the linker adds.
@F_A-j2q28 күн бұрын
can't seem to find the eclipse ide for scientific computing on their webpage and the updated ide they suggest doesn't have fortran as an option when creating new projects
@billskycomputerguy28 күн бұрын
I know, it's a pain. The FORTRAN IDE add on for Eclipse is only for older versions of Eclipse. I have tried using Visual Studio Code, but it doesn't work very well and hard to setup. So I use Geany editor with make files using my FORTRAN template files. You can download it here: www.dropbox.com/scl/fi/73lhp7q5ipm65p0anya9u/LinuxFortran64bitTemplate.zip?rlkey=0qkgh7ix4f6vyd9l4av7mq89o&dl=0 The Intel FORTRAN make file can be found here: www.dropbox.com/scl/fi/ckwcskais0zky0vyu6593/LinuxIntelFortran64bitTemplate.zip?rlkey=vglbfr0d4mzowh5q0pkdpuaif&dl=0 Hope that helps.
@justwanderin847Ай бұрын
Next, how to compile and run sql and using cursors
@billskycomputerguyАй бұрын
There already should be a video on how to compile these programs, but yes, next is coding sql and cursors. Diagnosed with a kidney stone yesterday, so I'm a bit involved.... Will get to it as soon as I can.
@justwanderin84727 күн бұрын
@@billskycomputerguy Hope you are feeling better. I did not see any info on gnucobol and DB2 precompiler or SQA / sql. I could not find this...
@NaburgonduxАй бұрын
Incredible video man!,you are really good explaining,its a shame no one cares for assembly nowadays,but i watched your video because i challenged myself into making a TUI game in assembly : )
@billskycomputerguyАй бұрын
@@Naburgondux funny you said that. I heard the same about mainframes. A student of mine who just graduated got a job at IBM on mainframes when they had problems finding non-mainframe jobs and now making a BUNCH of money, and they paid their training! Assembly is not gone, not by a long shot. Without assembly, there wouldn’t be compilers, device drivers, operating systems. Assembly reflects the instructions in the CPU/GPU/FOU. Don’t believe what the inexperienced tell you. Glad you liked the video.
@NaburgonduxАй бұрын
@billskycomputerguy the thing is,most new programmers now,don't even know what assembly is,they always go for the "main language" like Python or JavaScript,that's why assembly is scarce, the company's that need assembly are giving black gold for those who know.
@billskycomputerguyАй бұрын
@ 100% correct!
@dennissdigitaldump8619Ай бұрын
As a recently graduated elder student seeking state work, this series is a literal life saver. I cannot thank you enough!
@billskycomputerguyАй бұрын
@@dennissdigitaldump8619 You are soooooooo welcome! I only did a few videos on this topic, but enough to get you started. BTW, two of my students who couldn’t find jobs after college just got mainframe jobs starting at $70K. Very excited.
@RenatoMejillaАй бұрын
Hello, can you make a video on how you configure Geany to run and compile COBOL?
@billskycomputerguyАй бұрын
@@RenatoMejilla doesn’t this video show you how to do that? kzbin.info/www/bejne/jpO1f3eZfKulha8si=DIXeB_DWX6uHW611 and maybe the one after that (link in the description of the first)?
@NutthawatPanyangnoi-v9xАй бұрын
This is Awesome!
@billskycomputerguyАй бұрын
@@NutthawatPanyangnoi-v9x glad you think so.
@justwanderin847Ай бұрын
I like the way you indent for the nested if. In COBOL if it got too deep we can use CASE, is there a Fortran equivalent?
@billskycomputerguyАй бұрын
In my opinion, if you have a nested if statement that is that large where it runs off the line, then your if statement is too big and needs to be split up. But, if you don't want to do that, then yes, there is a Switch-like statement SELECT CASE (selector) CASE (label-list-1) statements-1 CASE (label-list-2) statements-2 CASE (label-list-3) statements-3 ............. CASE (label-list-n) statements-n CASE DEFAULT statements-DEFAULT END SELECT The Intel programmers guide has a great write up on this feature. I'll be doing a video on it as well. www.intel.com/content/www/us/en/docs/fortran-compiler/developer-guide-reference/2025-0/select-case-and-end-select.html
@justwanderin847Ай бұрын
Get you a System76 MeerKat and all is well.
@billskycomputerguyАй бұрын
I LOVE those computers. I won't be buying Mac's any longer because of their ARM chips (at least for development), and System76 is next!
@justwanderin847Ай бұрын
@@billskycomputerguy I have a MeerKat with Ubuntu and a DarterPro with Pop!_OS . (I like pop best)
@Edgarxx2 ай бұрын
good video, that realy works! Thanks!! I was lost between a lot os packages to install, to make cmake run.
@billskycomputerguyАй бұрын
Yeah, lots of confusion about how to make this stuff work.... Glad it helped.
2 ай бұрын
Took Fortran 1988 ... lol
@billskycomputerguy2 ай бұрын
I took it in 1976!
@kusnn31112 ай бұрын
Hello! I was trying to install Assembly from your tutorials, and I encountered issues while trying to compile both x64 and x86 versions. For x64 I got "A2006 undefined symbol: rex", and "MSB3721 during ml64.exe task". I am a new student of computer engineering from Poland and I want to learn building kernels and actually build a small kernel, so I decided to learn Assembly. I wasn't sure if you'd respond under your Assembly videos so I comment here.
@CyberNeko12 ай бұрын
Thank you so much for taking/sacrificing your valuable time for educating us 💙
@billskycomputerguy2 ай бұрын
@@CyberNeko1 I just wish I could do even more, but retirement keeps me busy in places like Tahiti!
@Sand7Clipper2 ай бұрын
Great video! Love the fact that 50% of the vid is just you struggling with VS and windows jank 😂
@billskycomputerguy2 ай бұрын
@@Sand7Clipper That’s Windows for ya! 😁. Glad you like it.
@alexzalewski48942 ай бұрын
fyi , YMM registers are their own type of register (windows has them aswell), rather than your standard 128 bit xmm the YMM has 256 bit, and furthermore ZMM (which only new gen cpus support) are 512 bit
@billskycomputerguy2 ай бұрын
@@alexzalewski4894 correct with one change. It’s not that Windows or Linux has those registers, it’s that the CPU has them and Windows, Mac or Linux OS’s can use them. As said, these are special use registers, mainly for graphics rendering calculations and the like where a single instruction can move multiple pieces of data. Awesome!
@vnmsenior2 ай бұрын
I have just installed GNUCobol3.2 on my MX Linux install. Lots of learning with their website's documentation! But looks like fun! Thanks for sharing this video!
@rudebloke12 ай бұрын
ha ha - I came to your channel for COBOL and ended up watching this video first. YOu just got a new subscriber sir!
@billskycomputerguy2 ай бұрын
I'm so glad it helped. Gonna do some more COBOL videos this weekend. Procedures and Functions. Should be fun. Enjoy!
@AkiiKun-x8v2 ай бұрын
Hello. Greetings. I've installed the virtual machine via Oracle VM. When i use the terminal, a spike in physical memory happens and the memory is full. Is it a memory leak?
@billskycomputerguy2 ай бұрын
Ok, let me get the facts here. You're using Virtualbox and Oracle Linux as the guest operating system? Or are you using Virtualbox with Mint Linux as the guest operating system? Also, what is your computer's main operating system? Windows?
@AkiiKun-x8v2 ай бұрын
@@billskycomputerguy Hello. I am using Virtualbox with Mint Linux as the guest operating system, or as just the way you demonstrated setting up mint linux with oracle VM Virtualbox. My computer's operating system is indeed Windows (10).
@billskycomputerguy2 ай бұрын
@@AkiiKun-x8v Okay, thanks for the info. Here's what I did. - Started up my Windows 10 computer. 32gig of memory. I installed all updates - Test results: Host OS Windows 10 (most recent version) Virtualbox v7.1.4.r165100 Guest OS Mint Linux Mate 22 64-bit - Windows: With Virtualbox loaded, but no Guest running Available: 26.226 gig Cached: 9.420 gig Total: 32.715 gig - Windows: With Mint Linux guest booted within Virtualbox and logged in Available: 23.144 gig Cached: 13.139 gig Total: 32.715 gig - Windows: With Mint Linux guest terminal opened Available: 23.091 gig Cached: 13.868 gig Total: 32.715 gig - Linux: From a terminal Total memory: 4.010 gig Free Memory: 1.807 gig - Linux: Second terminal opened Total memory: 4.010 gig Free Memory: 1.806 gig - Windows: With Mint Linux guest second terminal opened Available: 23.052 gig Cached: 15.354 gig Total: 32.715 gig If you really are running out of memory, might have been a couple of things: - You may have setup too much memory on your Linux guest. Make sure it is no higher than 4gig of memory - Your Windows 10 computer doesn't have as much memory as I do. If you have 4gig of memory, change your virtual machine (Linux) to only have 1 gig of memory. If your computer has 8 gig of memory, change your virtual machine to only have 2 gig of memory. You don't need that much Linux memory Let me know what you find
@billskycomputerguy2 ай бұрын
@@AkiiKun-x8v Oh, I used Windows Resource Monitor (GUI app) on the Windows host, and the command below in a Linux guest using terminal watch -n .5 cat /proc/meminfo
@AkiiKun-x8v2 ай бұрын
@@billskycomputerguy Hello. I restarted the whole process from downloading the .iso file. I found out that the memory spikes up when the guest OS hasn't even started yet.
@UserNY32 ай бұрын
New voters appreciate this video - if they don't - hmmmm. Thank you!
@billskycomputerguy2 ай бұрын
So nice to hear
@UserMT82 ай бұрын
This makes so much sense. I feel like you did when you were looking this stuff up - frustrated, but amazed when you finally got it. Thank you so much.
@billskycomputerguy2 ай бұрын
Glad it makes sense!
@UserPO2HK2 ай бұрын
Love it! Thanks for this great video
@billskycomputerguy2 ай бұрын
You are so welcome
@alexchrist10572 ай бұрын
Thanks for a video
@billskycomputerguy2 ай бұрын
You Are Welcome
@user-xw9tn8zx1g2 ай бұрын
first election cycle where i’m able to vote so glad you made this video. thanks!
@billskycomputerguy2 ай бұрын
Congratulations! Enjoy living in a democracy. Your vote counts - everyone does - no matter where you live.
@johnnyzielony14372 ай бұрын
best video on the topic out there
@billskycomputerguy2 ай бұрын
@@johnnyzielony1437 How nice for you to say.
@narendaramenaria49833 ай бұрын
Hi I tried what you did in video but when I type gfortran --version it says command not found
@billskycomputerguy2 ай бұрын
If you're on Linux, the command IS gfortran or the Intel compiler ifx. It should work automatically. If on Windows, make sure you issued the following installation statements from an Msys2 window: (minus the minus symbol) - pacman -Syu - pacman -Su mingw-w64-x86_64-gcc-fortran Also, if you have installed msys2 on Windows, did you remember to change the path as I show in the video? 1) In Windows Explorer, right click on This PC, then Properties 2) Click Advanced System Settings, click Environment Variables 3) Double click Path (either one) 4) Click New and type: c:\msys64\mingw64\bin (note: this assumes that you installed msys2 in the default location) 5) Click OK, OK, OK. Once that is done, if you open a command prompt and type gfortran, it should work. If you open a Msys2 Mingw64 window (BASH), the gfortran command should also work.
@narendaramenaria49832 ай бұрын
@@billskycomputerguy thanks it worked
@billskycomputerguy2 ай бұрын
@@narendaramenaria4983 you’re welcome!
@Snyder03173 ай бұрын
Thanks! I'd love an overview of the report writing facility, whenever you have time.
@billskycomputerguy3 ай бұрын
@@Snyder0317 gonna do that soon. Gonna do some videos on COBOL procedures and functions first. As soon as the temperature in California goes down low enough so I don’t blow electrical fuses!
@davesabra43203 ай бұрын
thanks! Prof Sky.
@billskycomputerguy3 ай бұрын
You are welcome!
@andrewjenery17833 ай бұрын
What about OS support?
@billskycomputerguy3 ай бұрын
What do you mean?
@andrewjenery17833 ай бұрын
@@billskycomputerguy Operating systems. What operating systems can you use with this.
@billskycomputerguy3 ай бұрын
Ah..... Any operating system that Visual Studio Code installs on. Windows, Mac, Linux
@robertryan80293 ай бұрын
My installation of Geany is on POP_OS (version based on Debian). The terminal prompt is [org.geany.Geany~]$. How do I change it to reflect my local path? I can't figure out how to configure it to compile gnulinux, and contrary to what you stated in another comment response, I cannot find any video in which you showed how to configure the gnucobol compiler in Geany. Other than that, I am really enjoying your videos and have "relearned" a lot! You are an amazing teacher. I haven't touched COBOL ind decades, but your instructions are bringing it back quickly.
@aliahmadvandi3 ай бұрын
tanks for this video , here is your reward for such nice job :::: --> mingw-w64-x86_64-geany AND mingw-w64-x86_64-geany-plugins
@billskycomputerguy3 ай бұрын
Love Geany!
@Muybonito5233 ай бұрын
When I do this I get this "(process 2496) exited with code -1073741819 (0xc0000005)" instead of exit code 0. This happens in another basic program I am trying to use just to get setup doing assembly in windows. I haven't been able to figure it out :(
@billskycomputerguy3 ай бұрын
Strange. Make sure you are running it as a 64-bit application (not x86) or vice versa. Not sure what else it could be. Do you get that during execution or assembly/link?
@Muybonito5233 ай бұрын
@@billskycomputerguy If I skip the debugging part and just run it gives me that exit code which I have since found it is a crash. If I debug there is a unhandled exception. On a forum it had to do with aligning the stack , so they had me add a 'sub rsp, 28h' just after 'main PROC' and that seemed to fix it. I am not 100% understanding the fix, but has to do with the requirements of the Windows ABI.
@billskycomputerguy3 ай бұрын
@@Muybonito523 I tried to reproduce this, and it indeed is a problem. Something has changed within the kernelbase.dll file that requires an assembly application to free up stack memory before exiting the application. So, sub rsp, 28h means that 5 quad-word bytes (40 bytes) need to be released back to the OS before existing. You could also do pop rax five times - same thing but a lot less efficient. I'll need to change all of my 64-bit templates to support this change. Thanks for finding this!
@billskycomputerguy3 ай бұрын
@@Muybonito523 My project templates have now been updated. Thanks again for the heads up here! www.dropbox.com/scl/fo/bv9f8bp1zmccchya7pthg/h?rlkey=wg1ky9dh0cnmh8lsc5hfmk4re&e=1&st=x487gmy5&dl=0
@Muybonito5233 ай бұрын
@@billskycomputerguy No problem I give credit to the MASM forum guys, they are the ones who helped me with it, I didn't know what I was doing!
@yuliayakymiv74224 ай бұрын
If, after all these steps, kdbg returns an error: "kdbg: no debugging symbols found," let me save you a day of your life. You just need to go to your VM settings, navigate to Display → Screen, check the box for Enable 3D Acceleration, and set the Video Memory to 128 MB. P.S. Thanks to the author for the assembly series, it’s gold 💜
@billskycomputerguy3 ай бұрын
Make sure you assemble it with the -g flag for debug symbols.
@billskycomputerguy2 ай бұрын
@@yuliayakymiv7422 so many options with all of these operating systems. Thanks for the solution
@corona5284 ай бұрын
Thank you for this!!
@billskycomputerguy3 ай бұрын
You're so welcome!
@cbbcbb68034 ай бұрын
Why don't Microsoft market its own version of Linux? IBM markets RedHat. Apple markets a version of BSD Unix.
@billskycomputerguy3 ай бұрын
I have no idea...
@cheerpoasting4 ай бұрын
one of the only channels making good tutorials!
@billskycomputerguy3 ай бұрын
Awwww, how nice.
@fvalli20034 ай бұрын
Hi, thanks a lot! I have a question about how can you change the video mode to a graphic mode so you can draw in the screen in 64bit assembly . Goodbye!
@billskycomputerguy3 ай бұрын
Not sure what you mean by "draw in the screen"
@cordyjourvelitoua-tsele54154 ай бұрын
Very good, thanks
@billskycomputerguy3 ай бұрын
You're Welcome!
@ssmith50484 ай бұрын
Another solution for the ' infinite" output for sinh(90) is to change your real declatarion to REAL(8) on line 13 of your code. Using gnufortran this returns an exponential value for me.
@billskycomputerguy3 ай бұрын
Exactly!
@rontarrant4 ай бұрын
I've been really enjoying your videos, Bill. Now, I've got a couple of questions... 1) Scuttlebutt has it that Rust can do OOP and therefore can deal with building a GUI as well (or, via alternative means, just build a GUI the old-fashioned way like we did on the Amiga). Do you have any plans for covering how to approach GUI libraries and building a UI, and/or general OOP coding in Rust? 2) Just curious, too, why you chose to release these videos in 720p max. resolution. It might save you a bit of zooming in post. (I don't know how much trouble it is to zoom in an editing suite, but it's gotta be a tad time-consuming, right?) I can only assume that's it's got something to do with cost of bandwidth for uploading or some sort of local storage issue? BTW, your "go ahead and" count is way down over most who do instructional videos! 😁
@billskycomputerguy4 ай бұрын
@@rontarrant eh, 720 means smaller videos uploaded. Doesn’t make it easier or more difficult to produce. I record at a much higher resolution, and Handbrake it down to 720 for video size. They look fine if you tell KZbin to show them at a higher resolution. I do plan on doing RUST OOP or what is available. GUI, I don’t know.